Commit 24e4e45e authored by impfundev's avatar impfundev

fix: sifting dashboard from function base to class based views

parent 72b8375a
...@@ -41,6 +41,10 @@ ...@@ -41,6 +41,10 @@
<div class="card-header">Total</div> <div class="card-header">Total</div>
<p class="h1">{{ total_book_loans }}</p> <p class="h1">{{ total_book_loans }}</p>
</div> </div>
<div class="card">
<div class="card-header">Upcoming</div>
<p class="h1">{{ total_upcoming }}</p>
</div>
<div class="card"> <div class="card">
<div class="card-header">Overdue</div> <div class="card-header">Overdue</div>
<p class="h1">{{ total_overdue }}</p> <p class="h1">{{ total_overdue }}</p>
......
from django.urls import path, include from django.urls import path, include
from dashboards.views import index, UpcomingLoanView, OverduedLoanView from dashboards.views import DashboardView, UpcomingLoanView, OverduedLoanView
urlpatterns = [ urlpatterns = [
path("", index, name="dashboard"), path("", DashboardView.as_view(), name="dashboard"),
path("books/", include("books.urls")), path("books/", include("books.urls")),
path("members/", include("members.urls")), path("members/", include("members.urls")),
path("book-loans/", include("book_loans.urls")), path("book-loans/", include("book_loans.urls")),
......
...@@ -78,34 +78,37 @@ class HomePage(TemplateView): ...@@ -78,34 +78,37 @@ class HomePage(TemplateView):
template_name = "homepage.html" template_name = "homepage.html"
def index(request): class DashboardView(TemplateView):
latest_login_history = LoginHistory.objects.order_by("-login_at")[:10] 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_book = Book.objects.count()
total_member = Members.objects.count() total_member = Members.objects.count()
total_book_loans = BookLoans.objects.count() total_book_loans = book_loans.count()
now = datetime.now() def get_context_data(self, **kwargs):
overdue_loans = BookLoans.objects.filter( context = super().get_context_data(**kwargs)
due_date__lte=now, return_date=None now = datetime.now()
).order_by("created_at") overdue_loans = self.book_loans.filter(
due_date__lte=now, return_date=None
due_date_treshold = now.today() + timedelta(days=3) ).order_by("-created_at")[:10]
upcoming_loans = BookLoans.objects.filter( due_date_treshold = now.today() + timedelta(days=3)
due_date__lte=due_date_treshold, return_date=None
).filter(due_date__gte=now.today()) upcoming_loans = (
self.book_loans.filter(due_date__lte=due_date_treshold, return_date=None)
context = { .filter(due_date__gte=now.today())
"login_histories": latest_login_history, .order_by("-created_at")[:10]
"total_book": total_book, )
"total_member": total_member,
"total_book_loans": total_book_loans, context["login_histories"] = self.login_history
"total_overdue": overdue_loans.count(), context["total_book"] = self.total_book
"overdue_loans": overdue_loans, context["total_member"] = self.total_member
"upcoming_loans": upcoming_loans, context["total_book_loans"] = self.total_book_loans
} context["total_overdue"] = overdue_loans.count()
context["total_upcoming"] = upcoming_loans.count()
if overdue_loans.exists():
context["overdue_loans"] = overdue_loans 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