haldis/app/models/user.py

58 lines
1.7 KiB
Python
Raw Permalink Normal View History

2019-09-10 01:06:11 +02:00
"Script for everything User related in the database"
from typing import List, Optional
from models import db
class User(db.Model):
2022-04-20 01:27:52 +02:00
"""Class used for configuring the User model in the database"""
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
admin = db.Column(db.Boolean)
bias = db.Column(db.Integer)
2022-04-20 01:27:52 +02:00
# Microsoft OAUTH info
microsoft_uuid = db.Column(db.String(120), unique=True)
# Association logic
2022-05-30 18:50:46 +02:00
associations = db.Column(db.String(255), nullable=False, server_default="")
2022-04-20 01:27:52 +02:00
# Relations
2019-09-05 03:33:29 +02:00
runs = db.relation(
"Order",
backref="courier",
primaryjoin="Order.courier_id==User.id",
foreign_keys="Order.courier_id",
2019-09-05 03:33:29 +02:00
)
orderItems = db.relationship("OrderItem", backref="user", lazy="dynamic")
def association_list(self) -> List[str]:
return self.associations.split(",")
def configure(self, username: str, admin: bool, bias: int, *, microsoft_uuid: str = None, associations: Optional[List[str]] = None) -> None:
2022-04-20 01:27:52 +02:00
"""Configure the User"""
if associations is None:
associations = []
self.username = username
self.admin = admin
self.bias = bias
2022-04-20 01:27:52 +02:00
self.microsoft_uuid = microsoft_uuid
self.associations = ",".join(associations)
2019-09-10 01:06:11 +02:00
# pylint: disable=C0111, R0201
2019-09-08 00:41:50 +02:00
def is_authenticated(self) -> bool:
return True
2019-09-08 00:41:50 +02:00
def is_active(self) -> bool:
return True
2019-09-08 00:41:50 +02:00
def is_admin(self) -> bool:
return self.admin
2019-09-08 00:41:50 +02:00
def is_anonymous(self) -> bool:
return False
2019-09-08 00:41:50 +02:00
def get_id(self) -> str:
2019-08-31 00:50:01 +02:00
return str(self.id)
2019-09-08 00:41:50 +02:00
def __repr__(self) -> str:
2022-04-19 22:03:00 +02:00
return f"{self.username}"