[Checkins] SVN: grok/trunk/src/grok/ - refactored __new__ of grok.Model into a function that is called during grok

Christian Theune ct at gocept.com
Thu Oct 19 14:56:42 EDT 2006


Log message for revision 70817:
   - refactored __new__ of grok.Model into a function that is called during grok
     time
  

Changed:
  U   grok/trunk/src/grok/_grok.py
  U   grok/trunk/src/grok/components.py

-=-
Modified: grok/trunk/src/grok/_grok.py
===================================================================
--- grok/trunk/src/grok/_grok.py	2006-10-19 17:35:41 UTC (rev 70816)
+++ grok/trunk/src/grok/_grok.py	2006-10-19 18:56:41 UTC (rev 70817)
@@ -109,7 +109,10 @@
     register_unassociated_templates(context, templates, module_info)
     register_subscribers(subscribers)
 
+    # Do various other initializations
+    initialize_schema(models)
 
+
 def scan_module(module_info):
     components = {
             grok.Model: [],
@@ -197,6 +200,12 @@
         if not getCheckerForInstancesOf(model):
             defineChecker(model, NoProxy)
 
+def initialize_schema(models):
+    # Set the default values as class attributes to make formlib work
+    for model in models:
+        for field in components.schema_fields(model):
+            setattr(model, field.__name__, field.default)
+
 def register_adapters(context, adapters):
     for factory in adapters:
         adapter_context = util.determine_class_context(factory, context)

Modified: grok/trunk/src/grok/components.py
===================================================================
--- grok/trunk/src/grok/components.py	2006-10-19 17:35:41 UTC (rev 70816)
+++ grok/trunk/src/grok/components.py	2006-10-19 18:56:41 UTC (rev 70817)
@@ -39,15 +39,11 @@
 
 from grok import util, security
 
+
 class Model(persistent.Persistent):
-    def __new__(class_, *args, **kw):
-        instance = super(Model, class_).__new__(class_, args, kw)
+    pass
 
-        for field in schema_fields(instance):
-            setattr(instance, field.__name__, field.default)
 
-        return instance
-
 class Container(BTreeContainer):
     pass
 
@@ -196,7 +192,7 @@
     def _init(self):
         fields = schema_fields(self.context)
         self.form_fields = form.Fields(*fields)
-            
+
         self.template = component.getAdapter(self, INamedTemplate,
                                              name='default')
     def __call__(self):



More information about the Checkins mailing list