class ClusterGroupCSVForm(CustomFieldModelCSVForm): slug = SlugField() class Meta: model = ClusterGroup fields = ('name', 'slug', 'description')
class SecretRoleForm(BootstrapMixin, forms.ModelForm): slug = SlugField() class Meta: model = SecretRole fields = ['name', 'slug', 'users', 'groups']
class ProviderCSVForm(CustomFieldModelCSVForm): slug = SlugField() class Meta: model = Provider fields = Provider.csv_headers
class VLANGroupForm(BootstrapMixin, forms.ModelForm): slug = SlugField() class Meta: model = VLANGroup fields = ['site', 'name', 'slug']
class RoleCSVForm(CustomFieldModelCSVForm): slug = SlugField() class Meta: model = Role fields = ('name', 'slug', 'weight', 'description')
class TagForm(BootstrapMixin, forms.ModelForm): slug = SlugField() class Meta: model = Tag fields = ['name', 'slug', 'color', 'description']
class ClusterGroupForm(BootstrapMixin, forms.ModelForm): slug = SlugField() class Meta: model = ClusterGroup fields = ['name', 'slug']
class DeviceRoleForm(forms.ModelForm, BootstrapMixin): slug = SlugField() class Meta: model = DeviceRole fields = ['name', 'slug', 'color']
class PlatformForm(forms.ModelForm, BootstrapMixin): slug = SlugField() class Meta: model = Platform fields = ['name', 'slug']
class SecretRoleForm(forms.ModelForm, BootstrapMixin): slug = SlugField() class Meta: model = SecretRole fields = ['name', 'slug']
class ManufacturerForm(forms.ModelForm, BootstrapMixin): slug = SlugField() class Meta: model = Manufacturer fields = ['name', 'slug']
class VLANGroupForm(BootstrapMixin, CustomFieldModelForm): scope_type = ContentTypeChoiceField( queryset=ContentType.objects.filter(model__in=VLANGROUP_SCOPE_TYPES), required=False, widget=StaticSelect) region = DynamicModelChoiceField(queryset=Region.objects.all(), required=False, initial_params={'sites': '$site'}) sitegroup = DynamicModelChoiceField(queryset=SiteGroup.objects.all(), required=False, initial_params={'sites': '$site'}, label='Site group') site = DynamicModelChoiceField(queryset=Site.objects.all(), required=False, initial_params={'locations': '$location'}, query_params={ 'region_id': '$region', 'group_id': '$sitegroup', }) location = DynamicModelChoiceField(queryset=Location.objects.all(), required=False, initial_params={'racks': '$rack'}, query_params={ 'site_id': '$site', }) rack = DynamicModelChoiceField(queryset=Rack.objects.all(), required=False, query_params={ 'site_id': '$site', 'location_id': '$location', }) clustergroup = DynamicModelChoiceField( queryset=ClusterGroup.objects.all(), required=False, initial_params={'clusters': '$cluster'}, label='Cluster group') cluster = DynamicModelChoiceField(queryset=Cluster.objects.all(), required=False, query_params={ 'group_id': '$clustergroup', }) slug = SlugField() class Meta: model = VLANGroup fields = [ 'name', 'slug', 'description', 'scope_type', 'region', 'sitegroup', 'site', 'location', 'rack', 'clustergroup', 'cluster', ] fieldsets = ( ('VLAN Group', ('name', 'slug', 'description')), ('Scope', ('scope_type', 'region', 'sitegroup', 'site', 'location', 'rack', 'clustergroup', 'cluster')), ) widgets = { 'scope_type': StaticSelect, } def __init__(self, *args, **kwargs): instance = kwargs.get('instance') initial = kwargs.get('initial', {}) if instance is not None and instance.scope: initial[instance.scope_type.model] = instance.scope kwargs['initial'] = initial super().__init__(*args, **kwargs) def clean(self): super().clean() # Assign scope based on scope_type if self.cleaned_data.get('scope_type'): scope_field = self.cleaned_data['scope_type'].model self.instance.scope = self.cleaned_data.get(scope_field) else: self.instance.scope_id = None
class SecretRoleForm(BootstrapMixin, forms.ModelForm): slug = SlugField() class Meta: model = SecretRole fields = ('name', 'slug', 'description')
class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): region = DynamicModelChoiceField(queryset=Region.objects.all(), required=False) group = DynamicModelChoiceField(queryset=SiteGroup.objects.all(), required=False) slug = SlugField() time_zone = TimeZoneFormField(choices=add_blank_choice( TimeZoneFormField().choices), required=False, widget=StaticSelect()) comments = CommentField() tags = DynamicModelMultipleChoiceField(queryset=Tag.objects.all(), required=False) class Meta: model = Site fields = [ 'name', 'slug', 'status', 'region', 'group', 'tenant_group', 'tenant', 'facility', 'asn', 'time_zone', 'description', 'physical_address', 'shipping_address', 'latitude', 'longitude', 'contact_name', 'contact_phone', 'contact_email', 'comments', 'tags', ] fieldsets = ( ('Site', ( 'name', 'slug', 'status', 'region', 'group', 'facility', 'asn', 'time_zone', 'description', 'tags', )), ('Tenancy', ('tenant_group', 'tenant')), ('Contact Info', ( 'physical_address', 'shipping_address', 'latitude', 'longitude', 'contact_name', 'contact_phone', 'contact_email', )), ) widgets = { 'physical_address': SmallTextarea(attrs={ 'rows': 3, }), 'shipping_address': SmallTextarea(attrs={ 'rows': 3, }), 'status': StaticSelect(), 'time_zone': StaticSelect(), } help_texts = { 'name': "Full name of the site", 'facility': "Data center provider and facility (e.g. Equinix NY7)", 'asn': "BGP autonomous system number", 'time_zone': "Local time zone", 'description': "Short description (will appear in sites list)", 'physical_address': "Physical location of the building (e.g. for GPS)", 'shipping_address': "If different from the physical address", 'latitude': "Latitude in decimal format (xx.yyyyyy)", 'longitude': "Longitude in decimal format (xx.yyyyyy)" }
class ClusterTypeCSVForm(CSVModelForm): slug = SlugField() class Meta: model = ClusterType fields = ClusterType.csv_headers
class RackGroupForm(forms.ModelForm, BootstrapMixin): slug = SlugField() class Meta: model = RackGroup fields = ['site', 'name', 'slug']
class ClusterGroupCSVForm(CSVModelForm): slug = SlugField() class Meta: model = ClusterGroup fields = ClusterGroup.csv_headers
class RoleCSVForm(CSVModelForm): slug = SlugField() class Meta: model = Role fields = Role.csv_headers
class CircuitTypeForm(forms.ModelForm, BootstrapMixin): slug = SlugField() class Meta: model = CircuitType fields = ['name', 'slug']
class RIRForm(forms.ModelForm, BootstrapMixin): slug = SlugField() class Meta: model = RIR fields = ['name', 'slug']
class RIRForm(BootstrapMixin, forms.ModelForm): slug = SlugField() class Meta: model = RIR fields = ['name', 'slug', 'is_private']
class TenantGroupForm(forms.ModelForm, BootstrapMixin): slug = SlugField() class Meta: model = TenantGroup fields = ['name', 'slug']
class RoleForm(BootstrapMixin, forms.ModelForm): slug = SlugField() class Meta: model = Role fields = ['name', 'slug']
class ContactRoleCSVForm(CustomFieldModelCSVForm): slug = SlugField() class Meta: model = ContactRole fields = ('name', 'slug', 'description')