add support for single-dashboard views
[plstackapi.git] / planetstack / core / plus / sites.py
1 #sites.py
2
3 from django.contrib.admin.sites import AdminSite
4
5
6 class AdminMixin(object):
7     """Mixin for AdminSite to allow custom dashboard views."""
8
9     def __init__(self, *args, **kwargs):
10         return super(AdminMixin, self).__init__(*args, **kwargs)
11
12     def get_urls(self):
13         """Add our dashboard view to the admin urlconf. Deleted the default index."""
14         from django.conf.urls import patterns, url
15         from views import DashboardView, DashboardWelcomeView, DashboardAjaxView, SimulatorView, DashboardSummaryAjaxView, DashboardAddOrRemoveSliverView, DashboardUserSiteView, DashboardAnalyticsAjaxView, TenantViewData,TenantCreateSlice, TenantAddOrRemoveSliverView, TenantPickSitesView, TenantDeleteSliceView,TenantUpdateSlice
16
17         urls = super(AdminMixin, self).get_urls()
18         del urls[0]
19         custom_url = patterns('',
20                url(r'^$', self.admin_view(DashboardWelcomeView.as_view()),
21                     name="index"),
22                url(r'^test/', self.admin_view(DashboardUserSiteView.as_view()),
23                     name="test"),
24                url(r'^dashboard/(?P<name>\w+)/$', self.admin_view(DashboardView.as_view()),
25                     name="dashboard"),
26                url(r'^hpcdashuserslices/', self.admin_view(DashboardUserSiteView.as_view()),
27                     name="hpcdashuserslices"),
28                url(r'^hpcdashboard/', self.admin_view(DashboardAjaxView.as_view()),        # DEPRECATED
29                     name="hpcdashboard"),
30                url(r'^simulator/', self.admin_view(SimulatorView.as_view()),
31                     name="simulator"),
32                url(r'^hpcsummary/', self.admin_view(DashboardSummaryAjaxView.as_view()),   # DEPRECATED
33                     name="hpcsummary"),
34                url(r'^analytics/(?P<name>\w+)/$', DashboardAnalyticsAjaxView.as_view(),
35                     name="analytics"),
36                url(r'^dashboardaddorremsliver/$', self.admin_view(DashboardAddOrRemoveSliverView.as_view()),
37                     name="addorremsliver"),
38                url(r'^tenantaddorremsliver/$', self.admin_view(TenantAddOrRemoveSliverView.as_view()),
39                     name="tenantaddorremsliver"),
40                url(r'^tenantview/$', self.admin_view(TenantViewData.as_view()),
41                     name="tenantview"),
42                url(r'^createnewslice/$', self.admin_view(TenantCreateSlice.as_view()),
43                     name="createnewslice"),
44                url(r'^updateslice/$', self.admin_view(TenantUpdateSlice.as_view()),
45                     name="updateslice"),
46                url(r'^picksites/$', self.admin_view(TenantPickSitesView.as_view()),
47                     name="picksites"),
48                url(r'^tenantdeleteslice/$', self.admin_view(TenantDeleteSliceView.as_view()),
49                     name="tenantdeleteslice")
50         )
51
52         return custom_url + urls
53
54
55 class SitePlus(AdminMixin, AdminSite):
56     """
57     A Django AdminSite with the AdminMixin to allow registering custom
58     dashboard view.
59     """