Merge branch 'main' into production

This commit is contained in:
Mouse Reeve 2020-11-04 13:33:23 -08:00
commit ea672c74e2
2 changed files with 27 additions and 3 deletions

View file

@ -3,6 +3,7 @@ from uuid import uuid4
from django.core.exceptions import ObjectDoesNotExist
from django.core.files.base import ContentFile
from django.db import transaction
import requests
from bookwyrm import models
@ -114,5 +115,22 @@ class Connector(AbstractConnector):
def expand_book_data(self, book):
# TODO
pass
work = book
# go from the edition to the work, if necessary
if isinstance(book, models.Edition):
work = book.parent_work
# it may be that we actually want to request this url
editions_url = '%s/editions?page=true' % work.remote_id
edition_options = get_data(editions_url)
for edition_data in edition_options['orderedItems']:
with transaction.atomic():
edition = self.create_book(
edition_data['id'],
edition_data,
models.Edition
)
edition.parent_work = work
edition.save()
if not edition.authors.exists() and work.authors.exists():
edition.authors.set(work.authors.all())

View file

@ -2,6 +2,7 @@
import re
from django.db import models
from django.db.models import Q
from django.utils import timezone
from model_utils.managers import InheritanceManager
@ -149,7 +150,12 @@ class Work(OrderedCollectionPageMixin, Book):
@property
def editions_path(self):
''' it'd be nice to serialize the edition instead but, recursion '''
return [e.remote_id for e in self.edition_set.all()]
default = self.default_edition
ed_list = [
e.local_id for e in self.edition_set.filter(~Q(id=default.id)).all()
]
return [default.local_id] + ed_list
def to_edition_list(self, **kwargs):
''' activitypub serialization for this work's editions '''