diff --git a/src/accounting/forms.py b/src/accounting/forms.py new file mode 100644 index 0000000..b315f60 --- /dev/null +++ b/src/accounting/forms.py @@ -0,0 +1,41 @@ +# The Mia! Accounting Flask Project. +# Author: imacat@mail.imacat.idv.tw (imacat), 2023/3/22 + +# Copyright (c) 2023 imacat. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""The forms. + +""" +from flask_wtf import FlaskForm +from wtforms import StringField, ValidationError +from wtforms.validators import DataRequired + +from accounting import db +from accounting.locale import lazy_gettext +from accounting.models import Currency + +CURRENCY_REQUIRED: DataRequired = DataRequired( + lazy_gettext("Please select the currency.")) +"""The validator to check if the currency code is empty.""" + + +class CurrencyExists: + """The validator to check if the account exists.""" + + def __call__(self, form: FlaskForm, field: StringField) -> None: + if field.data is None: + return + if db.session.get(Currency, field.data) is None: + raise ValidationError(lazy_gettext( + "The currency does not exist.")) diff --git a/src/accounting/journal_entry/forms/currency.py b/src/accounting/journal_entry/forms/currency.py index 8d16101..4dbe5ee 100644 --- a/src/accounting/journal_entry/forms/currency.py +++ b/src/accounting/journal_entry/forms/currency.py @@ -24,31 +24,16 @@ from flask_babel import LazyString from flask_wtf import FlaskForm from wtforms import StringField, ValidationError, FieldList, IntegerField, \ BooleanField, FormField -from wtforms.validators import DataRequired from accounting import db -from accounting.locale import lazy_gettext -from accounting.models import Currency, JournalEntryLineItem +from accounting.forms import CURRENCY_REQUIRED, CurrencyExists from accounting.journal_entry.utils.offset_alias import offset_alias +from accounting.locale import lazy_gettext +from accounting.models import JournalEntryLineItem from accounting.utils.cast import be from accounting.utils.strip_text import strip_text from .line_item import LineItemForm, CreditLineItemForm, DebitLineItemForm -CURRENCY_REQUIRED: DataRequired = DataRequired( - lazy_gettext("Please select the currency.")) -"""The validator to check if the currency code is empty.""" - - -class CurrencyExists: - """The validator to check if the account exists.""" - - def __call__(self, form: FlaskForm, field: StringField) -> None: - if field.data is None: - return - if db.session.get(Currency, field.data) is None: - raise ValidationError(lazy_gettext( - "The currency does not exist.")) - class SameCurrencyAsOriginalLineItems: """The validator to check if the currency is the same as the