models for per-controller dashboard views
authorScott Baker <smbaker@gmail.com>
Sat, 20 Dec 2014 00:41:12 +0000 (16:41 -0800)
committerScott Baker <smbaker@gmail.com>
Sat, 20 Dec 2014 00:41:12 +0000 (16:41 -0800)
planetstack/core/admin.py
planetstack/core/models/__init__.py
planetstack/core/models/dashboard.py

index be75f75..f2679ff 100644 (file)
@@ -1260,14 +1260,22 @@ class UserAdmin(PermissionCheckingAdminMixin, UserAdmin):
     def queryset(self, request):
         return User.select_by_user(request.user)
 
+class ControllerDashboardInline(PlStackTabularInline):
+    model = ControllerDashboard
+    extra = 0
+    fields = ["controller", "url"]
+    suit_classes = 'suit-tab suit-tab-controllers'
+
 class DashboardViewAdmin(PlanetStackBaseAdmin):
     fieldsets = [('Dashboard View Details',
                    {'fields': ['backend_status_text', 'name', 'url'],
                     'classes': ['suit-tab suit-tab-general']})
                ]
     readonly_fields = ('backend_status_text', )
+    inlines = [ControllerDashboardInline]
 
-    suit_form_tabs =(('general','Dashboard View Details'),)
+    suit_form_tabs =(('general','Dashboard View Details'),
+                     ('controllers', 'Per-controller Dashboard Details'))
 
 class ServiceResourceInline(PlStackTabularInline):
     model = ServiceResource
index aa64676..532398d 100644 (file)
@@ -6,7 +6,7 @@ from .service import ServiceAttribute
 from .tag import Tag
 from .role import Role
 from .site import Site, Deployment, DeploymentRole, DeploymentPrivilege, Controller, ControllerRole, ControllerPrivilege, SiteDeployments, ControllerSiteDeployments
-from .dashboard import DashboardView
+from .dashboard import DashboardView, ControllerDashboard
 from .user import User, UserDashboardView
 from .serviceclass import ServiceClass
 from .site import ControllerManager, ControllerDeletionManager, ControllerLinkManager,ControllerLinkDeletionManager
index aa79f84..f4e9fb1 100644 (file)
@@ -1,11 +1,23 @@
 import os
 from django.db import models
-from core.models import PlCoreBase
+from core.models import PlCoreBase, Controller
+from core.models.site import ControllerLinkManager, ControllerLinkDeletionManager
 from django.contrib.contenttypes import generic
 
 class DashboardView(PlCoreBase):
     name = models.CharField(max_length=200, unique=True, help_text="Name of the View")
     url = models.CharField(max_length=1024, help_text="URL of Dashboard")
+    controllers = models.ManyToManyField(Controller, blank=True, related_name="dashboards", through='ControllerDashboard')
 
     def __unicode__(self):  return u'%s' % (self.name)
 
+class ControllerDashboard(PlCoreBase):
+    objects = ControllerLinkManager()
+    deleted_objects = ControllerLinkDeletionManager()
+    controller = models.ForeignKey(Controller, related_name='controllerdashboards')
+    dashboardView = models.ForeignKey(DashboardView, related_name='controllerdashboards')
+
+    url = models.CharField(max_length=1024, help_text="URL of Dashboard")
+
+
+