[Checkins] SVN: z3c.form/trunk/ Don't create unnecessary self.items in update() method of

Vincent Fretin vincent.fretin at gmail.com
Sat Feb 6 11:49:33 EST 2010


Log message for revision 108841:
  Don't create unnecessary self.items in update() method of
  SelectWidget in DISPLAY_MODE. Now items is a property.
  

Changed:
  U   z3c.form/trunk/CHANGES.txt
  U   z3c.form/trunk/src/z3c/form/browser/select.py

-=-
Modified: z3c.form/trunk/CHANGES.txt
===================================================================
--- z3c.form/trunk/CHANGES.txt	2010-02-06 15:23:31 UTC (rev 108840)
+++ z3c.form/trunk/CHANGES.txt	2010-02-06 16:49:32 UTC (rev 108841)
@@ -5,7 +5,8 @@
 2.3.3 (unreleased)
 ------------------
 
-- Nothing changed yet.
+- Don't create unnecessary self.items in update() method of
+  SelectWidget in DISPLAY_MODE. Now items is a property.
 
 
 2.3.2 (2010-01-21)

Modified: z3c.form/trunk/src/z3c/form/browser/select.py
===================================================================
--- z3c.form/trunk/src/z3c/form/browser/select.py	2010-02-06 15:23:31 UTC (rev 108840)
+++ z3c.form/trunk/src/z3c/form/browser/select.py	2010-02-06 16:49:32 UTC (rev 108841)
@@ -33,7 +33,6 @@
     zope.interface.implementsOnly(interfaces.ISelectWidget)
 
     klass = u'select-widget'
-    items = ()
     prompt = False
 
     noValueMessage = _('no value')
@@ -50,12 +49,17 @@
         """See z3c.form.interfaces.IWidget."""
         super(SelectWidget, self).update()
         widget.addFieldClass(self)
-        self.items = []
+
+    @property
+    def items(self):
+        if self.terms is None:  # update() has not been called yet
+            return ()
+        items = []
         if (not self.required or self.prompt) and self.multiple is None:
             message = self.noValueMessage
             if self.prompt:
                 message = self.promptMessage
-            self.items.append({
+            items.append({
                 'id': self.id + '-novalue',
                 'value': self.noValueToken,
                 'content': message,
@@ -68,9 +72,10 @@
             if zope.schema.interfaces.ITitledTokenizedTerm.providedBy(term):
                 content = translate(
                     term.title, context=self.request, default=term.title)
-            self.items.append(
+            items.append(
                 {'id':id, 'value':term.token, 'content':content,
                  'selected':selected})
+        return items
 
 
 @zope.component.adapter(zope.schema.interfaces.IChoice, interfaces.IFormLayer)



More information about the checkins mailing list