diff --git a/musician/templates/musician/domain_detail.html b/musician/templates/musician/domain_detail.html
index 515a724..168e7e6 100644
--- a/musician/templates/musician/domain_detail.html
+++ b/musician/templates/musician/domain_detail.html
@@ -2,7 +2,7 @@
{% load i18n %}
{% block content %}
-
+{% trans "Go back" %}
{% trans "DNS settings for" %} {{ object.name }}
Litle description of what to be expected in this section to aid the user. Even a link to more help if there is one available.
diff --git a/musician/templates/musician/mail.html b/musician/templates/musician/mail.html
index f247653..e8ae8be 100644
--- a/musician/templates/musician/mail.html
+++ b/musician/templates/musician/mail.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/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 ae3b019..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({
@@ -153,9 +160,14 @@ class MailView(ServiceListView):
return mailboxes[0]['id']
- # group addresses with the same mailbox
+ # retrieve mails applying filters (if any)
+ queryfilter = self.get_queryfilter()
raw_data = self.orchestra.retrieve_service_list(
- self.service_class.api_name)
+ self.service_class.api_name,
+ querystring=queryfilter,
+ )
+
+ # group addresses with the same mailbox
addresses = []
for key, group in groupby(raw_data, retrieve_mailbox):
aliases = []
@@ -169,12 +181,49 @@ class MailView(ServiceListView):
return addresses
+ def get_queryfilter(self):
+ """Retrieve query params (if any) to filter queryset"""
+ domain_id = self.request.GET.get('domain')
+ if domain_id:
+ return "domain={}".format(domain_id)
+
+ return ''
+
+ 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
+
class MailingListsView(ServiceListView):
service_class = MailinglistService
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