Skip to content

forms

django_spire.metric.visual.forms

VisualModelForm

Bases: ModelForm

Meta

model = models.Visual class-attribute instance-attribute
fields = ['name', 'description', 'statistic', 'reference', 'kind', 'date'] class-attribute instance-attribute
exclude = [] class-attribute instance-attribute
widgets = {'date': forms.DateInput(attrs={'type': 'date'})} class-attribute instance-attribute

save_model_obj

Source code in django_spire/metric/visual/forms.py
@Glue.attr(required_access=Glue.Access.CHANGE)
def save_model_obj(self, request: HttpRequest) -> GlueResponse:
    if self.is_valid():
        visual, _ = self.instance.services.save_model_obj(**self.cleaned_data)

        return GlueResponse(
            result={
                'redirect': {
                    'url': reverse(
                        'django_spire:metric:visual:page:detail', kwargs={'pk': visual.pk}
                    )
                }
            }
        )

    return GlueResponse(messages=[GlueMessage.error('Invalid Fields')])

clean

Source code in django_spire/metric/visual/forms.py
def clean(self) -> dict:
    cleaned_data = super().clean()

    statistic = cleaned_data.get('statistic')
    reference = cleaned_data.get('reference', '')

    if (
        statistic
        and reference
        and statistic.values.exists()
        and not statistic.values.for_reference(reference).exists()
    ):
        self.add_error(
            'reference', 'That reference is not a valid value for the selected statistic.'
        )

    return cleaned_data

VisualConditionModelForm

Bases: ModelForm

Meta

model = models.VisualCondition class-attribute instance-attribute
fields = ['state', 'operator', 'target', 'tolerance', 'order'] class-attribute instance-attribute
exclude = [] class-attribute instance-attribute
widgets = {'target': forms.NumberInput(attrs={'step': '0.0001'}), 'tolerance': forms.NumberInput(attrs={'step': '0.0001'})} class-attribute instance-attribute

save_model_obj

Source code in django_spire/metric/visual/forms.py
@Glue.attr(required_access=Glue.Access.CHANGE)
def save_model_obj(self, request: HttpRequest) -> GlueResponse:
    if self.is_valid():
        condition, _ = self.instance.services.save_model_obj(**self.cleaned_data)

        return GlueResponse(
            result={
                'redirect': {
                    'url': reverse(
                        'django_spire:metric:visual:page:detail',
                        kwargs={'pk': condition.visual_id},
                    )
                }
            }
        )

    return GlueResponse(messages=[GlueMessage.error('Invalid Fields')])

clean

Source code in django_spire/metric/visual/forms.py
def clean(self) -> dict:
    cleaned_data = super().clean()

    operator = cleaned_data.get('operator')
    tolerance = cleaned_data.get('tolerance')

    if operator == VisualConditionOperatorChoices.BETWEEN and (
        tolerance is None or tolerance == 0
    ):
        self.add_error('tolerance', 'Tolerance is required for "At or Near Target".')

    return cleaned_data