From feae9c034d0efe358b2cda996931732d82c6f938 Mon Sep 17 00:00:00 2001 From: Daniel W Bond Date: Tue, 3 Mar 2020 21:24:10 -0500 Subject: [PATCH] added title and author fields to lookout, which are autopopulated on save by calling ISBNMetadata --- bookshare/lookouts/models.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/bookshare/lookouts/models.py b/bookshare/lookouts/models.py index 1f10e46..a5e84e3 100644 --- a/bookshare/lookouts/models.py +++ b/bookshare/lookouts/models.py @@ -7,6 +7,7 @@ from model_utils.models import TimeStampedModel from randomslugfield import RandomSlugField # imports from your apps from trades.models import Listing +from trades.utils import ISBNMetadata from core.models import Student @@ -17,6 +18,14 @@ class Lookout(TimeStampedModel): max_length=20, validators=[RegexValidator('[0-9xX-]{10,20}', message='Please enter a valid ISBN.')]) + + + title = models.CharField(max_length=200, + null=True, blank=True) + + author = models.CharField(max_length=200, + null=True, blank=True) + # would have to load in every conceivable course first # course = models.ForeignKey(Course) slug = RandomSlugField(length=6) @@ -25,9 +34,21 @@ class Lookout(TimeStampedModel): isbn_listings = models.Q(isbn=self.isbn, exchanged=False, cancelled=False) return Listing.objects.filter(isbn_listings) + def get_title_or_isbn(self): + if self.title: + return self.title + else: + return self.isbn + def get_absolute_url(self): return reverse('detail_lookout', kwargs={'slug': self.slug}) + def save(self, *args, **kwargs): + isbn_metadata = ISBNMetadata(self.isbn) + self.title = isbn_metadata.get('title') + self.author = isbn_metadata.get('authors') + super().save(*args, **kwargs) + def __unicode__(self): return '%s %s' % (self.owner.user.username, self.isbn) -- GitLab