[Checkins] SVN: grok/trunk/src/grok/ Make grok.Permission and
grok.Role subclasses from
Jan-Wijbrand Kolman
janwijbrand at gmail.com
Thu Sep 20 08:10:49 EDT 2007
Log message for revision 79760:
Make grok.Permission and grok.Role subclasses from
zope.security.permission.Permission and
zope.app.securitypolicy.role.Role respectively.
Changed:
U grok/trunk/src/grok/components.py
U grok/trunk/src/grok/meta.py
-=-
Modified: grok/trunk/src/grok/components.py
===================================================================
--- grok/trunk/src/grok/components.py 2007-09-20 10:17:47 UTC (rev 79759)
+++ grok/trunk/src/grok/components.py 2007-09-20 12:10:48 UTC (rev 79760)
@@ -27,6 +27,8 @@
from zope import event
from zope.interface.common import idatetime
from zope.lifecycleevent import ObjectModifiedEvent
+from zope.security.permission import Permission
+from zope.app.securitypolicy.role import Role
from zope.publisher.browser import BrowserPage
from zope.publisher.interfaces import NotFound
from zope.publisher.interfaces.browser import (IBrowserPublisher,
@@ -481,10 +483,10 @@
Indexes = IndexesClass('Indexes')
-class Permission(object):
+class Permission(Permission):
pass
-class Role(object):
+class Role(Role):
pass
class IGrokLayer(interface.Interface):
Modified: grok/trunk/src/grok/meta.py
===================================================================
--- grok/trunk/src/grok/meta.py 2007-09-20 10:17:47 UTC (rev 79759)
+++ grok/trunk/src/grok/meta.py 2007-09-20 12:10:48 UTC (rev 79760)
@@ -23,7 +23,6 @@
IBrowserSkinType)
from zope.publisher.interfaces.xmlrpc import IXMLRPCRequest
from zope.security.permission import Permission
-from zope.security.interfaces import IPermission
from zope.app.securitypolicy.role import Role
from zope.app.securitypolicy.rolepermission import rolePermissionManager
@@ -178,7 +177,7 @@
# grab layer from class or module
view_layer = determine_class_directive('grok.layer', factory, module_info, default=IDefaultBrowserLayer)
-
+
view_name = util.class_annotation(factory, 'grok.name',
factory_name)
# __view_name__ is needed to support IAbsoluteURL on views
@@ -485,18 +484,19 @@
priority = 1500
def grok(self, name, factory, context, module_info, templates):
- permission_name = util.class_annotation(factory, 'grok.name', None)
- if permission_name is None:
+ id = util.class_annotation(factory, 'grok.name', None)
+ if id is None:
raise GrokError(
"A permission needs to have a dotted name for its id. Use "
"grok.name to specify one.", factory)
- permission_name = unicode(permission_name)
- title = unicode(
- util.class_annotation(factory, 'grok.title', permission_name))
- # TODO permission description
- component.provideUtility(
- Permission(permission_name, title=title),
- name=permission_name)
+ # We can safely convert to unicode, since the directives make sure
+ # it is either unicode already or ASCII.
+ id = unicode(id)
+ permission = factory(
+ id,
+ unicode(util.class_annotation(factory, 'grok.title', id)),
+ unicode(util.class_annotation(factory, 'grok.description', '')))
+ component.provideUtility(permission, name=id)
return True
class DefineRoleGrokker(martian.ClassGrokker):
@@ -504,17 +504,22 @@
priority = DefinePermissionGrokker.priority - 1
def grok(self, name, factory, context, module_info, templates):
- role_name = util.class_annotation(factory, 'grok.name', None)
- if role_name is None:
+ id = util.class_annotation(factory, 'grok.name', None)
+ if id is None:
raise GrokError(
"A role needs to have a dotted name for its id. Use "
"grok.name to specify one.", factory)
- title = unicode(util.class_annotation(factory, 'grok.title', role_name))
- component.provideUtility(Role(role_name, title=title), name=role_name)
-
+ # We can safely convert to unicode, since the directives makes sure
+ # it is either unicode already or ASCII.
+ id = unicode(id)
+ role = factory(
+ id,
+ unicode(util.class_annotation(factory, 'grok.title', id)),
+ unicode(util.class_annotation(factory, 'grok.description', '')))
+ component.provideUtility(role, name=id)
permissions = util.class_annotation(factory, 'grok.permissions', ())
for permission in permissions:
- rolePermissionManager.grantPermissionToRole(permission, role_name)
+ rolePermissionManager.grantPermissionToRole(permission, id)
return True
class AnnotationGrokker(martian.ClassGrokker):
More information about the Checkins
mailing list