diff options
author | Matt Arnold | 2025-04-09 18:18:37 -0400 |
---|---|---|
committer | Matt Arnold | 2025-04-09 18:18:37 -0400 |
commit | 4ac2861d28676bc886cf80b43a087f1f0044696a (patch) | |
tree | 48dd9e5e62860b137c4363f29d921646ff6f9889 /models.py | |
parent | d1745a9c1e46d43af005ac966cf4170192b76f97 (diff) |
Threaded blogging works
Diffstat (limited to 'models.py')
-rw-r--r-- | models.py | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/models.py b/models.py index 75af58b..26934d9 100644 --- a/models.py +++ b/models.py @@ -1,15 +1,50 @@ -from peewee import Model, CharField, TextField, DateTimeField, SqliteDatabase +from peewee import Model, CharField, TextField, DateTimeField, SqliteDatabase, BlobField +from peewee import IntegerField, ForeignKeyField +from flask_login import UserMixin +from werkzeug.security import check_password_hash, generate_password_hash from datetime import datetime from config import dbloc + # from app import db db = SqliteDatabase(dbloc) + + class BaseModel(Model): class Meta: database = db + +class User(UserMixin, BaseModel): + id = IntegerField(primary_key=True) + username = CharField(max_length=64, index=True, unique=True) + default_faccet = TextField(null=False) + password_hash = CharField(max_length=128) + + 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) + + +class Faccet(BaseModel): + user_belongs = ForeignKeyField(User, backref="parts") + name = TextField(unique=True) + picture = BlobField() + bio = TextField() + + class Post(BaseModel): + id = IntegerField(primary_key=True) + authour = ForeignKeyField(Faccet, backref="creator") + parent = IntegerField(default=0) title = CharField() content = TextField() created_at = DateTimeField(default=datetime.now) -db.create_tables([Post]) + +def get_replies(post_id): + return Post.select().where(Post.parent == post_id).order_by(Post.created_at.desc()) + + +db.create_tables([User, Post, Faccet]) |