Files
mayan-edms/mayan/apps/statistics/views.py
2015-09-14 21:57:55 -04:00

96 lines
2.9 KiB
Python

from __future__ import unicode_literals
import json
from django.core.urlresolvers import reverse
from django.http import Http404
from django.shortcuts import HttpResponseRedirect
from django.utils.translation import ugettext_lazy as _
from common.generics import (
ConfirmView, SingleObjectDetailView, SingleObjectListView
)
from .classes import Statistic, StatisticNamespace
from .permissions import permission_statistics_view
from .tasks import task_execute_statistic
class NamespaceListView(SingleObjectListView):
extra_context = {
'hide_link': True,
'title': _('Statistics namespaces'),
}
template_name = 'appearance/generic_list.html'
view_permission = permission_statistics_view
def get_queryset(self):
return StatisticNamespace.get_all()
class NamespaceDetailView(SingleObjectListView):
view_permission = permission_statistics_view
def get_extra_context(self):
return {
'hide_link': True,
'object': self.get_namespace(),
'title': _('Namespace details for: %s') % self.get_namespace(),
}
def get_namespace(self):
return StatisticNamespace.get(self.kwargs['slug'])
def get_queryset(self):
return self.get_namespace().statistics
class StatisticDetailView(SingleObjectDetailView):
view_permission = permission_statistics_view
def get_extra_context(self):
return {
'chart_data': self.get_object().get_chart_data(),
'namespace': self.get_object().namespace,
'navigation_object_list': ('namespace', 'object'),
'no_data': not self.get_object().get_results()['series'],
'object': self.get_object(),
'title': _('Results for: %s') % self.get_object(),
}
def get_object(self):
try:
return Statistic.get(self.kwargs['slug'])
except KeyError:
raise Http404(_('Statistic "%s" not found.') % self.kwargs['slug'])
def get_template_names(self):
return (self.get_object().renderer.template_name,)
class StatisticQueueView(ConfirmView):
view_permission = permission_statistics_view
def get_extra_context(self):
return {
'namespace': self.get_object().namespace,
'object': self.get_object(),
'title': _('Queue statistic "%s" to be updated?') % self.get_object(),
}
def get_object(self):
try:
return Statistic.get(self.kwargs['slug'])
except KeyError:
raise Http404(_('Statistic "%s" not found.') % self.kwargs['slug'])
def get_post_action_redirect(self):
return reverse(
'statistics:namespace_details',
args=(self.get_object().namespace.slug,)
)
def post(self, request, *args, **kwargs):
task_execute_statistic.delay(slug=self.get_object().slug)
return HttpResponseRedirect(self.get_post_action_redirect())