X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/8676651fe1b1de0e033e644ddb93c53f8c9402d0..cc66b8d67b345b06b64b0f5de646baf09b8fbcd8:/apps/catalogue/views.py diff --git a/apps/catalogue/views.py b/apps/catalogue/views.py index 9ae50515d..f284e0a59 100644 --- a/apps/catalogue/views.py +++ b/apps/catalogue/views.py @@ -157,7 +157,7 @@ def search(request): def tags_starting_with(request): - prefix = request.GET['q'] + prefix = request.GET.get('q', '') # Prefix must have at least 2 characters if len(prefix) < 2: return HttpResponse('') @@ -188,8 +188,18 @@ def book_sets(request, slug): if request.method == 'POST': form = forms.ObjectSetsForm(book, request.user, request.POST) if form.is_valid(): - book.tags = ([models.Tag.objects.get(pk=id) for id in form.cleaned_data['set_ids']] + - list(book.tags.filter(~Q(category='set') | ~Q(user=request.user)))) + old_shelves = list(book.tags.filter(category='set')) + new_shelves = [models.Tag.objects.get(pk=id) for id in form.cleaned_data['set_ids']] + + for shelf in [shelf for shelf in old_shelves if shelf not in new_shelves]: + shelf.book_count -= 1 + shelf.save() + + for shelf in [shelf for shelf in new_shelves if shelf not in old_shelves]: + shelf.book_count += 1 + shelf.save() + + book.tags = new_shelves + list(book.tags.filter(~Q(category='set') | ~Q(user=request.user))) if request.is_ajax(): return HttpResponse('

Półki zostały zapisane.

') else: @@ -211,6 +221,9 @@ def remove_from_shelf(request, shelf, book): models.Tag.objects.remove_tag(book, shelf) + shelf.book_count -= 1 + shelf.save() + return HttpResponse('Usunieto')