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