commit-gnue
[Top][All Lists]
Advanced

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

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


From: johannes
Subject: [gnue] r6992 - trunk/gnue-appserver/src
Date: Fri, 11 Feb 2005 03:18:44 -0600 (CST)

Author: johannes
Date: 2005-02-11 03:18:43 -0600 (Fri, 11 Feb 2005)
New Revision: 6992

Modified:
   trunk/gnue-appserver/src/data.py
   trunk/gnue-appserver/src/geasConfiguration.py
   trunk/gnue-appserver/src/geasList.py
   trunk/gnue-appserver/src/geasSession.py
   trunk/gnue-appserver/src/geasSessionManager.py
Log:
Fixed some sort-related bugs, added 'uuidtype'-configuration setting. gnue_id's
are built from common.uuid.UUID generator now


Modified: trunk/gnue-appserver/src/data.py
===================================================================
--- trunk/gnue-appserver/src/data.py    2005-02-11 07:39:23 UTC (rev 6991)
+++ trunk/gnue-appserver/src/data.py    2005-02-11 09:18:43 UTC (rev 6992)
@@ -24,11 +24,11 @@
 from types import *
 
 import string
-import whrandom
 import copy
 
 from gnue.common.apps import errors
 from gnue.common.datasources import GDataSource, GConditions, GConnections
+from gnue.common.utils.uuid import UUID
 
 class StateChangeError (errors.SystemError):
   def __init__ (self, table, row):
@@ -585,6 +585,8 @@
     self.__confirmedInserts = []
     self.__confirmedDeletes = []
 
+    self.__uuidType = gConfig ('uuidtype').lower ()
+
   # ---------------------------------------------------------------------------
   # Create a recordset from a query
   # ---------------------------------------------------------------------------
@@ -648,12 +650,12 @@
 
   def __generateId (self):
 
-    # TODO: need a better algorithm here
-    result = u''
-    for i in range (0, 32):
-      result = result + str (int (whrandom.random () * 10))
-    return result
+    if self.__uuidType == 'time':
+      return UUID.generateTimeBased ()
+    else:
+      return UUID.generateRandom ()
 
+
   # ---------------------------------------------------------------------------
   # Create a new record
   # ---------------------------------------------------------------------------
@@ -880,11 +882,13 @@
     This function confirms all changes to be safe, so a subsequent call of the
     cancelChanges () function restores to this state.
     """
+
     self.__confirmedCache   = copy.deepcopy (self.__cache)
-    self.__confirmedInserts = copy.deepcopy (self.__inserted)
-    self.__confirmedDeletes = copy.deepcopy (self.__deleted)
+    self.__confirmedInserts = self.__inserted [:]
+    self.__confirmedDeletes = self.__deleted [:]
 
 
+
   # ---------------------------------------------------------------------------
   # revoke all changes up the the last confirm
   # ---------------------------------------------------------------------------
@@ -899,8 +903,8 @@
     else:
       self.__cache.clear ()
 
-    self.__inserted = copy.deepcopy (self.__confirmedInserts)
-    self.__deleted  = copy.deepcopy (self.__confirmedDeletes)
+    self.__inserted = self.__confirmedInserts [:]
+    self.__deleted  = self.__confirmedDeletes [:]
 
 
 # =============================================================================
@@ -1294,7 +1298,7 @@
     @return: True if a field has been changed, False otherwise
     """
     
-    for (field, direction) in order:
+    for field in [f ['name'] for f in order]:
       path = self.__getPropertyPath (field)
       if self.__fieldIsChanged (row, path):
         return True
@@ -1399,10 +1403,17 @@
     """
 
     result = []
-    for (field, direction) in order:
-      path = self.__getPropertyPath (field)
-      result.append ((self.__getPathValue (row, path), direction))
+    for element in order:
+      field      = element ['name']
+      direction  = element.get ('descending') or False
+      ignorecase = element.get ('ignorecase') or False
+      value = self.__getPathValue (row, self.__getPropertyPath (field))
 
+      if ignorecase and hasattr (value, 'lower'):
+        value = value.lower ()
+
+      result.append ((value, direction))
+
     return result
 
 

Modified: trunk/gnue-appserver/src/geasConfiguration.py
===================================================================
--- trunk/gnue-appserver/src/geasConfiguration.py       2005-02-11 07:39:23 UTC 
(rev 6991)
+++ trunk/gnue-appserver/src/geasConfiguration.py       2005-02-11 09:18:43 UTC 
(rev 6992)
@@ -78,6 +78,13 @@
     'Typecast'   : GTypecast.text,
     'Default'    : os.path.join (paths.data, "share", "gnue", "appserver") },
 
+  { 'Name'       : 'uuidtype',
+    'Type'       : 'Setting',
+    'Comment'    : _("Type of UUID to use. Can be 'time' or 'random'"),
+    'Description': _("Type of UUID to use. Can be 'time' or 'random'"),
+    'Typecast'   : GTypecast.text,
+    'Default'    : 'time' },
+
   { 'Name'       : 'httpdir',
     'Type'       : 'Setting',
     'Comment'    : _('Directory for webfrontend http documents'),

Modified: trunk/gnue-appserver/src/geasList.py
===================================================================
--- trunk/gnue-appserver/src/geasList.py        2005-02-11 07:39:23 UTC (rev 
6991)
+++ trunk/gnue-appserver/src/geasList.py        2005-02-11 09:18:43 UTC (rev 
6992)
@@ -189,7 +189,7 @@
     If no such sort order is defined, None is returned.
     """
     if len (self.__dsSorting):
-      return instance.get ([item [0] for item in self.__dsSorting])
+      return instance.get ([item ['name'] for item in self.__dsSorting])
     else:
       return None
 

Modified: trunk/gnue-appserver/src/geasSession.py
===================================================================
--- trunk/gnue-appserver/src/geasSession.py     2005-02-11 07:39:23 UTC (rev 
6991)
+++ trunk/gnue-appserver/src/geasSession.py     2005-02-11 09:18:43 UTC (rev 
6992)
@@ -24,7 +24,7 @@
 from types import *
 
 import string
-import whrandom
+import copy
 
 from gnue.common.apps import errors, i18n
 from gnue.common.datasources import GConditions
@@ -383,9 +383,11 @@
 
       else:
         dsSort.append (item)
-        item ['name'] = fieldName
-        sortlist.append (item)
 
+        add = copy.copy (item)
+        add ['name'] = fieldName
+        sortlist.append (add)
+
     recordset = self.__connection.query (content, dsCond, sortlist)
 
     list = geasList.geasList (self, classdef, self.__connection, recordset,

Modified: trunk/gnue-appserver/src/geasSessionManager.py
===================================================================
--- trunk/gnue-appserver/src/geasSessionManager.py      2005-02-11 07:39:23 UTC 
(rev 6991)
+++ trunk/gnue-appserver/src/geasSessionManager.py      2005-02-11 09:18:43 UTC 
(rev 6992)
@@ -257,6 +257,7 @@
     s = self._getSession (session_id)
     s.rollback ()
 
+
   # ---------------------------------------------------------------------------
   # Build list from query
   # ---------------------------------------------------------------------------
@@ -264,54 +265,85 @@
   def request (self, session_id, classname, conditions, sortorder,
                propertylist):
 
+    gBeginFunc ()
+
     s = self._getSession (session_id)
-    return s.request (classname, conditions, sortorder, propertylist)
+    result = s.request (classname, conditions, sortorder, propertylist)
 
+    gEndFunc (1, result)
+    return result
+
+
   # ---------------------------------------------------------------------------
   # Count number of objects in list
   # ---------------------------------------------------------------------------
 
   def count (self, session_id, list_id):
 
+    gBeginFunc ()
     s = self._getSession (session_id)
-    return s.count (list_id);
 
+    result = s.count (list_id)
+    gEndFunc (1, result)
+
+    return result
+
   # ---------------------------------------------------------------------------
   # Fetch objects from list
   # ---------------------------------------------------------------------------
 
   def fetch (self, session_id, list_id, start, count, close = False):
 
+    gBeginFunc ()
     s = self._getSession (session_id)
-    return s.fetch (list_id, start, count)
+    result = s.fetch (list_id, start, count)
 
+    gEndFunc (1, result)
+    return result
+
+
   # ---------------------------------------------------------------------------
   # Load objects from ids
   # ---------------------------------------------------------------------------
 
   def load (self, session_id, classname, obj_id_list, propertylist):
 
+    gBeginFunc ()
+
     s = self._getSession (session_id)
-    return s.load (classname, obj_id_list, propertylist)
+    result = s.load (classname, obj_id_list, propertylist)
 
+    gEndFunc (1, result)
+    return result
+
   # ---------------------------------------------------------------------------
   # Store objects
   # ---------------------------------------------------------------------------
 
   def store (self, session_id, classname, obj_id_list, propertylist, data):
 
+    gBeginFunc ()
+
     s = self._getSession (session_id)
-    return s.store (classname, obj_id_list, propertylist, data)
+    result = s.store (classname, obj_id_list, propertylist, data)
+    gEndFunc (1, result)
 
+    return result
+
   # ---------------------------------------------------------------------------
   # Delete objects
   # ---------------------------------------------------------------------------
 
   def delete (self, session_id, classname, obj_id_list):
 
+    gBeginFunc ()
+
     s = self._getSession (session_id)
     s.delete (classname, obj_id_list)
 
+    gEndFunc (hasResult = False)
+
+
   # ---------------------------------------------------------------------------
   # Call procedure
   # ---------------------------------------------------------------------------
@@ -319,13 +351,26 @@
   def call (self, session_id, classname, obj_id_list, procedurename,
             parameters):
 
+    gBeginFunc ()
+
     s = self._getSession (session_id)
-    return s.call (classname, obj_id_list, procedurename, parameters)
+    result = s.call (classname, obj_id_list, procedurename, parameters)
 
+    gEndFunc (1, result)
 
+    return result
+
+
   # ---------------------------------------------------------------------------
   # Get a structure describing all available filters
   # ---------------------------------------------------------------------------
 
   def getFilters (self, language):
-    return self._filter.getFilter (language)
+
+    gBeginFunc ()
+
+    result = self._filter.getFilter (language)
+
+    gEndFunc (1, result)
+
+    return result





reply via email to

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