From f3450b599194cff4fdd7a2c2b51f6ee9fb1453a2 Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Sun, 20 Aug 2023 22:08:17 +0000 Subject: [PATCH] Allow searching members by shelf, prefetch_related search strings utils.gen_search_strings() times before: 1.4 s after member shelves: 2.6 s after prefetch_related: 0.7 s --- apiserver/apiserver/api/utils.py | 11 +++++++++-- webclient/src/Members.js | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/apiserver/apiserver/api/utils.py b/apiserver/apiserver/api/utils.py index 1d54865..9440d6b 100644 --- a/apiserver/apiserver/api/utils.py +++ b/apiserver/apiserver/api/utils.py @@ -157,7 +157,7 @@ def gen_search_strings(): start = time.time() search_strings = {} - for m in models.Member.objects.order_by('-expire_date'): + for m in models.Member.objects.order_by('-expire_date').prefetch_related('user__storage'): string = '{} {} | {} {}'.format( m.preferred_name, m.last_name, @@ -166,11 +166,18 @@ def gen_search_strings(): ) string += ' | ' + m.user.email - string += ' | ' + m.discourse_username + + if m.discourse_username: + string += ' | ' + m.discourse_username + string += ' | ' + str(m.id) + for s in m.user.storage.all(): + string += ' | ' + s.shelf_id + string = string.lower() search_strings[string] = m.id + cache.set('search_strings', search_strings) logger.info('Generated search strings in %s s.', time.time() - start) diff --git a/webclient/src/Members.js b/webclient/src/Members.js index 16e375a..1deab4f 100644 --- a/webclient/src/Members.js +++ b/webclient/src/Members.js @@ -178,7 +178,7 @@ export function Members(props) {
Member List
-

Search by name, email, Spacebar username, or member ID:

+

Search by name, email, Spacebar username, member ID, or member shelf: