make SingletonAdmin readonly-aware, make ReadonlyAwareAdmin tolerate missing user_rea...
authorScott Baker <smbaker@gmail.com>
Fri, 23 May 2014 19:42:40 +0000 (12:42 -0700)
committerScott Baker <smbaker@gmail.com>
Fri, 23 May 2014 19:42:40 +0000 (12:42 -0700)
planetstack/core/admin.py

index 196324e..90f9339 100644 (file)
@@ -48,12 +48,15 @@ class ReadOnlyAwareAdmin(admin.ModelAdmin):
                 # save the original readonly fields\r
                 self.readonly_save = self.readonly_fields\r
                 self.inlines_save = self.inlines\r
-            self.readonly_fields=self.user_readonly_fields\r
-            self.inlines = self.user_readonly_inlines\r
+            if hasattr(self, "user_readonly_fields"):\r
+                self.readonly_fields=self.user_readonly_fields\r
+            if hasattr(self, "user_readonly_inlines"):\r
+                self.inlines = self.user_readonly_inlines\r
         else:\r
             if hasattr(self, "readonly_save"):\r
                 # restore the original readonly fields\r
                 self.readonly_fields = self.readonly_save\r
+            if hasattr(self, "inlines_save"):\r
                 self.inlines = self.inlines_save
 
         try:
@@ -68,8 +71,11 @@ class ReadOnlyAwareAdmin(admin.ModelAdmin):
     def __user_is_readonly(self, request):
         return request.user.isReadOnlyUser()
 
-class SingletonAdmin (admin.ModelAdmin):
+class SingletonAdmin (ReadOnlyAwareAdmin):
     def has_add_permission(self, request):
+        if not super(SingletonAdmin, self).has_add_permission(request):
+            return False
+
         num_objects = self.model.objects.count()
         if num_objects >= 1:
             return False