From: Emilie Date: Thu, 20 Oct 2016 17:31:30 +0000 (+0200) Subject: Search : rewrite filters X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=914213719a09591783dd6f781cd45b9ad31723dd;p=mezzo.git Search : rewrite filters --- diff --git a/app/organization/core/views.py b/app/organization/core/views.py index 08084b29..4d18e3a9 100644 --- a/app/organization/core/views.py +++ b/app/organization/core/views.py @@ -10,7 +10,9 @@ from mezzanine.utils.views import paginate from organization.core.models import * from functools import reduce from operator import ior, iand - +from organization.media.models import Playlist +from mezzanine_agenda.models import Event +from organization.pages.models import CustomPage class SlugMixin(object): @@ -33,6 +35,7 @@ class CustomSearchView(TemplateView): page = request.GET.get("page", 1) per_page = settings.SEARCH_PER_PAGE max_paging_links = settings.MAX_PAGING_LINKS + is_searching_all = False try: parts = request.GET.get("type", "").split(".", 1) search_model = apps.get_model(*parts) @@ -40,15 +43,20 @@ class CustomSearchView(TemplateView): except (ValueError, TypeError, LookupError, AttributeError): search_model = Displayable search_type = _("Everything") + is_searching_all = True else: search_type = search_model._meta.verbose_name_plural.capitalize() + # @Todo : rewrite SearchableManager results = search_model.objects.search(query, for_user=request.user) + results_media_count = len(Playlist.objects.search(query, for_user=request.user)) + results_page_count = len(CustomPage.objects.search(query, for_user=request.user)) + results_event_count = len(Event.objects.search(query, for_user=request.user)) # count objects filter_dict = dict() - for result in results: + for result in results: classname = result.__class__.__name__ app_label = result._meta.app_label full_classname = app_label+"."+classname @@ -62,7 +70,6 @@ class CustomSearchView(TemplateView): app_label = "organization-pages" elif classname == "Playlist": verbose_name = "Media" - if classname in filter_dict: filter_dict[classname]['count'] += 1 else: @@ -70,6 +77,25 @@ class CustomSearchView(TemplateView): filter_dict[classname].update({'verbose_name' : verbose_name}) filter_dict[classname].update({'app_label' : app_label}) + # temporarily overriding filter_dict to get all filters manually + filter_dict = { + 'CustomPage': { + 'count' : results_page_count, + 'verbose_name' : 'Page', + 'app_label' : 'organization-pages' + }, + 'Event': { + 'count' : results_event_count, + 'verbose_name' : 'Event', + 'app_label' : 'mezzanine_agenda' + }, + 'Playlist': { + 'count' : results_media_count, + 'verbose_name' : 'Media', + 'app_label' : 'organization-media' + }, + } + # get url param current_query = QueryDict(mutable=True) current_query = request.GET.copy() @@ -82,9 +108,13 @@ class CustomSearchView(TemplateView): # pagination paginated = paginate(results, page, per_page, max_paging_links) + # count all results + all_results_count = results_media_count + results_page_count + results_event_count + # context context = {"query": query, "results": paginated, - "search_type": search_type} + "search_type": search_type.__class__.__name__, "search_model": search_model.__name__, + "all_results_count" : all_results_count, 'is_searching_all': is_searching_all} # cancel filter url if request.GET.__contains__('type'): diff --git a/app/templates/pages/includes/page_search.html b/app/templates/pages/includes/page_search.html index e578d787..0a5389d3 100644 --- a/app/templates/pages/includes/page_search.html +++ b/app/templates/pages/includes/page_search.html @@ -2,7 +2,7 @@ {% load i18n mezzanine_tags organization_tags %} {% block title %} - {{ result }} + {{ result.title }} {% endblock %} {% block icon %}files-o{% endblock %} diff --git a/app/templates/search_results.html b/app/templates/search_results.html index 7e8a0e75..89a9bc1f 100644 --- a/app/templates/search_results.html +++ b/app/templates/search_results.html @@ -30,45 +30,26 @@ -
-

- {% if results.paginator.count == 0 %} - {% blocktrans %} - No results were found in {{ search_type }} matching your query: {{ query }} - {% endblocktrans %} - {% else %} - {% blocktrans with start=results.start_index end=results.end_index total=results.paginator.count %} - Showing {{ start }} to {{ end }} of {{ total }} results in {{ search_type }} matching your query: {{ query }} - {% endblocktrans %} - {% endif %} -

-
-
-
- -
@@ -89,7 +70,13 @@ {% endwith %} {% endif %} {% endfor %} - +

+ {% if results.paginator.count == 0 %} + {% blocktrans %} + No results were found matching your query: {{ query }} + {% endblocktrans %} + {% endif %} +