Example #1
0
 class Meta:
     nullable_fields = [
         "date_added",
         "description",
     ]
     widgets = {
         "date_added": DatePicker(),
     }
Example #2
0
    class Meta:
        model = EoxNotice
        fields = [
            "device_type",
            "end_of_sale",
            "end_of_support",
            "end_of_sw_releases",
            "end_of_security_patches",
            "notice_url",
        ]

        widgets = {
            "end_of_sale": DatePicker(),
            "end_of_support": DatePicker(),
            "end_of_sw_releases": DatePicker(),
            "end_of_security_patches": DatePicker(),
        }
Example #3
0
    class Meta:
        model = EoxNotice
        # Define the fields above for ordering and widget purposes
        fields = [
            "q",
            "devices",
            "device_type",
            "end_of_sale",
            "end_of_support",
            "end_of_sw_releases",
            "end_of_security_patches",
            "notice_url",
        ]

        widgets = {
            "end_of_sale": DatePicker(),
            "end_of_support": DatePicker(),
            "end_of_sw_releases": DatePicker(),
            "end_of_security_patches": DatePicker(),
        }
Example #4
0
 class Meta:
     model = Aggregate
     fields = [
         "prefix",
         "rir",
         "date_added",
         "description",
         "tenant_group",
         "tenant",
         "tags",
     ]
     help_texts = {
         "prefix": "IPv4 or IPv6 network",
         "rir": "Regional Internet Registry responsible for this prefix",
     }
     widgets = {
         "date_added": DatePicker(),
     }
Example #5
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",
         "commit_rate": "Committed rate",
     }
     widgets = {
         "install_date": DatePicker(),
     }
Example #6
0
    def to_form_field(self,
                      set_initial=True,
                      enforce_required=True,
                      for_csv_import=False):
        """
        Return a form field suitable for setting a CustomField's value for an object.

        set_initial: Set initial date for the field. This should be False when generating a field for bulk editing.
        enforce_required: Honor the value of CustomField.required. Set to False for filtering/bulk editing.
        for_csv_import: Return a form field suitable for bulk import of objects in CSV format.
        """
        initial = self.default if set_initial else None
        required = self.required if enforce_required else False

        # Integer
        if self.type == CustomFieldTypeChoices.TYPE_INTEGER:
            field = forms.IntegerField(
                required=required,
                initial=initial,
                min_value=self.validation_minimum,
                max_value=self.validation_maximum,
            )

        # Boolean
        elif self.type == CustomFieldTypeChoices.TYPE_BOOLEAN:
            choices = (
                (None, "---------"),
                (True, "True"),
                (False, "False"),
            )
            field = forms.NullBooleanField(
                required=required,
                initial=initial,
                widget=StaticSelect2(choices=choices),
            )

        # Date
        elif self.type == CustomFieldTypeChoices.TYPE_DATE:
            field = forms.DateField(required=required,
                                    initial=initial,
                                    widget=DatePicker())

        # URL
        elif self.type == CustomFieldTypeChoices.TYPE_URL:
            field = LaxURLField(required=required, initial=initial)

        # Text
        elif self.type == CustomFieldTypeChoices.TYPE_TEXT:
            field = forms.CharField(max_length=255,
                                    required=required,
                                    initial=initial)
            if self.validation_regex:
                field.validators = [
                    RegexValidator(
                        regex=self.validation_regex,
                        message=mark_safe(
                            f"Values must match this regex: <code>{self.validation_regex}</code>"
                        ),
                    )
                ]

        # Select or Multi-select
        else:
            choices = [(cfc.value, cfc.value) for cfc in self.choices.all()]
            default_choice = self.choices.filter(value=self.default).first()

            if not required or default_choice is None:
                choices = add_blank_choice(choices)

            # Set the initial value to the first available choice (if any)
            if set_initial and default_choice:
                initial = default_choice.value

            if self.type == CustomFieldTypeChoices.TYPE_SELECT:
                field_class = CSVChoiceField if for_csv_import else forms.ChoiceField
                field = field_class(
                    choices=choices,
                    required=required,
                    initial=initial,
                    widget=StaticSelect2(),
                )
            else:
                field_class = CSVMultipleChoiceField if for_csv_import else forms.MultipleChoiceField
                field = field_class(choices=choices,
                                    required=required,
                                    initial=initial,
                                    widget=StaticSelect2Multiple())

        field.model = self
        field.label = str(self)
        if self.description:
            field.help_text = self.description

        return field