[Checkins]
SVN: grokapps/rdbexample/trunk/megrok.rdb/src/megrok/rdb/
Use new-style directives now used by Grok trunk, so that the
Martijn Faassen
faassen at infrae.com
Mon May 5 08:41:22 EDT 2008
Log message for revision 86444:
Use new-style directives now used by Grok trunk, so that the
example works again.
Changed:
U grokapps/rdbexample/trunk/megrok.rdb/src/megrok/rdb/components.py
U grokapps/rdbexample/trunk/megrok.rdb/src/megrok/rdb/directive.py
U grokapps/rdbexample/trunk/megrok.rdb/src/megrok/rdb/meta.py
-=-
Modified: grokapps/rdbexample/trunk/megrok.rdb/src/megrok/rdb/components.py
===================================================================
--- grokapps/rdbexample/trunk/megrok.rdb/src/megrok/rdb/components.py 2008-05-05 11:36:55 UTC (rev 86443)
+++ grokapps/rdbexample/trunk/megrok.rdb/src/megrok/rdb/components.py 2008-05-05 12:41:21 UTC (rev 86444)
@@ -7,6 +7,8 @@
from grokcore.component import Context
from grok.interfaces import IContainer
+from megrok.rdb import directive
+
_lcl_metadata = MetaData()
class Model(Context):
@@ -32,8 +34,9 @@
implements(IContainer)
def __init__(self, *args, **kw):
- if hasattr(self, '__rdb_key__'):
- keyfunc = lambda node:getattr(node, self.__rdb_key__)
+ rdb_key = directive.key.get(self)
+ if rdb_key:
+ keyfunc = lambda node:getattr(node, rdb_key)
elif hasattr(self, 'keyfunc'):
keyfunc = self.keyfunc
else:
Modified: grokapps/rdbexample/trunk/megrok.rdb/src/megrok/rdb/directive.py
===================================================================
--- grokapps/rdbexample/trunk/megrok.rdb/src/megrok/rdb/directive.py 2008-05-05 11:36:55 UTC (rev 86443)
+++ grokapps/rdbexample/trunk/megrok.rdb/src/megrok/rdb/directive.py 2008-05-05 12:41:21 UTC (rev 86444)
@@ -1,11 +1,7 @@
-from martian.directive import (OnceDirective, SingleTextDirective,
- SingleValue,
- ClassDirectiveContext)
+from martian import Directive, CLASS, ONCE
-class RdbKeyDirective(SingleTextDirective, OnceDirective):
- """
- Directive that accepts a string to be used as the lookup key
- """
- pass
+class key(Directive):
+ scope = CLASS
+ store = ONCE
+ default = u''
-key = RdbKeyDirective('rdb.key', ClassDirectiveContext())
Modified: grokapps/rdbexample/trunk/megrok.rdb/src/megrok/rdb/meta.py
===================================================================
--- grokapps/rdbexample/trunk/megrok.rdb/src/megrok/rdb/meta.py 2008-05-05 11:36:55 UTC (rev 86443)
+++ grokapps/rdbexample/trunk/megrok.rdb/src/megrok/rdb/meta.py 2008-05-05 12:41:21 UTC (rev 86444)
@@ -2,12 +2,14 @@
from martian.error import GrokError
import megrok.rdb
+from megrok.rdb import directive
class ContainerGrokker(martian.ClassGrokker):
component_class = megrok.rdb.Container
def grok(self, name, factory, module_info, config, **kw):
- if hasattr(factory, 'keyfunc') and hasattr(factory, '__rdb_key__'):
+ rdb_key = directive.key.get(factory)
+ if rdb_key and hasattr(factory, 'keyfunc'):
raise GrokError(
"It is not allowed to specify a custom 'keyfunc' method "
"for rdb.Container %r, when a rdb.key directive has also "
More information about the Checkins
mailing list