commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue] r6988 - trunk/gnue-appserver/src


From: johannes
Subject: [gnue] r6988 - trunk/gnue-appserver/src
Date: Thu, 10 Feb 2005 13:20:10 -0600 (CST)

Author: johannes
Date: 2005-02-10 13:20:10 -0600 (Thu, 10 Feb 2005)
New Revision: 6988

Modified:
   trunk/gnue-appserver/src/geasList.py
   trunk/gnue-appserver/src/geasSession.py
Log:
Support of new 'ignorecase'-attribute in sortfield-tag


Modified: trunk/gnue-appserver/src/geasList.py
===================================================================
--- trunk/gnue-appserver/src/geasList.py        2005-02-10 19:18:07 UTC (rev 
6987)
+++ trunk/gnue-appserver/src/geasList.py        2005-02-10 19:20:10 UTC (rev 
6988)
@@ -210,9 +210,15 @@
         # multiple calculated fields in an order-by all of them will be
         # evaluated.
         order = []
-        for (item, desc) in self.__asSorting:
-          order.append ((i.get ([item]) [0], desc))
 
+        for element in self.__asSorting:
+          
+          value = i.get ([element ['name']]) [0]
+          if element.get ('ignorecase') and hasattr (value, 'lower'):
+            value = value.lower ()
+
+          order.append ((value, element.get ('descending') or False))
+
         i.setSort (order)
 
 

Modified: trunk/gnue-appserver/src/geasSession.py
===================================================================
--- trunk/gnue-appserver/src/geasSession.py     2005-02-10 19:18:07 UTC (rev 
6987)
+++ trunk/gnue-appserver/src/geasSession.py     2005-02-10 19:20:10 UTC (rev 
6988)
@@ -370,28 +370,21 @@
     asSort   = []     # appserver sortlist
 
     for ix in range (0, len (sortorder)):
-      sortitem  = sortorder [ix]
-      if isinstance (sortitem, TupleType) or isinstance (sortitem, ListType):
-        (propName, descending) = sortitem
-      else:
-        (propName, descending) = (sortitem, False)
+      item = self.__getSortElement (sortorder [ix])
+      fieldName = self.__getFieldname (classdef, item ['name'], content, False)
 
-      fieldName = self.__getFieldname (classdef, propName, content, False)
-
       if fieldName is None:
-        for item in sortorder [ix:]:
-          if isinstance (item, TupleType) or isinstance (item, ListType):
-            asSort.append (item)
-          else:
-            asSort.append ((item, False))
+        asSort.extend ([self.__getSortElement (i) for i in sortorder [ix:]])
 
-        for (field, desc) in asSort:
+        for field in [element ['name'] for element in asSort]:
           self.__getFieldname (classdef, field, content, True)
 
         break
+
       else:
-        sortlist.append ((fieldName, descending))
-        dsSort.append ((propName, descending))
+        dsSort.append (item)
+        item ['name'] = fieldName
+        sortlist.append (item)
 
     recordset = self.__connection.query (content, dsCond, sortlist)
 
@@ -401,9 +394,35 @@
     self.__listcount += 1
     self.__lists [self.__listcount] = list
     list_id = self.__listcount
-    return list_id;
 
+    return list_id
+
+
   # ---------------------------------------------------------------------------
+  #
+  # ---------------------------------------------------------------------------
+
+  def __getSortElement (self, item):
+    """
+    """
+
+    result = {'name': None, 'descending': False, 'ignorecase': False}
+
+    if isinstance (item, DictType):
+      result = item
+
+    elif isinstance (item, TupleType) or isinstance (item, ListType):
+      result ['name'] = item [0]
+      if len (item) > 1: result ['descending'] = item [1]
+      if len (item) > 2: result ['ignorecase'] = item [2]
+
+    else:
+      result ['name'] = item
+
+    return result
+
+
+  # ---------------------------------------------------------------------------
   # Check list id and raise exception if invalid, return list otherwise
   # ---------------------------------------------------------------------------
 
@@ -424,8 +443,10 @@
       i18n.setcurrentlocale (self.locale)
 
     list = self.__getList (list_id)
-    return list.count ();
+    result = list.count ()
 
+    return result
+
   # ---------------------------------------------------------------------------
   # Fetch data from the database backend
   # ---------------------------------------------------------------------------
@@ -436,9 +457,11 @@
       i18n.setcurrentlocale (self.locale)
 
     list = self.__getList (list_id)
-    return list.fetch (start, count)
+    result = list.fetch (start, count)
 
+    return result
 
+
   # ---------------------------------------------------------------------------
   # Create a single geasInstance object from an existing record
   # ---------------------------------------------------------------------------
@@ -476,7 +499,6 @@
       fName = self.sm.classes.find (fId).fullName
       instance.put ([fName], [self.__filterValue (fId)])
 
-
     instance.updateStamp (True)
 
     onInits = {}
@@ -496,6 +518,7 @@
 
     return instance
 
+
   # ---------------------------------------------------------------------------
   # Load data from the database backend
   # ---------------------------------------------------------------------------





reply via email to

[Prev in Thread] Current Thread [Next in Thread]