Commit 24e4e45e authored by impfundev's avatar impfundev

fix: sifting dashboard from function base to class based views

parent 72b8375a
......@@ -41,6 +41,10 @@
<div class="card-header">Total</div>
<p class="h1">{{ total_book_loans }}</p>
</div>
<div class="card">
<div class="card-header">Upcoming</div>
<p class="h1">{{ total_upcoming }}</p>
</div>
<div class="card">
<div class="card-header">Overdue</div>
<p class="h1">{{ total_overdue }}</p>
......
from django.urls import path, include
from dashboards.views import index, UpcomingLoanView, OverduedLoanView
from dashboards.views import DashboardView, UpcomingLoanView, OverduedLoanView
urlpatterns = [
path("", index, name="dashboard"),
path("", DashboardView.as_view(), name="dashboard"),
path("books/", include("books.urls")),
path("members/", include("members.urls")),
path("book-loans/", include("book_loans.urls")),
......
......@@ -78,34 +78,37 @@ class HomePage(TemplateView):
template_name = "homepage.html"
def index(request):
latest_login_history = LoginHistory.objects.order_by("-login_at")[:10]
class DashboardView(TemplateView):
template_name = "dashboard/index.html"
login_history = LoginHistory.objects.order_by("-login_at")[:10]
book_loans = BookLoans.objects.all()
total_book = Book.objects.count()
total_member = Members.objects.count()
total_book_loans = BookLoans.objects.count()
now = datetime.now()
overdue_loans = BookLoans.objects.filter(
due_date__lte=now, return_date=None
).order_by("created_at")
due_date_treshold = now.today() + timedelta(days=3)
upcoming_loans = BookLoans.objects.filter(
due_date__lte=due_date_treshold, return_date=None
).filter(due_date__gte=now.today())
context = {
"login_histories": latest_login_history,
"total_book": total_book,
"total_member": total_member,
"total_book_loans": total_book_loans,
"total_overdue": overdue_loans.count(),
"overdue_loans": overdue_loans,
"upcoming_loans": upcoming_loans,
}
if overdue_loans.exists():
total_book_loans = book_loans.count()
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
now = datetime.now()
overdue_loans = self.book_loans.filter(
due_date__lte=now, return_date=None
).order_by("-created_at")[:10]
due_date_treshold = now.today() + timedelta(days=3)
upcoming_loans = (
self.book_loans.filter(due_date__lte=due_date_treshold, return_date=None)
.filter(due_date__gte=now.today())
.order_by("-created_at")[:10]
)
context["login_histories"] = self.login_history
context["total_book"] = self.total_book
context["total_member"] = self.total_member
context["total_book_loans"] = self.total_book_loans
context["total_overdue"] = overdue_loans.count()
context["total_upcoming"] = upcoming_loans.count()
context["overdue_loans"] = overdue_loans
context["upcoming_loans"] = upcoming_loans
return render(request, "dashboard/index.html", context)
return context
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment