35225-vm/core/views.py
Flatlogic Bot 7b5d9db799 lms2
2025-10-25 14:23:17 +00:00

71 lines
2.2 KiB
Python

from django.shortcuts import render, redirect, get_object_or_404
from .models import Book, Transaction
from .forms import BookForm, IssueBookForm
from django.utils import timezone
def index(request):
books = Book.objects.all()
context = {
'books': books,
'project_name': 'Library',
}
return render(request, 'core/index.html', context)
def add_book(request):
if request.method == 'POST':
form = BookForm(request.POST)
if form.is_valid():
book = form.save(commit=False)
book.available_copies = book.total_copies
book.save()
return redirect('index')
else:
form = BookForm()
context = {
'form': form,
'project_name': 'Library',
}
return render(request, 'core/add_book.html', context)
def issue_book(request, book_id):
book = get_object_or_404(Book, id=book_id)
if request.method == 'POST':
form = IssueBookForm(request.POST)
if form.is_valid():
if book.available_copies > 0:
transaction = form.save(commit=False)
transaction.book = book
transaction.save()
book.available_copies -= 1
book.save()
return redirect('index')
else:
# Handle case where no copies are available
pass
else:
form = IssueBookForm()
context = {
'form': form,
'book': book,
'project_name': 'Library',
}
return render(request, 'core/issue_book.html', context)
def transactions(request):
transactions = Transaction.objects.all().order_by('-issue_date')
context = {
'transactions': transactions,
'project_name': 'Library',
}
return render(request, 'core/transactions.html', context)
def return_book(request, transaction_id):
transaction = get_object_or_404(Transaction, id=transaction_id)
if not transaction.is_returned:
transaction.is_returned = True
transaction.return_date = timezone.now()
transaction.save()
transaction.book.available_copies += 1
transaction.book.save()
return redirect('transactions')