Skip to content
Snippets Groups Projects
Verified Commit 9ac09b79 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Implement batch borrowing to person. Advances #10, #11.

parent d082164d
No related branches found
No related tags found
No related merge requests found
......@@ -49,3 +49,8 @@ class BookCopyEditForm(forms.ModelForm):
class BookCopiesBulkAddForm(forms.Form):
count = forms.IntegerField(label=_('Number of copies'))
class BorrowPersonForm(forms.Form):
borrower = forms.ModelChoiceField(label=_('Person'), queryset=Person.objects.all())
barcodes = forms.CharField(label=_('Barcodes'), widget=forms.Textarea)
......@@ -22,6 +22,11 @@ MENUS = {
'name': _('Open copy'),
'url': 'get_copy',
'validators': ['menu_generator.validators.is_authenticated']
},
{
'name': _('Person borrowing'),
'url': 'person_borrow',
'validators': ['menu_generator.validators.is_authenticated']
}
]
}
......
{% extends "core/base.html" %}
{% load bootstrap4 i18n %}
{% block content %}
<h1>{% blocktrans %}Person batch borrowing{% endblocktrans %}</h1>
<form method="post">
{% csrf_token %}
{% bootstrap_form person_borrow_form %}
<input type="submit" value="Borrow" />
</form>
{% endblock %}
......@@ -23,5 +23,6 @@ urlpatterns = [
name='add_copies_by_book_id'),
path('book/add', views.add_book, name='add_book'),
path('book/isbn/<isbn>', views.edit_book, name='edit_book_by_isbn'),
path('books', views.books, name='books')
path('books', views.books, name='books'),
path('books/borrowing/person', views.person_borrow, name='person_borrow')
]
......@@ -254,3 +254,32 @@ def book_copy(request: HttpRequest, barcode: str, template: str) -> HttpResponse
context['book_copy'] = book_copy
return render(request, 'exlibris/copy_%s.html' % template, context)
@login_required
def person_borrow(request: HttpRequest) -> HttpResponse:
context = {}
person_borrow_form = PersonBorrowForm(request.POST or None)
if request.method == 'POST':
if person_borrow_form.is_valid():
person = person_borrow_form.cleaned_data['person']
for barcode in person_borrow_form.cleaned_data['barcodes'].splitlines():
try:
book_copy = BookCopy.objects.get(barcode=barcode)
except BookCopy.DoesNotExist:
messages.error(request, _('Barcode %s is invalid.') % barcode)
continue
book_copy.borrower = person
book_copy.save()
messages.success(request, _('Book %s borrowed to %s.') % book_copy.book.title)
person_borrow_form = PersonBorrowForm()
context['person_borrow_form'] = person_borrow_form
return render(request, 'exlibris/person_borrow.html', context)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment