[Top][All Lists]
[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
# ---------------------------------------------------------------------------
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r6988 - trunk/gnue-appserver/src,
johannes <=