# 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:
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
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)
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):
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']})]
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']
search_fields = ['name']
def queryset(self, request):
- #print dir(UserInline)
return Site.select_by_user(request.user)
def get_formsets(self, request, obj=None):
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'),
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: