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.
87 lines
2.0 KiB
Python
87 lines
2.0 KiB
Python
from datetime import datetime
|
|
from uuid import uuid4
|
|
from pathlib import Path
|
|
from os.path import splitext
|
|
|
|
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(null=False)
|
|
upload_date = DateTimeField(default=datetime.utcnow)
|
|
|
|
def get_thumbnail_name(self):
|
|
s = splitext(self.image_name)
|
|
return s[0] + '.thumbnail' + s[1]
|
|
|
|
def save_thumbnail(self):
|
|
try:
|
|
image = Image.open(Path(config.UPLOADS_PATH, self.image_name))
|
|
image.thumbnail((200,200), Image.ANTIALIAS)
|
|
image.save(Path(config.UPLOADS_PATH, self.get_thumbnail_name()), format=image.format, quality=90)
|
|
image.close()
|
|
return True
|
|
except Exception as e:
|
|
print(e)
|
|
return False
|
|
|
|
|
|
class Meta:
|
|
database = db
|