Add 'gvaweb/gvacommon/' from commit 'd31c1d0fbf02bde5d4dc2be24762d872da64935f'

git-subtree-dir: gvaweb/gvacommon
git-subtree-mainline: a12ad124b6
git-subtree-split: d31c1d0fbf
This commit is contained in:
Jan Dittberner 2015-01-26 15:45:39 +01:00
commit 95c6c9c516
4 changed files with 60 additions and 0 deletions

3
gvaweb/gvacommon/.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
.*.swp
*.pyc
.ropeproject/

View file

View file

@ -0,0 +1,15 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
class GvaRouter(object):
def route_for_task(self, task, args=None, kwargs=None):
for route in ['ldap', 'file', 'mysql', 'pgsql', 'web']:
if route in task:
return {
'exchange': route,
'exchange_type': 'direct',
'queue': route,
}
return None

View file

@ -0,0 +1,42 @@
"""
This module defines mixins for gnuviechadmin views.
"""
from __future__ import unicode_literals
from django.http import HttpResponseForbidden
from django.utils.translation import ugettext as _
from braces.views import LoginRequiredMixin
class StaffOrSelfLoginRequiredMixin(LoginRequiredMixin):
"""
Mixin that makes sure that a user is logged in and matches the current
customer or is a staff user.
"""
def dispatch(self, request, *args, **kwargs):
if (
request.user.is_staff or
request.user == self.get_customer_object()
):
return super(StaffOrSelfLoginRequiredMixin, self).dispatch(
request, *args, **kwargs
)
return HttpResponseForbidden(
_('You are not allowed to view this page.')
)
def get_customer_object(self):
"""
Views based on this mixin have to implement this method to return
the customer that must be an object of the same class as the
django.contrib.auth user type.
:return: customer
:rtype: settings.AUTH_USER_MODEL
"""
raise NotImplemented("subclass has to implement get_customer_object")