[Checkins] SVN: z3ext.preferences/trunk/ Added permission checker
to directive
Nikolay Kim
fafhrd at datacom.kz
Mon Apr 21 08:33:26 EDT 2008
Log message for revision 85527:
Added permission checker to directive
Changed:
U z3ext.preferences/trunk/CHANGES.txt
U z3ext.preferences/trunk/src/z3ext/preferences/utils.py
U z3ext.preferences/trunk/src/z3ext/preferences/zcml.py
-=-
Modified: z3ext.preferences/trunk/CHANGES.txt
===================================================================
--- z3ext.preferences/trunk/CHANGES.txt 2008-04-21 06:56:17 UTC (rev 85526)
+++ z3ext.preferences/trunk/CHANGES.txt 2008-04-21 12:33:24 UTC (rev 85527)
@@ -2,6 +2,12 @@
CHANGES
=======
+1.2.1 (2008-04-22)
+------------------
+
+- Added permission checker to directive
+
+
1.2.0 (2008-04-18)
------------------
Modified: z3ext.preferences/trunk/src/z3ext/preferences/utils.py
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/utils.py 2008-04-21 06:56:17 UTC (rev 85526)
+++ z3ext.preferences/trunk/src/z3ext/preferences/utils.py 2008-04-21 12:33:24 UTC (rev 85527)
@@ -42,6 +42,7 @@
"""
from zope import interface
+from zope.security import checkPermission
from zope.security.interfaces import IPrincipal, IGroup, IMemberAwareGroup
@@ -65,3 +66,12 @@
def __call__(self, group):
return self.iface.providedBy(group.__principal__)
+
+
+class PermissionChecker(object):
+
+ def __init__(self, permission):
+ self.permission = permission
+
+ def __call__(self, prefs):
+ return checkPermission(self.permission, prefs)
Modified: z3ext.preferences/trunk/src/z3ext/preferences/zcml.py
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/zcml.py 2008-04-21 06:56:17 UTC (rev 85526)
+++ z3ext.preferences/trunk/src/z3ext/preferences/zcml.py 2008-04-21 12:33:24 UTC (rev 85527)
@@ -19,6 +19,7 @@
from zope.schema import Int
from zope.component import getUtility, queryUtility, getGlobalSiteManager
from zope.schema.interfaces import IField
+from zope.location.interfaces import ILocation
from zope.security.zcml import Permission
from zope.security.checker import Checker, CheckerPublic
@@ -38,7 +39,7 @@
from interfaces import IPreferenceGroup
from preference import PreferenceGroup
from preferencetype import PreferenceType
-from utils import PrincipalChecker
+from utils import PrincipalChecker, PermissionChecker
class IPreferenceGroupDirective(interface.Interface):
@@ -121,6 +122,8 @@
if interface.interfaces.IInterface.providedBy(for_):
tests = tests + (PrincipalChecker(for_),)
+ tests = tuple(tests) + (PermissionChecker(permission),)
+
group = Class(tests)
utility(_context, IPreferenceGroup, group, name=id)
@@ -135,10 +138,13 @@
self._context = _context
self._permission = permission
- self.require(_context, permission, interface=(IPreferenceGroup, schema))
- self.require(_context, 'z3ext.ModifyPreference', set_schema=(schema,))
+ self.require(_context, permission,
+ interface=(IPreferenceGroup, schema), set_schema=(schema,))
self.require(_context, CheckerPublic,
- interface=(IEnumerableMapping,), attributes=('isAvailable',))
+ interface=(IEnumerableMapping, ILocation),
+ attributes=('isAvailable',
+ '__id__', '__schema__',
+ '__title__', '__description__'))
schema.setTaggedValue('preferenceID', id)
More information about the Checkins
mailing list