Source code for ferrosoft.apps.emiflow.forms.settings

#  Copyright (c) 2024 Ferrosoft GmbH. All rights reserved.
from django import forms
from django.utils.translation import gettext_lazy as _

from ferrosoft.apps.emiflow.models import (
    TransportChainDefaults,
    Settings,
    VehicleType,
    BusinessCentralSettings,
)

_ME_SUBMIT = """on change js(me) me.form.submit() end"""


[docs] class BusinessCentralSettingsForm(forms.ModelForm):
[docs] class Meta: model = BusinessCentralSettings fields = [ "tenant_id", "environment", "oauth_auth_url", "oauth_client_id", "oauth_client_secret", "oauth_scope", ] widgets = { "oauth_client_secret": forms.PasswordInput(render_value=True), }
[docs] class DefaultsSearchForm(forms.Form): vehicle_type = forms.ChoiceField( choices=VehicleType.choices, required=False, label=_("Vehicle type"), help_text=_( "Please select a vehicle type for which to define default settings." ), widget=forms.Select( attrs={"_": _ME_SUBMIT}, ), )
[docs] class DefaultsEditForm(forms.ModelForm):
[docs] class Meta: model = TransportChainDefaults fields = [ "vehicle_type", "distance_type", "transport_operation", ] widgets = { "vehicle_type": forms.HiddenInput(), "distance_type": forms.Select(attrs={"_": _ME_SUBMIT}), "transport_operation": forms.Select(attrs={"_": _ME_SUBMIT}), }
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.warn_incomplete_data = False
[docs] def clean(self): data = super().clean() if data.get("distance_type") is None or data.get("transport_operation") is None: self.warn_incomplete_data = True
[docs] def save(self, commit=True): instance = super().save(commit=False) instance.settings = Settings.get_instance() if commit: instance.save()