Use a CBV and increase coverage.

This commit is contained in:
Antoine Nguyen
2016-09-30 12:13:13 +02:00
parent 4cc344500d
commit 4dd8980562
4 changed files with 38 additions and 15 deletions
+15
View File
@@ -162,3 +162,18 @@ class DomainTestCase(ModoTestCase):
"ENABLE_DOMAIN_LIMITS", "yes", app="limits")
response = self.client.get(url)
self.assertIn("Resources usage", response.content)
def test_domain_statitics_view(self):
"""Test statistics display."""
url = reverse("admin:domain_statistics")
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertIn("Global counters", response.content)
self.assertIn("Per-domain counters", response.content)
self.client.force_login(
User.objects.get(username="admin@test.com"))
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertNotIn("Global counters", response.content)
self.assertIn("Per-domain counters", response.content)
+2 -1
View File
@@ -18,7 +18,8 @@ urlpatterns = patterns(
name="mx_domain_detail"),
url(r'^domains/list/$', '_domains', name="_domain_list"),
url(r'^domains/flatlist/$', 'domains_list', name="domain_flat_list"),
url(r'^domains/stats/$', 'domain_statistics', name="domain_statistics"),
url(r'^domains/stats/$', views.DomainStatisticsView.as_view(),
name="domain_statistics"),
url(r'^domains/new/', 'newdomain', name='domain_add'),
url(r'^domains/(?P<dom_id>\d+)/edit/$', 'editdomain',
name="domain_change"),
+2 -1
View File
@@ -3,7 +3,7 @@
from .alias import AliasDetailView
from .identity import AccountDetailView
from .dns import DNSBLDomainDetailView, MXDomainDetailView
from .domain import DomainDetailView
from .domain import DomainDetailView, DomainStatisticsView
__all__ = [
@@ -11,5 +11,6 @@ __all__ = [
"AliasDetailView",
"DNSBLDomainDetailView",
"DomainDetailView",
"DomainStatisticsView",
"MXDomainDetailView",
]
+19 -13
View File
@@ -147,21 +147,27 @@ def deldomain(request, dom_id):
return render_to_json_response(msg)
@login_required
@permission_required("admin.view_domains")
def domain_statistics(request):
class DomainStatisticsView(
auth_mixins.PermissionRequiredMixin, generic.TemplateView):
"""A simple page to present domain statistics."""
context = {}
if request.user.role == "SuperAdmins":
template_name = "admin/domain_statistics.html"
permission_required = "admin.view_domains"
def get_context_data(self, **kwargs):
"""Add counters."""
context = super(DomainStatisticsView, self).get_context_data(**kwargs)
if self.request.user.role == "SuperAdmins":
context.update({
"domains_counter": Domain.objects.count(),
"domain_aliases_counter": DomainAlias.objects.count(),
"identities_counter": (
User.objects.count() +
Alias.objects.filter(internal=False).count()),
})
context.update({
"domains_counter": Domain.objects.count(),
"domain_aliases_counter": DomainAlias.objects.count(),
"identities_counter": (
User.objects.count() +
Alias.objects.filter(internal=False).count()),
})
context.update({"domains": Domain.objects.get_for_admin(request.user)})
return render(request, "admin/domain_statistics.html", context)
"domains": Domain.objects.get_for_admin(self.request.user)})
return context
class DomainDetailView(