Added the "accounting.utils.next_uri" utilities to fixed how the next URI works.

This commit is contained in:
2023-02-01 16:30:02 +08:00
parent 2964f206a6
commit 241ad337c8
6 changed files with 101 additions and 13 deletions

View File

@ -26,6 +26,7 @@ from werkzeug.datastructures import ImmutableMultiDict
from accounting.database import db
from accounting.locale import lazy_gettext
from accounting.models import Account, BaseAccount
from accounting.utils.next_url import inherit_next, or_next
from accounting.utils.pagination import Pagination
from accounting.utils.permission import can_view, has_permission, can_edit
from .forms import AccountForm, sort_accounts_in
@ -79,13 +80,14 @@ def add_account() -> redirect:
for error in form.errors[key]:
flash(error, "error")
session["form"] = urlencode(list(request.form.items()))
return redirect(url_for("accounting.account.create"))
return redirect(inherit_next(url_for("accounting.account.create")))
account: Account = Account()
form.populate_obj(account)
db.session.add(account)
db.session.commit()
flash(lazy_gettext("The account is added successfully"), "success")
return redirect(url_for("accounting.account.detail", account=account))
return redirect(inherit_next(url_for("accounting.account.detail",
account=account)))
@bp.get("/<account:account>", endpoint="detail")
@ -130,16 +132,19 @@ def update_account(account: Account) -> redirect:
for error in form.errors[key]:
flash(error, "error")
session["form"] = urlencode(list(request.form.items()))
return redirect(url_for("accounting.account.edit", account=account))
return redirect(inherit_next(url_for("accounting.account.edit",
account=account)))
with db.session.no_autoflush:
form.populate_obj(account)
if not db.session.is_modified(account):
flash(lazy_gettext("The account was not modified."), "success")
return redirect(url_for("accounting.account.detail", account=account))
return redirect(inherit_next(url_for("accounting.account.detail",
account=account)))
form.post_update(account)
db.session.commit()
flash(lazy_gettext("The account is updated successfully."), "success")
return redirect(url_for("accounting.account.detail", account=account))
return redirect(inherit_next(url_for("accounting.account.detail",
account=account)))
@bp.post("/<account:account>/delete", endpoint="delete")
@ -156,4 +161,4 @@ def delete_account(account: Account) -> redirect:
sort_accounts_in(account.base_code, account.id)
db.session.commit()
flash(lazy_gettext("The account is deleted successfully."), "success")
return redirect(url_for("accounting.account.list"))
return redirect(or_next(url_for("accounting.account.list")))