[Checkins] SVN: z3c.table/branches/darrylcousins/src/z3c/table/ Header code moved to header.py, table has been added as additional discriminator to the header, adjusted doctest

Darryl Cousins darryl at darrylcousins.net.nz
Thu Mar 13 23:46:23 EDT 2008


Log message for revision 84642:
  Header code moved to header.py, table has been added as additional discriminator to the header, adjusted doctest

Changed:
  U   z3c.table/branches/darrylcousins/src/z3c/table/README.txt
  U   z3c.table/branches/darrylcousins/src/z3c/table/column.py
  A   z3c.table/branches/darrylcousins/src/z3c/table/header.py
  U   z3c.table/branches/darrylcousins/src/z3c/table/tests.py

-=-
Modified: z3c.table/branches/darrylcousins/src/z3c/table/README.txt
===================================================================
--- z3c.table/branches/darrylcousins/src/z3c/table/README.txt	2008-03-13 17:38:48 UTC (rev 84641)
+++ z3c.table/branches/darrylcousins/src/z3c/table/README.txt	2008-03-14 03:46:21 UTC (rev 84642)
@@ -1624,9 +1624,10 @@
 And add a registration for a column header - we'll use here the proveded generic
 sorting header implementation.
 
-  >>> from z3c.table.column import SortingColumnHeader
+  >>> from z3c.table.header import SortingColumnHeader
   >>> zope.component.provideAdapter(SortingColumnHeader,
-  ...     (None, None, interfaces.IColumn), provides=interfaces.IColumnHeader)
+  ...     (None, None, interfaces.ITable, interfaces.IColumn),
+  ...     provides=interfaces.IColumnHeader)
 
 Now we can render the table and we shall see a link in the header. Note that it
 is set to switch to descending as the the table initially will display the first

Modified: z3c.table/branches/darrylcousins/src/z3c/table/column.py
===================================================================
--- z3c.table/branches/darrylcousins/src/z3c/table/column.py	2008-03-13 17:38:48 UTC (rev 84641)
+++ z3c.table/branches/darrylcousins/src/z3c/table/column.py	2008-03-14 03:46:21 UTC (rev 84642)
@@ -16,8 +16,6 @@
 """
 __docformat__ = "reStructuredText"
 
-from urllib import urlencode
-
 import zope.interface
 import zope.location
 import zope.i18nmessageid
@@ -98,7 +96,7 @@
     def renderHeadCell(self):
         """Header cell content."""
         header = zope.component.queryMultiAdapter((self.context,
-                    self.request, self), interfaces.IColumnHeader)
+                    self.request, self.table, self), interfaces.IColumnHeader)
         if header:
             header.update()
             return header.render()
@@ -269,56 +267,3 @@
         return value
 
 
-class ColumnHeader(object):
-    """ColumnHeader renderer provider"""
-
-    zope.interface.implements(interfaces.IColumnHeader)
-
-    def __init__(self, context, request, column):
-        self.__parent__ = context
-        self.context = context
-        self.request = request
-        self.column = column
-
-    def update(self):
-        """Override this method in subclasses if required"""
-        pass
-
-    def render(self):
-        """Override this method in subclasses"""
-        return self.column.header
-
-
-class SortingColumnHeader(ColumnHeader):
-    """Sorting column header."""
-
-    def render(self):
-        table = self.column.table
-        prefix = table.prefix
-        colID = self.column.id
-
-        # this may return a string 'id-name-idx' if coming from request,
-        # otherwise in Table class it is intialised as a integer string
-        currentSortID = table.getSortOn()
-        try:
-            currentSortID = int(currentSortID)
-        except ValueError:
-            currentSortID = currentSortID.split('-')[2]
-
-        currentSortOrder = table.getSortOrder()
-
-        sortID = colID.split('-')[2]
-
-        sortOrder = table.sortOrder
-        if int(sortID) == int(currentSortID):
-            # ordering the same column so we want to reverse the order
-            if currentSortOrder == table.sortOrder:
-                sortOrder = table.reverseSortOrderNames[0]
-
-        args = {'%s-sortOn' % prefix: colID,
-                '%s-sortOrder' % prefix: sortOrder}
-        queryString = '?%s' % (urlencode(args))
-
-        return '<a href="%s" title="Sort">%s</a>' % (queryString, 
-                                                self.column.header)
-

Added: z3c.table/branches/darrylcousins/src/z3c/table/header.py
===================================================================
--- z3c.table/branches/darrylcousins/src/z3c/table/header.py	                        (rev 0)
+++ z3c.table/branches/darrylcousins/src/z3c/table/header.py	2008-03-14 03:46:21 UTC (rev 84642)
@@ -0,0 +1,79 @@
+##############################################################################
+#
+# Copyright (c) 2008 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""
+$Id:$
+"""
+__docformat__ = "reStructuredText"
+
+from urllib import urlencode
+
+import zope.interface
+
+from z3c.table import interfaces
+
+
+class ColumnHeader(object):
+    """ColumnHeader renderer provider"""
+
+    zope.interface.implements(interfaces.IColumnHeader)
+
+    def __init__(self, context, request, table, column):
+        self.__parent__ = context
+        self.context = context
+        self.request = request
+        self.table = table
+        self.column = column
+
+    def update(self):
+        """Override this method in subclasses if required"""
+        pass
+
+    def render(self):
+        """Override this method in subclasses"""
+        return self.column.header
+
+
+class SortingColumnHeader(ColumnHeader):
+    """Sorting column header."""
+
+    def render(self):
+        table = self.table
+        prefix = table.prefix
+        colID = self.column.id
+
+        # this may return a string 'id-name-idx' if coming from request,
+        # otherwise in Table class it is intialised as a integer string
+        currentSortID = table.getSortOn()
+        try:
+            currentSortID = int(currentSortID)
+        except ValueError:
+            currentSortID = currentSortID.split('-')[2]
+
+        currentSortOrder = table.getSortOrder()
+
+        sortID = colID.split('-')[2]
+
+        sortOrder = table.sortOrder
+        if int(sortID) == int(currentSortID):
+            # ordering the same column so we want to reverse the order
+            if currentSortOrder == table.sortOrder:
+                sortOrder = table.reverseSortOrderNames[0]
+
+        args = {'%s-sortOn' % prefix: colID,
+                '%s-sortOrder' % prefix: sortOrder}
+        queryString = '?%s' % (urlencode(args))
+
+        return '<a href="%s" title="Sort">%s</a>' % (queryString, 
+                                                self.column.header)
+


Property changes on: z3c.table/branches/darrylcousins/src/z3c/table/header.py
___________________________________________________________________
Name: svn:keywords
   + Id

Modified: z3c.table/branches/darrylcousins/src/z3c/table/tests.py
===================================================================
--- z3c.table/branches/darrylcousins/src/z3c/table/tests.py	2008-03-13 17:38:48 UTC (rev 84641)
+++ z3c.table/branches/darrylcousins/src/z3c/table/tests.py	2008-03-14 03:46:21 UTC (rev 84642)
@@ -56,20 +56,6 @@
         return ({}, TestRequest(), t)
 
 
-# header
-class TestColumnHeader(z3c.testing.InterfaceBaseTest):
-
-    def getTestInterface(self):
-        return interfaces.IColumnHeader
-
-    def getTestClass(self):
-        return column.ColumnHeader
-
-    def getTestPos(self):
-        t = table.Table(None, TestRequest())
-        return ({}, TestRequest(), t)
-
-
 class TestNoneCell(z3c.testing.InterfaceBaseTest):
 
     def getTestInterface(self):
@@ -149,7 +135,6 @@
             ),
         unittest.makeSuite(TestTable),
         unittest.makeSuite(TestColumn),
-        unittest.makeSuite(TestColumnHeader),
         unittest.makeSuite(TestNoneCell),
         unittest.makeSuite(TestNameColumn),
         unittest.makeSuite(TestRadioColumn),



More information about the Checkins mailing list