Skip to content

forms

django_spire.metric.domain.statistic.forms

StatisticGroupForm

Bases: ModelForm

Meta

model = models.StatisticGroup class-attribute instance-attribute
fields = ['domain', 'name', 'description'] class-attribute instance-attribute
exclude = [] class-attribute instance-attribute

save_model_obj

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

        return GlueResponse(
            result={
                'redirect': {
                    'url': reverse(
                        viewname='django_spire:metric:domain:statistic:page:group_detail',
                        kwargs={'pk': group.pk},
                    )
                }
            }
        )

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

StatisticForm

Bases: ModelForm

key = forms.SlugField(required=False, help_text='Leave blank to automatically generate a slug from the name.') class-attribute instance-attribute

Meta

model = models.Statistic class-attribute instance-attribute
fields = ['key', 'group', 'name', 'interval', 'value_type'] class-attribute instance-attribute
exclude = [] class-attribute instance-attribute

clean_key

Source code in django_spire/metric/domain/statistic/forms.py
def clean_key(self) -> str:
    key = self.cleaned_data.get('key')

    if not key and self.instance.pk:
        key = self.instance.key
    elif not key:
        return ''

    queryset = models.Statistic.objects.filter(key=key)
    if self.instance.pk:
        queryset = queryset.exclude(pk=self.instance.pk)

    if queryset.exists():
        message = 'A statistic with this key already exists.'
        raise forms.ValidationError(message)

    return key

save_model_obj

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

        return GlueResponse(
            result={
                'redirect': {
                    'url': reverse(
                        viewname='django_spire:metric:domain:statistic:page:group_detail',
                        kwargs={'pk': statistic.group.pk},
                    )
                }
            }
        )

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