[Checkins]
SVN: grok/branches/jw-philipp-using-ndir-directives/src/grok/
Use the grok.require directive in the grokkers and replace a
utility function with a custom getter.
Philipp von Weitershausen
philikon at philikon.de
Sat May 3 09:34:48 EDT 2008
Log message for revision 86209:
Use the grok.require directive in the grokkers and replace a utility function with a custom getter.
Changed:
U grok/branches/jw-philipp-using-ndir-directives/src/grok/directive.py
U grok/branches/jw-philipp-using-ndir-directives/src/grok/meta.py
U grok/branches/jw-philipp-using-ndir-directives/src/grok/util.py
-=-
Modified: grok/branches/jw-philipp-using-ndir-directives/src/grok/directive.py
===================================================================
--- grok/branches/jw-philipp-using-ndir-directives/src/grok/directive.py 2008-05-03 13:27:51 UTC (rev 86208)
+++ grok/branches/jw-philipp-using-ndir-directives/src/grok/directive.py 2008-05-03 13:34:48 UTC (rev 86209)
@@ -21,7 +21,7 @@
import martian
from martian import util
-from martian.error import GrokImportError
+from martian.error import GrokImportError, GrokError
from martian.directive import StoreMultipleTimes
from grok import components
@@ -61,6 +61,17 @@
class RequireDirectiveStore(StoreMultipleTimes):
+ def get(self, directive, component, default):
+ permissions = super(RequireDirectiveStore, self).get(
+ directive, component, default)
+ if (permissions is default) or not permissions:
+ return default
+ if len(permissions) > 1:
+ raise GrokError('grok.require was called multiple times in '
+ '%r. It may only be set once for a class.'
+ % component, component)
+ return permissions[0]
+
def pop(self, locals_, directive):
return locals_[directive.dotted_name()].pop()
@@ -88,7 +99,7 @@
# used as a directive.
frame = sys._getframe(1)
permission = self.store.pop(frame.f_locals, self)
- self.set(func, permission)
+ self.set(func, [permission])
return func
class site(martian.Directive):
Modified: grok/branches/jw-philipp-using-ndir-directives/src/grok/meta.py
===================================================================
--- grok/branches/jw-philipp-using-ndir-directives/src/grok/meta.py 2008-05-03 13:27:51 UTC (rev 86208)
+++ grok/branches/jw-philipp-using-ndir-directives/src/grok/meta.py 2008-05-03 13:34:48 UTC (rev 86209)
@@ -49,7 +49,7 @@
import grok
from grok import components, formlib, templatereg
-from grok.util import check_permission, get_default_permission, make_checker
+from grok.util import check_permission, make_checker
from grok.util import public_methods_from_class
from grok.rest import RestPublisher
from grok.interfaces import IRESTSkinType
@@ -84,9 +84,8 @@
view_context = get_context(factory, module_info)
methods = public_methods_from_class(factory)
+ default_permission = grok.require.get(factory)
- default_permission = get_default_permission(factory)
-
# make sure we issue an action to check whether this permission
# exists. That's the only thing that action does
if default_permission is not None:
@@ -134,8 +133,7 @@
view_context = get_context(factory, module_info)
methods = public_methods_from_class(factory)
-
- default_permission = get_default_permission(factory)
+ default_permission = grok.require.get(factory)
# make sure we issue an action to check whether this permission
# exists. That's the only thing that action does
if default_permission is not None:
@@ -237,7 +235,7 @@
args=(factory, adapts, interface.Interface, view_name),
)
- permission = get_default_permission(factory)
+ permission = grok.require.get(factory)
config.action(
discriminator=('protectName', factory, '__call__'),
callable=make_checker,
@@ -263,8 +261,7 @@
view_context = get_context(factory, module_info)
methods = public_methods_from_class(factory)
-
- default_permission = get_default_permission(factory)
+ default_permission = grok.require.get(factory)
# make sure we issue an action to check whether this permission
# exists. That's the only thing that action does
if default_permission is not None:
@@ -868,7 +865,7 @@
viewletmanager), IViewlet, viewlet_name)
)
- permission = get_default_permission(factory)
+ permission = grok.require.get(factory)
config.action(
discriminator=('protectName', factory, '__call__'),
callable=make_checker,
Modified: grok/branches/jw-philipp-using-ndir-directives/src/grok/util.py
===================================================================
--- grok/branches/jw-philipp-using-ndir-directives/src/grok/util.py 2008-05-03 13:27:51 UTC (rev 86208)
+++ grok/branches/jw-philipp-using-ndir-directives/src/grok/util.py 2008-05-03 13:34:48 UTC (rev 86209)
@@ -65,22 +65,6 @@
'grok.Permission first.'
% (permission, factory), factory)
-def get_default_permission(factory):
- """Determine the default permission for a view.
-
- There can be only 0 or 1 default permission.
- """
- permissions = class_annotation(factory, 'grok.require', [])
- if not permissions:
- return None
- if len(permissions) > 1:
- raise GrokError('grok.require was called multiple times in '
- '%r. It may only be set once for a class.'
- % factory, factory)
-
- result = permissions[0]
- return result
-
def url(request, obj, name=None, data={}):
url = component.getMultiAdapter((obj, request), IAbsoluteURL)()
if name is not None:
More information about the Checkins
mailing list