コード例 #1
0
ファイル: forms.py プロジェクト: tim-fiola/nautobot
class CircuitFilterForm(BootstrapMixin, TenancyFilterForm,
                        StatusFilterFormMixin, CustomFieldFilterForm):
    model = Circuit
    field_order = [
        "q",
        "type",
        "provider",
        "status",
        "region",
        "site",
        "tenant_group",
        "tenant",
        "commit_rate",
    ]
    q = forms.CharField(required=False, label="Search")
    type = DynamicModelMultipleChoiceField(queryset=CircuitType.objects.all(),
                                           to_field_name="slug",
                                           required=False)
    provider = DynamicModelMultipleChoiceField(queryset=Provider.objects.all(),
                                               to_field_name="slug",
                                               required=False)
    region = DynamicModelMultipleChoiceField(queryset=Region.objects.all(),
                                             to_field_name="slug",
                                             required=False)
    site = DynamicModelMultipleChoiceField(
        queryset=Site.objects.all(),
        to_field_name="slug",
        required=False,
        query_params={"region": "$region"},
    )
    commit_rate = forms.IntegerField(required=False,
                                     min_value=0,
                                     label="Commit rate (Kbps)")
    tag = TagFilterField(model)
コード例 #2
0
ファイル: forms.py プロジェクト: LoneStar-Swish/nautobot
class VLANFilterForm(BootstrapMixin, TenancyFilterForm, StatusFilterFormMixin, CustomFieldFilterForm):
    model = VLAN
    field_order = [
        "q",
        "region",
        "site",
        "group_id",
        "status",
        "role",
        "tenant_group",
        "tenant",
    ]
    q = forms.CharField(required=False, label="Search")
    region = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), to_field_name="slug", required=False)
    site = DynamicModelMultipleChoiceField(
        queryset=Site.objects.all(),
        to_field_name="slug",
        required=False,
        null_option="None",
        query_params={"region": "$region"},
    )
    group_id = DynamicModelMultipleChoiceField(
        queryset=VLANGroup.objects.all(),
        required=False,
        label="VLAN group",
        null_option="None",
        query_params={"region": "$region"},
    )
    role = DynamicModelMultipleChoiceField(
        queryset=Role.objects.all(),
        to_field_name="slug",
        required=False,
        null_option="None",
    )
    tag = TagFilterField(model)
コード例 #3
0
ファイル: forms.py プロジェクト: tim-fiola/nautobot
class ConfigContextForm(BootstrapMixin, forms.ModelForm):
    regions = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False)
    sites = DynamicModelMultipleChoiceField(queryset=Site.objects.all(), required=False)
    roles = DynamicModelMultipleChoiceField(queryset=DeviceRole.objects.all(), required=False)
    device_types = DynamicModelMultipleChoiceField(queryset=DeviceType.objects.all(), required=False)
    platforms = DynamicModelMultipleChoiceField(queryset=Platform.objects.all(), required=False)
    cluster_groups = DynamicModelMultipleChoiceField(queryset=ClusterGroup.objects.all(), required=False)
    clusters = DynamicModelMultipleChoiceField(queryset=Cluster.objects.all(), required=False)
    tenant_groups = DynamicModelMultipleChoiceField(queryset=TenantGroup.objects.all(), required=False)
    tenants = DynamicModelMultipleChoiceField(queryset=Tenant.objects.all(), required=False)
    tags = DynamicModelMultipleChoiceField(queryset=Tag.objects.all(), required=False)
    data = JSONField(label="")

    class Meta:
        model = ConfigContext
        fields = (
            "name",
            "weight",
            "description",
            "schema",
            "is_active",
            "regions",
            "sites",
            "roles",
            "device_types",
            "platforms",
            "cluster_groups",
            "clusters",
            "tenant_groups",
            "tenants",
            "tags",
            "data",
        )
コード例 #4
0
ファイル: forms.py プロジェクト: steffann/nautobot
class VRFForm(BootstrapMixin, TenancyForm, CustomFieldModelForm,
              RelationshipModelForm):
    import_targets = DynamicModelMultipleChoiceField(
        queryset=RouteTarget.objects.all(), required=False)
    export_targets = DynamicModelMultipleChoiceField(
        queryset=RouteTarget.objects.all(), required=False)
    tags = DynamicModelMultipleChoiceField(queryset=Tag.objects.all(),
                                           required=False)

    class Meta:
        model = VRF
        fields = [
            "name",
            "rd",
            "enforce_unique",
            "description",
            "import_targets",
            "export_targets",
            "tenant_group",
            "tenant",
            "tags",
        ]
        labels = {
            "rd": "RD",
        }
        help_texts = {
            "rd": "Route distinguisher in any format",
        }
コード例 #5
0
ファイル: forms.py プロジェクト: pmclean-sap/nautobot
class ClusterFilterForm(BootstrapMixin, TenancyFilterForm,
                        CustomFieldFilterForm):
    model = Cluster
    field_order = [
        "q", "type", "region", "site", "group", "tenant_group", "tenant"
    ]
    q = forms.CharField(required=False, label="Search")
    type = DynamicModelMultipleChoiceField(queryset=ClusterType.objects.all(),
                                           to_field_name="slug",
                                           required=False)
    region = DynamicModelMultipleChoiceField(queryset=Region.objects.all(),
                                             to_field_name="slug",
                                             required=False)
    site = DynamicModelMultipleChoiceField(
        queryset=Site.objects.all(),
        to_field_name="slug",
        required=False,
        null_option="None",
        query_params={"region": "$region"},
    )
    group = DynamicModelMultipleChoiceField(
        queryset=ClusterGroup.objects.all(),
        to_field_name="slug",
        required=False,
        null_option="None",
    )
    tag = TagFilterField(model)
コード例 #6
0
ファイル: forms.py プロジェクト: whitej6/nautobot
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=get_user_model().objects.all(),
        required=False,
        label="User",
        widget=APISelectMultiple(api_url="/api/users/users/", ),
    )
    changed_object_type_id = DynamicModelMultipleChoiceField(
        queryset=ContentType.objects.all(),
        required=False,
        label="Object Type",
        widget=APISelectMultiple(api_url="/api/extras/content-types/", ),
    )
コード例 #7
0
ファイル: forms.py プロジェクト: whitej6/nautobot
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        # Add add/remove tags fields
        self.fields["add_tags"] = DynamicModelMultipleChoiceField(
            queryset=Tag.objects.all(), required=False)
        self.fields["remove_tags"] = DynamicModelMultipleChoiceField(
            queryset=Tag.objects.all(), required=False)
コード例 #8
0
class VMInterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm, RelationshipModelForm):
    untagged_vlan = DynamicModelChoiceField(
        queryset=VLAN.objects.all(),
        required=False,
        label="Untagged VLAN",
        display_field="display_name",
        brief_mode=False,
        query_params={
            "site_id": "null",
        },
    )
    tagged_vlans = DynamicModelMultipleChoiceField(
        queryset=VLAN.objects.all(),
        required=False,
        label="Tagged VLANs",
        display_field="display_name",
        brief_mode=False,
        query_params={
            "site_id": "null",
        },
    )
    tags = DynamicModelMultipleChoiceField(queryset=Tag.objects.all(), required=False)

    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,
        }

    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)
コード例 #9
0
ファイル: forms.py プロジェクト: LoneStar-Swish/nautobot
class VLANGroupFilterForm(BootstrapMixin, CustomFieldFilterForm):
    model = VLANGroup
    region = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), to_field_name="slug", required=False)
    site = DynamicModelMultipleChoiceField(
        queryset=Site.objects.all(),
        to_field_name="slug",
        required=False,
        null_option="None",
        query_params={"region": "$region"},
    )
コード例 #10
0
ファイル: forms.py プロジェクト: pmclean-sap/nautobot
class ConfigContextFilterForm(BootstrapMixin, forms.Form):
    q = forms.CharField(required=False, label="Search")
    # FIXME(glenn) filtering by owner_content_type
    region = DynamicModelMultipleChoiceField(queryset=Region.objects.all(),
                                             to_field_name="slug",
                                             required=False)
    site = DynamicModelMultipleChoiceField(queryset=Site.objects.all(),
                                           to_field_name="slug",
                                           required=False)
    role = DynamicModelMultipleChoiceField(queryset=DeviceRole.objects.all(),
                                           to_field_name="slug",
                                           required=False)
    platform = DynamicModelMultipleChoiceField(queryset=Platform.objects.all(),
                                               to_field_name="slug",
                                               required=False)
    cluster_group = DynamicModelMultipleChoiceField(
        queryset=ClusterGroup.objects.all(),
        to_field_name="slug",
        required=False)
    cluster_id = DynamicModelMultipleChoiceField(
        queryset=Cluster.objects.all(), required=False, label="Cluster")
    tenant_group = DynamicModelMultipleChoiceField(
        queryset=TenantGroup.objects.all(),
        to_field_name="slug",
        required=False)
    tenant = DynamicModelMultipleChoiceField(queryset=Tenant.objects.all(),
                                             to_field_name="slug",
                                             required=False)
    tag = DynamicModelMultipleChoiceField(queryset=Tag.objects.all(),
                                          to_field_name="slug",
                                          required=False)
コード例 #11
0
ファイル: forms.py プロジェクト: tim-fiola/nautobot
class VMInterfaceFilterForm(BootstrapMixin, CustomFieldFilterForm):
    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)
コード例 #12
0
ファイル: forms.py プロジェクト: LoneStar-Swish/nautobot
class VRFFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm):
    model = VRF
    field_order = ["q", "import_target", "export_target", "tenant_group", "tenant"]
    q = forms.CharField(required=False, label="Search")
    import_target = DynamicModelMultipleChoiceField(
        queryset=RouteTarget.objects.all(), to_field_name="name", required=False
    )
    export_target = DynamicModelMultipleChoiceField(
        queryset=RouteTarget.objects.all(), to_field_name="name", required=False
    )
    tag = TagFilterField(model)
コード例 #13
0
ファイル: forms.py プロジェクト: LoneStar-Swish/nautobot
class VMInterfaceCreateForm(BootstrapMixin, InterfaceCommonForm):
    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)
コード例 #14
0
ファイル: forms.py プロジェクト: tim-fiola/nautobot
class TenancyFilterForm(forms.Form):
    tenant_group = DynamicModelMultipleChoiceField(
        queryset=TenantGroup.objects.all(),
        to_field_name="slug",
        required=False,
        null_option="None",
    )
    tenant = DynamicModelMultipleChoiceField(
        queryset=Tenant.objects.all(),
        to_field_name="slug",
        required=False,
        null_option="None",
        query_params={"group": "$tenant_group"},
    )
コード例 #15
0
class ProviderFilterForm(BootstrapMixin, CustomFieldFilterForm):
    model = Provider
    q = forms.CharField(required=False, label="Search")
    region = DynamicModelMultipleChoiceField(queryset=Region.objects.all(),
                                             to_field_name="slug",
                                             required=False)
    site = DynamicModelMultipleChoiceField(
        queryset=Site.objects.all(),
        to_field_name="slug",
        required=False,
        query_params={"region": "$region"},
    )
    asn = forms.IntegerField(required=False, label="ASN")
    tag = TagFilterField(model)
コード例 #16
0
class ProviderNetworkFilterForm(BootstrapMixin, CustomFieldFilterForm):
    model = ProviderNetwork
    field_order = ["q", "provider_id"]
    q = forms.CharField(required=False, label="Search")
    provider_id = DynamicModelMultipleChoiceField(
        queryset=Provider.objects.all(), required=False, label="Provider")
    tag = TagFilterField(model)
コード例 #17
0
class RelationshipAssociationFilterForm(BootstrapMixin, forms.Form):
    model = RelationshipAssociation

    relationship = DynamicModelMultipleChoiceField(
        queryset=Relationship.objects.all(),
        to_field_name="slug",
        required=False,
    )

    source_type = MultipleContentTypeField(
        queryset=ContentType.objects.filter(
            FeatureQuery("relationships").get_query()).order_by(
                "app_label", "model"),
        required=False,
        label="Source Type",
        widget=StaticSelect2Multiple(),
    )

    destination_type = MultipleContentTypeField(
        queryset=ContentType.objects.filter(
            FeatureQuery("relationships").get_query()).order_by(
                "app_label", "model"),
        required=False,
        label="Destination Type",
        widget=StaticSelect2Multiple(),
    )
コード例 #18
0
class VirtualMachineBulkAddComponentForm(CustomFieldBulkCreateForm, BootstrapMixin, forms.Form):
    pk = forms.ModelMultipleChoiceField(queryset=VirtualMachine.objects.all(), widget=forms.MultipleHiddenInput())
    name_pattern = ExpandableNameField(label="Name")
    tags = DynamicModelMultipleChoiceField(queryset=Tag.objects.all(), required=False)

    class Meta:
        nullable_fields = []
コード例 #19
0
ファイル: forms.py プロジェクト: whitej6/nautobot
class SecretForm(BootstrapMixin, CustomFieldModelForm, RelationshipModelForm):
    """Create/update form for `Secret` objects."""

    slug = SlugField()

    provider = forms.ChoiceField(choices=provider_choices,
                                 widget=StaticSelect2())

    parameters = JSONField(
        help_text=
        'Enter parameters in <a href="https://json.org/">JSON</a> format.')

    tags = DynamicModelMultipleChoiceField(queryset=Tag.objects.all(),
                                           required=False)

    class Meta:
        model = Secret
        fields = [
            "name",
            "slug",
            "description",
            "provider",
            "parameters",
            "tags",
        ]
コード例 #20
0
ファイル: forms.py プロジェクト: steffann/nautobot
class IPAddressBulkAddForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
    vrf = DynamicModelChoiceField(
        queryset=VRF.objects.all(),
        required=False,
        label="VRF",
        display_field="display_name",
    )
    tags = DynamicModelMultipleChoiceField(queryset=Tag.objects.all(),
                                           required=False)

    class Meta:
        model = IPAddress
        fields = [
            "address",
            "vrf",
            "status",
            "role",
            "dns_name",
            "description",
            "tenant_group",
            "tenant",
            "tags",
        ]
        widgets = {
            "role": StaticSelect2(),
        }

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields["vrf"].empty_label = "Global"
コード例 #21
0
ファイル: forms.py プロジェクト: tim-fiola/nautobot
class CircuitForm(BootstrapMixin, TenancyForm, CustomFieldModelForm,
                  RelationshipModelForm):
    provider = DynamicModelChoiceField(queryset=Provider.objects.all())
    type = DynamicModelChoiceField(queryset=CircuitType.objects.all())
    comments = CommentField()
    tags = DynamicModelMultipleChoiceField(queryset=Tag.objects.all(),
                                           required=False)

    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 = {
            "install_date": DatePicker(),
        }
コード例 #22
0
ファイル: forms.py プロジェクト: pmclean-sap/nautobot
class ClusterForm(BootstrapMixin, TenancyForm, CustomFieldModelForm,
                  RelationshipModelForm):
    type = DynamicModelChoiceField(queryset=ClusterType.objects.all())
    group = DynamicModelChoiceField(queryset=ClusterGroup.objects.all(),
                                    required=False)
    region = DynamicModelChoiceField(queryset=Region.objects.all(),
                                     required=False,
                                     initial_params={"sites": "$site"})
    site = DynamicModelChoiceField(
        queryset=Site.objects.all(),
        required=False,
        query_params={"region_id": "$region"},
    )
    comments = CommentField()
    tags = DynamicModelMultipleChoiceField(queryset=Tag.objects.all(),
                                           required=False)

    class Meta:
        model = Cluster
        fields = (
            "name",
            "type",
            "group",
            "tenant",
            "region",
            "site",
            "comments",
            "tags",
        )
コード例 #23
0
ファイル: forms.py プロジェクト: steffann/nautobot
class PrefixForm(BootstrapMixin, TenancyForm, CustomFieldModelForm,
                 RelationshipModelForm):
    vrf = DynamicModelChoiceField(
        queryset=VRF.objects.all(),
        required=False,
        label="VRF",
        display_field="display_name",
    )
    region = DynamicModelChoiceField(queryset=Region.objects.all(),
                                     required=False,
                                     initial_params={"sites": "$site"})
    site = DynamicModelChoiceField(
        queryset=Site.objects.all(),
        required=False,
        null_option="None",
        query_params={"region_id": "$region"},
    )
    vlan_group = DynamicModelChoiceField(
        queryset=VLANGroup.objects.all(),
        required=False,
        label="VLAN group",
        null_option="None",
        query_params={"site_id": "$site"},
        initial_params={"vlans": "$vlan"},
    )
    vlan = DynamicModelChoiceField(
        queryset=VLAN.objects.all(),
        required=False,
        label="VLAN",
        display_field="display_name",
        query_params={
            "site_id": "$site",
            "group_id": "$vlan_group",
        },
    )
    role = DynamicModelChoiceField(queryset=Role.objects.all(), required=False)
    tags = DynamicModelMultipleChoiceField(queryset=Tag.objects.all(),
                                           required=False)

    class Meta:
        model = Prefix
        fields = [
            "prefix",
            "vrf",
            "site",
            "vlan",
            "status",
            "role",
            "is_pool",
            "description",
            "tenant_group",
            "tenant",
            "tags",
        ]

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

        self.fields["vrf"].empty_label = "Global"
コード例 #24
0
ファイル: forms.py プロジェクト: steffann/nautobot
class RouteTargetFilterForm(BootstrapMixin, TenancyFilterForm,
                            CustomFieldFilterForm):
    model = RouteTarget
    field_order = [
        "q",
        "name",
        "tenant_group",
        "tenant",
        "importing_vrfs",
        "exporting_vrfs",
    ]
    q = forms.CharField(required=False, label="Search")
    importing_vrf_id = DynamicModelMultipleChoiceField(
        queryset=VRF.objects.all(), required=False, label="Imported by VRF")
    exporting_vrf_id = DynamicModelMultipleChoiceField(
        queryset=VRF.objects.all(), required=False, label="Exported by VRF")
    tag = TagFilterField(model)
コード例 #25
0
class VMInterfaceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEditForm):
    pk = forms.ModelMultipleChoiceField(queryset=VMInterface.objects.all(), widget=forms.MultipleHiddenInput())
    virtual_machine = forms.ModelChoiceField(
        queryset=VirtualMachine.objects.all(),
        required=False,
        disabled=True,
        widget=forms.HiddenInput(),
    )
    enabled = forms.NullBooleanField(required=False, widget=BulkEditNullBooleanSelect())
    mtu = forms.IntegerField(
        required=False,
        min_value=INTERFACE_MTU_MIN,
        max_value=INTERFACE_MTU_MAX,
        label="MTU",
    )
    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",
        },
    )

    class Meta:
        nullable_fields = [
            "mtu",
            "description",
        ]

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

        # Limit available VLANs based on the parent VirtualMachine
        if "virtual_machine" in self.initial:
            parent_obj = VirtualMachine.objects.filter(pk=self.initial["virtual_machine"]).first()

            site = getattr(parent_obj.cluster, "site", None)
            if site is not None:
                # Add current site to VLANs query params
                self.fields["untagged_vlan"].widget.add_query_param("site_id", site.pk)
                self.fields["tagged_vlans"].widget.add_query_param("site_id", site.pk)
コード例 #26
0
ファイル: forms.py プロジェクト: tim-fiola/nautobot
class VirtualMachineFilterForm(
    BootstrapMixin, TenancyFilterForm, StatusFilterFormMixin, CustomFieldFilterForm, LocalContextFilterForm
):
    model = VirtualMachine
    field_order = [
        "q",
        "cluster_group",
        "cluster_type",
        "cluster_id",
        "status",
        "role",
        "region",
        "site",
        "tenant_group",
        "tenant",
        "platform",
        "mac_address",
    ]
    q = forms.CharField(required=False, label="Search")
    cluster_group = DynamicModelMultipleChoiceField(
        queryset=ClusterGroup.objects.all(),
        to_field_name="slug",
        required=False,
        null_option="None",
    )
    cluster_type = DynamicModelMultipleChoiceField(
        queryset=ClusterType.objects.all(),
        to_field_name="slug",
        required=False,
        null_option="None",
    )
    cluster_id = DynamicModelMultipleChoiceField(queryset=Cluster.objects.all(), required=False, label="Cluster")
    region = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), to_field_name="slug", required=False)
    site = DynamicModelMultipleChoiceField(
        queryset=Site.objects.all(),
        to_field_name="slug",
        required=False,
        null_option="None",
        query_params={"region": "$region"},
    )
    role = DynamicModelMultipleChoiceField(
        queryset=DeviceRole.objects.filter(vm_role=True),
        to_field_name="slug",
        required=False,
        null_option="None",
        query_params={"vm_role": "True"},
    )
    platform = DynamicModelMultipleChoiceField(
        queryset=Platform.objects.all(),
        to_field_name="slug",
        required=False,
        null_option="None",
    )
    mac_address = forms.CharField(required=False, label="MAC address")
    has_primary_ip = forms.NullBooleanField(
        required=False,
        label="Has a primary IP",
        widget=StaticSelect2(choices=BOOLEAN_WITH_BLANK_CHOICES),
    )
    tag = TagFilterField(model)
コード例 #27
0
ファイル: forms.py プロジェクト: whitej6/nautobot
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.fields["status"] = DynamicModelMultipleChoiceField(
         required=False,
         queryset=Status.objects.all(),
         query_params={"content_types": self.model._meta.label_lower},
         to_field_name="slug",
     )
     self.order_fields(self.field_order)  # Reorder fields again
コード例 #28
0
ファイル: forms.py プロジェクト: tim-fiola/nautobot
class LocalContextFilterForm(forms.Form):
    local_context_data = forms.NullBooleanField(
        required=False,
        label="Has local config context data",
        widget=StaticSelect2(choices=BOOLEAN_WITH_BLANK_CHOICES),
    )
    local_context_schema = DynamicModelMultipleChoiceField(
        queryset=ConfigContextSchema.objects.all(), to_field_name="slug", required=False
    )
コード例 #29
0
class ConfigComplianceFilterForm(GoldenConfigurationFilterForm):
    """Filter Form for ConfigCompliance instances."""

    model = ConfigCompliance
    device = DynamicModelMultipleChoiceField(
        queryset=Device.objects.filter(id__in=Subquery(ConfigCompliance.objects.distinct("device").values("device"))),
        to_field_name="name",
        required=False,
        null_option="None",
    )
コード例 #30
0
ファイル: forms.py プロジェクト: tim-fiola/nautobot
class TenantFilterForm(BootstrapMixin, CustomFieldFilterForm):
    model = Tenant
    q = forms.CharField(required=False, label="Search")
    group = DynamicModelMultipleChoiceField(
        queryset=TenantGroup.objects.all(),
        to_field_name="slug",
        required=False,
        null_option="None",
    )
    tag = TagFilterField(model)