[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