2022-10-12 10:22:22 -04:00
|
|
|
"""Principal."""
|
|
|
|
from dataclasses import dataclass
|
|
|
|
|
|
|
|
from flask_bpmn.models.db import db
|
|
|
|
from flask_bpmn.models.db import SpiffworkflowBaseDBModel
|
|
|
|
from sqlalchemy import ForeignKey
|
2022-10-21 16:28:09 -04:00
|
|
|
from sqlalchemy.orm import relationship
|
2022-10-12 10:22:22 -04:00
|
|
|
from sqlalchemy.schema import CheckConstraint
|
|
|
|
|
2022-11-11 11:39:15 -05:00
|
|
|
from spiffworkflow_backend.models.group import GroupModel
|
|
|
|
from spiffworkflow_backend.models.user import UserModel
|
|
|
|
|
2022-10-12 10:22:22 -04:00
|
|
|
|
|
|
|
class DataValidityError(Exception):
|
|
|
|
"""DataValidityError."""
|
|
|
|
|
|
|
|
|
|
|
|
class MissingPrincipalError(DataValidityError):
|
|
|
|
"""MissingPrincipalError."""
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass
|
|
|
|
class PrincipalModel(SpiffworkflowBaseDBModel):
|
|
|
|
"""PrincipalModel."""
|
|
|
|
|
|
|
|
__tablename__ = "principal"
|
|
|
|
__table_args__ = (CheckConstraint("NOT(user_id IS NULL AND group_id IS NULL)"),)
|
|
|
|
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
|
|
user_id = db.Column(ForeignKey(UserModel.id), nullable=True, unique=True)
|
|
|
|
group_id = db.Column(ForeignKey(GroupModel.id), nullable=True, unique=True)
|
2022-10-21 16:28:09 -04:00
|
|
|
|
|
|
|
user = relationship("UserModel", viewonly=True)
|
|
|
|
group = relationship("GroupModel", viewonly=True)
|