1
0
Fork 0

Add book to database

This commit is contained in:
Mouse Reeve 2020-01-25 13:46:30 -08:00
parent 6b02d779fd
commit 4c4011ba75
5 changed files with 101 additions and 29 deletions

View file

@ -2,18 +2,31 @@
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.contrib.postgres.fields import JSONField
from Crypto.PublicKey import RSA
from Crypto import Random
from datetime import datetime
class User(AbstractUser):
''' a user who wants to read books '''
private_key = models.CharField(max_length=255)
public_key = models.CharField(max_length=255)
webfinger = JSONField(max_length=255)
actor = JSONField(max_length=255, blank=True, null=True)
api_key = models.CharField(max_length=255, blank=True, null=True)
followers = models.CharField(max_length=255, blank=True, null=True)
messages = models.CharField(max_length=255, blank=True, null=True)
created_date = models.DateTimeField()
updated_date = models.DateTimeField(blank=True, null=True)
created_date = models.DateTimeField(auto_now_add=True)
updated_date = models.DateTimeField(auto_now=True)
followers = models.ManyToManyField('self', symmetrical=False)
def save(self, *args, **kwargs):
# give a new user keys
if not self.private_key:
random_generator = Random.new().read
key = RSA.generate(1024, random_generator)
self.private_key = key
self.public_key = key.publickey()
if not self.id:
self.created_date = datetime.now()
self.updated_date = datetime.now()
super().save(*args, **kwargs)
class Message(models.Model):
@ -22,6 +35,8 @@ class Message(models.Model):
author = models.ForeignKey('User', on_delete=models.PROTECT)
name = models.CharField(max_length=255)
content = JSONField(max_length=5000)
created_date = models.DateTimeField(auto_now_add=True)
updated_date = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
@ -38,6 +53,9 @@ class Shelf(models.Model):
name = models.CharField(max_length=100)
user = models.ForeignKey('User', on_delete=models.PROTECT)
editable = models.BooleanField(default=True)
books = models.ManyToManyField('Book', symmetrical=False)
created_date = models.DateTimeField(auto_now_add=True)
updated_date = models.DateTimeField(auto_now=True)
class Book(models.Model):
@ -45,12 +63,15 @@ class Book(models.Model):
id = models.AutoField(primary_key=True)
openlibary_key = models.CharField(max_length=255)
data = JSONField()
added_date = models.DateTimeField()
updated_date = models.DateTimeField(blank=True, null=True)
works = models.ManyToManyField('Work')
added_by = models.ForeignKey('User', on_delete=models.PROTECT, blank=True, null=True)
added_date = models.DateTimeField(auto_now_add=True)
updated_date = models.DateTimeField(auto_now=True)
class ShelfBooks(models.Model):
''' many to many join table '''
class Work(models.Model):
id = models.AutoField(primary_key=True)
shelf = models.ForeignKey('Shelf', on_delete=models.PROTECT)
book = models.ForeignKey('Book', on_delete=models.PROTECT)
openlibary_key = models.CharField(max_length=255)
data = JSONField()
added_by = models.ForeignKey('User', on_delete=models.PROTECT, blank=True, null=True)
added_date = models.DateTimeField(auto_now_add=True)
updated_date = models.DateTimeField(auto_now=True)