diff --git a/src/accounting/transaction/dispatcher.py b/src/accounting/transaction/dispatcher.py index f433ca6..1649cf3 100644 --- a/src/accounting/transaction/dispatcher.py +++ b/src/accounting/transaction/dispatcher.py @@ -14,7 +14,7 @@ # 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 view dispatcher for different transaction types. +"""The operators for different transaction types. """ import typing as t @@ -30,10 +30,10 @@ from .forms import TransactionForm, IncomeTransactionForm, \ ExpenseTransactionForm, TransferTransactionForm -class TransactionType(ABC): - """An abstract transaction type.""" +class TransactionOperator(ABC): + """The base transaction operator.""" CHECK_ORDER: int = -1 - """The order when checking the transaction type.""" + """The order when checking the transaction operator.""" @property @abstractmethod @@ -90,10 +90,10 @@ class TransactionType(ABC): entry_index="ENTRY_INDEX") -class IncomeTransaction(TransactionType): +class IncomeTransaction(TransactionOperator): """An income transaction.""" CHECK_ORDER: int = 2 - """The order when checking the transaction type.""" + """The order when checking the transaction operator.""" @property def form(self) -> t.Type[TransactionForm]: @@ -159,10 +159,10 @@ class IncomeTransaction(TransactionType): credit_total="-") -class ExpenseTransaction(TransactionType): +class ExpenseTransaction(TransactionOperator): """An expense transaction.""" CHECK_ORDER: int = 1 - """The order when checking the transaction type.""" + """The order when checking the transaction operator.""" @property def form(self) -> t.Type[TransactionForm]: @@ -228,10 +228,10 @@ class ExpenseTransaction(TransactionType): debit_total="-") -class TransferTransaction(TransactionType): +class TransferTransaction(TransactionOperator): """A transfer transaction.""" CHECK_ORDER: int = 3 - """The order when checking the transaction type.""" + """The order when checking the transaction operator.""" @property def form(self) -> t.Type[TransactionForm]: @@ -297,17 +297,17 @@ class TransferTransaction(TransactionType): debit_total="-", credit_total="-") -TXN_ENUM_TO_OP: dict[TransactionTypeEnum, TransactionType] \ +TXN_ENUM_TO_OP: dict[TransactionTypeEnum, TransactionOperator] \ = {TransactionTypeEnum.CASH_INCOME: IncomeTransaction(), TransactionTypeEnum.CASH_EXPENSE: ExpenseTransaction(), TransactionTypeEnum.TRANSFER: TransferTransaction()} -"""The map from the transaction type enum to its operator.""" +"""The map from the transaction types to their operators.""" -def get_txn_type_op(txn: Transaction) -> TransactionType: - """Returns the transaction type operator that may be specified in the "as" - query parameter. If it is not specified, check the transaction type from - the transaction. +def get_txn_op(txn: Transaction) -> TransactionOperator: + """Returns the transaction operator that may be specified in the "as" query + parameter. If it is not specified, check the transaction type from the + transaction. :param txn: The transaction. :return: None. diff --git a/src/accounting/transaction/views.py b/src/accounting/transaction/views.py index ddc72fe..0781035 100644 --- a/src/accounting/transaction/views.py +++ b/src/accounting/transaction/views.py @@ -34,7 +34,7 @@ from accounting.utils.pagination import Pagination from accounting.utils.permission import has_permission, can_view, can_edit from accounting.utils.txn_types import TransactionTypeEnum from accounting.utils.user import get_current_user_pk -from .dispatcher import TransactionType, TXN_ENUM_TO_OP, get_txn_type_op +from .dispatcher import TransactionOperator, TXN_ENUM_TO_OP, get_txn_op from .forms import sort_transactions_in, TransactionReorderForm from .queries import get_transaction_query from .template_filters import with_type, to_transfer, format_amount_input, \ @@ -71,15 +71,15 @@ def show_add_transaction_form(txn_type: TransactionTypeEnum) -> str: :param txn_type: The transaction type. :return: The form to add a transaction. """ - txn_type_op: TransactionType = TXN_ENUM_TO_OP[txn_type] - form: txn_type_op.form + txn_op: TransactionOperator = TXN_ENUM_TO_OP[txn_type] + form: txn_op.form if "form" in session: - form = txn_type_op.form(ImmutableMultiDict(parse_qsl(session["form"]))) + form = txn_op.form(ImmutableMultiDict(parse_qsl(session["form"]))) del session["form"] form.validate() else: - form = txn_type_op.form() - return txn_type_op.render_create_template(form) + form = txn_op.form() + return txn_op.render_create_template(form) @bp.post("/store/", endpoint="store") @@ -91,8 +91,8 @@ def add_transaction(txn_type: TransactionTypeEnum) -> redirect: :return: The redirection to the transaction detail on success, or the transaction creation form on error. """ - txn_type_op: TransactionType = TXN_ENUM_TO_OP[txn_type] - form: txn_type_op.form = txn_type_op.form(request.form) + txn_op: TransactionOperator = TXN_ENUM_TO_OP[txn_type] + form: txn_op.form = txn_op.form(request.form) if not form.validate(): flash_form_errors(form) session["form"] = urlencode(list(request.form.items())) @@ -114,8 +114,8 @@ def show_transaction_detail(txn: Transaction) -> str: :param txn: The transaction. :return: The detail. """ - txn_type_op: TransactionType = get_txn_type_op(txn) - return txn_type_op.render_detail_template(txn) + txn_op: TransactionOperator = get_txn_op(txn) + return txn_op.render_detail_template(txn) @bp.get("//edit", endpoint="edit") @@ -126,15 +126,15 @@ def show_transaction_edit_form(txn: Transaction) -> str: :param txn: The transaction. :return: The form to edit the transaction. """ - txn_type_op: TransactionType = get_txn_type_op(txn) - form: txn_type_op.form + txn_op: TransactionOperator = get_txn_op(txn) + form: txn_op.form if "form" in session: - form = txn_type_op.form(ImmutableMultiDict(parse_qsl(session["form"]))) + form = txn_op.form(ImmutableMultiDict(parse_qsl(session["form"]))) del session["form"] form.validate() else: - form = txn_type_op.form(obj=txn) - return txn_type_op.render_edit_template(txn, form) + form = txn_op.form(obj=txn) + return txn_op.render_edit_template(txn, form) @bp.post("//update", endpoint="update") @@ -146,8 +146,8 @@ def update_transaction(txn: Transaction) -> redirect: :return: The redirection to the transaction detail on success, or the transaction edit form on error. """ - txn_type_op: TransactionType = get_txn_type_op(txn) - form: txn_type_op.form = txn_type_op.form(request.form) + txn_op: TransactionOperator = get_txn_op(txn) + form: txn_op.form = txn_op.form(request.form) if not form.validate(): flash_form_errors(form) session["form"] = urlencode(list(request.form.items()))