Source code for ferrosoft.apps.emiflow.forms.catalog
# Copyright (c) 2025 Ferrosoft GmbH. All rights reserved.
from django.core.exceptions import ValidationError
from django import forms
from django.forms.models import ModelForm
from django.utils.translation import gettext_lazy as _
from ferrosoft.apps.emiflow.models import (
Emitter,
Settings,
EnergyCarrier,
EmissionFactor,
)
from ferrosoft.apps.ferrobase.forms import UnitChoiceField
from ferrosoft.apps.ferrobase.models import UnitCollection, UnitCursor
[docs]
class CatalogEntryForm(ModelForm):
"""Sets catalog field on model instance with Settings.user_catalog value."""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.settings = Settings.get_instance()
[docs]
def clean(self):
fields = super().clean()
if self.settings.user_catalog is None:
raise ValidationError(
_("System configuration error. Please contact system administrator."),
code="INVALID_SETTINGS",
)
return fields
[docs]
def save(self, commit=True):
instance = super().save(commit=False)
if instance.catalog_id is None:
instance.catalog = self.settings.user_catalog
if commit:
instance.save()
return instance