示例#1
0
class BackupFileFilterForm(BootstrapMixin, forms.Form):
    model = BackupFile
    q = forms.CharField(
        required=False,
        label='Search'
    )
    upload_server_id = forms.ModelChoiceField(
        queryset=UploadServer.objects.all(),
        required=False,
        to_field_name='id',
        label='Upload Server',
        widget=StaticSelect2()
    )
示例#2
0
文件: forms.py 项目: wuwx/netbox
 class Meta:
     model = IPAddress
     fields = [
         'address',
         'vrf',
         'status',
         'role',
         'description',
         'interface',
         'primary_for_parent',
         'nat_site',
         'nat_rack',
         'nat_inside',
         'tenant_group',
         'tenant',
         'tags',
     ]
     widgets = {
         'status': StaticSelect2(),
         'role': StaticSelect2(),
         'vrf': APISelect(api_url="/api/ipam/vrfs/")
     }
示例#3
0
class ObjectChangeFilterForm(BootstrapMixin, forms.Form):
    model = ObjectChange
    q = forms.CharField(required=False, label='Search')
    time_after = forms.DateTimeField(label='After',
                                     required=False,
                                     widget=DateTimePicker())
    time_before = forms.DateTimeField(label='Before',
                                      required=False,
                                      widget=DateTimePicker())
    action = forms.ChoiceField(
        choices=add_blank_choice(ObjectChangeActionChoices),
        required=False,
        widget=StaticSelect2())
    # TODO: Convert to DynamicModelMultipleChoiceField once we have an API endpoint for users
    user = forms.ModelChoiceField(queryset=User.objects.order_by('username'),
                                  required=False,
                                  widget=StaticSelect2())
    changed_object_type = forms.ModelChoiceField(
        queryset=ContentType.objects.order_by('model'),
        required=False,
        widget=ContentTypeSelect(),
        label='Object Type')
示例#4
0
class AggregateFilterForm(BootstrapMixin, CustomFieldFilterForm):
    model = Aggregate
    q = forms.CharField(required=False, label='Search')
    family = forms.ChoiceField(
        required=False,
        choices=add_blank_choice(IPAddressFamilyChoices),
        label='Address family',
        widget=StaticSelect2())
    rir = DynamicModelMultipleChoiceField(queryset=RIR.objects.all(),
                                          to_field_name='slug',
                                          required=False,
                                          label='RIR')
    tag = TagFilterField(model)
示例#5
0
文件: forms.py 项目: wuwx/netbox
class IPAddressFilterForm(BootstrapMixin, CustomFieldFilterForm):
    model = IPAddress
    q = forms.CharField(required=False, label='Search')
    parent = forms.CharField(required=False,
                             widget=forms.TextInput(attrs={
                                 'placeholder': 'Prefix',
                             }),
                             label='Parent Prefix')
    family = forms.ChoiceField(required=False,
                               choices=IP_FAMILY_CHOICES,
                               label='Address family',
                               widget=StaticSelect2())
    mask_length = forms.ChoiceField(required=False,
                                    choices=IPADDRESS_MASK_LENGTH_CHOICES,
                                    label='Mask length',
                                    widget=StaticSelect2())
    vrf = FilterChoiceField(queryset=VRF.objects.all(),
                            to_field_name='rd',
                            label='VRF',
                            null_label='-- Global --',
                            widget=APISelectMultiple(
                                api_url="/api/ipam/vrfs/",
                                value_field="rd",
                                null_option=True,
                            ))
    tenant = FilterChoiceField(queryset=Tenant.objects.all(),
                               to_field_name='slug',
                               null_label='-- None --',
                               widget=APISelectMultiple(
                                   api_url="/api/tenancy/tenants/",
                                   value_field="slug",
                                   null_option=True,
                               ))
    status = forms.MultipleChoiceField(choices=IPADDRESS_STATUS_CHOICES,
                                       required=False,
                                       widget=StaticSelect2Multiple())
    role = forms.MultipleChoiceField(choices=IPADDRESS_ROLE_CHOICES,
                                     required=False,
                                     widget=StaticSelect2Multiple())
示例#6
0
class VMInterfaceFilterForm(forms.Form):
    model = VMInterface
    cluster_id = DynamicModelMultipleChoiceField(
        queryset=Cluster.objects.all(), required=False, label='Cluster')
    virtual_machine_id = DynamicModelMultipleChoiceField(
        queryset=VirtualMachine.objects.all(),
        required=False,
        label='Virtual machine',
        query_params={'cluster_id': '$cluster_id'})
    enabled = forms.NullBooleanField(
        required=False,
        widget=StaticSelect2(choices=BOOLEAN_WITH_BLANK_CHOICES))
    tag = TagFilterField(model)
示例#7
0
 class Meta:
     model = Service
     fields = [
         'name', 'protocol', 'port', 'ipaddresses', 'description', 'tags',
     ]
     help_texts = {
         'ipaddresses': "IP address assignment is optional. If no IPs are selected, the service is assumed to be "
                        "reachable via all IPs assigned to the device.",
     }
     widgets = {
         'protocol': StaticSelect2(),
         'ipaddresses': StaticSelect2Multiple(),
     }
示例#8
0
 class Meta:
     model = VirtualMachine
     fields = [
         'name',
         'status',
         'cluster_group',
         'cluster',
         'role',
         'tenant_group',
         'tenant',
         'platform',
         'primary_ip4',
         'primary_ip6',
         'vcpus',
         'memory',
         'disk',
         'comments',
         'tags',
         'local_context_data',
     ]
     fieldsets = (
         ('Virtual Machine', ('name', 'role', 'status', 'tags')),
         ('Cluster', ('cluster_group', 'cluster')),
         ('Tenancy', ('tenant_group', 'tenant')),
         ('Management', ('platform', 'primary_ip4', 'primary_ip6')),
         ('Resources', ('vcpus', 'memory', 'disk')),
         ('Config Context', ('local_context_data', )),
     )
     help_texts = {
         'local_context_data':
         "Local config context data overwrites all sources contexts in the final rendered "
         "config context",
     }
     widgets = {
         "status": StaticSelect2(),
         'primary_ip4': StaticSelect2(),
         'primary_ip6': StaticSelect2(),
     }
示例#9
0
 class Meta:
     model = VirtualMachine
     fields = [
         'name',
         'status',
         'cluster_group',
         'cluster',
         'role',
         'tenant_group',
         'tenant',
         'platform',
         'primary_ip4',
         'primary_ip6',
         'vcpus',
         'memory',
         'disk',
         'comments',
         'tags',
         'local_context_data',
     ]
     help_texts = {
         'local_context_data':
         "Local config context data overwrites all sources contexts in the final rendered "
         "config context",
     }
     widgets = {
         "status":
         StaticSelect2(),
         "role":
         APISelect(api_url="/api/dcim/device-roles/",
                   additional_query_params={"vm_role": "True"}),
         'primary_ip4':
         StaticSelect2(),
         'primary_ip6':
         StaticSelect2(),
         'platform':
         APISelect(api_url='/api/dcim/platforms/')
     }
示例#10
0
文件: forms.py 项目: mpalmer/netbox
 class Meta:
     model = Prefix
     fields = [
         'prefix', 'vrf', 'site', 'vlan', 'status', 'role', 'is_pool', 'description', 'tenant_group', 'tenant',
         'tags',
     ]
     fieldsets = (
         ('Prefix', ('prefix', 'status', 'vrf', 'role', 'is_pool', 'description', 'tags')),
         ('Site/VLAN Assignment', ('region', 'site_group', 'site', 'vlan_group', 'vlan')),
         ('Tenancy', ('tenant_group', 'tenant')),
     )
     widgets = {
         'status': StaticSelect2(),
     }
示例#11
0
文件: forms.py 项目: wuwx/netbox
class AggregateFilterForm(BootstrapMixin, CustomFieldFilterForm):
    model = Aggregate
    q = forms.CharField(required=False, label='Search')
    family = forms.ChoiceField(required=False,
                               choices=IP_FAMILY_CHOICES,
                               label='Address family',
                               widget=StaticSelect2())
    rir = FilterChoiceField(queryset=RIR.objects.all(),
                            to_field_name='slug',
                            label='RIR',
                            widget=APISelectMultiple(
                                api_url="/api/ipam/rirs/",
                                value_field="slug",
                            ))
示例#12
0
文件: forms.py 项目: mpalmer/netbox
class VLANBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEditForm):
    pk = forms.ModelMultipleChoiceField(
        queryset=VLAN.objects.all(),
        widget=forms.MultipleHiddenInput()
    )
    region = DynamicModelChoiceField(
        queryset=Region.objects.all(),
        required=False
    )
    site_group = DynamicModelChoiceField(
        queryset=SiteGroup.objects.all(),
        required=False
    )
    site = DynamicModelChoiceField(
        queryset=Site.objects.all(),
        required=False,
        query_params={
            'region_id': '$region',
            'group_id': '$site_group',
        }
    )
    group = DynamicModelChoiceField(
        queryset=VLANGroup.objects.all(),
        required=False,
        query_params={
            'site_id': '$site'
        }
    )
    tenant = DynamicModelChoiceField(
        queryset=Tenant.objects.all(),
        required=False
    )
    status = forms.ChoiceField(
        choices=add_blank_choice(VLANStatusChoices),
        required=False,
        widget=StaticSelect2()
    )
    role = DynamicModelChoiceField(
        queryset=Role.objects.all(),
        required=False
    )
    description = forms.CharField(
        max_length=100,
        required=False
    )

    class Meta:
        nullable_fields = [
            'site', 'group', 'tenant', 'role', 'description',
        ]
示例#13
0
文件: forms.py 项目: tsingui/netbox-1
 class Meta:
     model = Circuit
     fields = [
         'cid', 'type', 'provider', 'status', 'install_date', 'commit_rate', 'description', 'tenant_group', 'tenant',
         'comments', 'tags',
     ]
     help_texts = {
         'cid': "Unique circuit ID",
         'commit_rate': "Committed rate",
     }
     widgets = {
         'status': StaticSelect2(),
         'install_date': DatePicker(),
     }
示例#14
0
class CircuitBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEditForm):
    pk = forms.ModelMultipleChoiceField(
        queryset=Circuit.objects.all(),
        widget=forms.MultipleHiddenInput
    )
    type = forms.ModelChoiceField(
        queryset=CircuitType.objects.all(),
        required=False,
        widget=APISelect(
            api_url="/api/circuits/circuit-types/"
        )
    )
    provider = forms.ModelChoiceField(
        queryset=Provider.objects.all(),
        required=False,
        widget=APISelect(
            api_url="/api/circuits/providers/"
        )
    )
    status = forms.ChoiceField(
        choices=add_blank_choice(CircuitStatusChoices),
        required=False,
        initial='',
        widget=StaticSelect2()
    )
    tenant = forms.ModelChoiceField(
        queryset=Tenant.objects.all(),
        required=False,
        widget=APISelect(
            api_url="/api/tenancy/tenants/"
        )
    )
    commit_rate = forms.IntegerField(
        required=False,
        label='Commit rate (Kbps)'
    )
    description = forms.CharField(
        max_length=100,
        required=False
    )
    comments = CommentField(
        widget=SmallTextarea,
        label='Comments'
    )

    class Meta:
        nullable_fields = [
            'tenant', 'commit_rate', 'description', 'comments',
        ]
示例#15
0
class ASNBulkEditForm(BootstrapMixin, BulkEditForm):
    pk = forms.ModelMultipleChoiceField(queryset=ASN.objects.all(),
                                        widget=forms.MultipleHiddenInput)
    tenant = DynamicModelChoiceField(queryset=Tenant.objects.all(),
                                     required=False)
    description = forms.CharField(max_length=200, required=False)
    status = forms.ChoiceField(required=False,
                               choices=ASNStatusChoices,
                               widget=StaticSelect2())

    class Meta:
        nullable_fields = [
            'tenant',
            'description',
        ]
示例#16
0
 class Meta:
     model = Prefix
     fields = [
         'prefix', 'vrf', 'site', 'vlan', 'status', 'role', 'is_pool', 'description', 'tenant_group', 'tenant',
         'tags',
     ]
     widgets = {
         'vrf': APISelect(
             api_url="/api/ipam/vrfs/"
         ),
         'status': StaticSelect2(),
         'role': APISelect(
             api_url="/api/ipam/roles/"
         )
     }
示例#17
0
class VMInterfaceCreateForm(BootstrapMixin, forms.Form):
    virtual_machine = DynamicModelChoiceField(
        queryset=VirtualMachine.objects.all())
    name_pattern = ExpandableNameField(label='Name')
    enabled = forms.BooleanField(required=False, initial=True)
    mtu = forms.IntegerField(required=False,
                             min_value=INTERFACE_MTU_MIN,
                             max_value=INTERFACE_MTU_MAX,
                             label='MTU')
    mac_address = forms.CharField(required=False, label='MAC Address')
    description = forms.CharField(max_length=100, required=False)
    mode = forms.ChoiceField(
        choices=add_blank_choice(InterfaceModeChoices),
        required=False,
        widget=StaticSelect2(),
    )
    untagged_vlan = DynamicModelChoiceField(queryset=VLAN.objects.all(),
                                            required=False,
                                            display_field='display_name',
                                            brief_mode=False,
                                            query_params={
                                                'site_id': 'null',
                                            })
    tagged_vlans = DynamicModelMultipleChoiceField(
        queryset=VLAN.objects.all(),
        required=False,
        display_field='display_name',
        brief_mode=False,
        query_params={
            'site_id': 'null',
        })
    tags = DynamicModelMultipleChoiceField(queryset=Tag.objects.all(),
                                           required=False)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        virtual_machine = VirtualMachine.objects.get(
            pk=self.initial.get('virtual_machine')
            or self.data.get('virtual_machine'))

        # Add current site to VLANs query params
        site = virtual_machine.site
        if site:
            self.fields['untagged_vlan'].widget.add_query_param(
                'site_id', site.pk)
            self.fields['tagged_vlans'].widget.add_query_param(
                'site_id', site.pk)
示例#18
0
 class Meta:
     model = VMInterface
     fields = [
         'virtual_machine', 'name', 'enabled', 'mac_address', 'mtu', 'description', 'mode', 'tags', 'untagged_vlan',
         'tagged_vlans',
     ]
     widgets = {
         'virtual_machine': forms.HiddenInput(),
         'mode': StaticSelect2()
     }
     labels = {
         'mode': '802.1Q Mode',
     }
     help_texts = {
         'mode': INTERFACE_MODE_HELP_TEXT,
     }
示例#19
0
 class Meta:
     model = VLAN
     fields = [
         'site', 'group', 'vid', 'name', 'status', 'role', 'description', 'tenant_group', 'tenant', 'tags',
     ]
     help_texts = {
         'site': "Leave blank if this VLAN spans multiple sites",
         'group': "VLAN group (optional)",
         'vid': "Configured VLAN ID",
         'name': "Configured VLAN name",
         'status': "Operational status of this VLAN",
         'role': "The primary function of this VLAN",
     }
     widgets = {
         'status': StaticSelect2(),
     }
示例#20
0
class VLANBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEditForm):
    pk = forms.ModelMultipleChoiceField(
        queryset=VLAN.objects.all(),
        widget=forms.MultipleHiddenInput()
    )
    site = forms.ModelChoiceField(
        queryset=Site.objects.all(),
        required=False,
        widget=APISelect(
            api_url="/api/dcim/sites/"
        )
    )
    group = forms.ModelChoiceField(
        queryset=VLANGroup.objects.all(),
        required=False,
        widget=APISelect(
            api_url="/api/ipam/vlan-groups/"
        )
    )
    tenant = forms.ModelChoiceField(
        queryset=Tenant.objects.all(),
        required=False,
        widget=APISelect(
            api_url="/api/tenancy/tenants/"
        )
    )
    status = forms.ChoiceField(
        choices=add_blank_choice(VLAN_STATUS_CHOICES),
        required=False,
        widget=StaticSelect2()
    )
    role = forms.ModelChoiceField(
        queryset=Role.objects.all(),
        required=False,
        widget=APISelect(
            api_url="/api/ipam/roles/"
        )
    )
    description = forms.CharField(
        max_length=100,
        required=False
    )

    class Meta:
        nullable_fields = [
            'site', 'group', 'tenant', 'role', 'description',
        ]
示例#21
0
class VMInterfaceCreateForm(BootstrapMixin, InterfaceCommonForm):
    virtual_machine = DynamicModelChoiceField(
        queryset=VirtualMachine.objects.all())
    name_pattern = ExpandableNameField(label='Name')
    enabled = forms.BooleanField(required=False, initial=True)
    parent = DynamicModelChoiceField(queryset=VMInterface.objects.all(),
                                     required=False,
                                     display_field='display_name',
                                     query_params={
                                         'virtualmachine_id':
                                         'virtual_machine',
                                     })
    mtu = forms.IntegerField(required=False,
                             min_value=INTERFACE_MTU_MIN,
                             max_value=INTERFACE_MTU_MAX,
                             label='MTU')
    mac_address = forms.CharField(required=False, label='MAC Address')
    description = forms.CharField(max_length=100, required=False)
    mode = forms.ChoiceField(
        choices=add_blank_choice(InterfaceModeChoices),
        required=False,
        widget=StaticSelect2(),
    )
    untagged_vlan = DynamicModelChoiceField(queryset=VLAN.objects.all(),
                                            required=False)
    tagged_vlans = DynamicModelMultipleChoiceField(queryset=VLAN.objects.all(),
                                                   required=False)
    tags = DynamicModelMultipleChoiceField(queryset=Tag.objects.all(),
                                           required=False)
    field_order = ('virtual_machine', 'name_pattern', 'enabled', 'parent',
                   'mtu', 'mac_address', 'description', 'mode',
                   'untagged_vlan', 'tagged_vlans', 'tags')

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        vm_id = self.initial.get('virtual_machine') or self.data.get(
            'virtual_machine')

        # Restrict parent interface assignment by VM
        self.fields['parent'].widget.add_query_param('virtualmachine_id',
                                                     vm_id)

        # Limit VLAN choices by virtual machine
        self.fields['untagged_vlan'].widget.add_query_param(
            'available_on_virtualmachine', vm_id)
        self.fields['tagged_vlans'].widget.add_query_param(
            'available_on_virtualmachine', vm_id)
示例#22
0
文件: forms.py 项目: wbdosx/netbox
class ServiceBulkEditForm(BootstrapMixin, AddRemoveTagsForm,
                          CustomFieldBulkEditForm):
    pk = forms.ModelMultipleChoiceField(queryset=Service.objects.all(),
                                        widget=forms.MultipleHiddenInput())
    protocol = forms.ChoiceField(
        choices=add_blank_choice(ServiceProtocolChoices),
        required=False,
        widget=StaticSelect2())
    ports = NumericArrayField(base_field=forms.IntegerField(
        min_value=SERVICE_PORT_MIN, max_value=SERVICE_PORT_MAX),
                              required=False)
    description = forms.CharField(max_length=100, required=False)

    class Meta:
        nullable_fields = [
            'description',
        ]
示例#23
0
 class Meta:
     model = Prefix
     fields = [
         'prefix',
         'vrf',
         'site',
         'vlan',
         'status',
         'role',
         'is_pool',
         'description',
         'tenant_group',
         'tenant',
         'tags',
     ]
     widgets = {
         'status': StaticSelect2(),
     }
示例#24
0
class ServiceBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm):
    pk = forms.ModelMultipleChoiceField(queryset=Service.objects.all(),
                                        widget=forms.MultipleHiddenInput())
    protocol = forms.ChoiceField(
        choices=add_blank_choice(ServiceProtocolChoices),
        required=False,
        widget=StaticSelect2())
    port = forms.IntegerField(validators=[
        MinValueValidator(1),
        MaxValueValidator(65535),
    ],
                              required=False)
    description = forms.CharField(max_length=100, required=False)

    class Meta:
        nullable_fields = [
            'description',
        ]
示例#25
0
文件: forms.py 项目: mpalmer/netbox
class AggregateFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm):
    model = Aggregate
    field_order = ['q', 'family', 'rir', 'tenant_group_id', 'tenant_id']
    q = forms.CharField(
        required=False,
        label=_('Search')
    )
    family = forms.ChoiceField(
        required=False,
        choices=add_blank_choice(IPAddressFamilyChoices),
        label=_('Address family'),
        widget=StaticSelect2()
    )
    rir_id = DynamicModelMultipleChoiceField(
        queryset=RIR.objects.all(),
        required=False,
        label=_('RIR')
    )
    tag = TagFilterField(model)
示例#26
0
class VirtualMachineBulkEditForm(BootstrapMixin, AddRemoveTagsForm,
                                 CustomFieldBulkEditForm):
    pk = forms.ModelMultipleChoiceField(queryset=VirtualMachine.objects.all(),
                                        widget=forms.MultipleHiddenInput())
    status = forms.ChoiceField(
        choices=add_blank_choice(VM_STATUS_CHOICES),
        required=False,
        initial='',
        widget=StaticSelect2(),
    )
    cluster = forms.ModelChoiceField(
        queryset=Cluster.objects.all(),
        required=False,
        widget=APISelect(api_url='/api/virtualization/clusters/'))
    role = forms.ModelChoiceField(
        queryset=DeviceRole.objects.filter(vm_role=True),
        required=False,
        widget=APISelect(api_url="/api/dcim/device-roles/",
                         additional_query_params={"vm_role": "True"}))
    tenant = forms.ModelChoiceField(
        queryset=Tenant.objects.all(),
        required=False,
        widget=APISelect(api_url='/api/tenancy/tenants/'))
    platform = forms.ModelChoiceField(
        queryset=Platform.objects.all(),
        required=False,
        widget=APISelect(api_url='/api/dcim/platforms/'))
    vcpus = forms.IntegerField(required=False, label='vCPUs')
    memory = forms.IntegerField(required=False, label='Memory (MB)')
    disk = forms.IntegerField(required=False, label='Disk (GB)')
    comments = CommentField(widget=SmallTextarea())

    class Meta:
        nullable_fields = [
            'role',
            'tenant',
            'platform',
            'vcpus',
            'memory',
            'disk',
            'comments',
        ]
示例#27
0
    class Meta:
        model = Circuit
        fields = [
            'cid', 'type', 'provider', 'status', 'install_date', 'commit_rate', 'description', 'tenant_group', 'tenant',
            'comments', 'tags',
        ]
        help_texts = {
            'cid': "Unique circuit ID",
            'install_date': "Format: YYYY-MM-DD",
            'commit_rate': "Committed rate",
        }
        widgets = {
            'provider': APISelect(
                api_url="/api/circuits/providers/"
            ),
            'type': APISelect(
                api_url="/api/circuits/circuit-types/"
            ),
            'status': StaticSelect2(),

        }
示例#28
0
class JournalEntryFilterForm(BootstrapMixin, forms.Form):
    model = JournalEntry
    q = forms.CharField(required=False, label=_('Search'))
    created_after = forms.DateTimeField(required=False,
                                        label=_('After'),
                                        widget=DateTimePicker())
    created_before = forms.DateTimeField(required=False,
                                         label=_('Before'),
                                         widget=DateTimePicker())
    created_by_id = DynamicModelMultipleChoiceField(
        queryset=User.objects.all(),
        required=False,
        label=_('User'),
        widget=APISelectMultiple(api_url='/api/users/users/', ))
    assigned_object_type_id = DynamicModelMultipleChoiceField(
        queryset=ContentType.objects.all(),
        required=False,
        label=_('Object Type'),
        widget=APISelectMultiple(api_url='/api/extras/content-types/', ))
    kind = forms.ChoiceField(choices=add_blank_choice(JournalEntryKindChoices),
                             required=False,
                             widget=StaticSelect2())
示例#29
0
class PrefixBulkEditForm(BootstrapMixin, AddRemoveTagsForm,
                         CustomFieldBulkEditForm):
    pk = forms.ModelMultipleChoiceField(queryset=Prefix.objects.all(),
                                        widget=forms.MultipleHiddenInput())
    site = DynamicModelChoiceField(
        queryset=Site.objects.all(),
        required=False,
        widget=APISelect(api_url="/api/dcim/sites/"))
    vrf = DynamicModelChoiceField(queryset=VRF.objects.all(),
                                  required=False,
                                  label='VRF',
                                  widget=APISelect(api_url="/api/ipam/vrfs/"))
    prefix_length = forms.IntegerField(min_value=PREFIX_LENGTH_MIN,
                                       max_value=PREFIX_LENGTH_MAX,
                                       required=False)
    tenant = DynamicModelChoiceField(
        queryset=Tenant.objects.all(),
        required=False,
        widget=APISelect(api_url="/api/tenancy/tenants/"))
    status = forms.ChoiceField(choices=add_blank_choice(PrefixStatusChoices),
                               required=False,
                               widget=StaticSelect2())
    role = DynamicModelChoiceField(
        queryset=Role.objects.all(),
        required=False,
        widget=APISelect(api_url="/api/ipam/roles/"))
    is_pool = forms.NullBooleanField(required=False,
                                     widget=BulkEditNullBooleanSelect(),
                                     label='Is a pool')
    description = forms.CharField(max_length=100, required=False)

    class Meta:
        nullable_fields = [
            'site',
            'vrf',
            'tenant',
            'role',
            'description',
        ]
示例#30
0
class ObjectChangeFilterForm(BootstrapMixin, forms.Form):
    model = ObjectChange
    q = forms.CharField(
        required=False,
        label='Search'
    )
    time_after = forms.DateTimeField(
        label='After',
        required=False,
        widget=DateTimePicker()
    )
    time_before = forms.DateTimeField(
        label='Before',
        required=False,
        widget=DateTimePicker()
    )
    action = forms.ChoiceField(
        choices=add_blank_choice(ObjectChangeActionChoices),
        required=False,
        widget=StaticSelect2()
    )
    user_id = DynamicModelMultipleChoiceField(
        queryset=User.objects.all(),
        required=False,
        display_field='username',
        label='User',
        widget=APISelectMultiple(
            api_url='/api/users/users/',
        )
    )
    changed_object_type_id = DynamicModelMultipleChoiceField(
        queryset=ContentType.objects.all(),
        required=False,
        display_field='display_name',
        label='Object Type',
        widget=APISelectMultiple(
            api_url='/api/extras/content-types/',
        )
    )