Spaces:
Sleeping
Sleeping
from . import db | |
from flask_login import UserMixin | |
from werkzeug.security import generate_password_hash, check_password_hash | |
from datetime import datetime | |
from .config import Config | |
class User(UserMixin, db.Model): | |
id = db.Column(db.Integer, primary_key=True) | |
username = db.Column(db.String(64), index=True, unique=True) | |
password_hash = db.Column(db.String(128)) | |
embedding_hash = db.Column(db.String(256)) | |
salt = db.Column(db.String(32)) | |
created_at = db.Column(db.DateTime, default=datetime.utcnow) | |
last_active = db.Column(db.DateTime, default=datetime.utcnow) | |
is_admin = db.Column(db.Boolean, default=False) | |
is_banned = db.Column(db.Boolean, default=False) | |
storage_limit = db.Column(db.BigInteger, default=Config.DEFAULT_STORAGE_LIMIT) | |
files = db.relationship('File', backref='owner', lazy='dynamic', cascade="all, delete-orphan") | |
def set_password(self, password): | |
self.password_hash = generate_password_hash(password) | |
def check_password(self, password): | |
return check_password_hash(self.password_hash, password) | |
def get_used_storage(self): | |
return sum(file.size for file in self.files) | |
def update_last_active(self): | |
self.last_active = datetime.utcnow() | |
db.session.commit() | |
class File(db.Model): | |
id = db.Column(db.Integer, primary_key=True) | |
filename = db.Column(db.String(256)) | |
content = db.Column(db.LargeBinary) | |
size = db.Column(db.BigInteger) | |
created_at = db.Column(db.DateTime, default=datetime.utcnow) | |
user_id = db.Column(db.Integer, db.ForeignKey('user.id')) | |
from . import login_manager | |
def load_user(id): | |
return User.query.get(int(id)) | |