From e9393ede28d507beb0ae73cff30546e831f251b0 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 9 May 2020 12:29:23 -0700 Subject: [PATCH] Adds remote ID to authors --- fedireads/connectors/fedireads_connector.py | 6 +++++- fedireads/migrations/0038_author_remote_id.py | 18 ++++++++++++++++++ fedireads/models/book.py | 1 + 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 fedireads/migrations/0038_author_remote_id.py diff --git a/fedireads/connectors/fedireads_connector.py b/fedireads/connectors/fedireads_connector.py index d00a2060..d5cec38e 100644 --- a/fedireads/connectors/fedireads_connector.py +++ b/fedireads/connectors/fedireads_connector.py @@ -1,4 +1,5 @@ ''' using another fedireads instance as a source of book data ''' +import re import requests from django.core.exceptions import ObjectDoesNotExist @@ -32,6 +33,9 @@ class Connector(AbstractConnector): def get_or_create_book(self, remote_id): ''' pull up a book record by whatever means possible ''' + # re-construct a remote id from the int and books_url + if re.match(r'^\d+$', remote_id): + remote_id = self.books_url + '/' + remote_id book = models.Book.objects.select_subclasses().filter( remote_id=remote_id ).first() @@ -146,7 +150,7 @@ class Connector(AbstractConnector): except ObjectDoesNotExist: pass - resp = requests.get('%s/authors/%s.json' % (self.url, remote_id)) + resp = requests.get('%s/authors/%s.json' % (self.base_url, remote_id)) if not resp.ok: resp.raise_for_status() diff --git a/fedireads/migrations/0038_author_remote_id.py b/fedireads/migrations/0038_author_remote_id.py new file mode 100644 index 00000000..7a367c90 --- /dev/null +++ b/fedireads/migrations/0038_author_remote_id.py @@ -0,0 +1,18 @@ +# Generated by Django 3.0.3 on 2020-05-09 19:27 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('fedireads', '0037_auto_20200504_0154'), + ] + + operations = [ + migrations.AddField( + model_name='author', + name='remote_id', + field=models.CharField(max_length=255, null=True), + ), + ] diff --git a/fedireads/models/book.py b/fedireads/models/book.py index d7944984..a3510397 100644 --- a/fedireads/models/book.py +++ b/fedireads/models/book.py @@ -150,6 +150,7 @@ class Edition(Book): class Author(FedireadsModel): ''' copy of an author from OL ''' + remote_id = models.CharField(max_length=255, null=True) openlibrary_key = models.CharField(max_length=255, blank=True, null=True) sync = models.BooleanField(default=True) last_sync_date = models.DateTimeField(default=timezone.now)