Moved the CURRENCY_REQUIRED and CurrencyExists validators from the "accounting.journal_entry.forms.currency" module to the "accounting.forms" module.

This commit is contained in:
依瑪貓 2023-03-22 07:17:45 +08:00
parent 855356084e
commit e2325f08d0
2 changed files with 44 additions and 18 deletions

41
src/accounting/forms.py Normal file
View File

@ -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."))

View File

@ -24,31 +24,16 @@ from flask_babel import LazyString
from flask_wtf import FlaskForm from flask_wtf import FlaskForm
from wtforms import StringField, ValidationError, FieldList, IntegerField, \ from wtforms import StringField, ValidationError, FieldList, IntegerField, \
BooleanField, FormField BooleanField, FormField
from wtforms.validators import DataRequired
from accounting import db from accounting import db
from accounting.locale import lazy_gettext from accounting.forms import CURRENCY_REQUIRED, CurrencyExists
from accounting.models import Currency, JournalEntryLineItem
from accounting.journal_entry.utils.offset_alias import offset_alias 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.cast import be
from accounting.utils.strip_text import strip_text from accounting.utils.strip_text import strip_text
from .line_item import LineItemForm, CreditLineItemForm, DebitLineItemForm 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: class SameCurrencyAsOriginalLineItems:
"""The validator to check if the currency is the same as the """The validator to check if the currency is the same as the