]> git.parisson.com Git - telemeta.git/commitdiff
Add permissions for running analysis
authorThomas Fillon <thomas@parisson.com>
Mon, 24 Apr 2017 10:33:36 +0000 (12:33 +0200)
committerThomas Fillon <thomas@parisson.com>
Mon, 24 Apr 2017 10:33:36 +0000 (12:33 +0200)
telemeta/migrations/0002_auto_20170424_1110.py [new file with mode: 0644]
telemeta/models/item.py
telemeta/views/item.py

diff --git a/telemeta/migrations/0002_auto_20170424_1110.py b/telemeta/migrations/0002_auto_20170424_1110.py
new file mode 100644 (file)
index 0000000..800d685
--- /dev/null
@@ -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'))},
+        ),
+    ]
index b68098fcc681e18d1f140e0eb6f436eb80c97eef..103d36c49146582aed1da7554c7c1020043783c9 100644 (file)
@@ -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):
index 636b8bc894d2ce3a406223d0dd10b50e6f7c3a65..0661097513fa0efd88ecb28e3a4511c257729d20 100644 (file)
@@ -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()})