Adds book data source connector database table
This commit is contained in:
@ -8,6 +8,25 @@ from fedireads.utils.fields import JSONField, ArrayField
|
||||
from fedireads.utils.models import FedireadsModel
|
||||
|
||||
|
||||
class Connector(FedireadsModel):
|
||||
''' book data source connectors '''
|
||||
name = models.CharField(max_length=255)
|
||||
api_key = models.CharField(max_length=255, null=True)
|
||||
|
||||
base_url = models.CharField(max_length=255)
|
||||
covers_url = models.CharField(max_length=255)
|
||||
search_url = models.CharField(max_length=255, null=True)
|
||||
|
||||
key_name = models.CharField(max_length=255)
|
||||
|
||||
politeness_delay = models.IntegerField(null=True) #seconds
|
||||
max_query_count = models.IntegerField(null=True)
|
||||
# how many queries executed in a unit of time, like a day
|
||||
query_count = models.IntegerField(default=0)
|
||||
# when to reset the query count back to 0 (ie, after 1 day)
|
||||
query_count_expiry = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
|
||||
class Book(FedireadsModel):
|
||||
''' a generic book, which can mean either an edition or a work '''
|
||||
# these identifiers apply to both works and editions
|
||||
@ -17,10 +36,11 @@ class Book(FedireadsModel):
|
||||
misc_identifiers = JSONField(null=True)
|
||||
|
||||
# info about where the data comes from and where/if to sync
|
||||
origin = models.CharField(max_length=255, unique=True, null=True)
|
||||
local_edits = models.BooleanField(default=False)
|
||||
source_url = models.CharField(max_length=255, unique=True, null=True)
|
||||
sync = models.BooleanField(default=True)
|
||||
last_sync_date = models.DateTimeField(default=datetime.now)
|
||||
connector = models.ForeignKey(
|
||||
'Connector', on_delete=models.PROTECT, null=True)
|
||||
|
||||
# TODO: edit history
|
||||
|
||||
@ -55,7 +75,12 @@ class Book(FedireadsModel):
|
||||
return '%s/%s/%s' % (base_path, model_name, self.openlibrary_key)
|
||||
|
||||
def __repr__(self):
|
||||
return "<{} key={!r} title={!r} author={!r}>".format(self.__class__, self.openlibrary_key, self.title, self.author)
|
||||
return "<{} key={!r} title={!r} author={!r}>".format(
|
||||
self.__class__,
|
||||
self.openlibrary_key,
|
||||
self.title,
|
||||
self.author
|
||||
)
|
||||
|
||||
|
||||
class Work(Book):
|
||||
@ -82,6 +107,8 @@ class Author(FedireadsModel):
|
||||
name = models.CharField(max_length=255)
|
||||
last_name = models.CharField(max_length=255, null=True)
|
||||
first_name = models.CharField(max_length=255, null=True)
|
||||
aliases = ArrayField(models.CharField(max_length=255), blank=True, default=list)
|
||||
aliases = ArrayField(
|
||||
models.CharField(max_length=255), blank=True, default=list
|
||||
)
|
||||
bio = models.TextField(null=True, blank=True)
|
||||
|
||||
|
Reference in New Issue
Block a user