[Top][All Lists]
[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)
# -------------------------------------------------------------------------
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r10242 - in trunk/gnue-forms: . src/GFObjects,
reinhard <=