From 384ea598c44a84c110239f48d1e025fd82a84edf Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Thu, 1 Mar 2018 16:05:40 +0100 Subject: [PATCH 1/2] Load next page of the right type. see #1412 --- modoboa/admin/static/admin/js/admin.js | 18 ++++++++++++++++++ modoboa/admin/templates/admin/domains.html | 2 +- modoboa/admin/urls.py | 2 ++ modoboa/admin/views/domain.py | 13 +++++++++++++ 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/modoboa/admin/static/admin/js/admin.js b/modoboa/admin/static/admin/js/admin.js index b198b9ab7..e5aeb2144 100644 --- a/modoboa/admin/static/admin/js/admin.js +++ b/modoboa/admin/static/admin/js/admin.js @@ -161,6 +161,24 @@ Domains.prototype = { $(document).trigger('domain_listing_refresh'); }, + /** + * Add a type to let the server know what kind of object we expect. + * + * @this Listing + */ + get_load_page_args: function() { + var args = Admin.prototype.get_load_page_args.call(this); + + if (this.navobj.getbaseurl() === "list") { + args.objtype = "domain"; + this.options.eor_message = gettext("No more domain to show"); + } else { + args.objtype = "quota"; + this.options.eor_message = gettext("No more quota to show"); + } + return args; + }, + /** * Navigation callback: default. * diff --git a/modoboa/admin/templates/admin/domains.html b/modoboa/admin/templates/admin/domains.html index 10f18baa6..5d354d6bd 100644 --- a/modoboa/admin/templates/admin/domains.html +++ b/modoboa/admin/templates/admin/domains.html @@ -15,7 +15,7 @@ diff --git a/modoboa/admin/urls.py b/modoboa/admin/urls.py index 83b6570cb..bb299ae19 100644 --- a/modoboa/admin/urls.py +++ b/modoboa/admin/urls.py @@ -31,6 +31,8 @@ urlpatterns = [ name="domain_change"), url(r'^domains/(?P\d+)/delete/$', domain_views.deldomain, name="domain_delete"), + url(r'^domains/page/$', domain_views.get_next_page, + name="domain_page"), ] urlpatterns += [ diff --git a/modoboa/admin/views/domain.py b/modoboa/admin/views/domain.py index a6e5fead6..824901cbd 100644 --- a/modoboa/admin/views/domain.py +++ b/modoboa/admin/views/domain.py @@ -108,6 +108,19 @@ def domains(request, tplname="admin/domains.html"): }) +@login_required +@user_passes_test( + lambda u: u.has_perm("admin.view_domains") or + u.has_perm("admin.view_mailboxes") or + u.has_perm("admin.add_domain") +) +def get_next_page(request): + """Return the next page of the domain or quota list.""" + if request.GET.get("objtype", "domain") == "domain": + return _domains(request) + return list_quotas(request) + + @login_required @permission_required("core.add_user") def domains_list(request): From 88468fa08f9f2957552ad57fe226f464707876d6 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Thu, 1 Mar 2018 17:16:27 +0100 Subject: [PATCH 2/2] Added unit test. --- modoboa/admin/tests/test_domain.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modoboa/admin/tests/test_domain.py b/modoboa/admin/tests/test_domain.py index c8abbf2c5..dc5529698 100644 --- a/modoboa/admin/tests/test_domain.py +++ b/modoboa/admin/tests/test_domain.py @@ -356,6 +356,14 @@ class DomainTestCase(ModoTestCase): self.assertNotIn("Global statistics", content) self.assertIn("Per-domain statistics", content) + def test_page_loader(self): + """Test page loader view.""" + url = reverse("admin:domain_page") + response = self.ajax_get(url) + self.assertIn("handle_mailboxes", response) + response = self.ajax_get("{}?objtype=quota".format(url)) + self.assertIn("progress-bar", response["rows"]) + class DKIMTestCase(ModoTestCase): """Test case for DKIM."""