blob: d00e1a341c36a5b468fc0fbf0fd883c684d53f39 [file] [log] [blame]
Scott Baker5e701a52016-03-06 16:50:25 -08001from django.contrib import admin
2
3from services.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
13from core.admin import ServiceAppAdmin,SliceInline,ServiceAttrAsTabInline, ReadOnlyAwareAdmin, XOSTabularInline, ServicePrivilegeInline, TenantRootTenantInline, TenantRootPrivilegeInline
14from core.middleware import get_request
15
16from services.vtr.models import *
17from services.cord.models import CordSubscriberRoot
18
19from functools import update_wrapper
20from django.contrib.admin.views.main import ChangeList
21from django.core.urlresolvers import reverse
22from django.contrib.admin.utils import quote
23
24class VTRServiceAdmin(ReadOnlyAwareAdmin):
25 model = VTRService
26 verbose_name = "vTR Service"
27 verbose_name_plural = "vTR Service"
28 list_display = ("backend_status_icon", "name", "enabled")
29 list_display_links = ('backend_status_icon', 'name', )
30 fieldsets = [(None, {'fields': ['backend_status_text', 'name','enabled','versionNumber', 'description',"view_url","icon_url" ], 'classes':['suit-tab suit-tab-general']})]
31 readonly_fields = ('backend_status_text', )
32 inlines = [SliceInline,ServiceAttrAsTabInline,ServicePrivilegeInline]
33
34 extracontext_registered_admins = True
35
36 user_readonly_fields = ["name", "enabled", "versionNumber", "description"]
37
38 suit_form_tabs =(('general', 'vTR Service Details'),
39 ('administration', 'Administration'),
40 ('slices','Slices'),
41 ('serviceattrs','Additional Attributes'),
42 ('serviceprivileges','Privileges'),
43 )
44
45 suit_form_includes = (('vtradmin.html', 'top', 'administration'),
46 ) #('hpctools.html', 'top', 'tools') )
47
48 def queryset(self, request):
49 return VTRService.get_service_objects_by_user(request.user)
50
51class VTRTenantForm(forms.ModelForm):
Scott Baker5e701a52016-03-06 16:50:25 -080052 test = forms.ChoiceField(choices=VTRTenant.TEST_CHOICES, required=True)
Scott Baker8f9eb5b2016-03-07 14:44:22 -080053 scope = forms.ChoiceField(choices=VTRTenant.SCOPE_CHOICES, required=True)
Scott Baker5e701a52016-03-06 16:50:25 -080054 argument = forms.CharField(required=False)
55 result = forms.CharField(required=False, widget=forms.Textarea(attrs={'rows': 10, 'cols': 80, 'class': 'input-xxlarge'}))
56 target = forms.ModelChoiceField(queryset=CordSubscriberRoot.objects.all())
57
58 def __init__(self,*args,**kwargs):
59 super (VTRTenantForm,self ).__init__(*args,**kwargs)
60 self.fields['provider_service'].queryset = VTRService.get_service_objects().all()
61 if self.instance:
62 # fields for the attributes
63 self.fields['test'].initial = self.instance.test
64 self.fields['argument'].initial = self.instance.argument
65 self.fields['target'].initial = self.instance.target
Scott Baker8f9eb5b2016-03-07 14:44:22 -080066 self.fields['scope'].initial = self.instance.scope
Scott Baker5e701a52016-03-06 16:50:25 -080067 self.fields['result'].initial = self.instance.result
68 if (not self.instance) or (not self.instance.pk):
69 # default fields for an 'add' form
70 self.fields['kind'].initial = VTR_KIND
Scott Baker8f9eb5b2016-03-07 14:44:22 -080071 self.fields["scope"].initial = VTRTenant.get_default_attribute("scope")
Scott Baker5e701a52016-03-06 16:50:25 -080072 if VTRService.get_service_objects().exists():
73 self.fields["provider_service"].initial = VTRService.get_service_objects().all()[0]
74
75 def save(self, commit=True):
76 self.instance.test = self.cleaned_data.get("test")
77 self.instance.argument = self.cleaned_data.get("argument")
78 self.instance.target = self.cleaned_data.get("target")
79 self.instance.result = self.cleaned_data.get("result")
Scott Baker8f9eb5b2016-03-07 14:44:22 -080080 self.instance.scope = self.cleaned_data.get("scope")
Scott Baker5e701a52016-03-06 16:50:25 -080081 return super(VTRTenantForm, self).save(commit=commit)
82
83 class Meta:
84 model = VTRTenant
85
86class VTRTenantAdmin(ReadOnlyAwareAdmin):
87 list_display = ('backend_status_icon', 'id', 'target', 'test', 'argument' )
88 list_display_links = ('backend_status_icon', 'id')
89 fieldsets = [ (None, {'fields': ['backend_status_text', 'kind', 'provider_service', # 'subscriber_root', 'service_specific_id', 'service_specific_attribute',
Scott Baker8f9eb5b2016-03-07 14:44:22 -080090 'target', 'scope', 'test', 'argument', 'result'],
Scott Baker5e701a52016-03-06 16:50:25 -080091 'classes':['suit-tab suit-tab-general']})]
92 readonly_fields = ('backend_status_text', 'service_specific_attribute')
93 form = VTRTenantForm
94
95 suit_form_tabs = (('general','Details'),)
96
97 def queryset(self, request):
98 return VTRTenant.get_tenant_objects_by_user(request.user)
99
100admin.site.register(VTRService, VTRServiceAdmin)
101admin.site.register(VTRTenant, VTRTenantAdmin)
102