From 9d6066c929f71af489184fe6f924732649478ae2 Mon Sep 17 00:00:00 2001 From: eric Date: Sat, 31 Dec 2011 13:48:54 -0500 Subject: [PATCH] catch IndexErrors to fix HermanCain bug; there is a work with zero editions --- api/views.py | 5 ++++- core/models.py | 15 ++++++++++++--- frontend/views.py | 6 ++++-- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/api/views.py b/api/views.py index cbfac4cd..88889051 100755 --- a/api/views.py +++ b/api/views.py @@ -104,7 +104,10 @@ class ApiHelpView(TemplateView): campaigns = models.Campaign.objects.all() if len(campaigns): c = campaigns[0] - isbn = c.work.editions.all()[0].isbn_13 + try: + isbn = c.work.editions.all()[0].isbn_13 + except IndexError: + isbn = '' context["campaign"] = campaigns[0] context["campaign_isbn"] = isbn diff --git a/core/models.py b/core/models.py index e850098c..ecc9ddb8 100755 --- a/core/models.py +++ b/core/models.py @@ -224,7 +224,10 @@ class Work(models.Model): @property def googlebooks_id(self): # may want to denormalize this at some point to avoid an extra query - return self.editions.all()[0].googlebooks_id + try: + return self.editions.all()[0].googlebooks_id + except IndexError: + return '' @property def googlebooks_url(self): @@ -248,10 +251,16 @@ class Work(models.Model): return "http://openlibrary.org" + self.openlibrary_id def cover_image_small(self): - return self.editions.all()[0].cover_image_small() + try: + return self.editions.all()[0].cover_image_small() + except IndexError: + return "/static/images/generic_cover_larger.png" def cover_image_thumbnail(self): - return self.editions.all()[0].cover_image_thumbnail() + try: + return self.editions.all()[0].cover_image_thumbnail() + except IndexError: + return "/static/images/generic_cover_larger.png" def author(self): authors = list(Author.objects.filter(editions__work=self).all()) diff --git a/frontend/views.py b/frontend/views.py index 3d11fdfd..9076844e 100755 --- a/frontend/views.py +++ b/frontend/views.py @@ -80,8 +80,10 @@ def work(request, work_id, action='display'): work = get_object_or_404(models.Work, id=work_id) editions = work.editions.all().order_by('-publication_date') campaign = work.last_campaign() - pubdate = work.editions.all()[0].publication_date[:4] - + try: + pubdate = work.editions.all()[0].publication_date[:4] + except IndexError: + pubdate = 'unknown' if not request.user.is_anonymous(): claimform = UserClaimForm( request.user, data={'work':work_id, 'user': request.user.id}) else: