return status text in json for tenant views
[plstackapi.git] / planetstack / core / admin.py
index 5aeb784..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:
@@ -65,12 +68,14 @@ class ReadOnlyAwareAdmin(admin.ModelAdmin):
         request.readonly = True
         return super(ReadOnlyAwareAdmin, self).change_view(request, object_id, extra_context=extra_context)
 
-
     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
@@ -318,13 +323,13 @@ class DeploymentPrivilegeROInline(ReadOnlyTabularInline):
     model = DeploymentPrivilege
     extra = 0
     suit_classes = 'suit-tab suit-tab-deploymentprivileges'
-    fields = ['user','role']
+    fields = ['user','role','deployment']
 
 class DeploymentPrivilegeInline(PlStackTabularInline):
     model = DeploymentPrivilege
     extra = 0
     suit_classes = 'suit-tab suit-tab-deploymentprivileges'
-    fields = ['user','role']
+    fields = ['user','role','deployment']
 
     def queryset(self, request):
         return DeploymentPrivilege.select_by_user(request.user)
@@ -357,7 +362,7 @@ class SiteDeploymentROInline(ReadOnlyTabularInline):
     model = SiteDeployments
     #model = Site.deployments.through
     extra = 0
-    suit_classes = 'suit-tab suit-tab-sitedeployments'
+    suit_classes = 'suit-tab suit-tab-deployments'
     fields = ['deployment','site']
 
 class SiteDeploymentInline(PlStackTabularInline):
@@ -499,13 +504,17 @@ class DeploymentAdminForm(forms.ModelForm):
 
       return deployment
 
+class DeploymentAdminROForm(DeploymentAdminForm):
+    def save(self, commit=True):
+        raise PermissionDenied
+
 class SiteAssocInline(PlStackTabularInline):
     model = Site.deployments.through
     extra = 0
     suit_classes = 'suit-tab suit-tab-sites'
 
 class DeploymentAdmin(PlanetStackBaseAdmin):
-    form = DeploymentAdminForm
+    #form = DeploymentAdminForm
     model = Deployment
     fieldList = ['name','sites']
     fieldsets = [(None, {'fields': fieldList, 'classes':['suit-tab suit-tab-sites']})]
@@ -516,6 +525,13 @@ class DeploymentAdmin(PlanetStackBaseAdmin):
 
     suit_form_tabs =(('sites','Deployment Details'),('nodes','Nodes'),('deploymentprivileges','Privileges'),('tags','Tags'))
 
+    def get_form(self, request, obj=None, **kwargs):
+        if request.user.isReadOnlyUser():
+            kwargs["form"] = DeploymentAdminROForm
+        else:
+            kwargs["form"] = DeploymentAdminForm
+        return super(DeploymentAdmin,self).get_form(request, obj, **kwargs)
+\r
 class ServiceAttrAsTabROInline(ReadOnlyTabularInline):
     model = ServiceAttribute
     fields = ['name','value']
@@ -567,7 +583,6 @@ class SiteAdmin(PlanetStackBaseAdmin):
     search_fields = ['name']
 
     def queryset(self, request):
-        #print dir(UserInline)
         return Site.select_by_user(request.user)
 
     def get_formsets(self, request, obj=None):
@@ -940,7 +955,7 @@ class UserAdmin(UserAdmin):
     ordering = ('email',)
     filter_horizontal = ()
 
-    user_readonly_fields = fieldListLoginDetails
+    user_readonly_fields = fieldListLoginDetails + fieldListContactInfo
     user_readonly_inlines = [SlicePrivilegeROInline,SitePrivilegeROInline,DeploymentPrivilegeROInline,UserDashboardViewROInline]
 
     suit_form_tabs =(('general','Login Details'),
@@ -974,8 +989,18 @@ class UserAdmin(UserAdmin):
     def change_view(self,request,object_id, extra_context=None):
 
         if self.__user_is_readonly(request):
+            if not hasattr(self, "readonly_save"):
+                # save the original readonly fields\r
+                self.readonly_save = self.readonly_fields\r
+                self.inlines_save = self.inlines
             self.readonly_fields=self.user_readonly_fields
             self.inlines = self.user_readonly_inlines
+        else:
+            if hasattr(self, "readonly_save"):\r
+                # restore the original readonly fields\r
+                self.readonly_fields = self.readonly_save\r
+                self.inlines = self.inlines_save
+
         try:
             return super(UserAdmin, self).change_view(request, object_id, extra_context=extra_context)
         except PermissionDenied: