[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