Skip to content

Commit

Permalink
refactor: User Model moved into otterwiki.models
Browse files Browse the repository at this point in the history
  • Loading branch information
redimp committed Nov 10, 2024
1 parent 07ac1f3 commit e9d6cbe
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 28 deletions.
31 changes: 3 additions & 28 deletions otterwiki/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from otterwiki.server import app, db
from otterwiki.helper import toast, send_mail, serialize, deserialize, SerializeError
from otterwiki.util import random_password, empty
from otterwiki.models import TimeStamp
from otterwiki.models import User as UserModel
from datetime import datetime
import hmac

Expand All @@ -39,33 +39,8 @@ def check_password_hash_backport(pwhash, password):


class SimpleAuth:
# User Model
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))
email = db.Column(db.String(128), index=True, unique=True)
password_hash = db.Column(db.String(512))
first_seen = db.Column(TimeStamp())
last_seen = db.Column(TimeStamp())
is_approved = db.Column(db.Boolean(), default=False)
is_admin = db.Column(db.Boolean(), default=False)
email_confirmed = db.Column(db.Boolean(), default=False)
allow_read = db.Column(db.Boolean(), default=False)
allow_write = db.Column(db.Boolean(), default=False)
allow_upload = db.Column(db.Boolean(), default=False)

def __repr__(self):
permissions = ""
if self.allow_read: permissions+="R"
if self.allow_write: permissions+="W"
if self.allow_upload: permissions+="U"
if self.is_admin: permissions+="A"
return f"<User {self.id} '{self.name} <{self.email}>' {permissions}>"

def __init__(self):
with app.app_context():
# create tables
db.create_all()
class User(UserMixin, UserModel):
pass

def user_loader(self, id):
return self.User.query.filter_by(id=int(id)).first()
Expand Down
29 changes: 29 additions & 0 deletions otterwiki/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

__all__ = ['Preferences', 'Drafts']


class TimeStamp(db.types.TypeDecorator):
# thanks to https://mike.depalatis.net/blog/sqlalchemy-timestamps.html
impl = db.types.DateTime
Expand All @@ -22,13 +23,15 @@ def process_result_value(self, value, dialect):

return value.astimezone(UTC)


class Preferences(db.Model):
name = db.Column(db.String(256), primary_key=True)
value = db.Column(db.Text)

def __str__(self):
return '{}: {}'.format(self.name, self.value)


class Drafts(db.Model):
id = db.Column(db.Integer, primary_key=True)
pagepath = db.Column(db.String(2048), index=True)
Expand All @@ -40,3 +43,29 @@ class Drafts(db.Model):
datetime = db.Column(TimeStamp())


class User(db.Model):
__tablename__ = "user"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))
email = db.Column(db.String(128), index=True, unique=True)
password_hash = db.Column(db.String(512))
first_seen = db.Column(TimeStamp())
last_seen = db.Column(TimeStamp())
is_approved = db.Column(db.Boolean(), default=False)
is_admin = db.Column(db.Boolean(), default=False)
email_confirmed = db.Column(db.Boolean(), default=False)
allow_read = db.Column(db.Boolean(), default=False)
allow_write = db.Column(db.Boolean(), default=False)
allow_upload = db.Column(db.Boolean(), default=False)

def __repr__(self):
permissions = ""
if self.allow_read:
permissions += "R"
if self.allow_write:
permissions += "W"
if self.allow_upload:
permissions += "U"
if self.is_admin:
permissions += "A"
return f"<User {self.id} '{self.name} <{self.email}>' {permissions}>"

0 comments on commit e9d6cbe

Please sign in to comment.