From 92715994c2d9d6772df177c552c02c97eb8ab1e3 Mon Sep 17 00:00:00 2001 From: Santiago Lamora Date: Tue, 17 Dec 2019 11:57:59 +0100 Subject: [PATCH] Prepare mailing list to be filtered by domain. Will work when backend supports it. --- musician/templates/musician/mailinglists.html | 5 +++- musician/views.py | 29 ++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/musician/templates/musician/mailinglists.html b/musician/templates/musician/mailinglists.html index e24ea7a..a5f0824 100644 --- a/musician/templates/musician/mailinglists.html +++ b/musician/templates/musician/mailinglists.html @@ -2,8 +2,11 @@ {% load i18n %} {% block content %} +{% if active_domain %} +{% trans "Go to global" %} +{% endif %} -

{{ service.verbose_name }}

+

{{ service.verbose_name }}{% if active_domain %} {% trans "for" %} {{ active_domain.name }}{% endif %}

{{ service.description }}

diff --git a/musician/views.py b/musician/views.py index c45517f..51a5013 100644 --- a/musician/views.py +++ b/musician/views.py @@ -127,10 +127,17 @@ class ServiceListView(CustomContextMixin, ExtendedPaginationMixin, UserTokenRequ raise ImproperlyConfigured( "ServiceListView requires a definiton of 'service'") + queryfilter = self.get_queryfilter() json_qs = self.orchestra.retrieve_service_list( - self.service_class.api_name) + self.service_class.api_name, + querystring=queryfilter, + ) return [self.service_class.new_from_json(data) for data in json_qs] + def get_queryfilter(self): + """Does nothing by default. Should be implemented on subclasses""" + return '' + def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context.update({ @@ -197,6 +204,26 @@ class MailingListsView(ServiceListView): template_name = "musician/mailinglists.html" + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + domain_id = self.request.GET.get('domain') + if domain_id: + context.update({ + 'active_domain': self.orchestra.retrieve_domain(domain_id) + }) + return context + + def get_queryfilter(self): + """Retrieve query params (if any) to filter queryset""" + # TODO(@slamora): this is not working because backend API + # doesn't support filtering by domain + domain_id = self.request.GET.get('domain') + if domain_id: + return "domain={}".format(domain_id) + + return '' + + class DatabasesView(ServiceListView): template_name = "musician/databases.html" service_class = DatabaseService