From: Thomas Fillon Date: Mon, 24 Apr 2017 10:33:36 +0000 (+0200) Subject: Add permissions for running analysis X-Git-Tag: 1.7.0~2^2~21^2^2~16 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=65529771c9d1166843795f7ac566ed7c04370831;p=telemeta.git Add permissions for running analysis --- diff --git a/telemeta/migrations/0002_auto_20170424_1110.py b/telemeta/migrations/0002_auto_20170424_1110.py new file mode 100644 index 00000000..800d6858 --- /dev/null +++ b/telemeta/migrations/0002_auto_20170424_1110.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('telemeta', '0001_initial'), + ] + + operations = [ + migrations.AlterModelOptions( + name='mediaitem', + options={'verbose_name': 'item', 'permissions': (('can_play_all_items', 'Can play all media items'), ('can_download_all_items', 'Can download all media items'), ('can_run_analysis', 'Can run analysis'))}, + ), + ] diff --git a/telemeta/models/item.py b/telemeta/models/item.py index b68098fc..103d36c4 100644 --- a/telemeta/models/item.py +++ b/telemeta/models/item.py @@ -150,7 +150,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 636b8bc8..06610975 100644 --- a/telemeta/views/item.py +++ b/telemeta/views/item.py @@ -50,11 +50,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()})