catch IndexErrors to fix HermanCain bug; there is a work with zero editions

pull/1/head
eric 2011-12-31 13:48:54 -05:00
parent c2789350d0
commit 9d6066c929
3 changed files with 20 additions and 6 deletions

View File

@ -104,7 +104,10 @@ class ApiHelpView(TemplateView):
campaigns = models.Campaign.objects.all() campaigns = models.Campaign.objects.all()
if len(campaigns): if len(campaigns):
c = campaigns[0] 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"] = campaigns[0]
context["campaign_isbn"] = isbn context["campaign_isbn"] = isbn

View File

@ -224,7 +224,10 @@ class Work(models.Model):
@property @property
def googlebooks_id(self): def googlebooks_id(self):
# may want to denormalize this at some point to avoid an extra query # 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 @property
def googlebooks_url(self): def googlebooks_url(self):
@ -248,10 +251,16 @@ class Work(models.Model):
return "http://openlibrary.org" + self.openlibrary_id return "http://openlibrary.org" + self.openlibrary_id
def cover_image_small(self): 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): 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): def author(self):
authors = list(Author.objects.filter(editions__work=self).all()) authors = list(Author.objects.filter(editions__work=self).all())

View File

@ -80,8 +80,10 @@ def work(request, work_id, action='display'):
work = get_object_or_404(models.Work, id=work_id) work = get_object_or_404(models.Work, id=work_id)
editions = work.editions.all().order_by('-publication_date') editions = work.editions.all().order_by('-publication_date')
campaign = work.last_campaign() 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(): if not request.user.is_anonymous():
claimform = UserClaimForm( request.user, data={'work':work_id, 'user': request.user.id}) claimform = UserClaimForm( request.user, data={'work':work_id, 'user': request.user.id})
else: else: