70 lines
2 KiB
Python
70 lines
2 KiB
Python
from django.shortcuts import get_object_or_404
|
|
from django.urls import reverse_lazy
|
|
from history.utils import history
|
|
from main.views import NummiCreateView, NummiDeleteView, NummiUpdateView
|
|
from statement.views import StatementListView
|
|
from transaction.views import TransactionListView
|
|
|
|
from .forms import AccountForm
|
|
from .models import Account
|
|
|
|
|
|
class AccountCreateView(NummiCreateView):
|
|
model = Account
|
|
form_class = AccountForm
|
|
|
|
|
|
class AccountUpdateView(NummiUpdateView):
|
|
model = Account
|
|
form_class = AccountForm
|
|
pk_url_kwarg = "account"
|
|
|
|
def get_context_data(self, **kwargs):
|
|
_max = 8
|
|
data = super().get_context_data(**kwargs)
|
|
account = data["form"].instance
|
|
|
|
_transactions = account.transaction_set.all()
|
|
if _transactions.count() > _max:
|
|
data["transactions_url"] = reverse_lazy(
|
|
"account_transactions", args=(account.pk,)
|
|
)
|
|
_statements = account.statement_set.all()
|
|
if _statements.count() > _max:
|
|
data["statements_url"] = reverse_lazy(
|
|
"account_statements", args=(account.pk,)
|
|
)
|
|
|
|
return data | {
|
|
"transactions": _transactions[:8],
|
|
"new_statement_url": reverse_lazy(
|
|
"new_statement", kwargs={"account": account.pk}
|
|
),
|
|
"statements": _statements[:8],
|
|
"history": history(account.transaction_set),
|
|
}
|
|
|
|
|
|
class AccountDeleteView(NummiDeleteView):
|
|
model = Account
|
|
pk_url_kwarg = "account"
|
|
|
|
|
|
class AccountMixin:
|
|
def get_queryset(self):
|
|
self.account = get_object_or_404(
|
|
Account.objects.filter(user=self.request.user),
|
|
pk=self.kwargs.get("account"),
|
|
)
|
|
return super().get_queryset().filter(account=self.account)
|
|
|
|
def get_context_data(self, **kwargs):
|
|
return super().get_context_data(**kwargs) | {"account": self.account}
|
|
|
|
|
|
class AccountTListView(AccountMixin, TransactionListView):
|
|
pass
|
|
|
|
|
|
class AccountSListView(AccountMixin, StatementListView):
|
|
pass
|