From efd13accc46371c538ad45b46a95fda96b3ea598 Mon Sep 17 00:00:00 2001 From: Carlos Vega <carlos.vega@uni.lu> Date: Wed, 21 Nov 2018 13:49:28 +0100 Subject: [PATCH] added a way to retrieve the permissions of the worker for a certain study --- smash/web/models/worker.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/smash/web/models/worker.py b/smash/web/models/worker.py index ede9eb84..1d98b248 100644 --- a/smash/web/models/worker.py +++ b/smash/web/models/worker.py @@ -18,6 +18,7 @@ from web.models.holiday import Holiday from web.models.availability import Availability from web.models.appointment import Appointment from web.models.appointment_type_link import AppointmentTypeLink +from django.contrib.auth.models import Permission logger = logging.getLogger(__name__) @@ -227,6 +228,25 @@ class Worker(models.Model): return office_availability.get_availability_percentage(only_working_hours=True) + def get_permissions(self, study): + if self.user.is_superuser: + return set([p.codename for p in Permission.objects.all()]) + + roles = self.roles.filter(study=study) + if roles.count() == 0: + return set() + return set(p.codename for p in roles[0].permissions.all()) + + def has_perm(self, codename, study): + roles = self.roles.filter(study=study) + if roles.count() == 0: + return False + + if role[0].permissions.filter(codename=codename).all().count() > 0: + return True + else: + return False + @property def role(self): roles = self.roles.filter(study=GLOBAL_STUDY_ID) -- GitLab