commit-gnue
[Top][All Lists]
Advanced

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

[gnue] r10242 - in trunk/gnue-forms: . src/GFObjects


From: reinhard
Subject: [gnue] r10242 - in trunk/gnue-forms: . src/GFObjects
Date: Mon, 15 Nov 2010 14:26:25 -0600 (CST)

Author: reinhard
Date: 2010-11-15 14:26:25 -0600 (Mon, 15 Nov 2010)
New Revision: 10242

Modified:
   trunk/gnue-forms/
   trunk/gnue-forms/src/GFObjects/GFField.py
Log:
Massively speed up lookups by not using ResultSet.findRecord().



Property changes on: trunk/gnue-forms
___________________________________________________________________
Name: bzr:revision-info
   - timestamp: 2010-11-14 22:38:13.628000021 +0100
committer: Reinhard Müller <address@hidden>
properties: 
        branch-nick: forms

   + timestamp: 2010-11-15 21:25:36.749000072 +0100
committer: Reinhard Müller <address@hidden>
properties: 
        branch-nick: forms

Name: bzr:file-ids
   - src/uidrivers/wx/widgets/entry.py  
address@hidden:trunk%2Fgnue-forms:src%2Fuidrivers%2Fwx%2Fwidgets%2Fentry.py

   + src/GFObjects/GFField.py   
address@hidden:trunk%2Fgnue-forms:src%2FGFObjects%2FGFField.py

Name: bzr:revision-id:v4
   - 3116 address@hidden
3117 address@hidden
3118 address@hidden
3119 address@hidden
3120 address@hidden
3121 address@hidden
3122 address@hidden
3123 address@hidden
3124 address@hidden
3125 address@hidden
3126 address@hidden
3127 address@hidden
3128 address@hidden
3129 address@hidden
3130 address@hidden
3131 address@hidden
3132 address@hidden
3133 address@hidden
3134 address@hidden
3135 address@hidden
3136 address@hidden
3137 address@hidden
3138 address@hidden
3139 address@hidden
3140 address@hidden
3141 address@hidden
3142 address@hidden
3143 address@hidden
3144 address@hidden
3145 address@hidden
3146 address@hidden
3147 address@hidden
3148 address@hidden
3149 address@hidden
3150 address@hidden
3151 address@hidden
3152 address@hidden
3153 address@hidden

   + 3116 address@hidden
3117 address@hidden
3118 address@hidden
3119 address@hidden
3120 address@hidden
3121 address@hidden
3122 address@hidden
3123 address@hidden
3124 address@hidden
3125 address@hidden
3126 address@hidden
3127 address@hidden
3128 address@hidden
3129 address@hidden
3130 address@hidden
3131 address@hidden
3132 address@hidden
3133 address@hidden
3134 address@hidden
3135 address@hidden
3136 address@hidden
3137 address@hidden
3138 address@hidden
3139 address@hidden
3140 address@hidden
3141 address@hidden
3142 address@hidden
3143 address@hidden
3144 address@hidden
3145 address@hidden
3146 address@hidden
3147 address@hidden
3148 address@hidden
3149 address@hidden
3150 address@hidden
3151 address@hidden
3152 address@hidden
3153 address@hidden
3154 address@hidden

Name: bzr:text-parents
   - 
   + src/GFObjects/GFField.py   address@hidden


Modified: trunk/gnue-forms/src/GFObjects/GFField.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFField.py   2010-11-14 21:39:07 UTC (rev 
10241)
+++ trunk/gnue-forms/src/GFObjects/GFField.py   2010-11-15 20:26:25 UTC (rev 
10242)
@@ -74,7 +74,10 @@
         self.__lookup_list = [u""]              # all valid user values
         self.__lookup_dict = None               # {db_value: user_value}
         self.__lookup_dict_reverse = {}         # {user_value: db_value}
+        self.__lookup_index = {}                # {db_value: record number}
         self.lookup_ignorecase = True
+        # Remark: using self.__lookup_index is much faster than using
+        # ResultSet.findRecord().
 
         # Autoquery/autosearch support
         self.__autoquery_value = None
@@ -547,7 +550,11 @@
         # selected value.
         if hasattr(self, '_GFField__fk_resultSet'):
             if self.__fk_resultSet is not None:
-                self.__fk_resultSet.findRecord({self.fk_key: new_value})
+                try:
+                    index = self.__lookup_index[new_value]
+                except KeyError:
+                    index = -1
+                self.__fk_resultSet.setRecord(index)
             # This will cause __refresh_ui_current() to be called via
             # __dsCursorMoved
         else:
@@ -678,6 +685,7 @@
             self.__lookup_list = [u""]
         self.__lookup_dict = {}
         self.__lookup_dict_reverse = {}
+        self.__lookup_index = {}
 
         dpSep = gConfigForms('DropdownSeparator')
         if dpSep.startswith('"') and dpSep.endswith('"') and len(dpSep) > 2:
@@ -692,7 +700,7 @@
                       "field")
             self.__lookup_list = [u""]
 
-        for line in array:
+        for index, line in enumerate(array):
             key = line[0]
             descr_parts = []
             for item in line[1:]:
@@ -705,11 +713,16 @@
             self.__lookup_list.append(descr)
             self.__lookup_dict[key] = descr
             self.__lookup_dict_reverse[descr] = key
+            self.__lookup_index[key] = index
 
         # And now, position the resultSet to the correct record according to
         # the current field content.
         if resultSet is not None:
-            resultSet.findRecord({self.fk_key: self.__get_value()})
+            try:
+                index = self.__lookup_index[self.__get_value()]
+            except:
+                index = -1
+            resultSet.setRecord(index)
 
         # Remember the resultSet for later
         self.__fk_resultSet = resultSet
@@ -733,8 +746,11 @@
 
         if hasattr(self, '_GFField__fk_resultSet'):
             if self.__fk_resultSet is not None:
-                self.__fk_resultSet.findRecord({
-                    self.fk_key: self.__get_value()})
+                try:
+                    index = self.__lookup_index[self.__get_value()]
+                except:
+                    index = -1
+                self.__fk_resultSet.setRecord(index)
 
 
     # -------------------------------------------------------------------------




reply via email to

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