2025-03-16 07:38:59 +00:00

44 lines
1.7 KiB
Python

from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash
import os
db = SQLAlchemy()
def init_db():
"""Create default admin account if database is empty"""
with db.session.begin():
if not User.query.first(): # Check if user table is empty
admin_password = os.getenv("TODOLIST_ADMIN_PASSWORD", "admin")
hashed_password = generate_password_hash(admin_password)
admin = User(username='admin', email='admin@example.pl', password=hashed_password, role='Administrator')
db.session.add(admin)
db.session.commit()
class User(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
role = db.Column(db.Enum('Administrator', 'User'), default='User')
password = db.Column(db.String(162), nullable=False)
def to_dict(self):
return {"id": self.id, "username": self.username, "email": self.email, "role": self.role}
class Task(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
title = db.Column(db.String(100), nullable=False)
description = db.Column(db.Text)
done = db.Column(db.Boolean, default=False)
due_date = db.Column(db.Date)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
def to_dict(self):
return {
"id": self.id,
"title": self.title,
"description": self.description,
"due_date": self.due_date,
"done": self.done,
"user_id": self.user_id
}