diff --git a/mayan/apps/statistics/links.py b/mayan/apps/statistics/links.py index 7d6dcaf432..530eefc351 100644 --- a/mayan/apps/statistics/links.py +++ b/mayan/apps/statistics/links.py @@ -4,12 +4,10 @@ from django.utils.translation import ugettext_lazy as _ from navigation import Link - -def is_superuser(context): - return context['request'].user.is_staff or context['request'].user.is_superuser +from .permissions import permission_statistics_view -link_execute = Link(condition=is_superuser, text=_('Execute'), view='statistics:execute', args='object.id') -link_namespace_details = Link(text=_('Namespace details'), view='statistics:namespace_details', args='resolved_object.id', condition=is_superuser) -link_namespace_list = Link(condition=is_superuser, text=_('Namespace list'), view='statistics:namespace_list') -link_statistics = Link(condition=is_superuser, icon='fa fa-sort-numeric-desc', text=_('Statistics'), view='statistics:namespace_list') +link_execute = Link(permissions=[permission_statistics_view], text=_('Execute'), view='statistics:statistic_execute', args='resolved_object.id') +link_namespace_details = Link(permissions=[permission_statistics_view], text=_('Namespace details'), view='statistics:namespace_details', args='resolved_object.id') +link_namespace_list = Link(permissions=[permission_statistics_view], text=_('Namespace list'), view='statistics:namespace_list') +link_statistics = Link(icon='fa fa-sort-numeric-desc', permissions=[permission_statistics_view], text=_('Statistics'), view='statistics:namespace_list') diff --git a/mayan/apps/statistics/permissions.py b/mayan/apps/statistics/permissions.py new file mode 100644 index 0000000000..c9c816f12b --- /dev/null +++ b/mayan/apps/statistics/permissions.py @@ -0,0 +1,9 @@ +from __future__ import absolute_import, unicode_literals + +from django.utils.translation import ugettext_lazy as _ + +from permissions import PermissionNamespace + +namespace = PermissionNamespace('statistics', _('Statistics')) + +permission_statistics_view = namespace.add_permission(name='statistics_view', label=_('View statistics')) diff --git a/mayan/apps/statistics/urls.py b/mayan/apps/statistics/urls.py index 5de5b71ef9..20090a799a 100644 --- a/mayan/apps/statistics/urls.py +++ b/mayan/apps/statistics/urls.py @@ -2,9 +2,11 @@ from __future__ import unicode_literals from django.conf.urls import patterns, url +from .views import NamespaceDetailView, NamespaceListView, StatisticExecute + urlpatterns = patterns( 'statistics.views', - url(r'^$', 'namespace_list', name='namespace_list'), - url(r'^namespace/(?P\w+)/details/$', 'namespace_details', name='namespace_details'), - url(r'^(?P\w+)/execute/$', 'execute', name='execute'), + url(r'^$', NamespaceListView.as_view(), name='namespace_list'), + url(r'^namespace/(?P\w+)/details/$', NamespaceDetailView.as_view(), name='namespace_details'), + url(r'^(?P\w+)/execute/$', StatisticExecute.as_view(), name='statistic_execute'), ) diff --git a/mayan/apps/statistics/views.py b/mayan/apps/statistics/views.py index 7c4355f5e6..5256326750 100644 --- a/mayan/apps/statistics/views.py +++ b/mayan/apps/statistics/views.py @@ -5,46 +5,51 @@ from django.shortcuts import render_to_response from django.template import RequestContext from django.utils.translation import ugettext_lazy as _ +from common.views import SimpleView + from .classes import Statistic, StatisticNamespace +from .permissions import permission_statistics_view -def namespace_list(request): - if not request.user.is_superuser or not request.user.is_staff: - raise PermissionDenied +class NamespaceListView(SimpleView): + template_name = 'appearance/generic_list.html' + view_permission = permission_statistics_view - return render_to_response('appearance/generic_list.html', { - 'object_list': StatisticNamespace.get_all(), - 'hide_link': True, - 'title': _('Statistics namespaces'), - }, context_instance=RequestContext(request)) + def get_extra_context(self): + return { + 'hide_link': True, + 'object_list': StatisticNamespace.get_all(), + 'title': _('Statistics namespaces'), + } -def namespace_details(request, namespace_id): - if not request.user.is_superuser or not request.user.is_staff: - raise PermissionDenied +class NamespaceDetailView(SimpleView): + template_name = 'appearance/generic_list.html' + view_permission = permission_statistics_view - namespace = StatisticNamespace.get(namespace_id) + def get_extra_context(self): + namespace = StatisticNamespace.get(self.kwargs['namespace_id']) - return render_to_response('appearance/generic_list.html', { - 'object': namespace, - 'namespace': namespace, - 'object_list': namespace.statistics, - 'hide_link': True, - 'title': _('Namespace details for: %s') % namespace, - }, context_instance=RequestContext(request)) + return { + 'hide_link': True, + 'object': namespace, + 'object_list': namespace.statistics, + 'title': _('Namespace details for: %s') % namespace, + } -def execute(request, statistic_id): - if not request.user.is_superuser or not request.user.is_staff: - raise PermissionDenied +class StatisticExecute(SimpleView): + template_name = 'appearance/generic_list.html' + view_permission = permission_statistics_view - statictic = Statistic.get(statistic_id) + def get_extra_context(self): + statictic = Statistic.get(self.kwargs['statistic_id']) - return render_to_response('appearance/generic_list.html', { - 'object': statictic, - 'namespace': statictic.namespace, - 'navigation_object_list': ['namespace', 'object'], - 'object_list': statictic.get_results(), - 'hide_link': True, - 'title': _('Results for: %s') % statictic, - }, context_instance=RequestContext(request)) + return { + 'hide_link': True, + 'namespace': statictic.namespace, + 'navigation_object_list': ['namespace', 'object'], + 'object': statictic, + 'object_list': statictic.get_results(), + 'title': _('Results for: %s') % statictic, + }