[Checkins] SVN: grok/branches/jw-define-roles-directive/src/grok/
Remove the define_permission directive in favor of the
grok.Permission
Jan-Wijbrand Kolman
janwijbrand at gmail.com
Mon Aug 20 10:49:53 EDT 2007
Log message for revision 79030:
Remove the define_permission directive in favor of the grok.Permission
component base class.
Changed:
U grok/branches/jw-define-roles-directive/src/grok/__init__.py
U grok/branches/jw-define-roles-directive/src/grok/components.py
U grok/branches/jw-define-roles-directive/src/grok/directive.py
U grok/branches/jw-define-roles-directive/src/grok/interfaces.py
U grok/branches/jw-define-roles-directive/src/grok/meta.py
U grok/branches/jw-define-roles-directive/src/grok/util.py
-=-
Modified: grok/branches/jw-define-roles-directive/src/grok/__init__.py
===================================================================
--- grok/branches/jw-define-roles-directive/src/grok/__init__.py 2007-08-20 11:03:13 UTC (rev 79029)
+++ grok/branches/jw-define-roles-directive/src/grok/__init__.py 2007-08-20 14:49:52 UTC (rev 79030)
@@ -35,10 +35,10 @@
from grok.components import Site, GlobalUtility, LocalUtility, Annotation
from grok.components import Application, Form, AddForm, EditForm, DisplayForm
from grok.components import Indexes
-from grok.components import Role
+from grok.components import Permission, Role
from grok.directive import (context, name, title, template, templatedir,
provides, baseclass, global_utility, local_utility,
- define_permission, permissions, require, site)
+ permissions, require, site)
from grok._grok import do_grok as grok # Avoid name clash within _grok
from grok._grok import grok_component
from grok._grok import SubscribeDecorator as subscribe
Modified: grok/branches/jw-define-roles-directive/src/grok/components.py
===================================================================
--- grok/branches/jw-define-roles-directive/src/grok/components.py 2007-08-20 11:03:13 UTC (rev 79029)
+++ grok/branches/jw-define-roles-directive/src/grok/components.py 2007-08-20 14:49:52 UTC (rev 79030)
@@ -473,5 +473,8 @@
Indexes = IndexesClass('Indexes')
+class Permission(object):
+ pass
+
class Role(object):
pass
Modified: grok/branches/jw-define-roles-directive/src/grok/directive.py
===================================================================
--- grok/branches/jw-define-roles-directive/src/grok/directive.py 2007-08-20 11:03:13 UTC (rev 79029)
+++ grok/branches/jw-define-roles-directive/src/grok/directive.py 2007-08-20 14:49:52 UTC (rev 79030)
@@ -98,7 +98,7 @@
def check_arguments(self, *values):
pass
-
+
def value_factory(self, *args):
return args
@@ -114,8 +114,6 @@
ModuleDirectiveContext())
local_utility = LocalUtilityDirective('grok.local_utility',
ClassDirectiveContext())
-define_permission = MultipleTextDirective('grok.define_permission',
- ModuleDirectiveContext())
require = RequireDirective('grok.require', ClassDirectiveContext())
site = InterfaceOrClassDirective('grok.site',
ClassDirectiveContext())
Modified: grok/branches/jw-define-roles-directive/src/grok/interfaces.py
===================================================================
--- grok/branches/jw-define-roles-directive/src/grok/interfaces.py 2007-08-20 11:03:13 UTC (rev 79029)
+++ grok/branches/jw-define-roles-directive/src/grok/interfaces.py 2007-08-20 14:49:52 UTC (rev 79030)
@@ -43,6 +43,8 @@
DisplayForm = interface.Attribute("Base class for display forms.")
Indexes = interface.Attribute("Base class for catalog index definitions.")
+ Permission = interface.Attribute("Base class for a permission definition.")
+ Role = interface.Attribute("Base class for a role definition.")
class IGrokErrors(interface.Interface):
@@ -122,14 +124,11 @@
name_in_container - the name to use for storing the utility
"""
- def define_permission(permission):
- """Defines a new permission with the id ``permission``."""
-
def require(permission):
"""Protect a view class or an XMLRPC method with ``permision``.
``permission`` must already be defined, e.g. using
- grok.define_permission.
+ grok.Permission.
grok.require can be used as a class-level directive or as a
method decorator."""
Modified: grok/branches/jw-define-roles-directive/src/grok/meta.py
===================================================================
--- grok/branches/jw-define-roles-directive/src/grok/meta.py 2007-08-20 11:03:13 UTC (rev 79029)
+++ grok/branches/jw-define-roles-directive/src/grok/meta.py 2007-08-20 14:49:52 UTC (rev 79030)
@@ -492,22 +492,23 @@
site_manager.registerUtility(utility, provided=provides,
name=name)
-
-class DefinePermissionGrokker(martian.GlobalGrokker):
-
+class DefinePermissionGrokker(martian.ClassGrokker):
+ component_class = grok.Permission
priority = 1500
- def grok(self, name, module, context, module_info, templates):
- permissions = module_info.getAnnotation('grok.define_permission', [])
- for permission in permissions:
- # IPermission.title says that permission ids (and titles,
- # descriptions) *must* be unicode objects. Good news is
- # that the directive handler already made sure we either
- # got pure ASCII or unicode here:
- permission = unicode(permission)
- # TODO permission title and description
- component.provideUtility(Permission(permission, title=permission),
- name=permission)
+ def grok(self, name, factory, context, module_info, templates):
+ permission_name = util.class_annotation(factory, 'grok.name', None)
+ if permission_name 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)
return True
class DefineRoleGrokker(martian.ClassGrokker):
@@ -519,7 +520,7 @@
if role_name is None:
raise GrokError(
"A role needs to have a dotted name for its id. Use "
- "grok.name to specifiy one.", factory)
+ "grok.name to specify one.", factory)
title = util.class_annotation(factory, 'grok.title', role_name)
component.provideUtility(Role(role_name, title=title), name=role_name)
Modified: grok/branches/jw-define-roles-directive/src/grok/util.py
===================================================================
--- grok/branches/jw-define-roles-directive/src/grok/util.py 2007-08-20 11:03:13 UTC (rev 79029)
+++ grok/branches/jw-define-roles-directive/src/grok/util.py 2007-08-20 14:49:52 UTC (rev 79030)
@@ -55,7 +55,7 @@
if component.queryUtility(IPermission,
name=permission) is None:
raise GrokError('Undefined permission %r in %r. Use '
- 'grok.define_permission first.'
+ 'grok.Permission first.'
% (permission, factory), factory)
def get_default_permission(factory):
More information about the Checkins
mailing list