7200035f82b2b4b7e765404210feebfd0c8289f2
[plstackapi.git] / planetstack / core / dashboard / 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 DashboardCustomize, DashboardDynamicView, DashboardWelcomeView, DashboardAjaxView, SimulatorView, \
16                           DashboardSummaryAjaxView, DashboardAddOrRemoveSliverView, DashboardUserSiteView, DashboardAnalyticsAjaxView, \
17                           TenantViewData,TenantCreateSlice, TenantAddOrRemoveSliverView, TenantPickSitesView, TenantDeleteSliceView, \
18                           TenantUpdateSlice, DashboardSliceInteractions
19
20         from views import view_urls
21
22         urls = super(AdminMixin, self).get_urls()
23         del urls[0]
24
25         # these ones are for the views that were written before we implemented
26         # the ability to get the url from the View class.
27         dashboard_urls = [
28                url(r'^$', self.admin_view(DashboardDynamicView.as_view()),
29                     name="index"),
30                url(r'^test/', self.admin_view(DashboardUserSiteView.as_view()),
31                     name="test"),
32                url(r'^sliceinteractions/(?P<name>\w+)/$', self.admin_view(DashboardSliceInteractions.as_view()),
33                     name="interactions"),
34                url(r'^dashboard/(?P<name>\w+)/$', self.admin_view(DashboardDynamicView.as_view()),
35                     name="dashboard"),
36                url(r'^customize/$', self.admin_view(DashboardCustomize.as_view()),
37                     name="customize"),
38                url(r'^hpcdashuserslices/', self.admin_view(DashboardUserSiteView.as_view()),
39                     name="hpcdashuserslices"),
40                url(r'^hpcdashboard/', self.admin_view(DashboardAjaxView.as_view()),        # DEPRECATED
41                     name="hpcdashboard"),
42                url(r'^simulator/', self.admin_view(SimulatorView.as_view()),
43                     name="simulator"),
44                url(r'^hpcsummary/', self.admin_view(DashboardSummaryAjaxView.as_view()),   # DEPRECATED
45                     name="hpcsummary"),
46                url(r'^analytics/(?P<name>\w+)/$', DashboardAnalyticsAjaxView.as_view(),
47                     name="analytics"),
48                url(r'^dashboardaddorremsliver/$', self.admin_view(DashboardAddOrRemoveSliverView.as_view()),
49                     name="addorremsliver"),
50                url(r'^tenantaddorremsliver/$', self.admin_view(TenantAddOrRemoveSliverView.as_view()),
51                     name="tenantaddorremsliver"),
52                url(r'^tenantview/$', self.admin_view(TenantViewData.as_view()),
53                     name="tenantview"),
54                url(r'^createnewslice/$', self.admin_view(TenantCreateSlice.as_view()),
55                     name="createnewslice"),
56                url(r'^updateslice/$', self.admin_view(TenantUpdateSlice.as_view()),
57                     name="updateslice"),
58                url(r'^picksites/$', self.admin_view(TenantPickSitesView.as_view()),
59                     name="picksites"),
60                url(r'^tenantdeleteslice/$', self.admin_view(TenantDeleteSliceView.as_view()),
61                     name="tenantdeleteslice")
62         ]
63
64         # these ones are for the views that have a "url" member in the class
65         for (view_url, view_classname, view_class) in view_urls:
66             dashboard_urls.append( url(view_url, self.admin_view(view_class.as_view()), name=view_classname.lower()))
67
68         return dashboard_urls + urls
69
70
71 class SitePlus(AdminMixin, AdminSite):
72     """
73     A Django AdminSite with the AdminMixin to allow registering custom
74     dashboard view.
75     """