from app import db, login_manager from flask_login import UserMixin from werkzeug.security import generate_password_hash, check_password_hash from datetime import datetime class User(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), index=True, unique=True, nullable=False) password_hash = db.Column(db.String(128), nullable=False) created_date = db.Column(db.DateTime, default=datetime.utcnow) theme_color = db.Column(db.String(20), default='#50fa7b') # Default green color documents = db.relationship('Document', backref='author', lazy='dynamic') categories = db.relationship('Category', backref='owner', lazy='dynamic') def __repr__(self): return f'' 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 to_dict(self): return { 'id': self.id, 'username': self.username, 'created_date': self.created_date.isoformat(), 'theme_color': self.theme_color } @login_manager.user_loader def load_user(id): return User.query.get(int(id))