diff options
author | Étienne Loks <etienne.loks@proxience.com> | 2014-10-30 00:49:28 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@proxience.com> | 2014-10-30 00:52:17 +0100 |
commit | 64575e18848ed4020019f532560dbdf8d2b3adb0 (patch) | |
tree | 316a8cfc21ab85b6a652fb685a87d72ad90a27a6 /ishtar_common/views.py | |
parent | 46c62fbab9959af12bfab844938879d3966dae42 (diff) | |
download | Ishtar-64575e18848ed4020019f532560dbdf8d2b3adb0.tar.bz2 Ishtar-64575e18848ed4020019f532560dbdf8d2b3adb0.zip |
Add a new menu for admin tasks - new view for global variable edition (refs #2111)
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 889bd3893..c27aae74b 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -32,8 +32,11 @@ from tempfile import NamedTemporaryFile import ho.pisa as pisa import unicodedata +from extra_views import ModelFormSetView + from django.conf import settings from django.contrib.auth import logout +from django.contrib.auth.decorators import login_required from django.core import serializers from django.core.exceptions import ObjectDoesNotExist from django.core.urlresolvers import reverse, NoReverseMatch @@ -41,6 +44,7 @@ from django.db.models import Q, ImageField from django.http import HttpResponse, Http404 from django.shortcuts import render_to_response, redirect from django.template import RequestContext, loader +from django.utils.decorators import method_decorator from django.utils.translation import ugettext, ugettext_lazy as _ if settings.XHTML2ODT_PATH: @@ -790,3 +794,29 @@ def dashboard_main_detail(request, item_name): '%d_%d_%d' % (n.minute, n.second, n.microsecond) return render_to_response('ishtar/dashboards/dashboard_main_detail.html', dct, context_instance=RequestContext(request)) + + +class LoginRequiredMixin(object): + @method_decorator(login_required) + def dispatch(self, request, *args, **kwargs): + return super(LoginRequiredMixin, self).dispatch(request, *args, + **kwargs) + if kwargs.get('pk') and not self.request.user.is_staff and \ + not str(kwargs['pk']) == str(self.request.user.company.pk): + return redirect(reverse('index')) + return super(LoginRequiredMixin, self).dispatch(request, *args, + **kwargs) + +class AdminLoginRequiredMixin(LoginRequiredMixin): + def dispatch(self, request, *args, **kwargs): + if not request.user.is_staff: + return redirect(reverse('start')) + return super(AdminLoginRequiredMixin, self).dispatch(request, *args, + **kwargs) + +class GlobalVarEdit(AdminLoginRequiredMixin, ModelFormSetView): + template_name = 'ishtar/formset.html' + model = models.GlobalVar + extra = 1 + can_delete = True + fields = ['slug', 'value', 'description'] |