Added the limitation so that the default currency and the currencies in use cannot be deleted.
This commit is contained in:
@ -160,6 +160,9 @@ def delete_currency(currency: Currency) -> redirect:
|
||||
:return: The redirection to the currency list on success, or the currency
|
||||
detail on error.
|
||||
"""
|
||||
if not currency.can_delete:
|
||||
flash(s(lazy_gettext("The currency cannot be deleted.")), "error")
|
||||
return redirect(inherit_next(__get_detail_uri(currency)))
|
||||
currency.delete()
|
||||
db.session.commit()
|
||||
flash(s(lazy_gettext("The currency is deleted successfully.")), "success")
|
||||
|
@ -432,6 +432,17 @@ class Currency(db.Model):
|
||||
return True
|
||||
return False
|
||||
|
||||
@property
|
||||
def can_delete(self) -> bool:
|
||||
"""Returns whether the currency can be deleted.
|
||||
|
||||
:return: True if the currency can be deleted, or False otherwise.
|
||||
"""
|
||||
from accounting.template_globals import default_currency_code
|
||||
if self.code == default_currency_code():
|
||||
return False
|
||||
return len(self.line_items) == 0
|
||||
|
||||
def delete(self) -> None:
|
||||
"""Deletes the currency.
|
||||
|
||||
|
@ -37,10 +37,17 @@ First written: 2023/2/6
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if accounting_can_edit() %}
|
||||
<button class="btn btn-danger" type="button" data-bs-toggle="modal" data-bs-target="#accounting-delete-modal">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
<span class="d-none d-md-inline">{{ A_("Delete") }}</span>
|
||||
</button>
|
||||
{% if obj.can_delete %}
|
||||
<button class="btn btn-danger" type="button" data-bs-toggle="modal" data-bs-target="#accounting-delete-modal">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
<span class="d-none d-md-inline">{{ A_("Delete") }}</span>
|
||||
</button>
|
||||
{% else %}
|
||||
<button class="btn btn-secondary" type="button" disabled="disabled">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
<span class="d-none d-md-inline">{{ A_("Delete") }}</span>
|
||||
</button>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
@ -52,7 +59,7 @@ First written: 2023/2/6
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if accounting_can_edit() %}
|
||||
{% if accounting_can_edit() and obj.can_delete %}
|
||||
<form action="{{ url_for("accounting.currency.delete", currency=obj) }}" method="post">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
{% if request.args.next %}
|
||||
|
Reference in New Issue
Block a user