[Checkins] SVN: grok/branches/jw-define-roles-directive/src/grok/directive.py Add title and permissions directive.

Jan-Wijbrand Kolman janwijbrand at gmail.com
Fri Aug 3 17:36:27 EDT 2007


Log message for revision 78563:
  Add title and permissions directive.

Changed:
  U   grok/branches/jw-define-roles-directive/src/grok/directive.py

-=-
Modified: grok/branches/jw-define-roles-directive/src/grok/directive.py
===================================================================
--- grok/branches/jw-define-roles-directive/src/grok/directive.py	2007-08-03 20:40:49 UTC (rev 78562)
+++ grok/branches/jw-define-roles-directive/src/grok/directive.py	2007-08-03 21:36:26 UTC (rev 78563)
@@ -17,7 +17,8 @@
 from zope.interface.interfaces import IInterface
 
 from martian.error import GrokImportError
-from martian.directive import (MultipleTimesDirective, BaseTextDirective,
+from martian.directive import (OnceDirective,
+                               MultipleTimesDirective, BaseTextDirective,
                                SingleValue, SingleTextDirective,
                                MultipleTextDirective,
                                MarkerDirective,
@@ -77,21 +78,6 @@
         self.name_in_container = name_in_container
 
 
-class DefineRoleDirective(MultipleTimesDirective):
-
-    def check_arguments(self, id, permissions):
-        if permissions is None:
-            return
-        if isinstance(permissions, types.TupleType):
-            return
-        raise GrokImportError(
-            "You need to pass either None, or a tuple of permission ids to "
-            "the permissions argument of %s." % self.name)
-
-    def value_factory(self, id, permissions):
-        return (id, permissions)
-
-
 class RequireDirective(BaseTextDirective, SingleValue, MultipleTimesDirective):
 
     def store(self, frame, value):
@@ -108,7 +94,14 @@
             return func
         return decorator
 
+class MultiValueOnceDirective(OnceDirective):
 
+    def check_arguments(self, *values):
+        pass
+    
+    def value_factory(self, *args):
+        return args
+
 # Define grok directives
 name = SingleTextDirective('grok.name', ClassDirectiveContext())
 template = SingleTextDirective('grok.template', ClassDirectiveContext())
@@ -123,7 +116,9 @@
                                       ClassDirectiveContext())
 define_permission = MultipleTextDirective('grok.define_permission',
                                           ModuleDirectiveContext())
-define_role = DefineRoleDirective('grok.define_role', ModuleDirectiveContext())
 require = RequireDirective('grok.require', ClassDirectiveContext())
 site = InterfaceOrClassDirective('grok.site',
                                  ClassDirectiveContext())
+title = SingleTextDirective('grok.title', ClassDirectiveContext())
+permissions = MultiValueOnceDirective(
+    'grok.permissions', ClassDirectiveContext())



More information about the Checkins mailing list