Differentiate works and editions more clearly

This commit is contained in:
Mouse Reeve
2020-03-30 14:12:18 -07:00
parent 44e1cf2a78
commit f7fb9dde99
6 changed files with 109 additions and 30 deletions

View File

@ -76,7 +76,7 @@ class Connector(AbstractConnector):
return self.update_from_data(book, data)
def update_from_data(self, book, data=None):
def update_from_data(self, book, data, work=None):
''' update a book from a json blob '''
mappings = {
'publish_date': ('published_date', get_date),
@ -98,12 +98,13 @@ class Connector(AbstractConnector):
book.save()
# this book sure as heck better be an edition
if data.get('works'):
key = data.get('works')[0]['key']
key = key.split('/')[-1]
work = self.get_or_create_book(key)
book.parent_work = work
if not work:
work = None
if data.get('works'):
key = data.get('works')[0]['key']
key = key.split('/')[-1]
work = self.get_or_create_book(key)
book.parent_work = work
if isinstance(book, models.Work):
# load editions of a work
@ -128,7 +129,7 @@ class Connector(AbstractConnector):
response = requests.get(
'%s/works/%s/editions.json' % (self.url, work.openlibrary_key))
edition_data = response.json()
for data in edition_data.get('entries', []):
for data in edition_data.get('entries', [])[:5]:
try:
olkey = data['key'].split('/')[-1]
except KeyError:
@ -140,7 +141,7 @@ class Connector(AbstractConnector):
continue
except ObjectDoesNotExist:
book = models.Edition.objects.create(openlibrary_key=olkey)
self.update_from_data(book, data)
self.update_from_data(book, data, work=work)
set_default_edition(work)