From 94b811b3b176bb98298df3803c0f4827f3824962 Mon Sep 17 00:00:00 2001 From: Ethan Dalool Date: Wed, 9 Sep 2020 13:07:22 -0700 Subject: [PATCH] Let search_core return extension as real list. This lets search.html deal with real objects instead of playing with dumed-down strings. --- frontends/etiquette_flask/backend/common.py | 1 + .../backend/endpoints/photo_endpoints.py | 17 +++++++++++------ .../etiquette_flask/backend/jinja_filters.py | 5 +++++ frontends/etiquette_flask/templates/search.html | 6 +++--- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/frontends/etiquette_flask/backend/common.py b/frontends/etiquette_flask/backend/common.py index cc2661f..9f3c48f 100644 --- a/frontends/etiquette_flask/backend/common.py +++ b/frontends/etiquette_flask/backend/common.py @@ -33,6 +33,7 @@ site.jinja_env.add_extension('jinja2.ext.do') site.jinja_env.trim_blocks = True site.jinja_env.lstrip_blocks = True site.jinja_env.filters['bytestring'] = jinja_filters.bytestring +site.jinja_env.filters['comma_join'] = jinja_filters.comma_join site.jinja_env.filters['file_link'] = jinja_filters.file_link site.jinja_env.filters['sort_tags'] = jinja_filters.sort_tags site.jinja_env.filters['timestamp_to_8601'] = jinja_filters.timestamp_to_8601 diff --git a/frontends/etiquette_flask/backend/endpoints/photo_endpoints.py b/frontends/etiquette_flask/backend/endpoints/photo_endpoints.py index 3a5d0b1..0f63ab3 100644 --- a/frontends/etiquette_flask/backend/endpoints/photo_endpoints.py +++ b/frontends/etiquette_flask/backend/endpoints/photo_endpoints.py @@ -376,18 +376,14 @@ def get_search_core(): 'warning_bag': warning_bag, 'give_back_parameters': True } - #print(search_kwargs) + # print(search_kwargs) search_generator = common.P.search(**search_kwargs) # Because of the giveback, first element is cleaned up kwargs search_kwargs = next(search_generator) + # print(search_kwargs) # The search has converted many arguments into sets or other types. # Convert them back into something that will display nicely on the search form. - join_helper = lambda x: ', '.join(x) if x else None - search_kwargs['extension'] = join_helper(search_kwargs['extension']) - search_kwargs['extension_not'] = join_helper(search_kwargs['extension_not']) - search_kwargs['mimetype'] = join_helper(search_kwargs['mimetype']) - author_helper = lambda users: ', '.join(user.username for user in users) if users else None search_kwargs['author'] = author_helper(search_kwargs['author']) @@ -469,6 +465,15 @@ def get_search_html(): @session_manager.give_token def get_search_json(): search_results = get_search_core() + search_kwargs = search_results['search_kwargs'] + + # The search has converted many arguments into sets or other types. + # Convert them back into something that will display nicely on the search form. + join_helper = lambda x: ', '.join(x) if x else None + search_kwargs['extension'] = join_helper(search_kwargs['extension']) + search_kwargs['extension_not'] = join_helper(search_kwargs['extension_not']) + search_kwargs['mimetype'] = join_helper(search_kwargs['mimetype']) + search_results['results'] = [ etiquette.jsonify.photo(result, include_albums=False) if isinstance(result, etiquette.objects.Photo) else diff --git a/frontends/etiquette_flask/backend/jinja_filters.py b/frontends/etiquette_flask/backend/jinja_filters.py index 23a8713..8e03181 100644 --- a/frontends/etiquette_flask/backend/jinja_filters.py +++ b/frontends/etiquette_flask/backend/jinja_filters.py @@ -10,6 +10,11 @@ def bytestring(x): except Exception as e: return '??? b' +def comma_join(l): + if not l: + return '' + return ', '.join(l) + def file_link(photo, short=False): if short: return f'/file/{photo.id}{photo.dot_extension}' diff --git a/frontends/etiquette_flask/templates/search.html b/frontends/etiquette_flask/templates/search.html index 07f54b7..9e8bd71 100644 --- a/frontends/etiquette_flask/templates/search.html +++ b/frontends/etiquette_flask/templates/search.html @@ -259,15 +259,15 @@ name="filename" placeholder="Filename">