[Checkins] SVN: Products.CMFDefault/branches/charlie_formlib_for_folders/Products/CMFDefault/browser/new_folder.py Form method get_hidden_vars renamed to overwrite BatchView method

Charlie Clark charlie at begeistert.org
Thu Aug 13 17:11:08 EDT 2009


Log message for revision 102748:
  Form method get_hidden_vars renamed to overwrite BatchView method
  Position calculation.
  Headings formatted as per original.

Changed:
  U   Products.CMFDefault/branches/charlie_formlib_for_folders/Products/CMFDefault/browser/new_folder.py

-=-
Modified: Products.CMFDefault/branches/charlie_formlib_for_folders/Products/CMFDefault/browser/new_folder.py
===================================================================
--- Products.CMFDefault/branches/charlie_formlib_for_folders/Products/CMFDefault/browser/new_folder.py	2009-08-13 20:40:38 UTC (rev 102747)
+++ Products.CMFDefault/branches/charlie_formlib_for_folders/Products/CMFDefault/browser/new_folder.py	2009-08-13 21:11:08 UTC (rev 102748)
@@ -102,7 +102,7 @@
 
     @memoize
     def _getNavigationVars(self):
-        return self._get_hidden_vars()
+        return self._getHiddenVars()
 
     @memoize
     def _getNavigationURL(self, b_start):
@@ -342,7 +342,7 @@
             data['%s.name' %i.id] = i.getId()
         self.hidden_widgets = form.setUpDataWidgets(
                 self.hidden_fields, "", self.context,
-                self.request, data=self._get_hidden_vars(),
+                self.request, data=self._getHiddenVars(),
                         ignore_request=ignore_request)
         self.widgets = form.setUpDataWidgets(
                 self.form_fields, self.prefix, self.context,
@@ -351,6 +351,7 @@
                 self.delta_field, self.prefix, self.context,
                 self.request, ignore_request=ignore_request)
                 
+    @memoize
     def _get_sorting(self):
         """How should the contents be sorted"""
         key = self.request.form.get('key', None)
@@ -358,9 +359,14 @@
             return (key, self.request.form.get('reverse', 0))
         else:
             return self.context.getDefaultSorting()
+            
+    @memoize
+    def _is_default_sorting(self):
+        return self._get_sorting() == self.context.getDefaultSorting()
     
+    @memoize
     def column_headings(self):
-        (key, reverse) = self._get_sorting()
+        key, reverse = self._get_sorting()
         columns = ( {'key': 'Type',
                      'title': _(u'Type'),
                      'colspan': '2'}
@@ -373,36 +379,42 @@
                   )
         for column in columns:
             if key == column['key'] and not reverse and key != 'position':
-                query = urllib.urlencode({'key':column['key'], 'reverse':1})
+                query = make_query(key=column['key'], reverse=1)
             else:
-                query = urllib.urlencode({'key':column['key']})
+                query = make_query(key=column['key'])
             column['url'] = '%s?%s' % (self._getViewURL(), query)
         return tuple(columns)
         
+    @memoize
     def _get_items(self):
         (key, reverse) = self._get_sorting()
         items = self.contents
         return sequence.sort(items,
                              ((key, 'cmp', reverse and 'desc' or 'asc'),))
     
+    @memoize
     def list_batch_items(self):
         """Return the widgets for the form in the interface field order"""
         batch_obj = self._getBatchObj()
+        b_start = self._getBatchStart()
+        (key, reverse) = self._get_sorting()
         fields = []
 
-        for item in batch_obj:
+        for idx, item in enumerate(batch_obj):
             field = {'ModificationDate':item.ModificationDate()}
             field['select'] = self.widgets['%s.select' % item.getId()]
             field['name'] = self.widgets['%s.name' % item.getId()]
             field['url'] = item.absolute_url()
             field['title'] = item.TitleOrId()
             field['icon'] = item.icon
-            field['position'] = self.context.contentIds().index(
-                                                item.getId()) + 1
+            field['position'] = (key == 'position') \
+                                and str(b_start + idx + 1) \
+                                or '...'
             field['type'] = item.Type() or None
             fields.append(field.copy())
         return fields
                 
+    @memoize
     def _get_ids(self, data):
         """Identify objects that have been selected"""
         ids = [k.split(".")[0] for k, v in data.items() 
@@ -410,9 +422,10 @@
                             and k.split(".")[-1] == 'select']
         return ids
 
-    def _get_hidden_vars(self):
+    @memoize    
+    def _getHiddenVars(self):
         b_start = self._getBatchStart()
-        is_default = self.context.getDefaultSorting()
+        is_default = self._is_default_sorting()
         (key, reverse) = is_default and ('', 0) or self._get_sorting()
         return {'b_start': b_start, 'key': key, 'reverse': reverse}
     
@@ -458,7 +471,8 @@
         # currently redirects to a PythonScript
         # should be replaced with a dedicated form
         self.request.form['ids'] = self._get_ids(data)
-        keys = ",".join(self._get_hidden_vars().keys() + ['ids'])
+        keys = ",".join(self._getHiddenVars().keys() + ['ids'])
+        # keys = 'b_start, ids, key, reverse'
         return self._setRedirect('portal_types', 'object/rename_items', keys)
         
     def handle_cut(self, action, data):



More information about the Checkins mailing list