DRH2
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 8 Mar 2012 21:03:40 +0000 (16:03 -0500)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 8 Mar 2012 21:03:40 +0000 (16:03 -0500)
project/menu.py
project/rh/admin.py
project/rh/decorators.py

index f29f3b5..6ddd311 100644 (file)
@@ -12,7 +12,7 @@ from django.core.urlresolvers import reverse
 from django.utils.translation import ugettext_lazy as _
 
 from admin_tools.menu import items, Menu
-from project.rh.groups import grp_drh
+from project.rh.decorators import in_drh_or_admin
 
 class CustomMenu(Menu):
     """
@@ -38,7 +38,7 @@ class CustomMenu(Menu):
         Use this method if you need to access the request context.
         """
         request = context['request']
-        if grp_drh in request.user.groups.all() or request.user.is_superuser:
+        if in_drh_or_admin(request.user):
             self.children += [
                 items.MenuItem('Rapports',
                                children=[
index 9de6b4d..9ec9387 100644 (file)
@@ -14,9 +14,9 @@ from auf.django.metadata.admin import AUFMetadataAdminMixin, \
 from forms import ContratForm, AyantDroitForm, EmployeAdminForm, AjaxSelect
 from dae.utils import get_employe_from_user
 from change_list import ChangeList
-from groups import grp_drh
+from groups import grp_correspondants_rh
+from decorators import in_drh_or_admin
 import models as rh
-
 import auf.django.references.models as ref
 
 class RegionProxy(ref.Region):
@@ -83,15 +83,10 @@ class LinkedInline(admin.options.InlineModelAdmin):
 class ProtectRegionMixin(object):
 
     def queryset(self, request):
-        from dae.workflow import grp_drh, grp_correspondants_rh
         qs = super(ProtectRegionMixin, self).queryset(request)
 
-        if request.user.is_superuser:
-            return qs
-
         user_groups = request.user.groups.all()
-
-        if grp_drh in user_groups:
+        if in_drh_or_admin(request.user):
             return qs
 
         if grp_correspondants_rh in user_groups:
@@ -106,7 +101,7 @@ class ProtectRegionMixin(object):
         user_groups = request.user.groups.all()
 
         # Lock pour autoriser uniquement les DRH à utiliser RH
-        if not request.user.is_superuser and not grp_drh in user_groups:
+        if not in_drh_or_admin(request.user):
             return False
 
         if len(user_groups) == 0 and not request.user.is_superuser:
index 8c2f7a5..b872e15 100644 (file)
@@ -1,15 +1,28 @@
 # -*- encoding: utf-8 -*-
-from rh.groups import grp_drh 
+
+from rh.groups import grp_drh, grp_drh2
 from project.decorators import redirect_interdiction
 
+
+def in_drh_or_admin(user):
+    """
+    Teste si un user Django fait parti du groupe DRH, DRH2 ou s'il est admin
+    """
+    groups = user.groups.all()
+    if user.is_superuser or \
+            grp_drh in groups or \
+            grp_drh2 in groups:
+        return True
+    else:
+        return False
+
 def drh_or_admin_required(fn):
     """
-    Teste si un user Django fait parti du groupe DRH ou s'il est admin
+    Teste si un user Django fait parti du groupe DRH, DRH2 ou s'il est admin
     """
     def inner(request, *args, **kwargs):
         user = request.user
-
-        if user.is_superuser or grp_drh in user.groups.all():
+        if in_drh_or_admin(user):
             return fn(request, *args, **kwargs)
 
         msg = u"Votre compte ne permet pas d'accéder à cette partie de l'application."