Add statistics view permission. Convert statistics views to CBV.

This commit is contained in:
Roberto Rosario
2015-07-17 02:34:57 -04:00
parent e2fcffc81d
commit a08377b86e
4 changed files with 55 additions and 41 deletions

View File

@@ -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')

View File

@@ -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'))

View File

@@ -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<namespace_id>\w+)/details/$', 'namespace_details', name='namespace_details'),
url(r'^(?P<statistic_id>\w+)/execute/$', 'execute', name='execute'),
url(r'^$', NamespaceListView.as_view(), name='namespace_list'),
url(r'^namespace/(?P<namespace_id>\w+)/details/$', NamespaceDetailView.as_view(), name='namespace_details'),
url(r'^(?P<statistic_id>\w+)/execute/$', StatisticExecute.as_view(), name='statistic_execute'),
)

View File

@@ -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,
}