[Checkins] SVN: zope3org/trunk/src/zorg/multiform/sort.py handle batch and sort of subforms

Stefan Martin s.martin at iwm-kmrc.de
Tue Apr 11 10:40:42 EDT 2006


Log message for revision 66855:
  handle batch and sort of subforms
  

Changed:
  A   zope3org/trunk/src/zorg/multiform/sort.py

-=-
Added: zope3org/trunk/src/zorg/multiform/sort.py
===================================================================
--- zope3org/trunk/src/zorg/multiform/sort.py	2006-04-11 14:39:57 UTC (rev 66854)
+++ zope3org/trunk/src/zorg/multiform/sort.py	2006-04-11 14:40:41 UTC (rev 66855)
@@ -0,0 +1,36 @@
+
+from zope.interface import implements
+
+from interfaces import ISorter
+
+
+class SchemaSorter(object):
+
+    implements(ISorter)
+
+    def __init__(self,schema,field):
+        self.schema = schema
+        self.name = field.__name__
+        self.field = field
+
+    def sort(self,seq):
+
+        l = []
+        def _v(o):
+            o = self.schema(o)
+            field=self.field.bind(o)
+            v = field.get(o)
+            if hasattr(field,'vocabulary'):
+                # XXX maybe this is an adapter issue
+                v = field.vocabulary.getTerm(v).token
+            return v
+        def _cmp(a,b):
+            # none comparison
+            a,b = a[0],b[0]
+            if a==None and b: return -1
+            if b==None and a: return 1
+            return cmp(a,b)
+        for item in seq:
+            l.append((_v(item[1]),item))
+        l.sort(_cmp)
+        return map(lambda i:i[1],l)        



More information about the Checkins mailing list