[gnue] r10242 - in trunk/gnue-forms: . src/GFObjects
[email protected] Mon, 15 Nov 2010 14:26:25 -0600 (CST)
| Newsgroups | gmane.comp.cms.gnue.cvs |
|---|---|
| Message-ID | <[email protected]> |
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=C3=BCller <[email protected]> properties:=20 branch-nick: forms + timestamp: 2010-11-15 21:25:36.749000072 +0100 committer: Reinhard M=C3=BCller <[email protected]> properties:=20 branch-nick: forms Name: bzr:file-ids - src/uidrivers/wx/widgets/entry.py 10053@3a364389-8fce-0310-8f11-cc36= 3fde16c7:trunk%2Fgnue-forms:src%2Fuidrivers%2Fwx%2Fwidgets%2Fentry.py + src/GFObjects/GFField.py 1459@3a364389-8fce-0310-8f11-cc363fde16c7:t= runk%2Fgnue-forms:src%2FGFObjects%2FGFField.py Name: bzr:revision-id:v4 - 3116 [email protected] 3117 [email protected] 3118 [email protected] 3119 [email protected] 3120 [email protected] 3121 [email protected] 3122 [email protected] 3123 [email protected] 3124 [email protected] 3125 [email protected] 3126 [email protected] 3127 [email protected] 3128 [email protected] 3129 [email protected] 3130 [email protected] 3131 [email protected] 3132 [email protected] 3133 [email protected] 3134 [email protected] 3135 [email protected] 3136 [email protected] 3137 [email protected] 3138 [email protected] 3139 [email protected] 3140 [email protected] 3141 [email protected] 3142 [email protected] 3143 [email protected] 3144 [email protected] 3145 [email protected] 3146 [email protected] 3147 [email protected] 3148 [email protected] 3149 [email protected] 3150 [email protected] 3151 [email protected] 3152 [email protected] 3153 [email protected] + 3116 [email protected] 3117 [email protected] 3118 [email protected] 3119 [email protected] 3120 [email protected] 3121 [email protected] 3122 [email protected] 3123 [email protected] 3124 [email protected] 3125 [email protected] 3126 [email protected] 3127 [email protected] 3128 [email protected] 3129 [email protected] 3130 [email protected] 3131 [email protected] 3132 [email protected] 3133 [email protected] 3134 [email protected] 3135 [email protected] 3136 [email protected] 3137 [email protected] 3138 [email protected] 3139 [email protected] 3140 [email protected] 3141 [email protected] 3142 [email protected] 3143 [email protected] 3144 [email protected] 3145 [email protected] 3146 [email protected] 3147 [email protected] 3148 [email protected] 3149 [email protected] 3150 [email protected] 3151 [email protected] 3152 [email protected] 3153 [email protected] 3154 [email protected] Name: bzr:text-parents -=20 + src/GFObjects/GFField.py [email protected]= -598w1lqua0te1m7j Modified: trunk/gnue-forms/src/GFObjects/GFField.py =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/gnue-forms/src/GFObjects/GFField.py 2010-11-14 21:39:07 UTC (re= v 10241) +++ trunk/gnue-forms/src/GFObjects/GFField.py 2010-11-15 20:26:25 UTC (re= v 10242) @@ -74,7 +74,10 @@ self.__lookup_list =3D [u""] # all valid user value= s self.__lookup_dict =3D None # {db_value: user_valu= e} self.__lookup_dict_reverse =3D {} # {user_value: db_valu= e} + self.__lookup_index =3D {} # {db_value: record nu= mber} self.lookup_ignorecase =3D True + # Remark: using self.__lookup_index is much faster than using + # ResultSet.findRecord(). =20 # Autoquery/autosearch support self.__autoquery_value =3D 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 =3D self.__lookup_index[new_value] + except KeyError: + index =3D -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 =3D [u""] self.__lookup_dict =3D {} self.__lookup_dict_reverse =3D {} + self.__lookup_index =3D {} =20 dpSep =3D gConfigForms('DropdownSeparator') if dpSep.startswith('"') and dpSep.endswith('"') and len(dpSep) = > 2: @@ -692,7 +700,7 @@ "field") self.__lookup_list =3D [u""] =20 - for line in array: + for index, line in enumerate(array): key =3D line[0] descr_parts =3D [] for item in line[1:]: @@ -705,11 +713,16 @@ self.__lookup_list.append(descr) self.__lookup_dict[key] =3D descr self.__lookup_dict_reverse[descr] =3D key + self.__lookup_index[key] =3D index =20 # And now, position the resultSet to the correct record accordin= g to # the current field content. if resultSet is not None: - resultSet.findRecord({self.fk_key: self.__get_value()}) + try: + index =3D self.__lookup_index[self.__get_value()] + except: + index =3D -1 + resultSet.setRecord(index) =20 # Remember the resultSet for later self.__fk_resultSet =3D resultSet @@ -733,8 +746,11 @@ =20 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 =3D self.__lookup_index[self.__get_value()] + except: + index =3D -1 + self.__fk_resultSet.setRecord(index) =20 =20 # ------------------------------------------------------------------= -------