reduced number of queries needed when displaying when a book is already on a user wishlist
parent
b991c1d375
commit
5e9439b965
|
@ -97,12 +97,6 @@ class Work(models.Model):
|
|||
title = models.CharField(max_length=1000)
|
||||
openlibrary_id = models.CharField(max_length=50, null=True)
|
||||
|
||||
@classmethod
|
||||
def get_by_isbn(klass, isbn):
|
||||
for w in Work.objects.filter(Q(editions__isbn_10=isbn) | Q(editions__isbn_13=isbn)):
|
||||
return w
|
||||
return None
|
||||
|
||||
def cover_image_small(self):
|
||||
server_id = random.randint(0, 9)
|
||||
gb_id = self.editions.all()[0].googlebooks_id
|
||||
|
|
|
@ -50,14 +50,16 @@ def search(request):
|
|||
q = request.GET.get('q', None)
|
||||
results = gluejar_search(q)
|
||||
|
||||
# flag search result as on wishlist
|
||||
# TODO: make this better and faster
|
||||
# flag search result as on wishlist as appropriate
|
||||
if not request.user.is_anonymous():
|
||||
# get a list of all the googlebooks_ids for works on the user's wishlist
|
||||
wishlist = request.user.wishlist
|
||||
editions = models.Edition.objects.filter(work__wishlists__in=[wishlist])
|
||||
googlebooks_ids = [e['googlebooks_id'] for e in editions.values('googlebooks_id')]
|
||||
|
||||
# if the results is on their wishlist flag it
|
||||
for result in results:
|
||||
if not result.has_key('isbn_10'):
|
||||
continue
|
||||
work = models.Work.get_by_isbn(result['isbn_10'])
|
||||
if work and work in request.user.wishlist.works.all():
|
||||
if result['googlebooks_id'] in googlebooks_ids:
|
||||
result['on_wishlist'] = True
|
||||
else:
|
||||
result['on_wishlist'] = False
|
||||
|
|
Loading…
Reference in New Issue