from db import db from enum import Enum class UserProjectRoles(Enum): ADMIN = 0 EDITOR = 1 LABELMATE = 2 VIEWER = 3 APPROVER = 4 @classmethod def has_value(cls, role): return role in map(lambda r: r.value, cls.__members__.values()) class UserProject(db.Model): __tablename__ = "UserProject" id = db.Column(db.Integer, primary_key=True) project_id = db.Column(db.Integer, db.ForeignKey("Project.id", ondelete="CASCADE"), nullable=False) editable = db.Column(db.Boolean, nullable=False, default=False) user_id = db.Column(db.Integer, db.ForeignKey("User.id"), nullable=False, index=True) shared_by = db.Column(db.Integer, db.ForeignKey("User.id"), nullable=False) role = db.Column(db.Integer, nullable=False) user = db.relationship("User", foreign_keys=[user_id]) project = db.relationship("Project", foreign_keys=[project_id]) campaign_type_groups = db.relationship("CampaignTypeGroup", secondary="UserProjectCampaignTypeGroup") user_project_campaign_type_group = db.Table( "UserProjectCampaignTypeGroup", db.Model.metadata, db.Column("user_project_id", db.Integer, db.ForeignKey("UserProject.id", ondelete="CASCADE"), primary_key=True), db.Column("campaign_type_group_id", db.Integer, db.ForeignKey("CampaignTypeGroup.id"), primary_key=True), )