Synchronize style fixes
diff --git a/xos/core/admin.py b/xos/core/admin.py
index 59f2176..827a2e1 100644
--- a/xos/core/admin.py
+++ b/xos/core/admin.py
@@ -1,8 +1,6 @@
 import threading
 from cgi import escape as html_escape
 
-from core.models import *
-from core.models import Site
 from django import forms
 from django.contrib import admin, messages
 from django.contrib.admin.widgets import (AdminTextareaWidget,
@@ -21,6 +19,9 @@
 from django.utils.html import conditional_escape, format_html
 from django.utils.safestring import mark_safe
 from django.utils.text import capfirst
+
+from core.models import *
+from core.models import Site
 from openstack.manager import OpenStackManager
 from suit.widgets import LinkedSelect
 
@@ -28,21 +29,22 @@
 _thread_locals = threading.local()
 
 ICON_URLS = {"success": "/static/admin/img/icon_success.gif",
-            "clock": "/static/admin/img/icon_clock.gif",
-            "error": "/static/admin/img/icon_error.gif"}
+             "clock": "/static/admin/img/icon_clock.gif",
+             "error": "/static/admin/img/icon_error.gif"}
+
 
 def backend_icon(obj):
     (icon, tooltip) = obj.get_backend_icon()
 
     icon_url = ICON_URLS.get(icon, "unknown")
 
-    (exponent,last_success,last_failure,failures) = obj.get_backend_details()
+    (exponent, last_success, last_failure, failures) = obj.get_backend_details()
 
     # FIXME: Need to clean this up by separating Javascript from Python
     if (obj.pk):
         script = """
         <script type="text/javascript">$(document).ready(function () {$("#show_details_%d").click(function () {$("#status%d").dialog({modal: true, height: 200, width: 200 });});});</script>
-        """%(obj.pk,obj.pk)
+        """ % (obj.pk, obj.pk)
 
         div = """
         <div style="display:none;" id="status%d" title="Details">
@@ -51,8 +53,8 @@
                 <p>Failures: %r</p>
                 <p>Last Failure: %r</p>
                     </div>
-        """%(obj.pk,exponent,last_success,failures,last_failure)
-        a = '<a id="show_details_%d" href="#">'%obj.pk
+        """ % (obj.pk, exponent, last_success, failures, last_failure)
+        a = '<a id="show_details_%d" href="#">' % obj.pk
         astop = '</a>'
     else:
         div = ''
@@ -65,24 +67,30 @@
     else:
         return '<span style="min-width:16px;"><img src="%s"></span>' % icon_url
 
+
 def backend_text(obj):
     (icon, tooltip) = obj.get_backend_icon()
     icon_url = ICON_URLS.get(icon, "unknown")
 
     return '<img src="%s"> %s' % (icon_url, tooltip)
 
+
 class UploadTextareaWidget(AdminTextareaWidget):
+
     def render(self, name, value, attrs=None):
         if value is None:
             value = ''
         final_attrs = self.build_attrs(attrs, name=name)
-        return format_html('<input type="file" style="width: 0; height: 0" id="btn_upload_%s" onChange="uploadTextarea(event,\'%s\');">' \
-                           '<button onClick="$(\'#btn_upload_%s\').click(); return false;">Upload</button>' \
-                           '<br><textarea{0}>\r\n{1}</textarea>' % (attrs["id"], attrs["id"], attrs["id"]),
+        return format_html('<input type="file" style="width: 0; height: 0" id="btn_upload_%s" onChange="uploadTextarea(event,\'%s\');">'
+                           '<button onClick="$(\'#btn_upload_%s\').click(); return false;">Upload</button>'
+                           '<br><textarea{0}>\r\n{1}</textarea>' % (
+                               attrs["id"], attrs["id"], attrs["id"]),
                            flatatt(final_attrs),
                            force_text(value))
 
+
 class SliderWidget(forms.HiddenInput):
+
     def render(self, name, value,  attrs=None):
         if value is None:
             value = '0'
@@ -101,7 +109,7 @@
                               </script>
                               <input type="hidden" id="%(id)s" name="%(name)s" value="%(value)s"></input>
                            """ % attrs
-        html = html.replace("{","{{").replace("}","}}")
+        html = html.replace("{", "{{").replace("}", "}}")
         return format_html(html,
                            flatatt(final_attrs),
                            force_text(value))
@@ -115,6 +123,7 @@
             value = ''
         return mark_safe(str(value) + super(PlainTextWidget, self).render(name, value, attrs))
 
+
 class XOSAdminMixin(object):
     # call save_by_user and delete_by_user instead of save and delete
 
@@ -165,8 +174,8 @@
 
         formset.save_m2m()
 
-    def get_actions(self,request):
-        actions = super(XOSAdminMixin,self).get_actions(request)
+    def get_actions(self, request):
+        actions = super(XOSAdminMixin, self).get_actions(request)
 
         if self.__user_is_readonly(request):
             if 'delete_selected' in actions:
@@ -180,13 +189,16 @@
 
     def add_extra_context(self, request, extra_context):
         # allow custom application breadcrumb url and name
-        extra_context["custom_app_breadcrumb_url"] = getattr(self, "custom_app_breadcrumb_url", None)
-        extra_context["custom_app_breadcrumb_name"] = getattr(self, "custom_app_breadcrumb_name", None)
-        extra_context["custom_changelist_breadcrumb_url"] = getattr(self, "custom_changelist_breadcrumb_url", None)
+        extra_context["custom_app_breadcrumb_url"] = getattr(
+            self, "custom_app_breadcrumb_url", None)
+        extra_context["custom_app_breadcrumb_name"] = getattr(
+            self, "custom_app_breadcrumb_name", None)
+        extra_context["custom_changelist_breadcrumb_url"] = getattr(
+            self, "custom_changelist_breadcrumb_url", None)
 
         # for Service admins to render their Administration page
         if getattr(self, "extracontext_registered_admins", False):
-            admins=[]
+            admins = []
             for model, model_admin in admin.site._registry.items():
                 if model == self.model:
                     continue
@@ -194,11 +206,11 @@
                     info = {"app": model._meta.app_label,
                             "model": model._meta.model_name,
                             "name": capfirst(model._meta.verbose_name_plural),
-                            "url": self.url_for_model_changelist(request,model) }
+                            "url": self.url_for_model_changelist(request, model)}
                     admins.append(info)
             extra_context["registered_admins"] = admins
 
-    def change_view(self,request,object_id, extra_context=None):
+    def change_view(self, request, object_id, extra_context=None):
         extra_context = extra_context or {}
 
         if self.__user_is_readonly(request):
@@ -207,7 +219,7 @@
                 self.readonly_save = self.readonly_fields
                 self.inlines_save = self.inlines
             if hasattr(self, "user_readonly_fields"):
-                self.readonly_fields=self.user_readonly_fields
+                self.readonly_fields = self.user_readonly_fields
             if hasattr(self, "user_readonly_inlines"):
                 self.inlines = self.user_readonly_inlines
         else:
@@ -243,14 +255,14 @@
         request.readonly = True
         return super(XOSAdminMixin, self).change_view(request, object_id, extra_context=extra_context)
 
-    def changelist_view(self, request, extra_context = None):
+    def changelist_view(self, request, extra_context=None):
         extra_context = extra_context or {}
 
         self.add_extra_context(request, extra_context)
 
         return super(XOSAdminMixin, self).changelist_view(request, extra_context=extra_context)
 
-    def add_view(self, request, form_url='', extra_context = None):
+    def add_view(self, request, form_url='', extra_context=None):
         extra_context = extra_context or {}
 
         self.add_extra_context(request, extra_context)
@@ -285,16 +297,20 @@
 
         return inlines
 
+
 class ReadOnlyAwareAdmin(XOSAdminMixin, admin.ModelAdmin):
     # Note: Make sure XOSAdminMixin is listed before
     # admin.ModelAdmin in the class declaration.
 
     pass
 
+
 class XOSBaseAdmin(ReadOnlyAwareAdmin):
     save_on_top = False
 
+
 class SingletonAdmin (ReadOnlyAwareAdmin):
+
     def has_add_permission(self, request):
         if not super(SingletonAdmin, self).has_add_permission(request):
             return False
@@ -305,10 +321,13 @@
         else:
             return True
 
+
 class ServiceAppAdmin (SingletonAdmin):
     extracontext_registered_admins = True
 
+
 class XOSTabularInline(admin.TabularInline):
+
     def __init__(self, *args, **kwargs):
         super(XOSTabularInline, self).__init__(*args, **kwargs)
 
@@ -327,7 +346,7 @@
                 object instead of trying to bring up a change view of the
                 SliceNetwork object.
             """
-            return getattr(self.model,self.selflink_fieldname).field.rel.to
+            return getattr(self.model, self.selflink_fieldname).field.rel.to
         else:
             return self.model
 
@@ -337,7 +356,7 @@
 
     def get_change_url(self, id):
         """ Get the URL to a change form in the admin for this model """
-        reverse_path = self.selflink_reverse_path # "admin:%s_change" % (self.selflink_model._meta.db_table)
+        reverse_path = self.selflink_reverse_path  # "admin:%s_change" % (self.selflink_model._meta.db_table)
         try:
             url = reverse(reverse_path, args=(id,))
         except NoReverseMatch:
@@ -396,7 +415,9 @@
         return mark_safe(backend_icon(obj))
     backend_status_icon.short_description = ""
 
+
 class PlStackGenericTabularInline(generic.GenericTabularInline):
+
     def has_add_permission(self, request):
         return not request.user.isReadOnlyUser()
 
@@ -412,6 +433,7 @@
         return mark_safe(backend_icon(obj))
     backend_status_icon.short_description = ""
 
+
 class ReservationInline(XOSTabularInline):
     model = Reservation
     extra = 0
@@ -420,6 +442,7 @@
     def queryset(self, request):
         return Reservation.select_by_user(request.user)
 
+
 class TagInline(PlStackGenericTabularInline):
     model = Tag
     extra = 0
@@ -429,12 +452,15 @@
     def queryset(self, request):
         return Tag.select_by_user(request.user)
 
+
 class InstanceInline(XOSTabularInline):
     model = Instance
-    fields = ['backend_status_icon', 'all_ips_string', 'instance_id', 'instance_name', 'slice', 'deployment', 'flavor', 'image', 'node']
+    fields = ['backend_status_icon', 'all_ips_string', 'instance_id',
+              'instance_name', 'slice', 'deployment', 'flavor', 'image', 'node']
     extra = 0
     max_num = 0
-    readonly_fields = ['backend_status_icon', 'all_ips_string', 'instance_id', 'instance_name', 'slice', 'deployment', 'flavor', 'image', 'node']
+    readonly_fields = ['backend_status_icon', 'all_ips_string', 'instance_id',
+                       'instance_name', 'slice', 'deployment', 'flavor', 'image', 'node']
     suit_classes = 'suit-tab suit-tab-instances'
 
     def queryset(self, request):
@@ -442,20 +468,27 @@
 
     def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
         if db_field.name == 'deployment':
-           kwargs['queryset'] = Deployment.select_by_acl(request.user).filter(sitedeployments__nodes__isnull=False).distinct()
-           kwargs['widget'] = forms.Select(attrs={'onChange': "instance_deployment_changed(this);"})
+            kwargs['queryset'] = Deployment.select_by_acl(request.user).filter(
+                sitedeployments__nodes__isnull=False).distinct()
+            kwargs['widget'] = forms.Select(
+                attrs={'onChange': "instance_deployment_changed(this);"})
         if db_field.name == 'flavor':
-           kwargs['widget'] = forms.Select(attrs={'onChange': "instance_flavor_changed(this);"})
+            kwargs['widget'] = forms.Select(
+                attrs={'onChange': "instance_flavor_changed(this);"})
 
-        field = super(InstanceInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
+        field = super(InstanceInline, self).formfield_for_foreignkey(
+            db_field, request, **kwargs)
 
         return field
 
+
 class CordInstanceInline(XOSTabularInline):
     model = Instance
-    fields = ['backend_status_icon', 'all_ips_string', 'instance_id', 'instance_name', 'slice', 'flavor', 'image', 'node']
+    fields = ['backend_status_icon', 'all_ips_string', 'instance_id',
+              'instance_name', 'slice', 'flavor', 'image', 'node']
     extra = 0
-    readonly_fields = ['backend_status_icon', 'all_ips_string', 'instance_id', 'instance_name']
+    readonly_fields = ['backend_status_icon',
+                       'all_ips_string', 'instance_id', 'instance_name']
     suit_classes = 'suit-tab suit-tab-instances'
 
     def queryset(self, request):
@@ -464,15 +497,20 @@
     def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
         if db_field.name == 'deployment':
 
-           kwargs['queryset'] = Deployment.select_by_acl(request.user).filter(sitedeployments__nodes__isnull=False).distinct()
-           kwargs['widget'] = forms.Select(attrs={'onChange': "instance_deployment_changed(this);"})
+            kwargs['queryset'] = Deployment.select_by_acl(request.user).filter(
+                sitedeployments__nodes__isnull=False).distinct()
+            kwargs['widget'] = forms.Select(
+                attrs={'onChange': "instance_deployment_changed(this);"})
         if db_field.name == 'flavor':
-           kwargs['widget'] = forms.Select(attrs={'onChange': "instance_flavor_changed(this);"})
+            kwargs['widget'] = forms.Select(
+                attrs={'onChange': "instance_flavor_changed(this);"})
 
-        field = super(CordInstanceInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
+        field = super(CordInstanceInline, self).formfield_for_foreignkey(
+            db_field, request, **kwargs)
 
         return field
 
+
 class SiteInline(XOSTabularInline):
     model = Site
     extra = 0
@@ -481,14 +519,19 @@
     def queryset(self, request):
         return Site.select_by_user(request.user)
 
+
 class SiteHostsNodesInline(SiteInline):
+
     def queryset(self, request):
         return Site.select_by_user(request.user).filter(hosts_nodes=True)
 
+
 class SiteHostsUsersInline(SiteInline):
+
     def queryset(self, request):
         return Site.select_by_user(request.user).filter(hosts_users=True)
 
+
 class UserInline(XOSTabularInline):
     model = User
     fields = ['backend_status_icon', 'email', 'firstname', 'lastname']
@@ -499,6 +542,7 @@
     def queryset(self, request):
         return User.select_by_user(request.user)
 
+
 class SliceInline(XOSTabularInline):
     model = Slice
     fields = ['backend_status_icon', 'name', 'site', 'serviceClass', 'service']
@@ -509,6 +553,7 @@
     def queryset(self, request):
         return Slice.select_by_user(request.user)
 
+
 class NodeInline(XOSTabularInline):
     model = Node
     extra = 0
@@ -516,16 +561,18 @@
     fields = ['backend_status_icon', 'name', 'site_deployment']
     readonly_fields = ('backend_status_icon', )
 
+
 class DeploymentPrivilegeInline(XOSTabularInline):
     model = DeploymentPrivilege
     extra = 0
     suit_classes = 'suit-tab suit-tab-deploymentprivileges'
-    fields = ['backend_status_icon', 'user','role','deployment']
+    fields = ['backend_status_icon', 'user', 'role', 'deployment']
     readonly_fields = ('backend_status_icon', )
 
     def queryset(self, request):
         return DeploymentPrivilege.select_by_user(request.user)
 
+
 class ControllerSiteInline(XOSTabularInline):
     model = ControllerSite
     extra = 0
@@ -537,7 +584,7 @@
     model = SitePrivilege
     extra = 0
     suit_classes = 'suit-tab suit-tab-siteprivileges'
-    fields = ['backend_status_icon', 'user','site', 'role']
+    fields = ['backend_status_icon', 'user', 'site', 'role']
     readonly_fields = ('backend_status_icon', )
 
     def formfield_for_foreignkey(self, db_field, request, **kwargs):
@@ -556,7 +603,7 @@
     model = ServicePrivilege
     extra = 0
     suit_classes = 'suit-tab suit-tab-serviceprivileges'
-    fields = ['backend_status_icon', 'user','service', 'role']
+    fields = ['backend_status_icon', 'user', 'service', 'role']
     readonly_fields = ('backend_status_icon', )
 
     def formfield_for_foreignkey(self, db_field, request, **kwargs):
@@ -569,11 +616,12 @@
     def queryset(self, request):
         return ServicePrivilege.select_by_user(request.user)
 
+
 class SiteDeploymentInline(XOSTabularInline):
     model = SiteDeployment
     extra = 0
     suit_classes = 'suit-tab suit-tab-sitedeployments'
-    fields = ['backend_status_icon', 'deployment','site', 'controller']
+    fields = ['backend_status_icon', 'deployment', 'site', 'controller']
     readonly_fields = ('backend_status_icon', )
 
     def formfield_for_foreignkey(self, db_field, request, **kwargs):
@@ -585,7 +633,8 @@
 
         if db_field.name == 'controller':
             if len(resolve(request.path).args) > 0:
-                kwargs['queryset'] = Controller.select_by_user(request.user).filter(deployment__id=int(resolve(request.path).args[0]))
+                kwargs['queryset'] = Controller.select_by_user(request.user).filter(
+                    deployment__id=int(resolve(request.path).args[0]))
 
         return super(SiteDeploymentInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
 
@@ -602,16 +651,17 @@
 
     def formfield_for_foreignkey(self, db_field, request, **kwargs):
         if db_field.name == 'slice':
-           kwargs['queryset'] = Slice.select_by_user(request.user)
+            kwargs['queryset'] = Slice.select_by_user(request.user)
         if db_field.name == 'user':
-           # all users are available to be granted SlicePrivilege
-           kwargs['queryset'] = User.objects.all()
+            # all users are available to be granted SlicePrivilege
+            kwargs['queryset'] = User.objects.all()
 
         return super(SlicePrivilegeInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
 
     def queryset(self, request):
         return SlicePrivilege.select_by_user(request.user)
 
+
 class SliceNetworkInline(XOSTabularInline):
     model = Network.slices.through
     selflink_fieldname = "network"
@@ -622,6 +672,7 @@
     fields = ['backend_status_icon', 'network']
     readonly_fields = ('backend_status_icon', )
 
+
 class ImageDeploymentsInline(XOSTabularInline):
     model = ImageDeployments
     extra = 0
@@ -631,6 +682,7 @@
     fields = ['backend_status_icon', 'image', 'deployment']
     readonly_fields = ['backend_status_icon']
 
+
 class ControllerImagesInline(XOSTabularInline):
     model = ControllerImages
     extra = 0
@@ -640,14 +692,17 @@
     fields = ['backend_status_icon', 'image', 'controller', 'glance_image_id']
     readonly_fields = ['backend_status_icon', 'glance_image_id']
 
+
 class SliceRoleAdmin(XOSBaseAdmin):
     model = SliceRole
     pass
 
+
 class SiteRoleAdmin(XOSBaseAdmin):
     model = SiteRole
     pass
 
+
 class DeploymentAdminForm(forms.ModelForm):
     images = forms.ModelMultipleChoiceField(
         queryset=Image.objects.all(),
@@ -665,19 +720,22 @@
             verbose_name=('Flavors'), is_stacked=False
         )
     )
+
     class Meta:
         model = Deployment
-        many_to_many = ["flavors",]
+        many_to_many = ["flavors", ]
 
     def __init__(self, *args, **kwargs):
-      request = kwargs.pop('request', None)
-      super(DeploymentAdminForm, self).__init__(*args, **kwargs)
+        request = kwargs.pop('request', None)
+        super(DeploymentAdminForm, self).__init__(*args, **kwargs)
 
-      self.fields['accessControl'].initial = "allow site " + request.user.site.name
+        self.fields['accessControl'].initial = "allow site " + \
+            request.user.site.name
 
-      if self.instance and self.instance.pk:
-        self.fields['images'].initial = [x.image for x in self.instance.imagedeployments.all()]
-        self.fields['flavors'].initial = self.instance.flavors.all()
+        if self.instance and self.instance.pk:
+            self.fields['images'].initial = [
+                x.image for x in self.instance.imagedeployments.all()]
+            self.fields['flavors'].initial = self.instance.flavors.all()
 
     def manipulate_m2m_objs(self, this_obj, selected_objs, all_relations, relation_class, local_attrname, foreign_attrname):
         """ helper function for handling m2m relations from the MultipleChoiceField
@@ -702,61 +760,70 @@
         existing_dest_objs = []
         for relation in list(all_relations):
             if getattr(relation, foreign_attrname) not in selected_objs:
-                #print "deleting site", sdp.site
+                # print "deleting site", sdp.site
                 relation.delete()
             else:
                 existing_dest_objs.append(getattr(relation, foreign_attrname))
 
         for dest_obj in selected_objs:
             if dest_obj not in existing_dest_objs:
-                #print "adding site", site
+                # print "adding site", site
                 kwargs = {foreign_attrname: dest_obj, local_attrname: this_obj}
                 relation = relation_class(**kwargs)
                 relation.save()
 
     def save(self, commit=True):
-      deployment = super(DeploymentAdminForm, self).save(commit=False)
+        deployment = super(DeploymentAdminForm, self).save(commit=False)
 
-      if commit:
-        deployment.save()
-        # this has to be done after save() if/when a deployment is first created
-        deployment.flavors = self.cleaned_data['flavors']
+        if commit:
+            deployment.save()
+            # this has to be done after save() if/when a deployment is first
+            # created
+            deployment.flavors = self.cleaned_data['flavors']
 
-      if deployment.pk:
-        # save_m2m() doesn't seem to work with 'through' relations. So we
-        #    create/destroy the through models ourselves. There has to be
-        #    a better way...
+        if deployment.pk:
+            # save_m2m() doesn't seem to work with 'through' relations. So we
+            #    create/destroy the through models ourselves. There has to be
+            #    a better way...
 
-        self.manipulate_m2m_objs(deployment, self.cleaned_data['images'], deployment.imagedeployments.all(), ImageDeployments, "deployment", "image")
-        # manipulate_m2m_objs doesn't work for Flavor/Deployment relationship
-        # so well handle that manually here
-        for flavor in deployment.flavors.all():
-            if getattr(flavor, 'name') not in self.cleaned_data['flavors']:
-                deployment.flavors.remove(flavor)
-        for flavor in self.cleaned_data['flavors']:
-            if flavor not in deployment.flavors.all():
-                flavor.deployments.add(deployment)
+            self.manipulate_m2m_objs(deployment, self.cleaned_data[
+                                     'images'], deployment.imagedeployments.all(), ImageDeployments, "deployment", "image")
+            # manipulate_m2m_objs doesn't work for Flavor/Deployment relationship
+            # so well handle that manually here
+            for flavor in deployment.flavors.all():
+                if getattr(flavor, 'name') not in self.cleaned_data['flavors']:
+                    deployment.flavors.remove(flavor)
+            for flavor in self.cleaned_data['flavors']:
+                if flavor not in deployment.flavors.all():
+                    flavor.deployments.add(deployment)
 
-      self.save_m2m()
+        self.save_m2m()
 
-      return deployment
+        return deployment
+
 
 class DeploymentAdminROForm(DeploymentAdminForm):
+
     def save(self, commit=True):
         raise PermissionDenied
 
+
 class SiteAssocInline(XOSTabularInline):
     model = Site.deployments.through
     extra = 0
     suit_classes = 'suit-tab suit-tab-sites'
 
+
 class DeploymentAdmin(XOSBaseAdmin):
     model = Deployment
-    fieldList = ['backend_status_text', 'name', 'images', 'flavors', 'accessControl']
-    fieldsets = [(None, {'fields': fieldList, 'classes':['suit-tab suit-tab-general']})]
+    fieldList = ['backend_status_text', 'name',
+                 'images', 'flavors', 'accessControl']
+    fieldsets = [
+        (None, {'fields': fieldList, 'classes': ['suit-tab suit-tab-general']})]
     # node no longer directly connected to deployment
     #inlines = [DeploymentPrivilegeInline,NodeInline,TagInline,ImageDeploymentsInline]
-    inlines = [DeploymentPrivilegeInline,TagInline,ImageDeploymentsInline,SiteDeploymentInline]
+    inlines = [DeploymentPrivilegeInline, TagInline,
+               ImageDeploymentsInline, SiteDeploymentInline]
     list_display = ['backend_status_icon', 'name']
     list_display_links = ('backend_status_icon', 'name', )
     readonly_fields = ('backend_status_text', )
@@ -764,48 +831,58 @@
     user_readonly_fields = ['name']
 
     # nodes no longer direclty connected to deployments
-    suit_form_tabs =(('general','Deployment Details'),('deploymentprivileges','Privileges'), ('sitedeployments', 'Sites'))
+    suit_form_tabs = (('general', 'Deployment Details'),
+                      ('deploymentprivileges', 'Privileges'), ('sitedeployments', 'Sites'))
 
     def get_form(self, request, obj=None, **kwargs):
         if request.user.isReadOnlyUser() or not request.user.is_admin:
             kwargs["form"] = DeploymentAdminROForm
         else:
             kwargs["form"] = DeploymentAdminForm
-        adminForm = super(DeploymentAdmin,self).get_form(request, obj, **kwargs)
+        adminForm = super(DeploymentAdmin, self).get_form(
+            request, obj, **kwargs)
 
         # from stackexchange: pass the request object into the form
 
         class AdminFormMetaClass(adminForm):
-           def __new__(cls, *args, **kwargs):
-               kwargs['request'] = request
-               return adminForm(*args, **kwargs)
+
+            def __new__(cls, *args, **kwargs):
+                kwargs['request'] = request
+                return adminForm(*args, **kwargs)
 
         return AdminFormMetaClass
 
+
 class ControllerAdminForm(forms.ModelForm):
     backend_disabled = forms.BooleanField(required=False)
+
     class Meta:
         model = Controller
 
     def __init__(self, *args, **kwargs):
-      request = kwargs.pop('request', None)
-      super(ControllerAdminForm, self).__init__(*args, **kwargs)
+        request = kwargs.pop('request', None)
+        super(ControllerAdminForm, self).__init__(*args, **kwargs)
 
-      if self.instance and self.instance.pk:
-        self.fields['backend_disabled'].initial = self.instance.get_backend_register('disabled', False)
-      else:
-        # defaults when adding new controller
-        self.fields['backend_disabled'].initial = False
+        if self.instance and self.instance.pk:
+            self.fields['backend_disabled'].initial = self.instance.get_backend_register(
+                'disabled', False)
+        else:
+            # defaults when adding new controller
+            self.fields['backend_disabled'].initial = False
 
     def save(self, commit=True):
-      self.instance.set_backend_register("disabled", self.cleaned_data["backend_disabled"])
-      return super(ControllerAdminForm, self).save(commit=commit)
+        self.instance.set_backend_register(
+            "disabled", self.cleaned_data["backend_disabled"])
+        return super(ControllerAdminForm, self).save(commit=commit)
+
 
 class ControllerAdmin(XOSBaseAdmin):
     model = Controller
-    fieldList = ['deployment', 'name', 'backend_type', 'backend_disabled', 'version', 'auth_url', 'admin_user', 'admin_tenant','admin_password', 'domain', 'rabbit_host', 'rabbit_user', 'rabbit_password']
-    fieldsets = [(None, {'fields': fieldList, 'classes':['suit-tab suit-tab-general']})]
-    inlines = [ControllerSiteInline] # ,ControllerImagesInline]
+    fieldList = ['deployment', 'name', 'backend_type', 'backend_disabled', 'version', 'auth_url', 'admin_user',
+                 'admin_tenant', 'admin_password', 'domain', 'rabbit_host', 'rabbit_user', 'rabbit_password']
+    fieldsets = [
+        (None, {'fields': fieldList, 'classes': ['suit-tab suit-tab-general']})]
+    inlines = [ControllerSiteInline]  # ,ControllerImagesInline]
     list_display = ['backend_status_icon', 'name', 'version', 'backend_type']
     list_display_links = ('backend_status_icon', 'name', )
     readonly_fields = ('backend_status_text',)
@@ -814,7 +891,7 @@
     user_readonly_fields = []
 
     def save_model(self, request, obj, form, change):
-        # update openstack connection to use this site/tenant
+            # update openstack connection to use this site/tenant
         obj.save_by_user(request.user)
 
     def delete_model(self, request, obj):
@@ -826,35 +903,40 @@
     @property
     def suit_form_tabs(self):
         tabs = [('general', 'Controller Details'),
-        ]
+                ]
 
-        request=getattr(_thread_locals, "request", None)
+        request = getattr(_thread_locals, "request", None)
         if request and request.user.is_admin:
-            tabs.append( ('admin-only', 'Admin-Only') )
+            tabs.append(('admin-only', 'Admin-Only'))
 
         return tabs
 
+
 class TenantAttributeAdmin(XOSBaseAdmin):
     model = TenantAttribute
     list_display = ('backend_status_icon', 'tenant', 'name', 'value')
     list_display_links = ('backend_status_icon', 'name')
     fieldList = ('backend_status_text', 'tenant', 'name', 'value', )
-    fieldsets = [(None, {'fields': fieldList, 'classes':['suit-tab suit-tab-general']})]
+    fieldsets = [
+        (None, {'fields': fieldList, 'classes': ['suit-tab suit-tab-general']})]
     readonly_fields = ('backend_status_text', )
 
-    suit_form_tabs =(('general', 'Tenant Root Details'),
-    )
+    suit_form_tabs = (('general', 'Tenant Root Details'),
+                      )
+
 
 class TenantAttrAsTabInline(XOSTabularInline):
     model = TenantAttribute
-    fields = ['name','value']
+    fields = ['name', 'value']
     extra = 0
     suit_classes = 'suit-tab suit-tab-tenantattrs'
 
+
 class TenantRootRoleAdmin(XOSBaseAdmin):
     model = TenantRootRole
     fields = ('role',)
 
+
 class TenantRootTenantInline(XOSTabularInline):
     model = Tenant
     fields = ['provider_service', 'subscriber_root']
@@ -864,10 +946,11 @@
     verbose_name = 'subscribed tenant'
     verbose_name_plural = 'subscribed tenants'
 
-    #def queryset(self, request):
+    # def queryset(self, request):
     #    qs = super(TenantRootTenantInline, self).queryset(request)
     #    return qs.filter(kind="coarse")
 
+
 class TenantRootPrivilegeInline(XOSTabularInline):
     model = TenantRootPrivilege
     extra = 0
@@ -878,27 +961,31 @@
     def queryset(self, request):
         return TenantRootPrivilege.select_by_user(request.user)
 
+
 class TenantRootAdmin(XOSBaseAdmin):
     model = TenantRoot
     list_display = ('backend_status_icon', 'name', 'kind')
     list_display_links = ('backend_status_icon', 'name')
     fieldList = ('backend_status_text', 'name', 'kind', )
-    fieldsets = [(None, {'fields': fieldList, 'classes':['suit-tab suit-tab-general']})]
+    fieldsets = [
+        (None, {'fields': fieldList, 'classes': ['suit-tab suit-tab-general']})]
     inlines = (TenantRootTenantInline, TenantRootPrivilegeInline)
     readonly_fields = ('backend_status_text', )
 
-    suit_form_tabs =(('general', 'Tenant Root Details'),
-        ('tenantroots','Tenancy'),
-        ('tenantrootprivileges','Privileges')
-    )
+    suit_form_tabs = (('general', 'Tenant Root Details'),
+                      ('tenantroots', 'Tenancy'),
+                      ('tenantrootprivileges', 'Privileges')
+                      )
+
 
 class TenantRoleAdmin(XOSBaseAdmin):
     """Admin for TenantRoles."""
     model = TenantRole
     fields = ('role',)
 
+
 class TenantPrivilegeInline(XOSTabularInline):
-    """Inline for adding a TenantPrivilege to a Tenant.""";
+    """Inline for adding a TenantPrivilege to a Tenant."""
     model = TenantPrivilege
     extra = 0
     suit_classes = 'suit-tab suit-tab-tenantprivileges'
@@ -908,6 +995,7 @@
     def queryset(self, request):
         return TenantPrivilege.select_by_user(request.user)
 
+
 class ProviderTenantInline(XOSTabularInline):
     model = CoarseTenant
     fields = ['provider_service', 'subscriber_service', 'connect_method']
@@ -921,6 +1009,7 @@
         qs = super(ProviderTenantInline, self).queryset(request)
         return qs.filter(kind="coarse")
 
+
 class SubscriberTenantInline(XOSTabularInline):
     model = CoarseTenant
     fields = ['provider_service', 'subscriber_service', 'connect_method']
@@ -934,28 +1023,35 @@
         qs = super(SubscriberTenantInline, self).queryset(request)
         return qs.filter(kind="coarse")
 
+
 class ServiceAttrAsTabInline(XOSTabularInline):
     model = ServiceAttribute
-    fields = ['name','value']
+    fields = ['name', 'value']
     extra = 0
     suit_classes = 'suit-tab suit-tab-serviceattrs'
 
+
 class ServiceAdmin(XOSBaseAdmin):
-    list_display = ("backend_status_icon","name","kind","versionNumber","enabled","published")
+    list_display = ("backend_status_icon", "name", "kind",
+                    "versionNumber", "enabled", "published")
     list_display_links = ('backend_status_icon', 'name', )
-    fieldList = ["backend_status_text","name","kind","description","versionNumber","enabled","published","view_url","icon_url","public_key","private_key_fn","service_specific_attribute","service_specific_id"]
-    fieldsets = [(None, {'fields': fieldList, 'classes':['suit-tab suit-tab-general']})]
-    inlines = [ServiceAttrAsTabInline,SliceInline,ProviderTenantInline,SubscriberTenantInline,ServicePrivilegeInline]
+    fieldList = ["backend_status_text", "name", "kind", "description", "versionNumber", "enabled", "published",
+                 "view_url", "icon_url", "public_key", "private_key_fn", "service_specific_attribute", "service_specific_id"]
+    fieldsets = [
+        (None, {'fields': fieldList, 'classes': ['suit-tab suit-tab-general']})]
+    inlines = [ServiceAttrAsTabInline, SliceInline, ProviderTenantInline,
+               SubscriberTenantInline, ServicePrivilegeInline]
     readonly_fields = ('backend_status_text', )
 
     user_readonly_fields = fieldList
 
-    suit_form_tabs =(('general', 'Service Details'),
-        ('slices','Slices'),
-        ('serviceattrs','Additional Attributes'),
-        ('servicetenants','Tenancy'),
-        ('serviceprivileges','Privileges')
-    )
+    suit_form_tabs = (('general', 'Service Details'),
+                      ('slices', 'Slices'),
+                      ('serviceattrs', 'Additional Attributes'),
+                      ('servicetenants', 'Tenancy'),
+                      ('serviceprivileges', 'Privileges')
+                      )
+
 
 class SiteNodeInline(XOSTabularInline):
     model = Node
@@ -965,43 +1061,50 @@
 
     def formfield_for_foreignkey(self, db_field, request, **kwargs):
         # only display site deployments associated with this site
-        if db_field.name ==  'site_deployment':
-            kwargs['queryset'] = SiteDeployment.objects.filter(site__id=int(request.path.split('/')[-2]))
+        if db_field.name == 'site_deployment':
+            kwargs['queryset'] = SiteDeployment.objects.filter(
+                site__id=int(request.path.split('/')[-2]))
 
         return super(SiteNodeInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
 
+
 class SiteAdmin(XOSBaseAdmin):
     #fieldList = ['backend_status_text', 'name', 'site_url', 'enabled', 'is_public', 'login_base', 'accountLink','location']
-    fieldList = ['backend_status_text', 'name', 'site_url', 'enabled', 'login_base', 'location', 'is_public', 'hosts_nodes', 'hosts_users']
+    fieldList = ['backend_status_text', 'name', 'site_url', 'enabled',
+                 'login_base', 'location', 'is_public', 'hosts_nodes', 'hosts_users']
     fieldsets = [
-        (None, {'fields': fieldList, 'classes':['suit-tab suit-tab-general']}),
+        (None, {'fields': fieldList, 'classes': [
+         'suit-tab suit-tab-general']}),
         #('Deployment Networks', {'fields': ['deployments'], 'classes':['suit-tab suit-tab-deployments']}),
     ]
     #readonly_fields = ['backend_status_text', 'accountLink']
     readonly_fields = ['backend_status_text']
 
     #user_readonly_fields = ['name', 'deployments','site_url', 'enabled', 'is_public', 'login_base', 'accountLink']
-    user_readonly_fields = ['name', 'deployments','site_url', 'enabled', 'is_public', 'login_base', 'hosts_nodes', 'hosts_users']
+    user_readonly_fields = ['name', 'deployments', 'site_url',
+                            'enabled', 'is_public', 'login_base', 'hosts_nodes', 'hosts_users']
 
-    list_display = ('backend_status_icon', 'name', 'login_base','site_url', 'enabled')
+    list_display = ('backend_status_icon', 'name',
+                    'login_base', 'site_url', 'enabled')
     list_display_links = ('backend_status_icon', 'name', )
     filter_horizontal = ('deployments',)
-    inlines = [SliceInline,UserInline,TagInline, SitePrivilegeInline, SiteNodeInline]
+    inlines = [SliceInline, UserInline, TagInline,
+               SitePrivilegeInline, SiteNodeInline]
     admin_inlines = [ControllerSiteInline]
     search_fields = ['name']
 
     @property
     def suit_form_tabs(self):
         tabs = [('general', 'Site Details'),
-            ('users','Users'),
-            ('siteprivileges','Privileges'),
-            ('slices','Slices'),
-            ('nodes','Nodes'),
-        ]
+                ('users', 'Users'),
+                ('siteprivileges', 'Privileges'),
+                ('slices', 'Slices'),
+                ('nodes', 'Nodes'),
+                ]
 
-        request=getattr(_thread_locals, "request", None)
+        request = getattr(_thread_locals, "request", None)
         if request and request.user.is_admin:
-            tabs.append( ('admin-only', 'Admin-Only') )
+            tabs.append(('admin-only', 'Admin-Only'))
 
         return tabs
 
@@ -1021,7 +1124,7 @@
         link_obj = obj.accounts.all()
         if link_obj:
             reverse_path = "admin:core_account_change"
-            url = reverse(reverse_path, args =(link_obj[0].id,))
+            url = reverse(reverse_path, args=(link_obj[0].id,))
             return "<a href='%s'>%s</a>" % (url, "view billing details")
         else:
             return "no billing data for this site"
@@ -1039,7 +1142,7 @@
 class SitePrivilegeAdmin(XOSBaseAdmin):
     fieldList = ['backend_status_text', 'user', 'site', 'role']
     fieldsets = [
-        (None, {'fields': fieldList, 'classes':['collapse']})
+        (None, {'fields': fieldList, 'classes': ['collapse']})
     ]
     readonly_fields = ('backend_status_text', )
     list_display = ('backend_status_icon', 'user', 'site', 'role')
@@ -1061,10 +1164,12 @@
             if not request.user.is_admin:
                 # only show users from sites where caller has admin or pi role
                 roles = Role.objects.filter(role_type__in=['admin', 'pi'])
-                site_privileges = SitePrivilege.objects.filter(user=request.user).filter(role__in=roles)
+                site_privileges = SitePrivilege.objects.filter(
+                    user=request.user).filter(role__in=roles)
                 sites = [site_privilege.site for site_privilege in site_privileges]
                 site_privileges = SitePrivilege.objects.filter(site__in=sites)
-                emails = [site_privilege.user.email for site_privilege in site_privileges]
+                emails = [
+                    site_privilege.user.email for site_privilege in site_privileges]
                 users = User.objects.filter(email__in=emails)
                 kwargs['queryset'] = users
 
@@ -1074,7 +1179,7 @@
         # admins can see all privileges. Users can only see privileges at sites
         # where they have the admin role or pi role.
         qs = super(SitePrivilegeAdmin, self).queryset(request)
-        #if not request.user.is_admin:
+        # if not request.user.is_admin:
         #    roles = Role.objects.filter(role_type__in=['admin', 'pi'])
         #    site_privileges = SitePrivilege.objects.filter(user=request.user).filter(role__in=roles)
         #    login_bases = [site_privilege.site.login_base for site_privilege in site_privileges]
@@ -1082,7 +1187,9 @@
         #    qs = qs.filter(site__in=sites)
         return qs
 
+
 class SliceForm(forms.ModelForm):
+
     class Meta:
         model = Slice
         widgets = {
@@ -1096,13 +1203,15 @@
         slice_id = self.instance.id
         if not site and slice_id:
             site = Slice.objects.get(id=slice_id).site
-        if (not isinstance(site,Site)):
+        if (not isinstance(site, Site)):
             # previous code indicates 'site' could be a site_id and not a site?
             site = Slice.objects.get(id=site.id)
         if not name.startswith(site.login_base):
-            raise forms.ValidationError('slice name must begin with %s' % site.login_base)
+            raise forms.ValidationError(
+                'slice name must begin with %s' % site.login_base)
         return cleaned_data
 
+
 class ControllerSliceInline(XOSTabularInline):
     model = ControllerSlice
     extra = 0
@@ -1110,16 +1219,21 @@
     verbose_name_plural = "Controller Slices"
     suit_classes = 'suit-tab suit-tab-admin-only'
     fields = ['backend_status_icon', 'controller', 'tenant_id']
-    readonly_fields = ('backend_status_icon', 'controller' )
+    readonly_fields = ('backend_status_icon', 'controller')
+
 
 class SliceAdmin(XOSBaseAdmin):
     form = SliceForm
-    fieldList = ['backend_status_text', 'site', 'name', 'serviceClass', 'enabled','description', 'service', 'slice_url', 'max_instances', "default_isolation", "network"]
-    fieldsets = [('Slice Details', {'fields': fieldList, 'classes':['suit-tab suit-tab-general']}),]
+    fieldList = ['backend_status_text', 'site', 'name', 'serviceClass', 'enabled',
+                 'description', 'service', 'slice_url', 'max_instances', "default_isolation", "network"]
+    fieldsets = [('Slice Details', {'fields': fieldList, 'classes': [
+                  'suit-tab suit-tab-general']}), ]
     readonly_fields = ('backend_status_text', )
-    list_display = ('backend_status_icon', 'name', 'site','serviceClass', 'slice_url', 'max_instances')
+    list_display = ('backend_status_icon', 'name', 'site',
+                    'serviceClass', 'slice_url', 'max_instances')
     list_display_links = ('backend_status_icon', 'name', )
-    normal_inlines = [SlicePrivilegeInline, InstanceInline, TagInline, ReservationInline, SliceNetworkInline]
+    normal_inlines = [SlicePrivilegeInline, InstanceInline,
+                      TagInline, ReservationInline, SliceNetworkInline]
     inlines = normal_inlines
     admin_inlines = [ControllerSliceInline]
     suit_form_includes = (('slice_instance_tab.html', 'bottom', 'instances'),)
@@ -1128,17 +1242,17 @@
 
     @property
     def suit_form_tabs(self):
-        tabs =[('general', 'Slice Details'),
-          ('slicenetworks','Networks'),
-          ('sliceprivileges','Privileges'),
-          ('instances','Instances'),
-          #('reservations','Reservations'),
-          ('tags','Tags'),
-          ]
+        tabs = [('general', 'Slice Details'),
+                ('slicenetworks', 'Networks'),
+                ('sliceprivileges', 'Privileges'),
+                ('instances', 'Instances'),
+                #('reservations','Reservations'),
+                ('tags', 'Tags'),
+                ]
 
-        request=getattr(_thread_locals, "request", None)
+        request = getattr(_thread_locals, "request", None)
         if request and request.user.is_admin:
-            tabs.append( ('admin-only', 'Admin-Only') )
+            tabs.append(('admin-only', 'Admin-Only'))
 
         return tabs
 
@@ -1150,26 +1264,30 @@
         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):
-        # cannot change the site of an existing slice so make the site field read only
+        # 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')
+            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.site_deployment.deployment.id, node.id, node.name) )
+            deployment_nodes.append(
+                (node.site_deployment.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_flavors.append(
+                    (deployment.id, flavor.id, flavor.name))
 
         deployment_images = []
         for image in Image.objects.all():
             for deployment_image in image.imagedeployments.all():
-                deployment_images.append( (deployment_image.deployment.id, image.id, image.name) )
+                deployment_images.append(
+                    (deployment_image.deployment.id, image.id, image.name))
 
         site_login_bases = []
         for site in Site.objects.all():
@@ -1183,8 +1301,10 @@
 
     def formfield_for_foreignkey(self, db_field, request, **kwargs):
         if db_field.name == 'site':
-            kwargs['queryset'] = Site.select_by_user(request.user).filter(hosts_users=True)
-            kwargs['widget'] = forms.Select(attrs={'onChange': "update_slice_prefix(this, $($(this).closest('fieldset')[0]).find('.field-name input')[0].id)"})
+            kwargs['queryset'] = Site.select_by_user(
+                request.user).filter(hosts_users=True)
+            kwargs['widget'] = forms.Select(
+                attrs={'onChange': "update_slice_prefix(this, $($(this).closest('fieldset')[0]).find('.field-name input')[0].id)"})
 
         return super(SliceAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
 
@@ -1204,7 +1324,7 @@
     def add_extra_context(self, request, extra_context):
         super(SliceAdmin, self).add_extra_context(request, extra_context)
         # set context["slice_id"] to the PK passed in the URL to this view
-        if len(request.resolver_match.args)>0:
+        if len(request.resolver_match.args) > 0:
             extra_context["slice_id"] = request.resolver_match.args[0]
 
     def UNUSED_get_inline_instances(self, request, obj=None):
@@ -1214,16 +1334,19 @@
         #    XXX this approach is better than clobbering self.inlines, so
         #    try to make this work post-demo.
         if (obj is not None) and (obj.name == "mysite_vcpe"):
-            cord_vcpe_inlines = [ SlicePrivilegeInline, CordInstanceInline, TagInline, ReservationInline,SliceNetworkInline]
+            cord_vcpe_inlines = [SlicePrivilegeInline, CordInstanceInline,
+                                 TagInline, ReservationInline, SliceNetworkInline]
 
-            inlines=[]
+            inlines = []
             for inline_class in cord_vcpe_inlines:
                 inlines.append(inline_class(self.model, self.admin_site))
         else:
-            inlines = super(SliceAdmin, self).get_inline_instances(request, obj)
+            inlines = super(SliceAdmin, self).get_inline_instances(
+                request, obj)
 
         return inlines
 
+
 class SlicePrivilegeAdmin(XOSBaseAdmin):
     fieldsets = [
         (None, {'fields': ['backend_status_text', 'user', 'slice', 'role']})
@@ -1263,23 +1386,27 @@
         obj.os_manager = OpenStackManager(auth=auth, caller=request.user)
         obj.delete()
 
+
 class ImageAdmin(XOSBaseAdmin):
 
     fieldsets = [('Image Details',
-                   {'fields': ['backend_status_text', 'name', 'kind', 'disk_format', 'container_format', 'tag', 'path'],
-                    'classes': ['suit-tab suit-tab-general']})
-               ]
+                  {'fields': ['backend_status_text', 'name', 'kind', 'disk_format', 'container_format', 'tag', 'path'],
+                   'classes': ['suit-tab suit-tab-general']})
+                 ]
     readonly_fields = ('backend_status_text', )
 
-    suit_form_tabs =(('general','Image Details'),('instances','Instances'),('imagedeployments','Deployments'), ('admin-only', 'Admin-Only'))
+    suit_form_tabs = (('general', 'Image Details'), ('instances', 'Instances'),
+                      ('imagedeployments', 'Deployments'), ('admin-only', 'Admin-Only'))
 
     inlines = [InstanceInline, ControllerImagesInline]
 
-    user_readonly_fields = ['name', 'disk_format', 'container_format', 'tag', 'path']
+    user_readonly_fields = ['name', 'disk_format',
+                            'container_format', 'tag', 'path']
 
     list_display = ['backend_status_icon', 'name', 'kind']
     list_display_links = ('backend_status_icon', 'name', )
 
+
 class NodeForm(forms.ModelForm):
     nodelabels = forms.ModelMultipleChoiceField(
         queryset=NodeLabel.objects.all(),
@@ -1289,6 +1416,7 @@
             verbose_name=('Labels'), is_stacked=False
         )
     )
+
     class Meta:
         model = Node
         widgets = {
@@ -1297,21 +1425,21 @@
         }
 
     def __init__(self, *args, **kwargs):
-      request = kwargs.pop('request', None)
-      super(NodeForm, self).__init__(*args, **kwargs)
+        request = kwargs.pop('request', None)
+        super(NodeForm, self).__init__(*args, **kwargs)
 
-      if self.instance and self.instance.pk:
-        self.fields['nodelabels'].initial = self.instance.nodelabels.all()
+        if self.instance and self.instance.pk:
+            self.fields['nodelabels'].initial = self.instance.nodelabels.all()
 
     def save(self, commit=True):
-      node = super(NodeForm, self).save(commit=False)
+        node = super(NodeForm, self).save(commit=False)
 
-      node.nodelabels = self.cleaned_data['nodelabels']
+        node.nodelabels = self.cleaned_data['nodelabels']
 
-      if commit:
-        node.save()
+        if commit:
+            node.save()
 
-      return node
+        return node
 
 
 class NodeLabelAdmin(XOSBaseAdmin):
@@ -1327,25 +1455,30 @@
     list_display_links = ('backend_status_icon', 'name', )
     list_filter = ('site_deployment',)
 
-    inlines = [TagInline,InstanceInline]
+    inlines = [TagInline, InstanceInline]
     fieldsets = [('Node Details', {'fields': ['backend_status_text', 'name', 'site_deployment'], 'classes':['suit-tab suit-tab-details']}),
                  ('Labels', {'fields': ['nodelabels'], 'classes':['suit-tab suit-tab-labels']})]
     readonly_fields = ('backend_status_text', )
 
-    user_readonly_fields = ['name','site_deployment']
-    user_readonly_inlines = [TagInline,InstanceInline]
+    user_readonly_fields = ['name', 'site_deployment']
+    user_readonly_inlines = [TagInline, InstanceInline]
 
-    suit_form_tabs =(('details','Node Details'),('instances','Instances'), ('labels', 'Labels'), ('tags','Tags'))
+    suit_form_tabs = (('details', 'Node Details'), ('instances',
+                                                    'Instances'), ('labels', 'Labels'), ('tags', 'Tags'))
 
     def formfield_for_foreignkey(self, db_field, request, **kwargs):
         if db_field.name == 'site':
-            kwargs['queryset'] = Site.select_by_user(request.user).filter(hosts_nodes=True)
+            kwargs['queryset'] = Site.select_by_user(
+                request.user).filter(hosts_nodes=True)
 
-        field = super(NodeAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
+        field = super(NodeAdmin, self).formfield_for_foreignkey(
+            db_field, request, **kwargs)
 
         return field
 
+
 class InstanceForm(forms.ModelForm):
+
     class Meta:
         model = Instance
         ip = forms.CharField(widget=PlainTextWidget)
@@ -1360,12 +1493,16 @@
             'image': LinkedSelect
         }
 
+
 class TagAdmin(XOSBaseAdmin):
-    list_display = ['backend_status_icon', 'service', 'name', 'value', 'content_type', 'content_object',]
+    list_display = ['backend_status_icon', 'service',
+                    'name', 'value', 'content_type', 'content_object', ]
     list_display_links = list_display
-    user_readonly_fields = ['service', 'name', 'value', 'content_type', 'content_object',]
+    user_readonly_fields = ['service', 'name',
+                            'value', 'content_type', 'content_object', ]
     user_readonly_inlines = []
 
+
 class InstancePortInline(XOSTabularInline):
     fields = ['backend_status_icon', 'network', 'instance', 'ip', 'mac']
     readonly_fields = ("backend_status_icon", "ip", "mac")
@@ -1376,21 +1513,28 @@
     verbose_name = "Port"
     suit_classes = 'suit-tab suit-tab-ports'
 
+
 class InstanceAdmin(XOSBaseAdmin):
     form = InstanceForm
     fieldsets = [
-        ('Instance Details', {'fields': ['backend_status_text', 'slice', 'deployment', 'isolation', 'flavor', 'image', 'node', 'parent', 'all_ips_string', 'instance_id', 'instance_name', 'ssh_command', ], 'classes': ['suit-tab suit-tab-general'], }),
-        ('Container Settings', {'fields': ['volumes'], 'classes': ['suit-tab suit-tab-container'], }),
+        ('Instance Details', {'fields': ['backend_status_text', 'slice', 'deployment', 'isolation', 'flavor', 'image', 'node',
+                                         'parent', 'all_ips_string', 'instance_id', 'instance_name', 'ssh_command', ], 'classes': ['suit-tab suit-tab-general'], }),
+        ('Container Settings', {'fields': ['volumes'], 'classes': [
+         'suit-tab suit-tab-container'], }),
     ]
     readonly_fields = ('backend_status_text', 'ssh_command', 'all_ips_string')
-    list_display = ['backend_status_icon', 'all_ips_string', 'instance_id', 'instance_name', 'isolation', 'slice', 'flavor', 'image', 'node', 'deployment']
-    list_display_links = ('backend_status_icon', 'all_ips_string', 'instance_id', )
+    list_display = ['backend_status_icon', 'all_ips_string', 'instance_id',
+                    'instance_name', 'isolation', 'slice', 'flavor', 'image', 'node', 'deployment']
+    list_display_links = ('backend_status_icon',
+                          'all_ips_string', 'instance_id', )
 
-    suit_form_tabs =(('general', 'Instance Details'), ('ports', 'Ports'), ('container', 'Container Settings'), ('tags', 'Tags'))
+    suit_form_tabs = (('general', 'Instance Details'), ('ports', 'Ports'),
+                      ('container', 'Container Settings'), ('tags', 'Tags'))
 
     inlines = [TagInline, InstancePortInline]
 
-    user_readonly_fields = ['slice', 'deployment', 'node', 'ip', 'instance_name', 'flavor', 'image']
+    user_readonly_fields = ['slice', 'deployment',
+                            'node', 'ip', 'instance_name', 'flavor', 'image']
 
     def ssh_command(self, obj):
         ssh_command = obj.get_ssh_command()
@@ -1410,30 +1554,36 @@
         # the slices they belong to.
         return Instance.select_by_user(request.user)
 
-    def add_view(self, request, form_url='', extra_context = None):
-        self.readonly_fields = ('backend_status_text', 'ssh_command', 'all_ips_string')
-        return super(InstanceAdmin,self).add_view(request, form_url, extra_context)
+    def add_view(self, request, form_url='', extra_context=None):
+        self.readonly_fields = ('backend_status_text',
+                                'ssh_command', 'all_ips_string')
+        return super(InstanceAdmin, self).add_view(request, form_url, extra_context)
 
     def change_view(self, request, object_id, extra_context=None):
-        self.readonly_fields = ('backend_status_text', 'ssh_command', 'all_ips_string', 'deployment', 'slice', 'flavor', 'image', 'node')
-        self.readonly_save = self.readonly_fields # for XOSAdminMixin.change_view's user_readonly_fields switching code
-        return super(InstanceAdmin,self).change_view(request, object_id, extra_context)
+        self.readonly_fields = ('backend_status_text', 'ssh_command',
+                                'all_ips_string', 'deployment', 'slice', 'flavor', 'image', 'node')
+        # for XOSAdminMixin.change_view's user_readonly_fields switching code
+        self.readonly_save = self.readonly_fields
+        return super(InstanceAdmin, self).change_view(request, object_id, extra_context)
 
     def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None):
         deployment_nodes = []
 #        for node in Node.objects.all():
         for node in Node.objects.order_by("name"):
-            deployment_nodes.append( (node.site_deployment.deployment.id, node.id, node.name) )
+            deployment_nodes.append(
+                (node.site_deployment.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_flavors.append(
+                    (deployment.id, flavor.id, flavor.name))
 
         deployment_images = []
         for image in Image.objects.all():
             for deployment_image in image.imagedeployments.all():
-                deployment_images.append( (deployment_image.deployment.id, image.id, image.name) )
+                deployment_images.append(
+                    (deployment_image.deployment.id, image.id, image.name))
 
         site_login_bases = []
         for site in Site.objects.all():
@@ -1447,16 +1597,20 @@
 
     def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
         if db_field.name == 'deployment':
-           kwargs['queryset'] = Deployment.select_by_acl(request.user).filter(sitedeployments__nodes__isnull=False).distinct()
-           kwargs['widget'] = forms.Select(attrs={'onChange': "instance_deployment_changed(this);"})
+            kwargs['queryset'] = Deployment.select_by_acl(request.user).filter(
+                sitedeployments__nodes__isnull=False).distinct()
+            kwargs['widget'] = forms.Select(
+                attrs={'onChange': "instance_deployment_changed(this);"})
         if db_field.name == 'flavor':
-           kwargs['widget'] = forms.Select(attrs={'onChange': "instance_flavor_changed(this);"})
+            kwargs['widget'] = forms.Select(
+                attrs={'onChange': "instance_flavor_changed(this);"})
 
-        field = super(InstanceAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
+        field = super(InstanceAdmin, self).formfield_for_foreignkey(
+            db_field, request, **kwargs)
 
         return field
 
-    #def save_model(self, request, obj, form, change):
+    # def save_model(self, request, obj, form, change):
     #    # update openstack connection to use this site/tenant
     #    auth = request.session.get('auth', {})
     #    auth['tenant'] = obj.slice.name
@@ -1464,14 +1618,14 @@
     #    obj.creator = request.user
     #    obj.save()
 
-    #def delete_model(self, request, obj):
+    # def delete_model(self, request, obj):
     #    # update openstack connection to use this site/tenant
     #    auth = request.session.get('auth', {})
     #    auth['tenant'] = obj.slice.name
     #    obj.os_manager = OpenStackManager(auth=auth, caller=request.user)
     #    obj.delete()
 
-#class ContainerPortInline(XOSTabularInline):
+# class ContainerPortInline(XOSTabularInline):
 #    fields = ['backend_status_icon', 'network', 'container', 'ip', 'mac', 'segmentation_id']
 #    readonly_fields = ("backend_status_icon", "ip", "mac", "segmentation_id")
 #    model = Port
@@ -1481,7 +1635,7 @@
 #    verbose_name = "Port"
 #    suit_classes = 'suit-tab suit-tab-ports'
 
-#class ContainerAdmin(XOSBaseAdmin):
+# class ContainerAdmin(XOSBaseAdmin):
 #    fieldsets = [
 #        ('Container Details', {'fields': ['backend_status_text', 'slice', 'node', 'docker_image', 'volumes', 'no_sync'], 'classes': ['suit-tab suit-tab-general'], })
 #    ]
@@ -1504,11 +1658,13 @@
 #        # the slices they belong to.
 #        return Container.select_by_user(request.user)
 
+
 class UserCreationForm(forms.ModelForm):
     """A form for creating new users. Includes all the required
     fields, plus a repeated password."""
     password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
-    password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)
+    password2 = forms.CharField(
+        label='Password confirmation', widget=forms.PasswordInput)
 
     class Meta:
         model = User
@@ -1526,7 +1682,7 @@
         # Save the provided password in hashed format
         user = super(UserCreationForm, self).save(commit=False)
         user.password = self.cleaned_data["password1"]
-        #user.set_password(self.cleaned_data["password1"])
+        # user.set_password(self.cleaned_data["password1"])
         if commit:
             user.save()
         return user
@@ -1538,14 +1694,16 @@
     password hash display field.
     """
     password = ReadOnlyPasswordHashField(label='Password',
-                   help_text= '<a href=\"password/\">Change Password</a>.')
+                                         help_text='<a href=\"password/\">Change Password</a>.')
 
-    PROFILE_CHOICES = ((None, '------'), ('regular', 'Regular user'), ('cp', 'Content Provider'))
-    profile = forms.ChoiceField(choices=PROFILE_CHOICES, required=False, label="Quick Profile")
+    PROFILE_CHOICES = ((None, '------'), ('regular',
+                                          'Regular user'), ('cp', 'Content Provider'))
+    profile = forms.ChoiceField(
+        choices=PROFILE_CHOICES, required=False, label="Quick Profile")
 
     class Meta:
         model = User
-        widgets = { 'public_key': UploadTextareaWidget, }
+        widgets = {'public_key': UploadTextareaWidget, }
 
     def clean_password(self):
         # Regardless of what the user provides, return the initial value.
@@ -1555,16 +1713,18 @@
 
     def save(self, *args, **kwargs):
         if self.cleaned_data['profile']:
-             self.instance.apply_profile(self.cleaned_data['profile'])
+            self.instance.apply_profile(self.cleaned_data['profile'])
 
         return super(UserChangeForm, self).save(*args, **kwargs)
 
+
 class UserDashboardViewInline(XOSTabularInline):
     model = UserDashboardView
     extra = 0
     suit_classes = 'suit-tab suit-tab-dashboards'
     fields = ['user', 'dashboardView', 'order']
 
+
 class ControllerUserInline(XOSTabularInline):
     model = ControllerUser
     extra = 0
@@ -1586,24 +1746,28 @@
     # The fields to be used in displaying the User model.
     # These override the definitions on the base UserAdmin
     # that reference specific fields on auth.User.
-    list_display = ('backend_status_icon', 'email', 'firstname', 'lastname', 'site', 'last_login')
+    list_display = ('backend_status_icon', 'email',
+                    'firstname', 'lastname', 'site', 'last_login')
     list_display_links = ("email",)
     list_filter = ('site',)
-    inlines = [SlicePrivilegeInline,SitePrivilegeInline]
+    inlines = [SlicePrivilegeInline, SitePrivilegeInline]
     admin_inlines = [ControllerUserInline]
-    fieldListLoginDetails = ['backend_status_text', 'email', 'site','password','is_active','is_readonly','is_admin','is_appuser', 'public_key', 'login_page', 'profile']
-    fieldListContactInfo = ['firstname','lastname','phone','timezone']
+    fieldListLoginDetails = ['backend_status_text', 'email', 'site', 'password', 'is_active',
+                             'is_readonly', 'is_admin', 'is_appuser', 'public_key', 'login_page', 'profile']
+    fieldListContactInfo = ['firstname', 'lastname', 'phone', 'timezone']
 
     fieldsets = (
-        ('Login Details', {'fields': ['backend_status_text', 'email', 'site','password', 'is_active', 'is_readonly', 'is_admin', 'is_appuser', 'public_key'], 'classes':['suit-tab suit-tab-general']}),
-        ('Contact Information', {'fields': ('firstname','lastname','phone', 'timezone'), 'classes':['suit-tab suit-tab-contact']}),
+        ('Login Details', {'fields': ['backend_status_text', 'email', 'site', 'password', 'is_active',
+                                      'is_readonly', 'is_admin', 'is_appuser', 'public_key'], 'classes': ['suit-tab suit-tab-general']}),
+        ('Contact Information', {'fields': (
+            'firstname', 'lastname', 'phone', 'timezone'), 'classes': ['suit-tab suit-tab-contact']}),
         #('Important dates', {'fields': ('last_login',)}),
     )
     add_fieldsets = (
         (None, {
             'classes': ('wide',),
-            'fields': ('site', 'email', 'firstname', 'lastname', 'is_admin', 'is_readonly', 'is_appuser', 'phone', 'public_key','password1', 'password2')},
-        ),
+            'fields': ('site', 'email', 'firstname', 'lastname', 'is_admin', 'is_readonly', 'is_appuser', 'phone', 'public_key', 'password1', 'password2')},
+         ),
     )
     readonly_fields = ('backend_status_text', )
     search_fields = ('email',)
@@ -1617,20 +1781,21 @@
         if getattr(_thread_locals, "obj", None) is None:
             return []
         else:
-            tabs = [('general','Login Details'),
-                         ('contact','Contact Information'),
-                         ('sliceprivileges','Slice Privileges'),
-                         ('siteprivileges','Site Privileges')]
+            tabs = [('general', 'Login Details'),
+                    ('contact', 'Contact Information'),
+                    ('sliceprivileges', 'Slice Privileges'),
+                    ('siteprivileges', 'Site Privileges')]
 
-            request=getattr(_thread_locals, "request", None)
+            request = getattr(_thread_locals, "request", None)
             if request and request.user.is_admin:
-                tabs.append( ('admin-only', 'Admin-Only') )
+                tabs.append(('admin-only', 'Admin-Only'))
 
             return tabs
 
     def formfield_for_foreignkey(self, db_field, request, **kwargs):
         if db_field.name == 'site':
-            kwargs['queryset'] = Site.select_by_user(request.user).filter(hosts_users=True)
+            kwargs['queryset'] = Site.select_by_user(
+                request.user).filter(hosts_users=True)
 
         return super(UserAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
 
@@ -1650,57 +1815,67 @@
                 login_details_fields.remove('is_admin')
             if 'profile' in login_details_fields:
                 login_details_fields.remove('profile')
-            #if len(request.user.siteprivileges.filter(role__role = 'pi')) > 0:
+            # if len(request.user.siteprivileges.filter(role__role = 'pi')) > 0:
                 # only admins and pis can change a user's site
             #    self.readonly_fields = ('backend_status_text', 'site')
         self.fieldsets = (
-            ('Login Details', {'fields': login_details_fields, 'classes':['suit-tab suit-tab-general']}),
-            ('Contact Information', {'fields': self.fieldListContactInfo, 'classes':['suit-tab suit-tab-contact']}),
+            ('Login Details', {'fields': login_details_fields,
+                               'classes': ['suit-tab suit-tab-general']}),
+            ('Contact Information', {
+             'fields': self.fieldListContactInfo, 'classes': ['suit-tab suit-tab-contact']}),
         )
         return super(UserAdmin, self).get_form(request, obj, **kwargs)
 
+
 class ControllerDashboardViewInline(XOSTabularInline):
     model = ControllerDashboardView
     extra = 0
     fields = ["controller", "url"]
     suit_classes = 'suit-tab suit-tab-controllers'
 
+
 class DashboardViewAdmin(XOSBaseAdmin):
     fieldsets = [('Dashboard View Details',
-                   {'fields': ['backend_status_text', 'name', 'url', 'enabled', 'deployments'],
-                    'classes': ['suit-tab suit-tab-general']})
-               ]
+                  {'fields': ['backend_status_text', 'name', 'url', 'enabled', 'deployments'],
+                   'classes': ['suit-tab suit-tab-general']})
+                 ]
     list_display = ["name", "enabled", "url"]
     readonly_fields = ('backend_status_text', )
     inlines = [ControllerDashboardViewInline]
 
-    suit_form_tabs =(('general','Dashboard View Details'),
-                     ('controllers', 'Per-controller Dashboard Details'))
+    suit_form_tabs = (('general', 'Dashboard View Details'),
+                      ('controllers', 'Per-controller Dashboard Details'))
+
 
 class ServiceResourceInline(XOSTabularInline):
     model = ServiceResource
     extra = 0
 
+
 class ServiceClassAdmin(XOSBaseAdmin):
-    list_display = ('backend_status_icon', 'name', 'commitment', 'membershipFee')
+    list_display = ('backend_status_icon', 'name',
+                    'commitment', 'membershipFee')
     list_display_links = ('backend_status_icon', 'name', )
     inlines = [ServiceResourceInline]
 
     user_readonly_fields = ['name', 'commitment', 'membershipFee']
     user_readonly_inlines = []
 
+
 class ReservedResourceInline(XOSTabularInline):
     model = ReservedResource
     extra = 0
     suit_classes = 'suit-tab suit-tab-reservedresources'
 
     def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
-        field = super(ReservedResourceInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
+        field = super(ReservedResourceInline, self).formfield_for_foreignkey(
+            db_field, request, **kwargs)
 
         if db_field.name == 'resource':
             # restrict resources to those that the slice's service class allows
             if request._slice is not None:
-                field.queryset = field.queryset.filter(serviceClass = request._slice.serviceClass, calendarReservable=True)
+                field.queryset = field.queryset.filter(
+                    serviceClass=request._slice.serviceClass, calendarReservable=True)
                 if len(field.queryset) > 0:
                     field.initial = field.queryset.all()[0]
             else:
@@ -1708,7 +1883,7 @@
         elif db_field.name == 'instance':
             # restrict instances to those that belong to the slice
             if request._slice is not None:
-                field.queryset = field.queryset.filter(slice = request._slice)
+                field.queryset = field.queryset.filter(slice=request._slice)
             else:
                 field.queryset = field.queryset.none()
 
@@ -1717,31 +1892,37 @@
     def queryset(self, request):
         return ReservedResource.select_by_user(request.user)
 
+
 class ReservationChangeForm(forms.ModelForm):
+
     class Meta:
         model = Reservation
         widgets = {
-            'slice' : LinkedSelect
+            'slice': LinkedSelect
         }
 
+
 class ReservationAddForm(forms.ModelForm):
-    slice = forms.ModelChoiceField(queryset=Slice.objects.all(), widget=forms.Select(attrs={"onChange":"document.getElementById('id_refresh').value=1; submit()"}))
+    slice = forms.ModelChoiceField(queryset=Slice.objects.all(), widget=forms.Select(
+        attrs={"onChange": "document.getElementById('id_refresh').value=1; submit()"}))
     refresh = forms.CharField(widget=forms.HiddenInput())
 
     class Media:
-       css = {'all': ('xos.css',)}   # .field-refresh { display: none; }
+        css = {'all': ('xos.css',)}   # .field-refresh { display: none; }
 
     def clean_slice(self):
         slice = self.cleaned_data.get("slice")
-        x = ServiceResource.objects.filter(serviceClass = slice.serviceClass, calendarReservable=True)
+        x = ServiceResource.objects.filter(
+            serviceClass=slice.serviceClass, calendarReservable=True)
         if len(x) == 0:
-            raise forms.ValidationError("The slice you selected does not have a service class that allows reservations")
+            raise forms.ValidationError(
+                "The slice you selected does not have a service class that allows reservations")
         return slice
 
     class Meta:
         model = Reservation
         widgets = {
-            'slice' : LinkedSelect
+            'slice': LinkedSelect
         }
 
 
@@ -1765,17 +1946,21 @@
         return result
 
     """ don't save anything """
+
     def is_valid(self):
         return False
 
+
 class ReservationAdmin(XOSBaseAdmin):
     fieldList = ['backend_status_text', 'slice', 'startTime', 'duration']
-    fieldsets = [('Reservation Details', {'fields': fieldList, 'classes': ['suit-tab suit-tab-general']})]
+    fieldsets = [('Reservation Details', {
+                  'fields': fieldList, 'classes': ['suit-tab suit-tab-general']})]
     readonly_fields = ('backend_status_text', )
     list_display = ('startTime', 'duration')
     form = ReservationAddForm
 
-    suit_form_tabs = (('general','Reservation Details'), ('reservedresources','Reserved Resources'))
+    suit_form_tabs = (('general', 'Reservation Details'),
+                      ('reservedresources', 'Reserved Resources'))
 
     inlines = [ReservedResourceInline]
     user_readonly_fields = fieldList
@@ -1787,20 +1972,21 @@
         if request.method == 'POST':
             # "refresh" will be set to "1" if the form was submitted due to
             # a change in the Slice dropdown.
-            if request.POST.get("refresh","1") == "1":
+            if request.POST.get("refresh", "1") == "1":
                 request._refresh = True
                 request.POST["refresh"] = "0"
 
             # Keep track of the slice that was selected, so the
             # reservedResource inline can filter items for the slice.
-            request._slice = request.POST.get("slice",None)
+            request._slice = request.POST.get("slice", None)
             if (request._slice is not None):
                 request._slice = Slice.objects.get(id=request._slice)
 
-        result =  super(ReservationAdmin, self).add_view(request, form_url, extra_context)
+        result = super(ReservationAdmin, self).add_view(
+            request, form_url, extra_context)
         return result
 
-    def changelist_view(self, request, extra_context = None):
+    def changelist_view(self, request, extra_context=None):
         timezone.activate(request.user.timezone)
         return super(ReservationAdmin, self).changelist_view(request, extra_context)
 
@@ -1829,18 +2015,21 @@
     def queryset(self, request):
         return Reservation.select_by_user(request.user)
 
+
 class NetworkParameterTypeAdmin(XOSBaseAdmin):
     list_display = ("backend_status_icon", "name", )
     list_display_links = ('backend_status_icon', 'name', )
     user_readonly_fields = ['name']
     user_readonly_inlines = []
 
+
 class RouterAdmin(XOSBaseAdmin):
     list_display = ("backend_status_icon", "name", )
     list_display_links = ('backend_status_icon', 'name', )
     user_readonly_fields = ['name']
     user_readonly_inlines = []
 
+
 class RouterInline(XOSTabularInline):
     model = Router.networks.through
     extra = 0
@@ -1848,6 +2037,7 @@
     verbose_name = "Router"
     suit_classes = 'suit-tab suit-tab-routers'
 
+
 class NetworkParameterInline(PlStackGenericTabularInline):
     model = NetworkParameter
     extra = 0
@@ -1857,6 +2047,7 @@
     fields = ['backend_status_icon', 'parameter', 'value']
     readonly_fields = ('backend_status_icon', )
 
+
 class NetworkPortInline(XOSTabularInline):
     fields = ['backend_status_icon', 'network', 'instance', 'ip', 'mac']
     readonly_fields = ("backend_status_icon", "ip", "mac")
@@ -1867,6 +2058,7 @@
     verbose_name = "Port"
     suit_classes = 'suit-tab suit-tab-ports'
 
+
 class NetworkSlicesInline(XOSTabularInline):
     model = NetworkSlice
     selflink_fieldname = "slice"
@@ -1874,19 +2066,23 @@
     verbose_name_plural = "Slices"
     verbose_name = "Slice"
     suit_classes = 'suit-tab suit-tab-networkslices'
-    fields = ['backend_status_icon', 'network','slice']
+    fields = ['backend_status_icon', 'network', 'slice']
     readonly_fields = ('backend_status_icon', )
 
+
 class ControllerNetworkInline(XOSTabularInline):
     model = ControllerNetwork
     extra = 0
     verbose_name_plural = "Controller Networks"
     verbose_name = "Controller Network"
     suit_classes = 'suit-tab suit-tab-admin-only'
-    fields = ['backend_status_icon', 'controller','net_id','subnet_id','subnet']
+    fields = ['backend_status_icon', 'controller',
+              'net_id', 'subnet_id', 'subnet']
     readonly_fields = ('backend_status_icon', )
 
+
 class NetworkForm(forms.ModelForm):
+
     class Meta:
         model = Network
         widgets = {
@@ -1894,57 +2090,62 @@
             'controllerParameters': UploadTextareaWidget,
         }
 
+
 class NetworkAdmin(XOSBaseAdmin):
     list_display = ("backend_status_icon", "name", "subnet", "ports", "labels")
     list_display_links = ('backend_status_icon', 'name', )
     readonly_fields = ("subnet", )
-    inlines = [NetworkParameterInline, NetworkPortInline, NetworkSlicesInline, RouterInline]
+    inlines = [NetworkParameterInline, NetworkPortInline,
+               NetworkSlicesInline, RouterInline]
     admin_inlines = [ControllerNetworkInline]
 
-    form=NetworkForm
+    form = NetworkForm
 
     fieldsets = [
-        (None, {'fields': ['backend_status_text', 'name','template','ports','labels',
-                           'owner','guaranteed_bandwidth', 'permit_all_slices',
-                           'permitted_slices','network_id','router_id','subnet_id',
+        (None, {'fields': ['backend_status_text', 'name', 'template', 'ports', 'labels',
+                           'owner', 'guaranteed_bandwidth', 'permit_all_slices',
+                           'permitted_slices', 'network_id', 'router_id', 'subnet_id',
                            'subnet', 'autoconnect'],
                 'classes':['suit-tab suit-tab-general']}),
         (None, {'fields': ['topology_parameters', 'controller_url', 'controller_parameters'],
                 'classes':['suit-tab suit-tab-sdn']}),
-                ]
+    ]
 
     readonly_fields = ('backend_status_text', )
-    user_readonly_fields = ['name','template','ports','labels','owner','guaranteed_bandwidth',
-                            'permit_all_slices','permitted_slices','network_id','router_id',
-                            'subnet_id','subnet','autoconnect']
+    user_readonly_fields = ['name', 'template', 'ports', 'labels', 'owner', 'guaranteed_bandwidth',
+                            'permit_all_slices', 'permitted_slices', 'network_id', 'router_id',
+                            'subnet_id', 'subnet', 'autoconnect']
 
     @property
     def suit_form_tabs(self):
-        tabs=[('general','Network Details'),
-            ('sdn', 'SDN Configuration'),
-            ('netparams', 'Parameters'),
-            ('ports','Ports'),
-            ('networkslices','Slices'),
-            ('routers','Routers'),
-        ]
+        tabs = [('general', 'Network Details'),
+                ('sdn', 'SDN Configuration'),
+                ('netparams', 'Parameters'),
+                ('ports', 'Ports'),
+                ('networkslices', 'Slices'),
+                ('routers', 'Routers'),
+                ]
 
-        request=getattr(_thread_locals, "request", None)
+        request = getattr(_thread_locals, "request", None)
         if request and request.user.is_admin:
-            tabs.append( ('admin-only', 'Admin-Only') )
+            tabs.append(('admin-only', 'Admin-Only'))
 
         return tabs
 
 
 class NetworkTemplateAdmin(XOSBaseAdmin):
-    list_display = ("backend_status_icon", "name", "guaranteed_bandwidth", "visibility")
+    list_display = ("backend_status_icon", "name",
+                    "guaranteed_bandwidth", "visibility")
     list_display_links = ('backend_status_icon', 'name', )
     user_readonly_fields = ["name", "guaranteed_bandwidth", "visibility"]
     user_readonly_inlines = []
-    inlines = [NetworkParameterInline,]
+    inlines = [NetworkParameterInline, ]
     fieldsets = [
         (None, {'fields': ['name', 'description', 'guaranteed_bandwidth', 'visibility', 'translation', 'access', 'shared_network_name', 'shared_network_id', 'topology_kind', 'controller_kind'],
-                'classes':['suit-tab suit-tab-general']}),]
-    suit_form_tabs = (('general','Network Template Details'), ('netparams', 'Parameters') )
+                'classes':['suit-tab suit-tab-general']}), ]
+    suit_form_tabs = (('general', 'Network Template Details'),
+                      ('netparams', 'Parameters'))
+
 
 class PortAdmin(XOSBaseAdmin):
     list_display = ("backend_status_icon", "id", "ip")
@@ -1955,59 +2156,70 @@
     fieldsets = [
         (None, {'fields': ['backend_status_text', 'network', 'instance', 'ip', 'port_id', 'mac'],
                 'classes':['suit-tab suit-tab-general']}),
-                ]
+    ]
 
     readonly_fields = ('backend_status_text', )
     suit_form_tabs = (('general', 'Port Details'), ('netparams', 'Parameters'))
 
+
 class FlavorAdmin(XOSBaseAdmin):
-    list_display = ("backend_status_icon", "name", "flavor", "order", "default")
+    list_display = ("backend_status_icon", "name",
+                    "flavor", "order", "default")
     list_display_links = ("backend_status_icon", "name")
     user_readonly_fields = ("name", "flavor")
     fields = ("name", "description", "flavor", "order", "default")
 
 # register a signal that caches the user's credentials when they log in
+
+
 def cache_credentials(sender, user, request, **kwds):
     auth = {'username': request.POST['username'],
             'password': request.POST['password']}
     request.session['auth'] = auth
 user_logged_in.connect(cache_credentials)
 
+
 def dollar_field(fieldName, short_description):
     def newFunc(self, obj):
         try:
-            x= "$ %0.2f" % float(getattr(obj, fieldName, 0.0))
+            x = "$ %0.2f" % float(getattr(obj, fieldName, 0.0))
         except:
-            x=getattr(obj, fieldName, 0.0)
+            x = getattr(obj, fieldName, 0.0)
         return x
     newFunc.short_description = short_description
     return newFunc
 
+
 def right_dollar_field(fieldName, short_description):
     def newFunc(self, obj):
         try:
             #x= '<div align=right style="width:6em">$ %0.2f</div>' % float(getattr(obj, fieldName, 0.0))
-            x= '<div align=right>$ %0.2f</div>' % float(getattr(obj, fieldName, 0.0))
+            x = '<div align=right>$ %0.2f</div>' % float(
+                getattr(obj, fieldName, 0.0))
         except:
-            x=getattr(obj, fieldName, 0.0)
+            x = getattr(obj, fieldName, 0.0)
         return x
     newFunc.short_description = short_description
     newFunc.allow_tags = True
     return newFunc
 
+
 class InvoiceChargeInline(XOSTabularInline):
     model = Charge
     extra = 0
     verbose_name_plural = "Charges"
     verbose_name = "Charge"
     exclude = ['account']
-    fields = ["date", "kind", "state", "object", "coreHours", "dollar_amount", "slice"]
-    readonly_fields = ["date", "kind", "state", "object", "coreHours", "dollar_amount", "slice"]
+    fields = ["date", "kind", "state", "object",
+              "coreHours", "dollar_amount", "slice"]
+    readonly_fields = ["date", "kind", "state",
+                       "object", "coreHours", "dollar_amount", "slice"]
     can_delete = False
     max_num = 0
 
     dollar_amount = right_dollar_field("amount", "Amount")
 
+
 class InvoiceAdmin(admin.ModelAdmin):
     list_display = ("date", "account")
 
@@ -2018,6 +2230,7 @@
 
     dollar_amount = dollar_field("amount", "Amount")
 
+
 class InvoiceInline(XOSTabularInline):
     model = Invoice
     extra = 0
@@ -2026,22 +2239,25 @@
     fields = ["date", "dollar_amount"]
     readonly_fields = ["date", "dollar_amount"]
     suit_classes = 'suit-tab suit-tab-accountinvoice'
-    can_delete=False
-    max_num=0
+    can_delete = False
+    max_num = 0
 
     dollar_amount = right_dollar_field("amount", "Amount")
 
+
 class PendingChargeInline(XOSTabularInline):
     model = Charge
     extra = 0
     verbose_name_plural = "Charges"
     verbose_name = "Charge"
     exclude = ["invoice"]
-    fields = ["date", "kind", "state", "object", "coreHours", "dollar_amount", "slice"]
-    readonly_fields = ["date", "kind", "state", "object", "coreHours", "dollar_amount", "slice"]
+    fields = ["date", "kind", "state", "object",
+              "coreHours", "dollar_amount", "slice"]
+    readonly_fields = ["date", "kind", "state",
+                       "object", "coreHours", "dollar_amount", "slice"]
     suit_classes = 'suit-tab suit-tab-accountpendingcharges'
-    can_delete=False
-    max_num=0
+    can_delete = False
+    max_num = 0
 
     def queryset(self, request):
         qs = super(PendingChargeInline, self).queryset(request)
@@ -2050,41 +2266,46 @@
 
     dollar_amount = right_dollar_field("amount", "Amount")
 
+
 class PaymentInline(XOSTabularInline):
-    model=Payment
+    model = Payment
     extra = 1
     verbose_name_plural = "Payments"
     verbose_name = "Payment"
     fields = ["date", "dollar_amount"]
     readonly_fields = ["date", "dollar_amount"]
     suit_classes = 'suit-tab suit-tab-accountpayments'
-    can_delete=False
-    max_num=0
+    can_delete = False
+    max_num = 0
 
     dollar_amount = right_dollar_field("amount", "Amount")
 
+
 class AccountAdmin(admin.ModelAdmin):
     list_display = ("site", "balance_due")
 
     inlines = [InvoiceInline, PaymentInline, PendingChargeInline]
 
     fieldsets = [
-        (None, {'fields': ['site', 'dollar_balance_due', 'dollar_total_invoices', 'dollar_total_payments'],'classes':['suit-tab suit-tab-general']}),]
+        (None, {'fields': ['site', 'dollar_balance_due', 'dollar_total_invoices', 'dollar_total_payments'], 'classes':['suit-tab suit-tab-general']}), ]
 
-    readonly_fields = ['site', 'dollar_balance_due', 'dollar_total_invoices', 'dollar_total_payments']
+    readonly_fields = ['site', 'dollar_balance_due',
+                       'dollar_total_invoices', 'dollar_total_payments']
 
-    suit_form_tabs =(
-        ('general','Account Details'),
+    suit_form_tabs = (
+        ('general', 'Account Details'),
         ('accountinvoice', 'Invoices'),
         ('accountpayments', 'Payments'),
-        ('accountpendingcharges','Pending Charges'),
+        ('accountpendingcharges', 'Pending Charges'),
     )
 
     dollar_balance_due = dollar_field("balance_due", "Balance Due")
     dollar_total_invoices = dollar_field("total_invoices", "Total Invoices")
     dollar_total_payments = dollar_field("total_payments", "Total Payments")
 
+
 class ProgramForm(forms.ModelForm):
+
     class Meta:
         model = Program
         widgets = {
@@ -2094,11 +2315,12 @@
             'output': forms.Textarea(attrs={'rows': 3, 'cols': 80, 'class': 'input-xxlarge'})
         }
 
+
 class ProgramAdmin(XOSBaseAdmin):
     list_display = ("name", "status")
     list_display_links = ('name', "status")
 
-    form=ProgramForm
+    form = ProgramForm
 
     fieldsets = [
         (None, {'fields': ['name', 'command', 'kind', 'description', 'output', 'status'],
@@ -2107,49 +2329,52 @@
                 'classes':['suit-tab suit-tab-contents']}),
         (None, {'fields': ['messages'],
                 'classes':['suit-tab suit-tab-messages']}),
-                ]
+    ]
 
     readonly_fields = ("status",)
 
     @property
     def suit_form_tabs(self):
-        tabs=[('general','Program Details'),
-              ('contents','Program Source'),
-              ('messages','Messages'),
-        ]
+        tabs = [('general', 'Program Details'),
+                ('contents', 'Program Source'),
+                ('messages', 'Messages'),
+                ]
 
-        request=getattr(_thread_locals, "request", None)
+        request = getattr(_thread_locals, "request", None)
         if request and request.user.is_admin:
-            tabs.append( ('admin-only', 'Admin-Only') )
+            tabs.append(('admin-only', 'Admin-Only'))
 
         return tabs
 
+
 class AddressPoolForm(forms.ModelForm):
+
     class Meta:
         model = Program
         widgets = {
             'addresses': UploadTextareaWidget(attrs={'rows': 20, 'cols': 80, 'class': "input-xxlarge"}),
         }
 
+
 class AddressPoolAdmin(XOSBaseAdmin):
     list_display = ("name", "cidr")
     list_display_links = ('name',)
 
-    form=AddressPoolForm
+    form = AddressPoolForm
 
     fieldsets = [
         (None, {'fields': ['name', 'cidr', 'gateway_ip', 'gateway_mac', 'addresses', 'inuse', 'service'],
                 'classes':['suit-tab suit-tab-general']}),
-                ]
+    ]
 
     readonly_fields = ("status",)
 
     @property
     def suit_form_tabs(self):
-        tabs=[('general','Program Details'),
-              ('contents','Program Source'),
-              ('messages','Messages'),
-        ]
+        tabs = [('general', 'Program Details'),
+                ('contents', 'Program Source'),
+                ('messages', 'Messages'),
+                ]
 
 #        request=getattr(_thread_locals, "request", None)
 #        if request and request.user.is_admin:
@@ -2161,7 +2386,7 @@
 admin.site.register(User, UserAdmin)
 # ... and, since we're not using Django's builtin permissions,
 # unregister the Group model from admin.
-#admin.site.unregister(Group)
+# admin.site.unregister(Group)
 
 # When debugging it is often easier to see all the classes, but for regular use
 # only the top-levels should be displayed