mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-12-03 14:56:42 +00:00
Gracefully handle list duplicate additions
This commit is contained in:
parent
8842db3c1b
commit
b22e56333f
1 changed files with 23 additions and 18 deletions
|
@ -1,6 +1,7 @@
|
||||||
''' book list views'''
|
''' book list views'''
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.core.paginator import Paginator
|
from django.core.paginator import Paginator
|
||||||
|
from django.db import IntegrityError
|
||||||
from django.db.models import Count, Q
|
from django.db.models import Count, Q
|
||||||
from django.http import HttpResponseNotFound, HttpResponseBadRequest
|
from django.http import HttpResponseNotFound, HttpResponseBadRequest
|
||||||
from django.shortcuts import get_object_or_404, redirect
|
from django.shortcuts import get_object_or_404, redirect
|
||||||
|
@ -181,24 +182,28 @@ def add_book(request, list_id):
|
||||||
|
|
||||||
book = get_object_or_404(models.Edition, id=request.POST.get('book'))
|
book = get_object_or_404(models.Edition, id=request.POST.get('book'))
|
||||||
# do you have permission to add to the list?
|
# do you have permission to add to the list?
|
||||||
if request.user == book_list.user or book_list.curation == 'open':
|
try:
|
||||||
# go ahead and add it
|
if request.user == book_list.user or book_list.curation == 'open':
|
||||||
models.ListItem.objects.create(
|
# go ahead and add it
|
||||||
book=book,
|
models.ListItem.objects.create(
|
||||||
book_list=book_list,
|
book=book,
|
||||||
user=request.user,
|
book_list=book_list,
|
||||||
)
|
user=request.user,
|
||||||
elif book_list.curation == 'curated':
|
)
|
||||||
# make a pending entry
|
elif book_list.curation == 'curated':
|
||||||
models.ListItem.objects.create(
|
# make a pending entry
|
||||||
approved=False,
|
models.ListItem.objects.create(
|
||||||
book=book,
|
approved=False,
|
||||||
book_list=book_list,
|
book=book,
|
||||||
user=request.user,
|
book_list=book_list,
|
||||||
)
|
user=request.user,
|
||||||
else:
|
)
|
||||||
# you can't add to this list, what were you THINKING
|
else:
|
||||||
return HttpResponseBadRequest()
|
# you can't add to this list, what were you THINKING
|
||||||
|
return HttpResponseBadRequest()
|
||||||
|
except IntegrityError:
|
||||||
|
# if the book is already on the list, don't flip out
|
||||||
|
pass
|
||||||
|
|
||||||
return redirect('list', list_id)
|
return redirect('list', list_id)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue