[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/browser/content/ Utility class used for wrapping items for display.
Charlie Clark
charlie at begeistert.org
Thu Sep 23 17:59:52 EDT 2010
Log message for revision 116775:
Utility class used for wrapping items for display.
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder_contents.pt
U Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder.py 2010-09-23 20:51:38 UTC (rev 116774)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder.py 2010-09-23 21:59:52 UTC (rev 116775)
@@ -215,6 +215,19 @@
return self.request.form.get('SearchableText')
+class ContentProxy(object):
+ """Utility wrapping content item for display purposes"""
+
+ def __init__(self, context):
+ self.name = context.getId()
+ self.title = context.TitleOrId()
+ self.type = context.Type() or None
+ self.icon = context.icon
+ self.url = context.absolute_url()
+ self.ModificationDate = context.ModificationDate()
+ self.widget = "%s.select" % self.name
+
+
class ContentsView(BatchViewBase, _EditFormMixin, PageForm):
"""Folder contents view"""
@@ -304,10 +317,20 @@
def content_fields(self):
"""Create content field objects only for batched items"""
f = IFolderItem['select']
+ contents = []
+ b_start = self._getBatchStart()
+ key, reverse = self._get_sorting()
fields = form.FormFields()
- for item in self._getBatchObj():
+ for idx, item in enumerate(self._getBatchObj()):
field = form.FormField(f, 'select', item.id)
fields += form.FormFields(field)
+ content = ContentProxy(item)
+ if key == 'position':
+ content.position = b_start + idx + 1
+ else:
+ content.position = '...'
+ contents.append(content)
+ self.listBatchItems = contents
return fields
@memoize
@@ -333,8 +356,6 @@
def setUpWidgets(self, ignore_request=False):
"""Create widgets for the folder contents."""
super(ContentsView, self).setUpWidgets(ignore_request)
- data = {}
- self.content_fields()
self.widgets = form.setUpWidgets(
self.content_fields(), self.prefix, self.context,
self.request, ignore_request=ignore_request)
@@ -384,28 +405,6 @@
items = self.contents
return sort(items, ((key, 'cmp', reverse and 'desc' or 'asc'),))
- @memoize
- def listBatchItems(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 idx, item in enumerate(batch_obj):
- field = {'ModificationDate':item.ModificationDate()}
- field['select'] = self.widgets['%s.select' % item.getId()]
- field['name'] = item.getId()
- field['url'] = item.absolute_url()
- field['title'] = item.TitleOrId()
- field['icon'] = item.icon
- field['position'] = (key == 'position') \
- and str(b_start + idx + 1) \
- or '...'
- field['type'] = item.Type() or None
- fields.append(field.copy())
- return fields
-
def _get_ids(self, data):
"""Identify objects that have been selected"""
ids = [k[:-7] for k, v in data.items()
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder_contents.pt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder_contents.pt 2010-09-23 20:51:38 UTC (rev 116774)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder_contents.pt 2010-09-23 21:59:52 UTC (rev 116775)
@@ -39,7 +39,7 @@
</tr>
<tr tal:repeat="item view/listBatchItems"
tal:attributes="class python: (repeat['item'].even() and 'row-hilite') or None">
- <td tal:content="structure item/select">Checkbox</td>
+ <td tal:content="structure python:view.widgets[item.widget]()">Checkbox</td>
<td><a href="" tal:attributes="href item/url"
tal:condition="item/icon"
><img src="" alt="" border="0"
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py 2010-09-23 20:51:38 UTC (rev 116774)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py 2010-09-23 21:59:52 UTC (rev 116775)
@@ -77,7 +77,8 @@
def test_list_batch_items(self):
view = ContentsView(self.folder, TestRequest())
- self.assertEquals(view.listBatchItems(), [])
+ view.content_fields()
+ self.assertEquals(view.listBatchItems, [])
def test_is_orderable(self):
view = ContentsView(self.folder, TestRequest())
More information about the checkins
mailing list