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)
 
     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', )
 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
 
 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 .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
 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
 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")
 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)
 
 
     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")
+
+
+