from django.db import models
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
+from wikidata.client import Client
from .constants import WIKIDATA
from .utils import UnrelatedManager
from .wikidata import WikidataMixin
name_de = models.CharField(max_length=255, blank=True)
name_lt = models.CharField(max_length=255, blank=True)
+ gender = models.CharField(max_length=255, blank=True)
+ nationality = models.CharField(max_length=255, blank=True)
year_of_death = models.SmallIntegerField(null=True, blank=True)
status = models.PositiveSmallIntegerField(
null=True,
collections = models.ManyToManyField("Collection", blank=True)
class Meta:
+ verbose_name = _('author')
+ verbose_name_plural = _('authors')
ordering = ("last_name", "first_name", "year_of_death")
class Wikidata:
first_name = WIKIDATA.GIVEN_NAME
last_name = WIKIDATA.LAST_NAME
year_of_death = WIKIDATA.DATE_OF_DEATH
+ gender = WIKIDATA.GENDER
notes = "description"
def __str__(self):
else:
return None
+
+class Category(WikidataMixin, models.Model):
+ name = models.CharField(max_length=255)
+ slug = models.SlugField(max_length=255, unique=True)
+
+ class Meta:
+ abstract = True
+
+
+class Epoch(Category):
+ class Meta:
+ verbose_name = _('epoch')
+ verbose_name_plural = _('epochs')
+
+
+class Genre(Category):
+ class Meta:
+ verbose_name = _('genre')
+ verbose_name_plural = _('genres')
+
+
+class Kind(Category):
+ class Meta:
+ verbose_name = _('kind')
+ verbose_name_plural = _('kinds')
+
+
class Book(WikidataMixin, models.Model):
slug = models.SlugField(max_length=255, blank=True, null=True, unique=True)
authors = models.ManyToManyField(Author, blank=True)
related_query_name="translated_book",
blank=True,
)
+ epochs = models.ManyToManyField(Epoch, blank=True)
+ kinds = models.ManyToManyField(Kind, blank=True)
+ genres = models.ManyToManyField(Genre, blank=True)
title = models.CharField(max_length=255, blank=True)
language = models.CharField(max_length=255, blank=True)
based_on = models.ForeignKey(
class Meta:
ordering = ("title",)
+ verbose_name = _('book')
+ verbose_name_plural = _('books')
class Wikidata:
authors = WIKIDATA.AUTHOR
name = models.CharField(max_length=255)
slug = models.SlugField(max_length=255, unique=True)
+ class Meta:
+ verbose_name = _('collection')
+ verbose_name_plural = _('collections')
+
def __str__(self):
return self.name
+