From 668a9adf98d0ae339faaa37abe164c3af067e734 Mon Sep 17 00:00:00 2001
From: Tanner Prestegard <tanner.prestegard@ligo.org>
Date: Fri, 8 Feb 2019 15:04:09 -0600
Subject: [PATCH] Fix up mixin for API views to inherit default permissions

---
 gracedb/api/v1/mixins.py | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/gracedb/api/v1/mixins.py b/gracedb/api/v1/mixins.py
index 4526e3f03..b2b8b11e6 100644
--- a/gracedb/api/v1/mixins.py
+++ b/gracedb/api/v1/mixins.py
@@ -127,7 +127,12 @@ class InheritDefaultPermissionsMixin(object):
     permission_classes = ()
 
     def get_permissions(self):
-        # Cast to lists to be safe, since these might be tuples
-        permission_list = list(api_settings.DEFAULT_PERMISSION_CLASSES) + \
-            list(self.permission_classes)
+        # Cast default permissions to a list
+        permission_list = list(api_settings.DEFAULT_PERMISSION_CLASSES)
+
+        # Add any class-level permissions that aren't already included
+        permission_list += [p for p in self.permission_classes
+            if p not in permission_list]
+
+        # Return full list of instantiated permissions
         return [permission() for permission in permission_list]
-- 
GitLab