blob: d1d49b956dfd538597b368c7684e4f031d8ebb3a [file] [log] [blame]
Scott Baker2986b1e2015-04-21 16:59:04 -07001from django.contrib import admin
2
3from cord.models import *
4from django import forms
5from django.utils.safestring import mark_safe
6from django.contrib.auth.admin import UserAdmin
7from django.contrib.admin.widgets import FilteredSelectMultiple
8from django.contrib.auth.forms import ReadOnlyPasswordHashField
9from django.contrib.auth.signals import user_logged_in
10from django.utils import timezone
11from django.contrib.contenttypes import generic
12from suit.widgets import LinkedSelect
Scott Baker559be722015-05-15 09:08:19 -070013from core.admin import ServiceAppAdmin,SliceInline,ServiceAttrAsTabInline, ReadOnlyAwareAdmin, XOSTabularInline, ServicePrivilegeInline
Scott Baker2986b1e2015-04-21 16:59:04 -070014
15from functools import update_wrapper
16from django.contrib.admin.views.main import ChangeList
17from django.core.urlresolvers import reverse
18from django.contrib.admin.utils import quote
19
Scott Baker932a16c2015-04-21 17:15:18 -070020#-----------------------------------------------------------------------------
21# vOLT
22#-----------------------------------------------------------------------------
Scott Baker2986b1e2015-04-21 16:59:04 -070023
24class VOLTServiceAdmin(ReadOnlyAwareAdmin):
25 model = VOLTService
26 verbose_name = "vOLT Service"
27 verbose_name_plural = "vOLT Service"
28 list_display = ("backend_status_icon", "name", "enabled")
29 list_display_links = ('backend_status_icon', 'name', )
Scott Baker932a16c2015-04-21 17:15:18 -070030 fieldsets = [(None, {'fields': ['backend_status_text', 'name','enabled','versionNumber', 'description',"view_url","icon_url" ], 'classes':['suit-tab suit-tab-general']})]
Scott Baker2986b1e2015-04-21 16:59:04 -070031 readonly_fields = ('backend_status_text', )
Scott Baker559be722015-05-15 09:08:19 -070032 inlines = [SliceInline,ServiceAttrAsTabInline,ServicePrivilegeInline]
Scott Baker2986b1e2015-04-21 16:59:04 -070033
34 extracontext_registered_admins = True
35
36 user_readonly_fields = ["name", "enabled", "versionNumber", "description"]
37
38 suit_form_tabs =(('general', 'vOLT Service Details'),
39 ('administration', 'Administration'),
40 #('tools', 'Tools'),
41 ('slices','Slices'),
42 ('serviceattrs','Additional Attributes'),
Scott Baker559be722015-05-15 09:08:19 -070043 ('serviceprivileges','Privileges'),
Scott Baker2986b1e2015-04-21 16:59:04 -070044 )
45
46 suit_form_includes = (('voltadmin.html', 'top', 'administration'),
47 ) #('hpctools.html', 'top', 'tools') )
48
49 def queryset(self, request):
50 return VOLTService.get_service_objects()
51
52class VOLTTenantForm(forms.ModelForm):
Scott Baker800f9c12015-07-13 13:08:07 -070053 vlan_id = forms.CharField()
54 creator = forms.ModelChoiceField(queryset=User.objects.all())
55
Scott Baker2986b1e2015-04-21 16:59:04 -070056 def __init__(self,*args,**kwargs):
57 super (VOLTTenantForm,self ).__init__(*args,**kwargs)
58 self.fields['kind'].default = "vOLT"
59 self.fields['kind'].widget.attrs['readonly'] = True
60 self.fields['provider_service'].queryset = VOLTService.get_service_objects().all()
Scott Baker800f9c12015-07-13 13:08:07 -070061 if self.instance:
62 # fields for the attributes
63 self.fields['vlan_id'].initial = self.instance.vlan_id
64 self.fields['creator'].initial = self.instance.creator
65
66 def save(self, commit=True):
67 self.instance.vlan_id = self.cleaned_data.get("vlan_id")
68 self.instance.creator = self.cleaned_data.get("creator")
69 return super(VOLTTenantForm, self).save(commit=commit)
Scott Baker2986b1e2015-04-21 16:59:04 -070070
71 class Meta:
72 model = VOLTTenant
73
74class VOLTTenantAdmin(ReadOnlyAwareAdmin):
Scott Baker0588e502015-07-06 17:20:37 -070075 list_display = ('backend_status_icon', 'id', 'service_specific_id', 'vlan_id', 'subscriber_root' )
Scott Baker932a16c2015-04-21 17:15:18 -070076 list_display_links = ('backend_status_icon', 'id')
Scott Baker800f9c12015-07-13 13:08:07 -070077 fieldsets = [ (None, {'fields': ['backend_status_text', 'kind', 'provider_service', 'subscriber_root', 'service_specific_id', 'service_specific_attribute', 'vlan_id', 'creator'], 'classes':['suit-tab suit-tab-general']})]
78 readonly_fields = ('backend_status_text', 'service_specific_attribute')
Scott Baker2986b1e2015-04-21 16:59:04 -070079 form = VOLTTenantForm
80
81 suit_form_tabs = (('general','Details'),)
82
83 def queryset(self, request):
84 return VOLTTenant.get_tenant_objects()
85
Scott Baker932a16c2015-04-21 17:15:18 -070086#-----------------------------------------------------------------------------
87# vCPE
88#-----------------------------------------------------------------------------
89
Scott Baker7ba272e2015-07-13 14:30:25 -070090class VCPEServiceForm(forms.ModelForm):
Scott Baker3d2493b2015-07-15 17:42:43 -070091 bbs_url = forms.CharField(required=False)
92 bbs_server = forms.CharField(required=False)
93 backend_network_label = forms.CharField(required=False)
94 bbs_slice = forms.ModelChoiceField(queryset=Slice.objects.all(), required=False)
Scott Baker7ba272e2015-07-13 14:30:25 -070095
96 def __init__(self,*args,**kwargs):
97 super (VCPEServiceForm,self ).__init__(*args,**kwargs)
98 if self.instance:
99 self.fields['bbs_url'].initial = self.instance.bbs_url
Scott Baker3d2493b2015-07-15 17:42:43 -0700100 self.fields['bbs_server'].initial = self.instance.bbs_server
Scott Bakercec6a702015-07-15 18:04:22 -0700101 self.fields['backend_network_label'].initial = self.instance.backend_network_label
Scott Baker3d2493b2015-07-15 17:42:43 -0700102 self.fields['bbs_slice'].initial = self.instance.bbs_slice
Scott Baker7ba272e2015-07-13 14:30:25 -0700103
104 def save(self, commit=True):
105 self.instance.bbs_url = self.cleaned_data.get("bbs_url")
Scott Baker3d2493b2015-07-15 17:42:43 -0700106 self.instance.bbs_server = self.cleaned_data.get("bbs_server")
Scott Bakercec6a702015-07-15 18:04:22 -0700107 self.instance.backend_network_label = self.cleaned_data.get("backend_network_label")
Scott Baker3d2493b2015-07-15 17:42:43 -0700108 self.instance.bbs_slice = self.cleaned_data.get("bbs_slice")
Scott Baker7ba272e2015-07-13 14:30:25 -0700109 return super(VCPEServiceForm, self).save(commit=commit)
110
111 class Meta:
112 model = VCPEService
113
Scott Baker932a16c2015-04-21 17:15:18 -0700114class VCPEServiceAdmin(ReadOnlyAwareAdmin):
115 model = VCPEService
116 verbose_name = "vCPE Service"
117 verbose_name_plural = "vCPE Service"
118 list_display = ("backend_status_icon", "name", "enabled")
119 list_display_links = ('backend_status_icon', 'name', )
Scott Baker3d2493b2015-07-15 17:42:43 -0700120 fieldsets = [(None, {'fields': ['backend_status_text', 'name','enabled','versionNumber', 'description', "view_url", "icon_url", "service_specific_attribute",],
121 'classes':['suit-tab suit-tab-general']}),
122 ("backend config", {'fields': [ "backend_network_label", "bbs_url", "bbs_server", "bbs_slice"],
123 'classes':['suit-tab suit-tab-backend']}) ]
Scott Baker7ba272e2015-07-13 14:30:25 -0700124 readonly_fields = ('backend_status_text', "service_specific_attribute")
Scott Baker559be722015-05-15 09:08:19 -0700125 inlines = [SliceInline,ServiceAttrAsTabInline,ServicePrivilegeInline]
Scott Baker7ba272e2015-07-13 14:30:25 -0700126 form = VCPEServiceForm
Scott Baker932a16c2015-04-21 17:15:18 -0700127
128 extracontext_registered_admins = True
129
130 user_readonly_fields = ["name", "enabled", "versionNumber", "description"]
131
Scott Baker3d2493b2015-07-15 17:42:43 -0700132 suit_form_tabs =(('general', 'Service Details'),
133 ('backend', 'Backend Config'),
Scott Baker932a16c2015-04-21 17:15:18 -0700134 ('administration', 'Administration'),
135 #('tools', 'Tools'),
136 ('slices','Slices'),
137 ('serviceattrs','Additional Attributes'),
Scott Baker559be722015-05-15 09:08:19 -0700138 ('serviceprivileges','Privileges') ,
Scott Baker932a16c2015-04-21 17:15:18 -0700139 )
140
141 suit_form_includes = (('vcpeadmin.html', 'top', 'administration'),
142 ) #('hpctools.html', 'top', 'tools') )
143
144 def queryset(self, request):
145 return VCPEService.get_service_objects()
146
147class VCPETenantForm(forms.ModelForm):
148 def __init__(self,*args,**kwargs):
149 super (VCPETenantForm,self ).__init__(*args,**kwargs)
150 self.fields['kind'].default = "vCPE"
151 self.fields['kind'].widget.attrs['readonly'] = True
152 self.fields['provider_service'].queryset = VCPEService.get_service_objects().all()
153
154 class Meta:
155 model = VCPETenant
156
157class VCPETenantAdmin(ReadOnlyAwareAdmin):
Scott Baker1b06b6c2015-07-06 14:40:20 -0700158 list_display = ('backend_status_icon', 'id', 'subscriber_tenant' )
Scott Baker932a16c2015-04-21 17:15:18 -0700159 list_display_links = ('backend_status_icon', 'id')
Scott Baker1b06b6c2015-07-06 14:40:20 -0700160 fieldsets = [ (None, {'fields': ['backend_status_text', 'kind', 'provider_service', 'subscriber_tenant', 'service_specific_id', 'service_specific_attribute',], 'classes':['suit-tab suit-tab-general']})]
Scott Baker932a16c2015-04-21 17:15:18 -0700161 readonly_fields = ('backend_status_text', )
162 form = VCPETenantForm
163
164 suit_form_tabs = (('general','Details'),)
165
166 def queryset(self, request):
167 return VCPETenant.get_tenant_objects()
168
169#-----------------------------------------------------------------------------
170# vBNG
171#-----------------------------------------------------------------------------
172
173class VBNGServiceAdmin(ReadOnlyAwareAdmin):
174 model = VBNGService
175 verbose_name = "vBNG Service"
176 verbose_name_plural = "vBNG Service"
177 list_display = ("backend_status_icon", "name", "enabled")
178 list_display_links = ('backend_status_icon', 'name', )
179 fieldsets = [(None, {'fields': ['backend_status_text', 'name','enabled','versionNumber', 'description', "view_url","icon_url" ], 'classes':['suit-tab suit-tab-general']})]
180 readonly_fields = ('backend_status_text', )
Scott Baker559be722015-05-15 09:08:19 -0700181 inlines = [SliceInline,ServiceAttrAsTabInline,ServicePrivilegeInline]
Scott Baker932a16c2015-04-21 17:15:18 -0700182
183 extracontext_registered_admins = True
184
185 user_readonly_fields = ["name", "enabled", "versionNumber", "description"]
186
187 suit_form_tabs =(('general', 'vBNG Service Details'),
188 ('administration', 'Administration'),
189 #('tools', 'Tools'),
190 ('slices','Slices'),
191 ('serviceattrs','Additional Attributes'),
Scott Baker559be722015-05-15 09:08:19 -0700192 ('serviceprivileges','Privileges'),
Scott Baker932a16c2015-04-21 17:15:18 -0700193 )
194
195 suit_form_includes = (('vbngadmin.html', 'top', 'administration'),
196 ) #('hpctools.html', 'top', 'tools') )
197
198 def queryset(self, request):
199 return VBNGService.get_service_objects()
200
201class VBNGTenantForm(forms.ModelForm):
202 def __init__(self,*args,**kwargs):
203 super (VBNGTenantForm,self ).__init__(*args,**kwargs)
204 self.fields['kind'].default = "vBNG"
205 self.fields['kind'].widget.attrs['readonly'] = True
206 self.fields['provider_service'].queryset = VBNGService.get_service_objects().all()
207
208 class Meta:
209 model = VBNGTenant
210
211class VBNGTenantAdmin(ReadOnlyAwareAdmin):
Scott Baker1b06b6c2015-07-06 14:40:20 -0700212 list_display = ('backend_status_icon', 'id', 'subscriber_tenant' )
Scott Baker932a16c2015-04-21 17:15:18 -0700213 list_display_links = ('backend_status_icon', 'id')
Scott Baker1b06b6c2015-07-06 14:40:20 -0700214 fieldsets = [ (None, {'fields': ['backend_status_text', 'kind', 'provider_service', 'subscriber_tenant', 'service_specific_id', 'service_specific_attribute',], 'classes':['suit-tab suit-tab-general']})]
Scott Baker932a16c2015-04-21 17:15:18 -0700215 readonly_fields = ('backend_status_text', )
216 form = VBNGTenantForm
217
218 suit_form_tabs = (('general','Details'),)
219
220 def queryset(self, request):
221 return VBNGTenant.get_tenant_objects()
222
Scott Baker2986b1e2015-04-21 16:59:04 -0700223admin.site.register(VOLTService, VOLTServiceAdmin)
224admin.site.register(VOLTTenant, VOLTTenantAdmin)
Scott Baker932a16c2015-04-21 17:15:18 -0700225admin.site.register(VCPEService, VCPEServiceAdmin)
226admin.site.register(VCPETenant, VCPETenantAdmin)
227admin.site.register(VBNGService, VBNGServiceAdmin)
228admin.site.register(VBNGTenant, VBNGTenantAdmin)
Scott Baker2986b1e2015-04-21 16:59:04 -0700229