You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.4 KiB
Python

2 years ago
from datetime import datetime
from uuid import uuid4
from peewee import *
from PIL import Image
from flask_login import login_user
from flipbook import config
db = SqliteDatabase(f"data/flipbook.sqlite")
def rand_id():
return uuid4().hex
class Wallet(Model):
id = AutoField()
address = CharField(null=False, unique=True)
register_date = DateTimeField(default=datetime.utcnow)
login_date = DateTimeField(null=True)
opensea_handle = CharField(null=True)
twitter_handle = CharField(null=True)
nonce = CharField(default=rand_id())
nonce_date = DateTimeField(default=datetime.utcnow)
@property
def is_authenticated(self):
return True
@property
def is_active(self):
return True
@property
def is_anonymous(self):
return False
def generate_nonce(self):
return rand_id()
def change_nonce(self):
self.nonce = rand_id()
self.nonce_date = datetime.utcnow()
self.save()
def login(self):
self.change_nonce()
self.last_login_date = datetime.utcnow()
login_user(self)
self.save()
class Meta:
database = db
class Upload(Model):
id = AutoField()
token_id = IntegerField()
title = CharField()
text = CharField(null=True)
wallet = ForeignKeyField(Wallet)
image_name = CharField()
upload_date = DateTimeField(default=datetime.utcnow)
class Meta:
database = db