Changed DeploymentNetwork to Deployment, adjusted initial_json to include service...
[plstackapi.git] / planetstack / core / admin.py
index 0329cd6..9c7cc54 100644 (file)
@@ -9,7 +9,9 @@ from django.utils.safestring import mark_safe
 from django.contrib.auth.admin import UserAdmin
 from django.contrib.admin.widgets import FilteredSelectMultiple
 from django.contrib.auth.forms import ReadOnlyPasswordHashField
-from django.contrib.auth.signals import user_logged_in 
+from django.contrib.auth.signals import user_logged_in
+from django.utils import timezone
+import django_evolution 
 
 
 class ReadonlyTabularInline(admin.TabularInline):
@@ -64,6 +66,10 @@ class SliceMembershipInline(admin.TabularInline):
     model = SliceMembership
     extra = 0
 
+class SliceTagInline(admin.TabularInline):
+    model = SliceTag
+    extra = 0
+
 class PlainTextWidget(forms.HiddenInput):
     input_type = 'hidden'
 
@@ -99,7 +105,7 @@ class RoleAdmin(OSModelAdmin):
     list_display = ('role_type',)
 
 
-class DeploymentNetworkAdminForm(forms.ModelForm):
+class DeploymentAdminForm(forms.ModelForm):
     sites = forms.ModelMultipleChoiceField(
         queryset=Site.objects.all(),
         required=False,
@@ -108,16 +114,16 @@ class DeploymentNetworkAdminForm(forms.ModelForm):
         )
     )
     class Meta:
-        model = DeploymentNetwork
+        model = Deployment
 
     def __init__(self, *args, **kwargs):
-        super(DeploymentNetworkAdminForm, self).__init__(*args, **kwargs)
+        super(DeploymentAdminForm, self).__init__(*args, **kwargs)
 
         if self.instance and self.instance.pk:
             self.fields['sites'].initial = self.instance.sites.all()
 
     def save(self, commit=True):
-        deploymentNetwork = super(DeploymentNetworkAdminForm, self).save(commit=False)
+        deploymentNetwork = super(DeploymentAdminForm, self).save(commit=False)
         if commit:
             deploymentNetwork.save()
 
@@ -127,8 +133,8 @@ class DeploymentNetworkAdminForm(forms.ModelForm):
 
         return deploymentNetwork
 
-class DeploymentNetworkAdmin(PlanetStackBaseAdmin):
-    form = DeploymentNetworkAdminForm
+class DeploymentAdmin(PlanetStackBaseAdmin):
+    form = DeploymentAdminForm
     inlines = [NodeInline,SliverInline]
 
     def get_formsets(self, request, obj=None):
@@ -227,7 +233,7 @@ class KeyAdmin(OSModelAdmin):
 class SliceAdmin(OSModelAdmin):
     fields = ['name', 'site', 'serviceClass', 'description', 'slice_url']
     list_display = ('name', 'site','serviceClass', 'slice_url')
-    inlines = [SliverInline, SliceMembershipInline]
+    inlines = [SliverInline, SliceMembershipInline, SliceTagInline]
 
     def queryset(self, request):
         # admins can see all keys. Users can only see slices they belong to.
@@ -297,8 +303,8 @@ class ImageAdmin(admin.ModelAdmin):
     fields = ['image_id', 'name', 'disk_format', 'container_format']
 
 class NodeAdmin(admin.ModelAdmin):
-    list_display = ('name', 'site', 'deploymentNetwork')
-    list_filter = ('deploymentNetwork',)
+    list_display = ('name', 'site', 'deployment')
+    list_filter = ('deployment',)
 
 
 class SliverForm(forms.ModelForm):
@@ -424,7 +430,7 @@ class UserAdmin(UserAdmin, OSModelAdmin):
     list_filter = ('site',)
     inlines = [SitePrivilegeInline, SliceMembershipInline]
     fieldsets = (
-        (None, {'fields': ('email', 'password', 'site', 'is_admin')}),
+        (None, {'fields': ('email', 'password', 'site', 'is_admin', 'timezone')}),
         ('Personal info', {'fields': ('firstname','lastname','phone', 'key')}),
         #('Important dates', {'fields': ('last_login',)}),
     )
@@ -520,6 +526,7 @@ class ReservationAdmin(admin.ModelAdmin):
     form = ReservationAddForm
 
     def add_view(self, request, form_url='', extra_context=None):
+        timezone.activate(request.user.timezone)
         request._refresh = False
         request._slice = None
         if request.method == 'POST':
@@ -538,6 +545,10 @@ class ReservationAdmin(admin.ModelAdmin):
         result =  super(ReservationAdmin, self).add_view(request, form_url, extra_context)
         return result
 
+    def changelist_view(self, request, extra_context = None):
+        timezone.activate(request.user.timezone)
+        return super(ReservationAdmin, self).changelist_view(request, extra_context)
+
     def get_form(self, request, obj=None, **kwargs):
         request._obj_ = obj\r
         if obj is not None:\r
@@ -573,17 +584,30 @@ admin.site.register(User, UserAdmin)
 # unregister the Group model from admin.
 admin.site.unregister(Group)
 
+#Do not show django evolution in the admin interface
+from django_evolution.models import Version, Evolution
+admin.site.unregister(Version)
+admin.site.unregister(Evolution)
+
+
+# When debugging it is often easier to see all the classes, but for regular use 
+# only the top-levels should be displayed
+showAll = False
+
+admin.site.register(Deployment, DeploymentAdmin)
 admin.site.register(Site, SiteAdmin)
-admin.site.register(SitePrivilege, SitePrivilegeAdmin)
 admin.site.register(Slice, SliceAdmin)
-admin.site.register(SliceMembership, SliceMembershipAdmin)
 #admin.site.register(Subnet)
-admin.site.register(Image, ImageAdmin)
-admin.site.register(Node, NodeAdmin)
-admin.site.register(Sliver, SliverAdmin)
 admin.site.register(Key, KeyAdmin)
-admin.site.register(Role, RoleAdmin)
-admin.site.register(DeploymentNetwork, DeploymentNetworkAdmin)
-admin.site.register(ServiceClass, ServiceClassAdmin)
-admin.site.register(Reservation, ReservationAdmin)
+
+
+if showAll:
+    admin.site.register(Node, NodeAdmin)
+    admin.site.register(SliceMembership, SliceMembershipAdmin)
+    admin.site.register(SitePrivilege, SitePrivilegeAdmin)
+    admin.site.register(Role, RoleAdmin)
+    admin.site.register(Sliver, SliverAdmin)
+    admin.site.register(ServiceClass, ServiceClassAdmin)
+    admin.site.register(Reservation, ReservationAdmin)
+    admin.site.register(Image, ImageAdmin)