From: Thomas Fillon Date: Mon, 24 Apr 2017 10:33:36 +0000 (+0200) Subject: Add permissions for running analysis X-Git-Tag: search~2^2~15 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=8262ecb1b592ef5193cb62e089d526ed9aa4ca34;p=telemeta.git Add permissions for running analysis --- diff --git a/telemeta/models/item.py b/telemeta/models/item.py index 132e2b01..7ae715f7 100644 --- a/telemeta/models/item.py +++ b/telemeta/models/item.py @@ -148,7 +148,8 @@ class MediaItem(MediaResource): class Meta(MetaCore): db_table = 'media_items' permissions = (("can_play_all_items", "Can play all media items"), - ("can_download_all_items", "Can download all media items"), ) + ("can_download_all_items", "Can download all media items"), + ("can_run_analysis", "Can run analysis"),) verbose_name = _('item') def is_valid_code(self, code): diff --git a/telemeta/views/item.py b/telemeta/views/item.py index d6e0a0ca..df24ffb5 100644 --- a/telemeta/views/item.py +++ b/telemeta/views/item.py @@ -51,11 +51,13 @@ class ItemBaseMixin(TelemetaBaseMixin): def get_graphers(self): graphers = [] user = self.request.user - graphers_access = False - if user.is_staff or user.is_superuser: - graphers_access = True + graphers_access = (user.is_staff + or user.is_superuser + or user.has_perm('can_run_analysis')) + for grapher in self.graphers: - if not graphers_access and grapher.id() not in self.public_graphers: + if (not graphers_access + and grapher.id() not in self.public_graphers): continue if grapher.id() == self.default_grapher_id: graphers.insert(0, {'name': grapher.name(), 'id': grapher.id()})