mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-03-20 16:44:00 +01:00
145 lines
4.4 KiB
Python
145 lines
4.4 KiB
Python
from apps.common.widgets.crispy.daisyui import Switch
|
|
from apps.common.widgets.crispy.submit import NoClassSubmit
|
|
from apps.common.widgets.datepicker import AirDateTimePickerInput
|
|
from apps.common.widgets.decimal import ArbitraryDecimalDisplayNumberInput
|
|
from apps.common.widgets.tom_select import TomSelect
|
|
from apps.currencies.models import Currency, ExchangeRate, ExchangeRateService
|
|
from crispy_forms.bootstrap import FormActions
|
|
from crispy_forms.helper import FormHelper
|
|
from crispy_forms.layout import Column, Layout, Row
|
|
from django import forms
|
|
from django.forms import CharField
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
|
|
class CurrencyForm(forms.ModelForm):
|
|
prefix = CharField(strip=False, required=False, label=_("Prefix"))
|
|
suffix = CharField(strip=False, required=False, label=_("Suffix"))
|
|
|
|
class Meta:
|
|
model = Currency
|
|
fields = [
|
|
"name",
|
|
"decimal_places",
|
|
"prefix",
|
|
"suffix",
|
|
"code",
|
|
"exchange_currency",
|
|
"is_archived",
|
|
]
|
|
widgets = {
|
|
"exchange_currency": TomSelect(),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
|
|
self.helper = FormHelper()
|
|
self.helper.form_tag = False
|
|
self.helper.form_method = "post"
|
|
self.helper.layout = Layout(
|
|
"code",
|
|
"name",
|
|
Switch("is_archived"),
|
|
"decimal_places",
|
|
"prefix",
|
|
"suffix",
|
|
"exchange_currency",
|
|
)
|
|
|
|
if self.instance and self.instance.pk:
|
|
self.helper.layout.append(
|
|
FormActions(
|
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
|
),
|
|
)
|
|
else:
|
|
self.helper.layout.append(
|
|
FormActions(
|
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
|
),
|
|
)
|
|
|
|
|
|
class ExchangeRateForm(forms.ModelForm):
|
|
date = forms.DateTimeField(
|
|
label=_("Date"),
|
|
)
|
|
|
|
class Meta:
|
|
model = ExchangeRate
|
|
fields = ["from_currency", "to_currency", "rate", "date"]
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
|
|
self.helper = FormHelper()
|
|
self.helper.form_tag = False
|
|
self.helper.form_method = "post"
|
|
self.helper.layout = Layout("date", "from_currency", "to_currency", "rate")
|
|
|
|
self.fields["rate"].widget = ArbitraryDecimalDisplayNumberInput()
|
|
self.fields["date"].widget = AirDateTimePickerInput(clear_button=False)
|
|
|
|
if self.instance and self.instance.pk:
|
|
self.helper.layout.append(
|
|
FormActions(
|
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
|
),
|
|
)
|
|
else:
|
|
self.helper.layout.append(
|
|
FormActions(
|
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
|
),
|
|
)
|
|
|
|
|
|
class ExchangeRateServiceForm(forms.ModelForm):
|
|
class Meta:
|
|
model = ExchangeRateService
|
|
fields = [
|
|
"name",
|
|
"service_type",
|
|
"is_active",
|
|
"api_key",
|
|
"interval_type",
|
|
"fetch_interval",
|
|
"target_currencies",
|
|
"target_accounts",
|
|
"singleton",
|
|
]
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
|
|
self.helper = FormHelper()
|
|
self.helper.form_tag = False
|
|
self.helper.form_method = "post"
|
|
self.helper.layout = Layout(
|
|
"name",
|
|
"service_type",
|
|
Switch("is_active"),
|
|
Switch("singleton"),
|
|
"api_key",
|
|
Row(
|
|
Column("interval_type"),
|
|
Column("fetch_interval"),
|
|
),
|
|
"target_currencies",
|
|
"target_accounts",
|
|
)
|
|
|
|
if self.instance and self.instance.pk:
|
|
self.helper.layout.append(
|
|
FormActions(
|
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
|
),
|
|
)
|
|
else:
|
|
self.helper.layout.append(
|
|
FormActions(
|
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
|
),
|
|
)
|