mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-04-05 08:47:12 +02:00
feat: more changes and fixes
This commit is contained in:
@@ -3,12 +3,12 @@ from apps.common.fields.forms.dynamic_select import (
|
||||
DynamicModelChoiceField,
|
||||
DynamicModelMultipleChoiceField,
|
||||
)
|
||||
from apps.common.widgets.crispy.daisyui import Switch
|
||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||
from apps.common.widgets.decimal import ArbitraryDecimalDisplayNumberInput
|
||||
from apps.common.widgets.tom_select import TomSelect
|
||||
from apps.currencies.models import Currency
|
||||
from apps.transactions.models import TransactionCategory, TransactionTag
|
||||
from crispy_bootstrap5.bootstrap5 import Switch
|
||||
from crispy_forms.bootstrap import FormActions
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import Column, Field, Layout, Row
|
||||
@@ -36,17 +36,13 @@ class AccountGroupForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -106,17 +102,13 @@ class AccountForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -156,7 +148,6 @@ class AccountBalanceForm(forms.Form):
|
||||
Row(
|
||||
Column("category"),
|
||||
Column("tags"),
|
||||
css_class="form-row",
|
||||
),
|
||||
Field("account_id"),
|
||||
)
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
from crispy_forms.bootstrap import FormActions
|
||||
from django import forms
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.core.exceptions import ValidationError
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import Layout, Field, Submit, Div, HTML
|
||||
|
||||
from apps.common.widgets.tom_select import TomSelect, TomSelectMultiple
|
||||
from apps.common.models import SharedObject
|
||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||
from apps.common.widgets.tom_select import TomSelect, TomSelectMultiple
|
||||
from crispy_forms.bootstrap import FormActions
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import HTML, Div, Field, Layout, Submit
|
||||
from django import forms
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
@@ -76,9 +75,7 @@ class SharedObjectForm(forms.Form):
|
||||
HTML("<hr>"),
|
||||
Field("shared_with_users"),
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Save"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Save"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
5
app/apps/common/widgets/crispy/daisyui.py
Normal file
5
app/apps/common/widgets/crispy/daisyui.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from crispy_forms.layout import Field
|
||||
|
||||
|
||||
class Switch(Field):
|
||||
template = "crispy-daisyui/layout/switch.html"
|
||||
@@ -1,9 +1,9 @@
|
||||
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_bootstrap5.bootstrap5 import Switch
|
||||
from crispy_forms.bootstrap import FormActions
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import Column, Layout, Row
|
||||
@@ -50,17 +50,13 @@ class CurrencyForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -88,17 +84,13 @@ class ExchangeRateForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -141,16 +133,12 @@ class ExchangeRateServiceForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -3,13 +3,14 @@ from apps.common.fields.forms.dynamic_select import (
|
||||
DynamicModelChoiceField,
|
||||
DynamicModelMultipleChoiceField,
|
||||
)
|
||||
from apps.common.widgets.crispy.daisyui import Switch
|
||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||
from apps.common.widgets.datepicker import AirDatePickerInput
|
||||
from apps.common.widgets.decimal import ArbitraryDecimalDisplayNumberInput
|
||||
from apps.common.widgets.tom_select import TomSelect, TransactionSelect
|
||||
from apps.dca.models import DCAEntry, DCAStrategy
|
||||
from apps.transactions.models import Transaction, TransactionCategory, TransactionTag
|
||||
from crispy_bootstrap5.bootstrap5 import BS5Accordion, Switch
|
||||
from crispy_bootstrap5.bootstrap5 import BS5Accordion
|
||||
from crispy_forms.bootstrap import AccordionGroup, FormActions
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import HTML, Column, Layout, Row
|
||||
@@ -43,17 +44,13 @@ class DCAStrategyForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -206,17 +203,13 @@ class DCAEntryForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||
from crispy_forms.bootstrap import FormActions
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import Layout, HTML
|
||||
from crispy_forms.layout import HTML, Layout
|
||||
from django import forms
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||
|
||||
|
||||
class ExportForm(forms.Form):
|
||||
users = forms.BooleanField(
|
||||
@@ -115,9 +114,7 @@ class ExportForm(forms.Form):
|
||||
"dca",
|
||||
"import_profiles",
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Export"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Export"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -181,9 +178,7 @@ class RestoreForm(forms.Form):
|
||||
"dca_entries",
|
||||
"import_profiles",
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Restore"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Restore"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||
from apps.import_app.models import ImportProfile
|
||||
from crispy_forms.bootstrap import FormActions
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import (
|
||||
@@ -6,9 +8,6 @@ from crispy_forms.layout import (
|
||||
from django import forms
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from apps.import_app.models import ImportProfile
|
||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||
|
||||
|
||||
class ImportProfileForm(forms.ModelForm):
|
||||
class Meta:
|
||||
@@ -30,17 +29,13 @@ class ImportProfileForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -57,8 +52,6 @@ class ImportRunFileUploadForm(forms.Form):
|
||||
self.helper.layout = Layout(
|
||||
"file",
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Import"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Import"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from apps.common.fields.forms.dynamic_select import DynamicModelChoiceField
|
||||
from apps.common.widgets.crispy.daisyui import Switch
|
||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||
from apps.common.widgets.tom_select import TomSelect, TransactionSelect
|
||||
from apps.rules.models import (
|
||||
@@ -8,7 +9,7 @@ from apps.rules.models import (
|
||||
)
|
||||
from apps.transactions.forms import BulkEditTransactionForm
|
||||
from apps.transactions.models import Transaction
|
||||
from crispy_bootstrap5.bootstrap5 import BS5Accordion, Switch
|
||||
from crispy_bootstrap5.bootstrap5 import BS5Accordion
|
||||
from crispy_forms.bootstrap import AccordionGroup, FormActions
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import HTML, Column, Field, Layout, Row
|
||||
@@ -54,17 +55,13 @@ class TransactionRuleForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -98,17 +95,13 @@ class TransactionRuleActionForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -222,7 +215,7 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
||||
Row(
|
||||
Column(
|
||||
Field("search_type_operator"),
|
||||
css_class="md:col-span-4",
|
||||
css_class="col-span-12 md:col-span-4",
|
||||
),
|
||||
Column(
|
||||
Field("search_type", rows=1),
|
||||
@@ -232,7 +225,7 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
||||
Row(
|
||||
Column(
|
||||
Field("search_is_paid_operator"),
|
||||
css_class="md:col-span-4",
|
||||
css_class="col-span-12 md:col-span-4",
|
||||
),
|
||||
Column(
|
||||
Field("search_is_paid", rows=1),
|
||||
@@ -242,7 +235,7 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
||||
Row(
|
||||
Column(
|
||||
Field("search_mute_operator"),
|
||||
css_class="md:col-span-4",
|
||||
css_class="col-span-12 md:col-span-4",
|
||||
),
|
||||
Column(
|
||||
Field("search_mute", rows=1),
|
||||
@@ -252,7 +245,7 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
||||
Row(
|
||||
Column(
|
||||
Field("search_account_operator"),
|
||||
css_class="md:col-span-4",
|
||||
css_class="col-span-12 md:col-span-4",
|
||||
),
|
||||
Column(
|
||||
Field("search_account", rows=1),
|
||||
@@ -262,7 +255,7 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
||||
Row(
|
||||
Column(
|
||||
Field("search_entities_operator"),
|
||||
css_class="md:col-span-4",
|
||||
css_class="col-span-12 md:col-span-4",
|
||||
),
|
||||
Column(
|
||||
Field("search_entities", rows=1),
|
||||
@@ -272,91 +265,91 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
||||
Row(
|
||||
Column(
|
||||
Field("search_date_operator"),
|
||||
css_class="md:col-span-4",
|
||||
css_class="col-span-12 md:col-span-4",
|
||||
),
|
||||
Column(
|
||||
Field("search_date", rows=1),
|
||||
css_class="form-group col-md-8",
|
||||
css_class="col-span-12 md:col-span-8",
|
||||
),
|
||||
),
|
||||
Row(
|
||||
Column(
|
||||
Field("search_reference_date_operator"),
|
||||
css_class="md:col-span-4",
|
||||
css_class="col-span-12 md:col-span-4",
|
||||
),
|
||||
Column(
|
||||
Field("search_reference_date", rows=1),
|
||||
css_class="form-group col-md-8",
|
||||
css_class="col-span-12 md:col-span-8",
|
||||
),
|
||||
),
|
||||
Row(
|
||||
Column(
|
||||
Field("search_description_operator"),
|
||||
css_class="md:col-span-4",
|
||||
css_class="col-span-12 md:col-span-4",
|
||||
),
|
||||
Column(
|
||||
Field("search_description", rows=1),
|
||||
css_class="form-group col-md-8",
|
||||
css_class="col-span-12 md:col-span-8",
|
||||
),
|
||||
),
|
||||
Row(
|
||||
Column(
|
||||
Field("search_amount_operator"),
|
||||
css_class="md:col-span-4",
|
||||
css_class="col-span-12 md:col-span-4",
|
||||
),
|
||||
Column(
|
||||
Field("search_amount", rows=1),
|
||||
css_class="form-group col-md-8",
|
||||
css_class="col-span-12 md:col-span-8",
|
||||
),
|
||||
),
|
||||
Row(
|
||||
Column(
|
||||
Field("search_category_operator"),
|
||||
css_class="md:col-span-4",
|
||||
css_class="col-span-12 md:col-span-4",
|
||||
),
|
||||
Column(
|
||||
Field("search_category", rows=1),
|
||||
css_class="form-group col-md-8",
|
||||
css_class="col-span-12 md:col-span-8",
|
||||
),
|
||||
),
|
||||
Row(
|
||||
Column(
|
||||
Field("search_tags_operator"),
|
||||
css_class="md:col-span-4",
|
||||
css_class="col-span-12 md:col-span-4",
|
||||
),
|
||||
Column(
|
||||
Field("search_tags", rows=1),
|
||||
css_class="form-group col-md-8",
|
||||
css_class="col-span-12 md:col-span-8",
|
||||
),
|
||||
),
|
||||
Row(
|
||||
Column(
|
||||
Field("search_notes_operator"),
|
||||
css_class="md:col-span-4",
|
||||
css_class="col-span-12 md:col-span-4",
|
||||
),
|
||||
Column(
|
||||
Field("search_notes", rows=1),
|
||||
css_class="form-group col-md-8",
|
||||
css_class="col-span-12 md:col-span-8",
|
||||
),
|
||||
),
|
||||
Row(
|
||||
Column(
|
||||
Field("search_internal_note_operator"),
|
||||
css_class="md:col-span-4",
|
||||
css_class="col-span-12 md:col-span-4",
|
||||
),
|
||||
Column(
|
||||
Field("search_internal_note", rows=1),
|
||||
css_class="form-group col-md-8",
|
||||
css_class="col-span-12 md:col-span-8",
|
||||
),
|
||||
),
|
||||
Row(
|
||||
Column(
|
||||
Field("search_internal_id_operator"),
|
||||
css_class="md:col-span-4",
|
||||
css_class="col-span-12 md:col-span-4",
|
||||
),
|
||||
Column(
|
||||
Field("search_internal_id", rows=1),
|
||||
css_class="form-group col-md-8",
|
||||
css_class="col-span-12 md:col-span-8",
|
||||
),
|
||||
),
|
||||
active=True,
|
||||
@@ -387,17 +380,13 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -428,9 +417,7 @@ class DryRunCreatedTransacion(forms.Form):
|
||||
self.helper.layout = Layout(
|
||||
"transaction",
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Test"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Test"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -465,9 +452,7 @@ class DryRunDeletedTransacion(forms.Form):
|
||||
self.helper.layout = Layout(
|
||||
"transaction",
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Test"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Test"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -501,9 +486,7 @@ class DryRunUpdatedTransactionForm(BulkEditTransactionForm):
|
||||
|
||||
# Change submit button
|
||||
self.helper.layout[-1] = FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Test"), css_class="btn btn-outline-primary w-100"
|
||||
)
|
||||
NoClassSubmit("submit", _("Test"), css_class="btn btn-primary")
|
||||
)
|
||||
|
||||
if self.data.get("transaction"):
|
||||
|
||||
@@ -160,12 +160,10 @@ class TransactionsFilter(django_filters.FilterSet):
|
||||
Row(
|
||||
Column("reference_date_start"),
|
||||
Column("reference_date_end"),
|
||||
css_class="form-row",
|
||||
),
|
||||
Row(
|
||||
Column("from_amount"),
|
||||
Column("to_amount"),
|
||||
css_class="form-row",
|
||||
),
|
||||
Field("account", size=1),
|
||||
Field("currency", size=1),
|
||||
|
||||
@@ -5,6 +5,7 @@ from apps.common.fields.forms.dynamic_select import (
|
||||
DynamicModelChoiceField,
|
||||
DynamicModelMultipleChoiceField,
|
||||
)
|
||||
from apps.common.widgets.crispy.daisyui import Switch
|
||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||
from apps.common.widgets.datepicker import AirDatePickerInput, AirMonthYearPickerInput
|
||||
from apps.common.widgets.decimal import ArbitraryDecimalDisplayNumberInput
|
||||
@@ -19,7 +20,7 @@ from apps.transactions.models import (
|
||||
TransactionEntity,
|
||||
TransactionTag,
|
||||
)
|
||||
from crispy_bootstrap5.bootstrap5 import BS5Accordion, Switch
|
||||
from crispy_bootstrap5.bootstrap5 import BS5Accordion
|
||||
from crispy_forms.bootstrap import AccordionGroup, AppendedText, FormActions
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import (
|
||||
@@ -135,19 +136,16 @@ class TransactionForm(forms.ModelForm):
|
||||
Row(
|
||||
Column("account"),
|
||||
Column("entities"),
|
||||
css_class="form-row",
|
||||
),
|
||||
Row(
|
||||
Column(Field("date")),
|
||||
Column(Field("reference_date")),
|
||||
css_class="form-row",
|
||||
),
|
||||
"description",
|
||||
Field("amount", inputmode="decimal"),
|
||||
Row(
|
||||
Column("category"),
|
||||
Column("tags"),
|
||||
css_class="form-row",
|
||||
),
|
||||
"notes",
|
||||
)
|
||||
@@ -165,7 +163,6 @@ class TransactionForm(forms.ModelForm):
|
||||
Row(
|
||||
Column(Field("date")),
|
||||
Column(Field("reference_date")),
|
||||
css_class="form-row",
|
||||
),
|
||||
"description",
|
||||
Field("amount", inputmode="decimal"),
|
||||
@@ -176,7 +173,6 @@ class TransactionForm(forms.ModelForm):
|
||||
Row(
|
||||
Column("category"),
|
||||
Column("tags"),
|
||||
css_class="form-row",
|
||||
),
|
||||
"notes",
|
||||
active=False,
|
||||
@@ -186,9 +182,7 @@ class TransactionForm(forms.ModelForm):
|
||||
css_class="mb-3",
|
||||
),
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -201,29 +195,25 @@ class TransactionForm(forms.ModelForm):
|
||||
)
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.fields["amount"].widget = ArbitraryDecimalDisplayNumberInput()
|
||||
self.helper.layout.append(
|
||||
Div(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
NoClassSubmit(
|
||||
"submit_and_similar",
|
||||
_("Save and add similar"),
|
||||
css_class="btn btn-outline-primary",
|
||||
css_class="btn btn-primary btn-soft",
|
||||
),
|
||||
NoClassSubmit(
|
||||
"submit_and_another",
|
||||
_("Save and add another"),
|
||||
css_class="btn btn-outline-primary",
|
||||
css_class="btn btn-primary btn-soft",
|
||||
),
|
||||
css_class="d-grid gap-2",
|
||||
css_class="flex flex-col gap-2 mt-3",
|
||||
),
|
||||
)
|
||||
|
||||
@@ -351,14 +341,12 @@ class QuickTransactionForm(forms.ModelForm):
|
||||
Row(
|
||||
Column("account"),
|
||||
Column("entities"),
|
||||
css_class="form-row",
|
||||
),
|
||||
"description",
|
||||
Field("amount", inputmode="decimal"),
|
||||
Row(
|
||||
Column("category"),
|
||||
Column("tags"),
|
||||
css_class="form-row",
|
||||
),
|
||||
"notes",
|
||||
Switch("mute"),
|
||||
@@ -371,9 +359,7 @@ class QuickTransactionForm(forms.ModelForm):
|
||||
)
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
@@ -482,25 +468,20 @@ class BulkEditTransactionForm(forms.Form):
|
||||
Row(
|
||||
Column("account"),
|
||||
Column("entities"),
|
||||
css_class="form-row",
|
||||
),
|
||||
Row(
|
||||
Column(Field("date")),
|
||||
Column(Field("reference_date")),
|
||||
css_class="form-row",
|
||||
),
|
||||
"description",
|
||||
Field("amount", inputmode="decimal"),
|
||||
Row(
|
||||
Column("category"),
|
||||
Column("tags"),
|
||||
css_class="form-row",
|
||||
),
|
||||
"notes",
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -612,7 +593,7 @@ class TransferForm(forms.Form):
|
||||
Column(Field("from_amount")),
|
||||
Column("from_category"),
|
||||
Column("from_tags"),
|
||||
css_class="bg-base-200 rounded-box p-4 border-base-content/60 border mb-3",
|
||||
css_class="bg-base-100 rounded-box p-4 border-base-content/60 border my-3",
|
||||
),
|
||||
Row(
|
||||
Column(
|
||||
@@ -623,12 +604,10 @@ class TransferForm(forms.Form):
|
||||
),
|
||||
Column("to_category"),
|
||||
Column("to_tags"),
|
||||
css_class="bg-base-200 rounded-box p-4 border-base-content/60 border mb-3",
|
||||
css_class="bg-base-100 rounded-box p-4 border-base-content/60 border",
|
||||
),
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Transfer"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Transfer"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -816,7 +795,6 @@ class InstallmentPlanForm(forms.ModelForm):
|
||||
Row(
|
||||
Column("account"),
|
||||
Column("entities"),
|
||||
css_class="form-row",
|
||||
),
|
||||
"description",
|
||||
Switch("add_description_to_transaction"),
|
||||
@@ -825,19 +803,16 @@ class InstallmentPlanForm(forms.ModelForm):
|
||||
Row(
|
||||
Column("number_of_installments"),
|
||||
Column("installment_start"),
|
||||
css_class="form-row",
|
||||
),
|
||||
Row(
|
||||
Column("start_date", css_class="md:col-span-4 mb-0"),
|
||||
Column("reference_date", css_class="md:col-span-4 mb-0"),
|
||||
Column("recurrence", css_class="md:col-span-4 mb-0"),
|
||||
css_class="form-row",
|
||||
Column("start_date", css_class="col-span-12 md:col-span-4"),
|
||||
Column("reference_date", css_class="col-span-12 md:col-span-4"),
|
||||
Column("recurrence", css_class="col-span-12 md:col-span-4"),
|
||||
),
|
||||
"installment_amount",
|
||||
Row(
|
||||
Column("category"),
|
||||
Column("tags"),
|
||||
css_class="form-row",
|
||||
),
|
||||
)
|
||||
|
||||
@@ -847,17 +822,13 @@ class InstallmentPlanForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -890,17 +861,13 @@ class TransactionTagForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -922,17 +889,13 @@ class TransactionEntityForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -957,17 +920,13 @@ class TransactionCategoryForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -1078,7 +1037,6 @@ class RecurringTransactionForm(forms.ModelForm):
|
||||
Row(
|
||||
Column("account"),
|
||||
Column("entities"),
|
||||
css_class="form-row",
|
||||
),
|
||||
"description",
|
||||
Switch("add_description_to_transaction"),
|
||||
@@ -1086,20 +1044,17 @@ class RecurringTransactionForm(forms.ModelForm):
|
||||
Row(
|
||||
Column("category"),
|
||||
Column("tags"),
|
||||
css_class="form-row",
|
||||
),
|
||||
"notes",
|
||||
Switch("add_notes_to_transaction"),
|
||||
Row(
|
||||
Column("start_date"),
|
||||
Column("reference_date"),
|
||||
css_class="form-row",
|
||||
),
|
||||
Row(
|
||||
Column("recurrence_interval", css_class="md:col-span-4 mb-0"),
|
||||
Column("recurrence_type", css_class="md:col-span-4 mb-0"),
|
||||
Column("end_date", css_class="md:col-span-4 mb-0"),
|
||||
css_class="form-row",
|
||||
Column("recurrence_interval", css_class="col-span-12 md:col-span-4"),
|
||||
Column("recurrence_type", css_class="col-span-12 md:col-span-4"),
|
||||
Column("end_date", css_class="col-span-12 md:col-span-4"),
|
||||
),
|
||||
AppendedText("keep_at_most", _("future transactions")),
|
||||
)
|
||||
@@ -1111,17 +1066,13 @@ class RecurringTransactionForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@@ -146,9 +146,7 @@ class UserSettingsForm(forms.ModelForm):
|
||||
HTML("<hr />"),
|
||||
"volume",
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Save"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Save"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -221,17 +219,13 @@ class UserUpdateForm(forms.ModelForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -383,17 +377,13 @@ class UserAddForm(UserCreationForm):
|
||||
if self.instance and self.instance.pk:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
else:
|
||||
self.helper.layout.append(
|
||||
FormActions(
|
||||
NoClassSubmit(
|
||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
||||
),
|
||||
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@@ -18,10 +18,15 @@ urlpatterns = [
|
||||
name="toggle_sound_playing",
|
||||
),
|
||||
path(
|
||||
"user/toggle-sidebar/",
|
||||
"user/session/toggle-sidebar/",
|
||||
views.toggle_sidebar_status,
|
||||
name="toggle_sidebar_status",
|
||||
),
|
||||
path(
|
||||
"user/session/toggle-theme/",
|
||||
views.toggle_theme,
|
||||
name="toggle_theme",
|
||||
),
|
||||
path(
|
||||
"user/settings/",
|
||||
views.update_settings,
|
||||
|
||||
@@ -1,27 +1,26 @@
|
||||
from apps.common.decorators.demo import disabled_on_demo
|
||||
from apps.common.decorators.htmx import only_htmx
|
||||
from apps.common.decorators.user import htmx_login_required, is_superuser
|
||||
from apps.users.forms import (
|
||||
LoginForm,
|
||||
UserAddForm,
|
||||
UserSettingsForm,
|
||||
UserUpdateForm,
|
||||
)
|
||||
from apps.users.models import UserSettings
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth import logout, get_user_model
|
||||
from django.contrib.auth import get_user_model, logout
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.views import (
|
||||
LoginView,
|
||||
)
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.http import HttpResponse
|
||||
from django.shortcuts import redirect, render, get_object_or_404
|
||||
from django.shortcuts import get_object_or_404, redirect, render
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.views.decorators.http import require_http_methods
|
||||
|
||||
from apps.common.decorators.htmx import only_htmx
|
||||
from apps.common.decorators.user import is_superuser, htmx_login_required
|
||||
from apps.users.forms import (
|
||||
LoginForm,
|
||||
UserSettingsForm,
|
||||
UserUpdateForm,
|
||||
UserAddForm,
|
||||
)
|
||||
from apps.users.models import UserSettings
|
||||
from apps.common.decorators.demo import disabled_on_demo
|
||||
|
||||
|
||||
def logout_view(request):
|
||||
logout(request)
|
||||
@@ -118,6 +117,7 @@ def update_settings(request):
|
||||
|
||||
@only_htmx
|
||||
@htmx_login_required
|
||||
@require_http_methods(["GET"])
|
||||
def toggle_sidebar_status(request):
|
||||
if not request.session.get("sidebar_status"):
|
||||
request.session["sidebar_status"] = "floating"
|
||||
@@ -134,6 +134,24 @@ def toggle_sidebar_status(request):
|
||||
)
|
||||
|
||||
|
||||
@htmx_login_required
|
||||
@require_http_methods(["GET"])
|
||||
def toggle_theme(request):
|
||||
if not request.session.get("theme"):
|
||||
request.session["theme"] = "wygiwyh_dark"
|
||||
|
||||
if request.session["theme"] == "wygiwyh_dark":
|
||||
request.session["theme"] = "wygiwyh_light"
|
||||
elif request.session["theme"] == "wygiwyh_light":
|
||||
request.session["theme"] = "wygiwyh_dark"
|
||||
else:
|
||||
request.session["theme"] = "wygiwyh_dark"
|
||||
|
||||
return HttpResponse(
|
||||
status=204,
|
||||
)
|
||||
|
||||
|
||||
@htmx_login_required
|
||||
@is_superuser
|
||||
@require_http_methods(["GET"])
|
||||
|
||||
Reference in New Issue
Block a user