mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-06-06 07:19:33 +00:00
BookDataModel: add merged_into field
This commit is contained in:
parent
1fabe51261
commit
6b672eda44
|
@ -22,6 +22,7 @@ class BookData(ActivityObject):
|
|||
aasin: Optional[str] = None
|
||||
isfdb: Optional[str] = None
|
||||
lastEditedBy: Optional[str] = None
|
||||
mergedInto: Optional[str] = None
|
||||
|
||||
|
||||
# pylint: disable=invalid-name
|
||||
|
|
33
bookwyrm/migrations/0196_merged_into.py
Normal file
33
bookwyrm/migrations/0196_merged_into.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
# Generated by Django 3.2.24 on 2024-02-22 09:05
|
||||
|
||||
import bookwyrm.models.fields
|
||||
from django.db import migrations
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("bookwyrm", "0195_alter_user_preferred_language"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="author",
|
||||
name="merged_into",
|
||||
field=bookwyrm.models.fields.ForeignKey(
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.PROTECT,
|
||||
to="bookwyrm.author",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="book",
|
||||
name="merged_into",
|
||||
field=bookwyrm.models.fields.ForeignKey(
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.PROTECT,
|
||||
to="bookwyrm.book",
|
||||
),
|
||||
),
|
||||
]
|
|
@ -1,4 +1,5 @@
|
|||
""" database schema for books and shelves """
|
||||
|
||||
from itertools import chain
|
||||
import re
|
||||
from typing import Any
|
||||
|
@ -71,6 +72,11 @@ class BookDataModel(ObjectMixin, BookWyrmModel):
|
|||
on_delete=models.PROTECT,
|
||||
null=True,
|
||||
)
|
||||
merged_into = fields.ForeignKey(
|
||||
"self",
|
||||
on_delete=models.PROTECT,
|
||||
null=True,
|
||||
)
|
||||
|
||||
@property
|
||||
def openlibrary_link(self):
|
||||
|
@ -190,9 +196,13 @@ class Book(BookDataModel):
|
|||
"""properties of this edition, as a string"""
|
||||
items = [
|
||||
self.physical_format if hasattr(self, "physical_format") else None,
|
||||
f"{self.languages[0]} language"
|
||||
if self.languages and self.languages[0] and self.languages[0] != "English"
|
||||
else None,
|
||||
(
|
||||
f"{self.languages[0]} language"
|
||||
if self.languages
|
||||
and self.languages[0]
|
||||
and self.languages[0] != "English"
|
||||
else None
|
||||
),
|
||||
str(self.published_date.year) if self.published_date else None,
|
||||
", ".join(self.publishers) if hasattr(self, "publishers") else None,
|
||||
]
|
||||
|
@ -252,6 +262,11 @@ class Work(OrderedCollectionPageMixin, Book):
|
|||
edition.save()
|
||||
return super().save(*args, **kwargs)
|
||||
|
||||
@property
|
||||
def editions(self):
|
||||
"""exclude editions that have been merged"""
|
||||
return self.editions.filter(merged_into__isnull=True)
|
||||
|
||||
@property
|
||||
def default_edition(self):
|
||||
"""in case the default edition is not set"""
|
||||
|
|
Loading…
Reference in a new issue