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
master
Tanner Collin 8 months ago
parent 342c6f0189
commit f3450b5991
  1. 11
      apiserver/apiserver/api/utils.py
  2. 2
      webclient/src/Members.js

@ -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)

@ -178,7 +178,7 @@ export function Members(props) {
<Container>
<Header size='large'>Member List</Header>
<p>Search by name, email, Spacebar username, or member ID:</p>
<p>Search by name, email, Spacebar username, member ID, or member shelf:</p>
<Input autoFocus focus icon='search'
placeholder='Search...'

Loading…
Cancel
Save