+ @property
+ def suit_form_tabs(self):
+ tabs =[('general', 'Slice Details'),
+ ('slicenetworks','Networks'),
+ ('sliceprivileges','Privileges'),
+ ('slivers','Slivers'),
+ ('tags','Tags'),
+ ('reservations','Reservations'),
+ ]
+
+ request=getattr(_thread_locals, "request", None)
+ if request and request.user.is_admin:
+ tabs.append( ('admin-only', 'Admin-Only') )
+
+ return tabs
+
+ def add_view(self, request, form_url='', extra_context=None):
+ # revert to default read-only fields
+ self.readonly_fields = ('backend_status_text',)
+ return super(SliceAdmin, self).add_view(request, form_url, extra_context=extra_context)
+
+ def change_view(self, request, object_id, form_url='', extra_context=None):
+ print object_id
+ # cannot change the site of an existing slice so make the site field read only
+ if object_id:
+ self.readonly_fields = ('backend_status_text','site')
+ return super(SliceAdmin, self).change_view(request, object_id, form_url)
+
+ def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None):
+ deployment_nodes = []
+ for node in Node.objects.all():
+ deployment_nodes.append( (node.deployment.id, node.id, node.name) )
+
+ deployment_flavors = []
+ for flavor in Flavor.objects.all():
+ for deployment in flavor.deployments.all():
+ deployment_flavors.append( (deployment.id, flavor.id, flavor.name) )
+
+ deployment_images = []
+ for image in Image.objects.all():
+ for imageDeployment in image.imagedeployments_set.all():
+ deployment_images.append( (imageDeployment.deployment.id, image.id, image.name) )
+
+ site_login_bases = []
+ for site in Site.objects.all():
+ site_login_bases.append((site.id, site.login_base))
+
+ context["deployment_nodes"] = deployment_nodes
+ context["deployment_flavors"] = deployment_flavors
+ context["deployment_images"] = deployment_images
+ context["site_login_bases"] = site_login_bases
+ return super(SliceAdmin, self).render_change_form(request, context, add, change, form_url, obj)