class Funding(db.Model): __tablename__ = 'funding' funding_id: int = db.Column(db.Integer, primary_key=True, nullable=False, unique=True, autoincrement=True) email: str = db.Column(db.String(50), primary_key=True, nullable=False) code: str = db.Column(db.String(10), primary_key=True, nullable=False) title: str = db.Column(db.String(45)) body: str = db.Column(db.String(1600)) expiration: datetime = db.Column(db.DateTime) title_img_path: str = db.Column(db.String(100)) cover_img_path: str = db.Column(db.String(100)) header_img_paths: str = db.Column(db.String(500)) host: str = db.Column(db.String(10)) created_at: datetime = db.Column(db.DateTime, nullable=False, server_default=db.FetchedValue()) updated_at: datetime = db.Column(db.DateTime, nullable=False, server_default=db.FetchedValue()) ideas: List[Idea] = db.relationship('Idea', secondary='funding_has_idea', backref='fundings') tag: List[Tag] = db.relationship('Tag', secondary='funding_has_tag', backref='fundings')
class Order(db.Model): __tablename__ = 'order' __table_args__: Tuple[ForeignKeyConstraint, Index] = ( db.ForeignKeyConstraint( ('funding_funding_id', 'funding_email', 'funding_code'), ['funding.funding_id', 'funding.email', 'funding.code']), db.Index('fk_order_funding1_idx', 'funding_funding_id', 'funding_email', 'funding_code')) code: str = db.Column(db.String(10), primary_key=True, nullable=False) email: str = db.Column(db.String(50), primary_key=True, nullable=False) payee: str = db.Column(db.String(10), nullable=False) destination: str = db.Column(db.String(50), nullable=False) status: Type[Enum] = db.Column(db.Enum(OrderStatusEnum), nullable=False, server_default=db.FetchedValue()) ordered_at: str = db.Column(db.DateTime, nullable=False, server_default=db.FetchedValue()) funding_funding_id: int = db.Column(db.Integer, primary_key=True, nullable=False) funding_email: str = db.Column(db.String(50), primary_key=True, nullable=False) funding_code: str = db.Column(db.String(10), primary_key=True, nullable=False) funding: Funding = db.relationship( 'Funding', primaryjoin='and_(Order.funding_funding_id == Funding.funding_id, ' 'Order.funding_email == Funding.email, ' 'Order.funding_code == Funding.code)', backref='orders')
class SecurityPolicy(db.Model): __tablename__ = 'security_policy' id = db.Column(db.String(50), primary_key=True) login_failed_attempts = db.Column(db.SmallInteger, server_default=db.FetchedValue()) logout_after_inactivate = db.Column(db.BigInteger, server_default=db.FetchedValue()) password_expiration = db.Column(db.Integer, server_default=db.FetchedValue()) password_min_length = db.Column(db.SmallInteger, server_default=db.FetchedValue()) password_max_length = db.Column(db.SmallInteger, server_default=db.FetchedValue()) password_include_symbol = db.Column(db.Integer, server_default=db.FetchedValue()) password_include_number = db.Column(db.Integer, server_default=db.FetchedValue()) password_include_lower_case = db.Column(db.Integer, server_default=db.FetchedValue()) password_include_upper_case = db.Column(db.Integer, server_default=db.FetchedValue()) modified_date = db.Column(db.BigInteger) modified_by = db.Column(db.String(50)) @staticmethod def insert_policy(): _id = str(uuid.uuid1()) policy = SecurityPolicy(id=_id) db.session.add(policy) db.session.commit()
class User(UserMixin, db.Model): __tablename__ = 'users' id = db.Column(db.String(50), primary_key=True) username = db.Column(db.String(100), nullable=False, unique=True) password_hash = db.Column(db.String(255), nullable=False) login_failed_attempts = db.Column(db.SmallInteger, server_default=db.FetchedValue()) firstname = db.Column(db.String(100)) lastname = db.Column(db.String(100)) title = db.Column(db.String(50), server_default=db.FetchedValue()) is_active = db.Column(db.Boolean, default=True) group_id = db.Column(db.ForeignKey('groups.id'), index=True) lang = db.Column(db.String(50)) company = db.Column(db.String(50)) address = db.Column(db.String(255)) mobile = db.Column(db.String(50)) force_change_password = db.Column(db.Integer, server_default=db.FetchedValue()) create_date = db.Column(db.BigInteger) created_by = db.Column(db.ForeignKey('users.id'), index=True) modified_date = db.Column(db.BigInteger) modified_by = db.Column(db.ForeignKey('users.id'), index=True) group = db.relationship('Group', primaryjoin='User.group_id == Group.id', backref='user_groups') parent = db.relationship('User', remote_side=[id], primaryjoin='User.created_by == User.id', backref='user_users') parent1 = db.relationship('User', remote_side=[id], primaryjoin='User.modified_by == User.id', backref='user_users_0') @staticmethod def insert_user(): user = User.query.filter_by(username='******').first() if user is None: _id = str(uuid.uuid1()) user = User(id=_id, username='******', password_hash=hash_password('admin@1234'), group_id=admin_group_id) db.session.add(user) db.session.commit() def __init__(self, **kwargs): super(User, self).__init__(**kwargs) def can(self, perm): return self.group is not None and self.group.has_permission(perm)
class UserDisplay(db.Model): __tablename__ = 'users_display' id = db.Column(db.String(50), primary_key=True) username = db.Column(db.String(100), nullable=False, unique=True) login_failed_attempts = db.Column(db.SmallInteger, server_default=db.FetchedValue()) firstname = db.Column(db.String(100)) lastname = db.Column(db.String(100)) title = db.Column(db.String(50), server_default=db.FetchedValue()) is_active = db.Column(db.Boolean, default=True) group_id = db.Column(db.String(50)) lang = db.Column(db.String(50)) company = db.Column(db.String(50)) address = db.Column(db.String(255)) mobile = db.Column(db.String(50)) force_change_password = db.Column(db.Integer, server_default=db.FetchedValue()) create_date = db.Column(db.BigInteger) modified_date = db.Column(db.BigInteger) modified_by = db.Column(db.ForeignKey('users.id'), index=True)
class Idea(db.Model): __tablename__ = 'idea' idea_id: int = db.Column(db.Integer, primary_key=True, nullable=False, autoincrement=True) email: str = db.Column(db.String(50), primary_key=True, nullable=False) code: str = db.Column(db.String(10), primary_key=True, nullable=False) title: str = db.Column(db.String(45)) body: str = db.Column(db.String(1600)) created_at: datetime = db.Column(db.DateTime, nullable=False, server_default=db.FetchedValue()) updated_at: datetime = db.Column(db.DateTime, nullable=False, server_default=db.FetchedValue()) tag: List[Tag] = db.relationship('Tag', secondary='idea_has_tag', backref='ideas')
class FundingStatus(Funding): __tablename__ = 'funding_status' __table_args__: Tuple[ForeignKeyConstraint] = (db.ForeignKeyConstraint( ('funding_funding_id', 'funding_email', 'funding_code'), ['funding.funding_id', 'funding.email', 'funding.code'], ondelete='CASCADE', onupdate='CASCADE'), ) funding_funding_id: int = db.Column(db.Integer, primary_key=True, nullable=False) funding_email: str = db.Column(db.String(50), primary_key=True, nullable=False) funding_code: str = db.Column(db.String(10), primary_key=True, nullable=False) balance: int = db.Column(db.Integer, nullable=False, server_default=db.FetchedValue()) participants_num: int = db.Column(db.Integer, nullable=False, server_default=db.FetchedValue()) status: Type[Enum] = db.Column(db.Enum(FundingStatusEnum))