From 65529771c9d1166843795f7ac566ed7c04370831 Mon Sep 17 00:00:00 2001 From: Thomas Fillon Date: Mon, 24 Apr 2017 12:33:36 +0200 Subject: [PATCH] Add permissions for running analysis --- telemeta/migrations/0002_auto_20170424_1110.py | 18 ++++++++++++++++++ telemeta/models/item.py | 3 ++- telemeta/views/item.py | 10 ++++++---- 3 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 telemeta/migrations/0002_auto_20170424_1110.py 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()}) -- 2.39.5