update SitePrivilegeAdmin and SliceMembershipAdmin
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Sun, 28 Apr 2013 14:28:42 +0000 (10:28 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Sun, 28 Apr 2013 14:28:42 +0000 (10:28 -0400)
plstackapi/core/admin.py
plstackapi/core/models/site.py
plstackapi/core/models/slice.py

index acf4c7d..e722b32 100644 (file)
@@ -38,6 +38,18 @@ class SiteInline(admin.TabularInline):
     model = Site
     extra = 0
 
+class SliceInline(admin.TabularInline):
+    model = Slice
+    extra = 0
+
+class UserInline(admin.TabularInline):
+    model = PLUser
+    extra = 0
+
+class RoleInline(admin.TabularInline):
+    model = Role
+    extra = 0 
+
 class NodeInline(admin.TabularInline):
     model = Node
     extra = 0
@@ -101,6 +113,12 @@ class SiteAdmin(OSModelAdmin):
     inlines = [NodeInline,]
     search_fields = ['name']
 
+class SitePrivilegeAdmin(OSModelAdmin):
+    fieldsets = [
+        (None, {'fields': ['user', 'site', 'role']})
+    ]
+    list_display = ('user', 'site', 'role')
+
 class KeyAdmin(OSModelAdmin):
     fieldsets = [
         ('Key', {'fields': ['name', 'key', 'type', 'blacklisted', 'user']})
@@ -128,6 +146,13 @@ class SliceAdmin(OSModelAdmin):
         # users can only see slices at their site
         return qs.filter(site=request.user.site) 
 
+class SliceMembershipAdmin(OSModelAdmin):
+    fieldsets = [
+        (None, {'fields': ['user', 'slice', 'role']})
+    ]
+    list_display = ('user', 'slice', 'role')
+    inlines = [UserInline, SliceInline, RoleInline]
+
 class SubnetAdmin(OSModelAdmin):
     fields = ['cidr', 'ip_version', 'start', 'end', 'slice']
     list_display = ('slice','cidr', 'start', 'end', 'ip_version')
@@ -261,9 +286,9 @@ admin.site.register(PLUser, PLUserAdmin)
 admin.site.unregister(Group)
 
 admin.site.register(Site, SiteAdmin)
-admin.site.register(SitePrivilege)
+admin.site.register(SitePrivilege, SitePrivilegeAdmin)
 admin.site.register(Slice, SliceAdmin)
-admin.site.register(SliceMembership)
+admin.site.register(SliceMembership, SliceMembershipAdmin)
 admin.site.register(Subnet, SubnetAdmin)
 admin.site.register(Image, ImageAdmin)
 admin.site.register(Node, NodeAdmin)
index 67b3e52..ef7db95 100644 (file)
@@ -50,4 +50,12 @@ class SitePrivilege(PlCoreBase):
 
     def __unicode__(self):  return u'%s %s %s' % (self.site, self.user, self.role)
 
+    def save(self, *args, **kwds):
+        self.driver.add_user_role(self.user.user_id, self.site.tenant_id, self.role.role_type)
+        super(SitePrivilege, self).save(*args, **kwds)
+
+    def delete(self, *args, **kwds):
+        self.driver.delete_user_role(self.user.user_id, self.site.tenant_id, self.role.role_type)
+        super(SitePrivilege, self).delete(*args, **kwds)
+
 
index d174b2e..dda6553 100644 (file)
@@ -56,3 +56,10 @@ class SliceMembership(PlCoreBase):
 
     def __unicode__(self):  return u'%s %s %s' % (self.slice, self.user, self.role)
 
+    def save(self, *args, **kwds):
+        self.driver.add_user_role(self.user.user_id, self.slice.tenant_id, self.role.role_type)
+        super(SliceMembership, self).save(*args, **kwds)
+
+    def delete(self, *args, **kwds):
+        self.driver.delete_user_role(self.user.user_id, self.slice.tenant_id, self.role.role_type)
+        super(SliceMembership, self).delete(*args, **kwds)