From 3d0b4ca6dc9d208d5844170678a5843516b28d08 Mon Sep 17 00:00:00 2001 From: Gabriel Detraz Date: Sat, 27 May 2017 15:12:21 +0200 Subject: [PATCH] Propriefie les tests de droits --- re2o/context_processors.py | 15 ++++++++++----- users/models.py | 24 ++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/re2o/context_processors.py b/re2o/context_processors.py index 0dea59d7..d1a216f0 100644 --- a/re2o/context_processors.py +++ b/re2o/context_processors.py @@ -27,13 +27,18 @@ def context_user(request): user = request.user if user.is_authenticated(): interfaces = user.user_interfaces() + is_cableur = user.is_cableur + is_bureau = user.is_bureau + is_bofh = user.is_bofh + is_trez = user.is_trez + is_infra = user.is_infra else: interfaces = None - is_cableur = user.has_perms(('cableur',)) - is_bureau = user.has_perms(('bureau',)) - is_bofh = user.has_perms(('bofh',)) - is_trez = user.has_perms(('trésorier',)) - is_infra = user.has_perms(('infra',)) + is_cableur = False + is_bureau = False + is_bofh = False + is_trez = False + is_infra = False return { 'request_user': user, 'is_cableur': is_cableur, diff --git a/users/models.py b/users/models.py index f720f8d6..31247d30 100644 --- a/users/models.py +++ b/users/models.py @@ -216,6 +216,30 @@ class User(AbstractBaseUser): def has_perm(self, perm, obj=None): return True + + def has_right(self, right): + return Right.objects.filter(user=self).filter(right=ListRight.objects.get(listright=right)).exists() + + @cached_property + def is_bureau(self): + return Right.objects.filter(user=self).filter(right=ListRight.objects.get(listright='bureau')).exists() + + @cached_property + def is_bofh(self): + return Right.objects.filter(user=self).filter(right=ListRight.objects.get(listright='bofh')).exists() + + @cached_property + def is_cableur(self): + return self.has_right('cableur') or self.has_right('bureau') or self.has_right('infra') or self.has_right('bofh') + + @cached_property + def is_trez(self): + return Right.objects.filter(user=self).filter(right=ListRight.objects.get(listright='trésorier')).exists() + + @cached_property + def is_infra(self): + return Right.objects.filter(user=self).filter(right=ListRight.objects.get(listright='infra')).exists() + @cached_property def end_adhesion(self): date_max = Cotisation.objects.filter(vente__in=Vente.objects.filter(facture__in=Facture.objects.filter(user=self).exclude(valid=False))).aggregate(models.Max('date_end'))['date_end__max']