[Checkins] SVN: z3c.table/trunk/src/z3c/table/column.py Added SelectedItemLink column,

Roger Ineichen roger at projekt01.ch
Mon Apr 21 09:36:30 EDT 2008


Log message for revision 85530:
  Added SelectedItemLink column, 
  this column allows to render a link which is able to select one item

Changed:
  U   z3c.table/trunk/src/z3c/table/column.py

-=-
Modified: z3c.table/trunk/src/z3c/table/column.py
===================================================================
--- z3c.table/trunk/src/z3c/table/column.py	2008-04-21 12:37:21 UTC (rev 85529)
+++ z3c.table/trunk/src/z3c/table/column.py	2008-04-21 13:36:27 UTC (rev 85530)
@@ -16,6 +16,8 @@
 """
 __docformat__ = "reStructuredText"
 
+from urllib import urlencode
+
 import zope.interface
 import zope.location
 import zope.i18nmessageid
@@ -301,6 +303,44 @@
             self.getLinkConent(item))
 
 
+class SelectedItemColumn(LinkColumn):
+    """Link which can set an item."""
+
+    selectedItem = None
+
+    @property
+    def viewURL(self):
+        return '%s/%s' % (absoluteURL(self.context, self.request),
+            self.table.__name__)
+
+    def getItemKey(self, item):
+        return '%s-selectedItems' % self.id
+
+    def getItemValue(self, item):
+        return api.getName(item)
+
+    def getSortKey(self, item):
+        """Returns the sort key used for column sorting."""
+        return self.getLinkConent(item)
+
+    def getLinkConent(self, item):
+        """Setup link content."""
+        return self.linkContent or api.getName(item)
+
+    def getLinkURL(self, item):
+        """Setup link url."""
+        return '%s?%s' % (self.viewURL,
+            urlencode({self.getItemKey(item): self.getItemValue(item)}))
+
+    def update(self):
+        items = [item for item in self.table.values
+                 if self.getItemValue(item) in self.request.get(
+                     self.getItemKey(item), [])]
+        if len(items):
+            self.selectedItem = items.pop()
+            self.table.selectedItems = [self.selectedItem]
+
+
 class ContentsLinkColumn(LinkColumn):
     """Link pointing to contents.html."""
 



More information about the Checkins mailing list