Commit 688b1650 authored by impfundev's avatar impfundev

feat: upcoming loan

parent 252d9cf5
...@@ -19,12 +19,13 @@ class BookLoanForm(forms.Form): ...@@ -19,12 +19,13 @@ class BookLoanForm(forms.Form):
) )
) )
return_date = forms.DateTimeField( return_date = forms.DateTimeField(
required=False,
widget=forms.DateTimeInput( widget=forms.DateTimeInput(
attrs={ attrs={
"type": "datetime-local", "type": "datetime-local",
"class": "form-control", "class": "form-control",
} }
) ),
) )
notes = forms.CharField( notes = forms.CharField(
widget=forms.Textarea( widget=forms.Textarea(
......
...@@ -32,7 +32,14 @@ ...@@ -32,7 +32,14 @@
<option value="{{ member.id }}">{{ member.name }}</option> <option value="{{ member.id }}">{{ member.name }}</option>
{% endfor %} {% endfor %}
</select> </select>
{{ form }} {% for field in form %}
<div class="py-1">
<label for="{{ field.id }}" class="form-label"
>{{ field.label }}</label
>
{{ field }}
</div>
{% endfor %}
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
......
...@@ -9,7 +9,7 @@ from book_loans.forms import BookLoanForm ...@@ -9,7 +9,7 @@ from book_loans.forms import BookLoanForm
def index(request): def index(request):
latest_book_loan_list = BookLoans.objects.order_by("created_at")[:10] latest_book_loan_list = BookLoans.objects.order_by("-created_at")[:10]
books = Book.objects.all() books = Book.objects.all()
member = Members.objects.all() member = Members.objects.all()
context = { context = {
...@@ -26,7 +26,7 @@ def index(request): ...@@ -26,7 +26,7 @@ def index(request):
member_id = request.POST["member"] member_id = request.POST["member"]
loan_date = form.data["loan_date"] loan_date = form.data["loan_date"]
due_date = form.data["due_date"] due_date = form.data["due_date"]
return_date = form.data["return_date"] return_date = form.data["return_date"] or None
notes = form.data["notes"] notes = form.data["notes"]
auth_session = request.session.get("auth_session", None) auth_session = request.session.get("auth_session", None)
...@@ -40,9 +40,9 @@ def index(request): ...@@ -40,9 +40,9 @@ def index(request):
member_id=member_id, member_id=member_id,
loan_date=loan_date, loan_date=loan_date,
due_date=due_date, due_date=due_date,
return_date=return_date,
notes=notes, notes=notes,
librarians_id=librarians_id, librarians_id=librarians_id,
return_date=return_date,
) )
return render(request, "loans.html", context) return render(request, "loans.html", context)
...@@ -77,14 +77,19 @@ def update(request, id): ...@@ -77,14 +77,19 @@ def update(request, id):
librarians_id = decoded["librarian_id"] librarians_id = decoded["librarian_id"]
if form.is_valid: if form.is_valid:
loan_date = form.data["loan_date"]
due_date = form.data["due_date"]
return_date = form.data["return_date"] or None
notes = form.data["notes"]
loan.update( loan.update(
book_id=book_id, book_id=book_id,
member_id=member_id, member_id=member_id,
librarians_id=librarians_id, librarians_id=librarians_id,
loan_date=form.data["loan_date"], loan_date=loan_date,
due_date=form.data["due_date"], due_date=due_date,
return_date=form.data["return_date"], return_date=return_date,
notes=form.data["notes"], notes=notes,
updated_at=datetime.now(), updated_at=datetime.now(),
) )
return HttpResponseRedirect("/dashboard/book-loans") return HttpResponseRedirect("/dashboard/book-loans")
......
<div class="card-header"> <div class="card-header">
<h2 class="h4">Near Overdue Book Loan</h2> <h2 class="h4">Near Outstanding Book Loan</h2>
</div> </div>
<div class="card-body"> <div class="card-body">
<table class="table table-striped"> <table class="table table-striped">
<legend class="h3"></legend>
<thead> <thead>
<tr class="table-primary"> <tr class="table-primary">
<th scope="col">Book Title</th> <th scope="col">Book Title</th>
......
...@@ -30,12 +30,12 @@ def index(request): ...@@ -30,12 +30,12 @@ def index(request):
if overdue_loans.exists(): if overdue_loans.exists():
context["overdue_loans"] = overdue_loans context["overdue_loans"] = overdue_loans
near_overdue_loans = {} due_date_threshold = now - timedelta(days=3)
for loan in BookLoans.objects.all(): upcoming_loan = (
three_day_before_overdue = loan.due_date - timedelta(days=3) BookLoans.objects.filter(due_date__gte=now)
if three_day_before_overdue.timestamp() >= now.timestamp(): .filter(due_date__gte=due_date_threshold)
near_overdue_loans = overdue_loans .order_by("-due_date")
)
context["near_overdue_loans"] = near_overdue_loans context["near_overdue_loans"] = upcoming_loan
return render(request, "dashboard/index.html", context) return render(request, "dashboard/index.html", 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