[Checkins] SVN: z3c.tabular/trunk/ not well tested... fix my bug

Adam Groszer agroszer at gmail.com
Mon Oct 19 08:35:33 EDT 2009


Log message for revision 105140:
  not well tested... fix my bug

Changed:
  U   z3c.tabular/trunk/CHANGES.txt
  U   z3c.tabular/trunk/src/z3c/tabular/README.txt
  U   z3c.tabular/trunk/src/z3c/tabular/table.py

-=-
Modified: z3c.tabular/trunk/CHANGES.txt
===================================================================
--- z3c.tabular/trunk/CHANGES.txt	2009-10-19 12:04:59 UTC (rev 105139)
+++ z3c.tabular/trunk/CHANGES.txt	2009-10-19 12:35:32 UTC (rev 105140)
@@ -5,7 +5,7 @@
 0.5.2dev (unrleased)
 --------------------
 
-- ...
+- Fix my bug introduced in 0.5.1
 
 0.5.1 (2009-10-19)
 ------------------

Modified: z3c.tabular/trunk/src/z3c/tabular/README.txt
===================================================================
--- z3c.tabular/trunk/src/z3c/tabular/README.txt	2009-10-19 12:04:59 UTC (rev 105139)
+++ z3c.tabular/trunk/src/z3c/tabular/README.txt	2009-10-19 12:35:32 UTC (rev 105140)
@@ -177,7 +177,7 @@
   </form>
 
 
-Now we are ready to select an item by click on the link. We simlate this by
+Now we are ready to select an item by click on the link. We simulate this by
 set the relevant data in the request:
 
   >>> selectRequest = TestRequest(form={
@@ -187,103 +187,276 @@
   >>> selectedItemTable.__name__ = 'view.html'
   >>> selectedItemTable.update()
   >>> print selectedItemTable.render()
-    <form action="http://127.0.0.1" method="post"
-          enctype="multipart/form-data" class="edit-form"
-          name="subFormTable" id="subFormTable">
-      <div class="viewspace">
+  <form action="http://127.0.0.1" method="post"
+        enctype="multipart/form-data" class="edit-form"
+        name="subFormTable" id="subFormTable">
+    <div class="viewspace">
+      <div>
+      <table width="100%" border="0" cellspacing="0" cellpadding="0">
+        <tr>
+          <td valign="top">
+            <div>
+              <table class="contents">
+                <thead>
+                  <tr>
+                    <th>Name</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr class="even">
+                    <td><a href="http://127.0.0.1/container/view.html?subFormTable-selectedItem-0-selectedItems=first">first</a></td>
+                  </tr>
+                  <tr class="selected odd">
+                    <td><a href="http://127.0.0.1/container/view.html?subFormTable-selectedItem-0-selectedItems=second">second</a></td>
+                  </tr>
+                  <tr class="even">
+                    <td><a href="http://127.0.0.1/container/view.html?subFormTable-selectedItem-0-selectedItems=third">third</a></td>
+                  </tr>
+                </tbody>
+              </table>
+            </div>
+          </td>
+          <td valign="top">
+            <div class="tableForm">
+  <form action="http://127.0.0.1" method="post"
+        enctype="multipart/form-data" class="edit-form"
+        name="form" id="form">
+    <div class="viewspace">
+        <div class="required-info">
+           <span class="required">*</span>
+           &ndash; required
+        </div>
         <div>
-        <table width="100%" border="0" cellspacing="0" cellpadding="0">
-          <tr>
-            <td valign="top">
-              <div>
-                <table class="contents">
-                  <thead>
-                    <tr>
-                      <th>Name</th>
-                    </tr>
-                  </thead>
-                  <tbody>
-                    <tr class="even">
-                      <td><a href="http://127.0.0.1/container/view.html?subFormTable-selectedItem-0-selectedItems=first">first</a></td>
-                    </tr>
-                    <tr class="selected odd">
-                      <td><a href="http://127.0.0.1/container/view.html?subFormTable-selectedItem-0-selectedItems=second">second</a></td>
-                    </tr>
-                    <tr class="even">
-                      <td><a href="http://127.0.0.1/container/view.html?subFormTable-selectedItem-0-selectedItems=third">third</a></td>
-                    </tr>
-                  </tbody>
-                </table>
+            <div id="form-widgets-title-row" class="row">
+              <div class="label">
+                <label for="form-widgets-title">
+                  <span>Title</span>
+                  <span class="required">*</span>
+                </label>
               </div>
-            </td>
-            <td valign="top">
-              <div class="tableForm">
-    <form action="http://127.0.0.1" method="post"
-          enctype="multipart/form-data" class="edit-form"
-          name="form" id="form">
-      <div class="viewspace">
-          <div class="required-info">
-             <span class="required">*</span>
-             &ndash; required
+              <div class="widget">
+              <input id="form-widgets-title" name="form.widgets.title"
+                     class="text-widget required textline-field"
+                     value="Second" type="text" />
+            </div>
           </div>
-          <div>
-              <div id="form-widgets-title-row" class="row">
-                <div class="label">
-                  <label for="form-widgets-title">
-                    <span>Title</span>
-                    <span class="required">*</span>
-                  </label>
-                </div>
-                <div class="widget">
-                <input id="form-widgets-title" name="form.widgets.title"
-                       class="text-widget required textline-field"
-                       value="Second" type="text" />
+          <div id="form-widgets-number-row" class="row">
+              <div class="label">
+                <label for="form-widgets-number">
+                  <span>Number</span>
+                  <span class="required">*</span>
+                </label>
               </div>
-            </div>
-            <div id="form-widgets-number-row" class="row">
-                <div class="label">
-                  <label for="form-widgets-number">
-                    <span>Number</span>
-                    <span class="required">*</span>
-                  </label>
-                </div>
-                <div class="widget">
-                <input id="form-widgets-number"
-                       name="form.widgets.number"
-                       class="text-widget required int-field" value="2"
-                       type="text" />
-            </div>
+              <div class="widget">
+              <input id="form-widgets-number"
+                     name="form.widgets.number"
+                     class="text-widget required int-field" value="2"
+                     type="text" />
           </div>
         </div>
       </div>
+    </div>
+    <div>
+      <div class="buttons">
+        <input id="form-buttons-apply" name="form.buttons.apply"
+               class="submit-widget button-field" value="Apply"
+               type="submit" />
+      </div>
+    </div>
+  </form>
+            </div>
+          </td>
+        </tr>
+      </table>
+    </div>
+    </div>
+    <div>
+      <div class="buttons">
+        <input id="subFormTable-buttons-delete"
+               name="subFormTable.buttons.delete"
+               class="submit-widget button-field" value="Delete"
+               type="submit" />
+        <input id="subFormTable-buttons-edit"
+               name="subFormTable.buttons.edit"
+               class="submit-widget button-field" value="Edit"
+               type="submit" />
+        <input id="subFormTable-buttons-cancel"
+               name="subFormTable.buttons.cancel"
+               class="submit-widget button-field" value="Cancel"
+               type="submit" />
+      </div>
+    </div>
+  </form>
+
+
+Clicking the ``Edit`` button at the same time should hold the same result:
+
+  >>> selectRequest = TestRequest(form={
+  ...     'subFormTable-selectedItem-0-selectedItems': 'second',
+  ...     'subFormTable.buttons.edit': 'Edit'})
+  >>> alsoProvides(selectRequest, IDivFormLayer)
+  >>> selectedItemTable = ContentFormTable(container, selectRequest)
+  >>> selectedItemTable.__name__ = 'view.html'
+  >>> selectedItemTable.update()
+  >>> print selectedItemTable.render()
+    <form action="http://127.0.0.1" method="post"
+        enctype="multipart/form-data" class="edit-form"
+        name="subFormTable" id="subFormTable">
+    <div class="viewspace">
       <div>
-        <div class="buttons">
-          <input id="form-buttons-apply" name="form.buttons.apply"
-                 class="submit-widget button-field" value="Apply"
-                 type="submit" />
+      <table width="100%" border="0" cellspacing="0" cellpadding="0">
+        <tr>
+          <td valign="top">
+            <div>
+              <table class="contents">
+                <thead>
+                  <tr>
+                    <th>Name</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr class="even">
+                    <td><a href="http://127.0.0.1/container/view.html?subFormTable-selectedItem-0-selectedItems=first">first</a></td>
+                  </tr>
+                  <tr class="selected odd">
+                    <td><a href="http://127.0.0.1/container/view.html?subFormTable-selectedItem-0-selectedItems=second">second</a></td>
+                  </tr>
+                  <tr class="even">
+                    <td><a href="http://127.0.0.1/container/view.html?subFormTable-selectedItem-0-selectedItems=third">third</a></td>
+                  </tr>
+                </tbody>
+              </table>
+            </div>
+          </td>
+          <td valign="top">
+            <div class="tableForm">
+  <form action="http://127.0.0.1" method="post"
+        enctype="multipart/form-data" class="edit-form"
+        name="form" id="form">
+    <div class="viewspace">
+        <div class="required-info">
+           <span class="required">*</span>
+           &ndash; required
         </div>
-      </div>
-    </form>
+        <div>
+            <div id="form-widgets-title-row" class="row">
+              <div class="label">
+                <label for="form-widgets-title">
+                  <span>Title</span>
+                  <span class="required">*</span>
+                </label>
               </div>
-            </td>
-          </tr>
-        </table>
+              <div class="widget">
+              <input id="form-widgets-title" name="form.widgets.title"
+                     class="text-widget required textline-field"
+                     value="Second" type="text" />
+            </div>
+          </div>
+          <div id="form-widgets-number-row" class="row">
+              <div class="label">
+                <label for="form-widgets-number">
+                  <span>Number</span>
+                  <span class="required">*</span>
+                </label>
+              </div>
+              <div class="widget">
+              <input id="form-widgets-number"
+                     name="form.widgets.number"
+                     class="text-widget required int-field" value="2"
+                     type="text" />
+          </div>
+        </div>
       </div>
+    </div>
+    <div>
+      <div class="buttons">
+        <input id="form-buttons-apply" name="form.buttons.apply"
+               class="submit-widget button-field" value="Apply"
+               type="submit" />
       </div>
+    </div>
+  </form>
+            </div>
+          </td>
+        </tr>
+      </table>
+    </div>
+    </div>
+    <div>
+      <div class="buttons">
+        <input id="subFormTable-buttons-delete"
+               name="subFormTable.buttons.delete"
+               class="submit-widget button-field" value="Delete"
+               type="submit" />
+        <input id="subFormTable-buttons-edit"
+               name="subFormTable.buttons.edit"
+               class="submit-widget button-field" value="Edit"
+               type="submit" />
+        <input id="subFormTable-buttons-cancel"
+               name="subFormTable.buttons.cancel"
+               class="submit-widget button-field" value="Cancel"
+               type="submit" />
+      </div>
+    </div>
+  </form>
+
+Unless ``allowEdit`` is ``False``.
+In this case the editform won't appear.
+
+  >>> selectRequest = TestRequest(form={
+  ...     'subFormTable-selectedItem-0-selectedItems': 'second',
+  ...     'subFormTable.buttons.edit': 'Edit'})
+  >>> alsoProvides(selectRequest, IDivFormLayer)
+  >>> selectedItemTable = ContentFormTable(container, selectRequest)
+  >>> selectedItemTable.__name__ = 'view.html'
+  >>> selectedItemTable.allowEdit = False
+  >>> selectedItemTable.update()
+  >>> print selectedItemTable.render()
+    <form action="http://127.0.0.1" method="post"
+        enctype="multipart/form-data" class="edit-form"
+        name="subFormTable" id="subFormTable">
+    <div class="viewspace">
       <div>
-        <div class="buttons">
-          <input id="subFormTable-buttons-delete"
-                 name="subFormTable.buttons.delete"
-                 class="submit-widget button-field" value="Delete"
-                 type="submit" />
-          <input id="subFormTable-buttons-edit"
-                 name="subFormTable.buttons.edit"
-                 class="submit-widget button-field" value="Edit"
-                 type="submit" />
-          <input id="subFormTable-buttons-cancel"
-                 name="subFormTable.buttons.cancel"
-                 class="submit-widget button-field" value="Cancel"
-                 type="submit" />
-        </div>
+      <table width="100%" border="0" cellspacing="0" cellpadding="0">
+        <tr>
+          <td valign="top">
+            <div>
+              <table class="contents">
+                <thead>
+                  <tr>
+                    <th>Name</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr class="even">
+                    <td><a href="http://127.0.0.1/container/view.html?subFormTable-selectedItem-0-selectedItems=first">first</a></td>
+                  </tr>
+                  <tr class="selected odd">
+                    <td><a href="http://127.0.0.1/container/view.html?subFormTable-selectedItem-0-selectedItems=second">second</a></td>
+                  </tr>
+                  <tr class="even">
+                    <td><a href="http://127.0.0.1/container/view.html?subFormTable-selectedItem-0-selectedItems=third">third</a></td>
+                  </tr>
+                </tbody>
+              </table>
+            </div>
+          </td>
+          <td valign="top">
+          </td>
+        </tr>
+      </table>
+    </div>
+    </div>
+    <div>
+      <div class="buttons">
+        <input id="subFormTable-buttons-delete"
+               name="subFormTable.buttons.delete"
+               class="submit-widget button-field" value="Delete"
+               type="submit" />
+        <input id="subFormTable-buttons-cancel"
+               name="subFormTable.buttons.cancel"
+               class="submit-widget button-field" value="Cancel"
+               type="submit" />
       </div>
-    </form>
\ No newline at end of file
+    </div>
+  </form>

Modified: z3c.tabular/trunk/src/z3c/tabular/table.py
===================================================================
--- z3c.tabular/trunk/src/z3c/tabular/table.py	2009-10-19 12:04:59 UTC (rev 105139)
+++ z3c.tabular/trunk/src/z3c/tabular/table.py	2009-10-19 12:35:32 UTC (rev 105140)
@@ -225,6 +225,8 @@
                 self.request), name=self.subFormName)
 
     def updateSubForm(self):
+        if not self.supportsEdit:
+            return
         selectedItem = self.selectedItem
         if selectedItem is None:
             return
@@ -244,9 +246,9 @@
         self.subForm.ignoreRequest = True
         self.subForm.update()
 
-    @button.buttonAndHandler(u'Edit')
-    def handleSubForm(self, action,
-                      condition=lambda form:form.supportsEdit):
+    @button.buttonAndHandler(u'Edit', condition=lambda form:form.supportsEdit)
+    def handleSubForm(self, action):
+        self.updateSubForm()
         self.doSubForm(action)
 
     @button.buttonAndHandler(_('Cancel'), name='cancel',



More information about the checkins mailing list