Make get_item_id() faster

This commit is contained in:
Kovid Goyal 2023-09-23 13:35:07 +05:30
parent 2a9e0209ed
commit 8340c9994d
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -926,11 +926,13 @@ class Cache:
@read_api @read_api
def get_item_id(self, field, item_name): def get_item_id(self, field, item_name):
' Return the item id for item_name (case-insensitive) or None if not found ' ' Return the item id for item_name (case-insensitive) or None if not found '
q = icu_lower(item_name)
try: try:
rmap = {icu_lower(v) if isinstance(v, str) else v:k for k, v in iteritems(self.fields[field].table.id_map)} for item_id, item_val in self.fields[field].table.id_map.items():
if icu_lower(item_val) == q:
return item_id
except KeyError: except KeyError:
return None return None
return rmap.get(icu_lower(item_name) if isinstance(item_name, str) else item_name, None)
@read_api @read_api
def get_item_ids(self, field, item_names): def get_item_ids(self, field, item_names):