[Checkins] SVN: five.grok/trunk/src/five/grok/directive.py Added the directive file for the require directive.

Lennart Regebro regebro at gmail.com
Sat Apr 26 06:25:32 EDT 2008


Log message for revision 85756:
  Added the directive file for the require directive.
  

Changed:
  A   five.grok/trunk/src/five/grok/directive.py

-=-
Added: five.grok/trunk/src/five/grok/directive.py
===================================================================
--- five.grok/trunk/src/five/grok/directive.py	                        (rev 0)
+++ five.grok/trunk/src/five/grok/directive.py	2008-04-26 10:25:26 UTC (rev 85756)
@@ -0,0 +1,29 @@
+from martian.directive import (OnceDirective,
+                               MultipleTimesDirective, BaseTextDirective,
+                               SingleValue, SingleTextDirective,
+                               MultipleTextDirective,
+                               MarkerDirective,
+                               InterfaceDirective,
+                               InterfaceOrClassDirective,
+                               ModuleDirectiveContext,
+                               OptionalValueDirective,
+                               ClassDirectiveContext,
+                               ClassOrModuleDirectiveContext)
+
+class RequireDirective(BaseTextDirective, SingleValue, MultipleTimesDirective):
+
+    def store(self, frame, value):
+        super(RequireDirective, self).store(frame, value)
+        values = frame.f_locals.get(self.local_name, [])
+
+        # grok.require can be used both as a class-level directive and
+        # as a decorator for methods.  Therefore we return a decorator
+        # here, which may be used for methods, or simply ignored when
+        # used as a directive.
+        def decorator(func):
+            permission = values.pop()
+            func.__grok_require__ = permission
+            return func
+        return decorator
+    
+require = RequireDirective('grok.require', ClassDirectiveContext()) 
\ No newline at end of file


Property changes on: five.grok/trunk/src/five/grok/directive.py
___________________________________________________________________
Name: svn:keywords
   + Id



More information about the Checkins mailing list