Added the current_app parameters to the uses of reverse() to enable different namespaces in the accounting application.
This commit is contained in:
parent
062f4422d1
commit
dec6233d4e
@ -22,6 +22,7 @@ import re
|
||||
from typing import Union, Optional
|
||||
|
||||
from django import template
|
||||
from django.template import RequestContext
|
||||
|
||||
from accounting.models import Account
|
||||
from accounting.utils import ReportUrl
|
||||
@ -47,13 +48,15 @@ def accounting_amount(value: Union[str, int]) -> str:
|
||||
return s
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def report_url(cash_account: Optional[Account],
|
||||
@register.simple_tag(takes_context=True)
|
||||
def report_url(context: RequestContext,
|
||||
cash_account: Optional[Account],
|
||||
ledger_account: Optional[Account],
|
||||
period: Optional[Period]) -> ReportUrl:
|
||||
"""Returns accounting report URL helper.
|
||||
|
||||
Args:
|
||||
context: The request context.
|
||||
cash_account: The current cash account.
|
||||
ledger_account: The current ledger account.
|
||||
period: The period.
|
||||
@ -62,6 +65,7 @@ def report_url(cash_account: Optional[Account],
|
||||
ReportUrl: The accounting report URL helper.
|
||||
"""
|
||||
return ReportUrl(
|
||||
namespace=context.request.resolver_match.namespace,
|
||||
cash=cash_account or None,
|
||||
ledger=ledger_account or None,
|
||||
period=period or None)
|
||||
|
@ -85,6 +85,7 @@ class ReportUrl:
|
||||
"""The URL of the accounting reports.
|
||||
|
||||
Args:
|
||||
namespace: The namespace of the current application.
|
||||
cash: The currently-specified account of the
|
||||
cash account or cash summary.
|
||||
ledger: The currently-specified account of the
|
||||
@ -92,36 +93,45 @@ class ReportUrl:
|
||||
period: The currently-specified period.
|
||||
"""
|
||||
|
||||
def __init__(self, cash: Account = None, ledger: Account = None,
|
||||
period: Period = None):
|
||||
def __init__(self, namespace: str, cash: Account = None,
|
||||
ledger: Account = None, period: Period = None,):
|
||||
self._period = Period() if period is None else period
|
||||
self._cash = get_default_cash_account() if cash is None else cash
|
||||
self._ledger = get_default_ledger_account()\
|
||||
if ledger is None else ledger
|
||||
self._namespace = namespace
|
||||
|
||||
def cash(self) -> str:
|
||||
return reverse("accounting:cash", args=[self._cash, self._period])
|
||||
return reverse("accounting:cash", args=[self._cash, self._period],
|
||||
current_app=self._namespace)
|
||||
|
||||
def cash_summary(self) -> str:
|
||||
return reverse("accounting:cash-summary", args=[self._cash])
|
||||
return reverse("accounting:cash-summary", args=[self._cash],
|
||||
current_app=self._namespace)
|
||||
|
||||
def ledger(self) -> str:
|
||||
return reverse("accounting:ledger", args=[self._ledger, self._period])
|
||||
return reverse("accounting:ledger", args=[self._ledger, self._period],
|
||||
current_app=self._namespace)
|
||||
|
||||
def ledger_summary(self) -> str:
|
||||
return reverse("accounting:ledger-summary", args=[self._ledger])
|
||||
return reverse("accounting:ledger-summary", args=[self._ledger],
|
||||
current_app=self._namespace)
|
||||
|
||||
def journal(self) -> str:
|
||||
return reverse("accounting:journal", args=[self._period])
|
||||
return reverse("accounting:journal", args=[self._period],
|
||||
current_app=self._namespace)
|
||||
|
||||
def trial_balance(self) -> str:
|
||||
return reverse("accounting:trial-balance", args=[self._period])
|
||||
return reverse("accounting:trial-balance", args=[self._period],
|
||||
current_app=self._namespace)
|
||||
|
||||
def income_statement(self) -> str:
|
||||
return reverse("accounting:income-statement", args=[self._period])
|
||||
return reverse("accounting:income-statement", args=[self._period],
|
||||
current_app=self._namespace)
|
||||
|
||||
def balance_sheet(self) -> str:
|
||||
return reverse("accounting:balance-sheet", args=[self._period])
|
||||
return reverse("accounting:balance-sheet", args=[self._period],
|
||||
current_app=self._namespace)
|
||||
|
||||
|
||||
class Populator:
|
||||
|
@ -705,7 +705,8 @@ def balance_sheet(request: HttpRequest, period: Period) -> HttpResponse:
|
||||
.filter(Q(amount__isnull=False), ~Q(amount=0))
|
||||
.order_by("code"))
|
||||
for account in accounts:
|
||||
account.url = reverse("accounting:ledger", args=[account, period])
|
||||
account.url = reverse("accounting:ledger", args=[account, period],
|
||||
current_app=request.resolver_match.namespace)
|
||||
balance = Record.objects \
|
||||
.filter(
|
||||
Q(transaction__date__lt=period.start)
|
||||
@ -722,7 +723,8 @@ def balance_sheet(request: HttpRequest, period: Period) -> HttpResponse:
|
||||
code=Account.ACCUMULATED_BALANCE)
|
||||
brought_forward.amount = balance
|
||||
brought_forward.url = reverse(
|
||||
"accounting:income-statement", args=[period.period_before()])
|
||||
"accounting:income-statement", args=[period.period_before()],
|
||||
current_app=request.resolver_match.namespace)
|
||||
accounts.append(brought_forward)
|
||||
balance = Record.objects \
|
||||
.filter(
|
||||
@ -740,7 +742,8 @@ def balance_sheet(request: HttpRequest, period: Period) -> HttpResponse:
|
||||
net_change = Account.objects.get(code=Account.NET_CHANGE)
|
||||
net_change.amount = balance
|
||||
net_change.url = reverse(
|
||||
"accounting:income-statement", args=[period])
|
||||
"accounting:income-statement", args=[period],
|
||||
current_app=request.resolver_match.namespace)
|
||||
accounts.append(net_change)
|
||||
for account in [x for x in accounts if x.code[0] in "23"]:
|
||||
account.amount = -account.amount
|
||||
@ -883,7 +886,9 @@ class TransactionDeleteView(DeleteView):
|
||||
return self.kwargs["txn"]
|
||||
|
||||
def get_success_url(self):
|
||||
return self.request.GET.get("r") or reverse("accounting:home")
|
||||
return self.request.GET.get("r")\
|
||||
or reverse("accounting:home",
|
||||
current_app=self.request.resolver_match.namespace)
|
||||
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
|
Loading…
Reference in New Issue
Block a user