class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return '<User %r>' % self.username
class Application(db.Model): name = db.Column(db.String(120), unique=True, nullable=False, primary_key=True) fields = db.Column(db.String(255), unique=False, nullable=True, default='[]', server_default='[]') s3_buckets = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return '<Application %r>' % self.name
class User(db.Model): """ User model used for storing name and email of the user """ id = db.Column(db.Text(length=36), default=lambda: str(uuid.uuid4()), primary_key=True) email = db.Column(db.String(120), index=True) name = db.Column(db.String(255)) created_at = db.Column(db.DateTime, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow) __tablename__ = 'user' def __repr__(self): return 'User {}'.format(self.name) def to_dict(self): """ """ data = { 'id': self.id, 'email': self.email, 'name': self.name, 'created_at': self.created_at.strftime('%Y-%m-%dT%H:%M:%S.%fZ'), 'updated_at': self.updated_at.strftime('%Y-%m-%dT%H:%M:%S.%fZ') } return data
class Messages(db.Model): __tablename__ = 'tr_messages' id = db.Column(db.Integer, primary_key=True) event_id = db.Column(db.Integer) email_subject = db.Column(db.String(200)) email_content = db.Column(db.String(500)) timestamp = db.Column(db.DateTime())
class QuestionModel(db.Model): __tablename__ = 'wufazhuce_question' question_id = db.Column(INTEGER, primary_key=True) question_title = db.Column(TEXT) question_text = db.Column(TEXT) question_body = db.Column(TEXT)
class GroupMember(db.Model): id = db.Column(db.Integer, primary_key=True) group_id = db.Column(db.Integer, db.ForeignKey('group.id'), nullable=False) member_email = db.Column(db.String(120), index=True, nullable=False) def __repr__(self): return '<GroupMember {}, {}>'.format(self.group_id, self.member_email) @staticmethod def signup_status(member_email): user = User.query.filter_by(email=member_email).first() if user: return True else: return False @staticmethod def group_signup_status(group_id, member_email): user = User.query.filter_by(email=member_email).first() if user: preferences = user.user_preferences.filter_by( group_id=group_id).first() if preferences: return True return False
class Site(db.Model): __tablename__ = 'site' site_id = db.Column(db.String, primary_key=True) primary = db.Column(db.Boolean, nullable=False, default=False) # only needs to be set if primary=True base_url = db.Column(db.String, nullable=True, unique=True) tenant_base_url_template = db.Column(db.String, nullable=True, unique=True) site_admin_tenant_id = db.Column(db.String, nullable=False) services = db.Column(ARRAY(db.String), unique=False, nullable=False) create_time = db.Column(db.DateTime, nullable=False) last_update_time = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False) created_by = db.Column(db.String(120), unique=False, nullable=False) last_updated_by = db.Column(db.String(120), unique=False, nullable=False) def __repr__(self): return f'{self.site_id}' @property def serialize(self): return { "site_id": self.site_id, "primary": self.primary, "base_url": self.base_url, "tenant_base_url_template": self.tenant_base_url_template, "site_admin_tenant_id": self.site_admin_tenant_id, "services": self.services, "create_time": str(self.create_time), "created_by": self.created_by, "last_update_time": str(self.last_update_time), "last_updated_by": self.last_updated_by }
class Books(db.Model): id = db.Column(db.Integer, primary_key=True) subject_id = db.Column(db.Integer, db.ForeignKey('subject.id'), nullable=False) name = db.Column(db.String, unique=True, nullable=False) file = db.Column(db.Binary, nullable=False)
class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), unique=True, nullable=False) def to_dict(self): d = {'id': self.id, 'name': self.name} return d
class Schedule(db.Model): id = db.Column(db.Integer, primary_key=True) subject_id = db.Column(db.Integer, db.ForeignKey('subject.id'), nullable=False) starts = db.Column(db.DateTime, nullable=False) ends = db.Column(db.DateTime, nullable=False) duration = db.Column(db.Integer, nullable=False)
class ArticleModel(db.Model): __tablename__ = 'wufazhuce_article' article_id = db.Column(INTEGER, primary_key=True) article_title = db.Column(TEXT) article_author = db.Column(TEXT) article_text = db.Column(TEXT) article_body = db.Column(TEXT)
class BaseModel(db.Model): __abstract__ = True id = db.Column(INTEGER, primary_key=True) ctime = db.Column(DATETIME, nullable=False, default=datetime.now) mtime = db.Column(DATETIME, nullable=False, default=datetime.now, onupdate=datetime.now) create_time_unix = db.Column(INTEGER, nullable=False, default=time.time) modify_time_unix = db.Column(INTEGER, nullable=False, default=time.time, onupdate=time.time)
class PhotoModel(db.Model): __tablename__ = 'wufazhuce_photo' photo_id = db.Column(INTEGER, primary_key=True) photo_url = db.Column(TEXT) photo_date = db.Column(TEXT) photo_text = db.Column(TEXT) wufazhuce_url = db.Column(TEXT)
class Mapping(db.Model): id = db.Column(db.String(120), unique=True, nullable=False, primary_key=True) app_name = db.Column(db.String(120), db.ForeignKey('application.name'), nullable=False) app = db.relationship('Application', foreign_keys=app_name) image_url = db.Column(db.String(500), nullable=True) fields = db.Column(db.String(500), nullable=True) def __repr__(self): return '<Mapping %r>' % self.id
class QuestionModel(db.Model): ''' 问答表 ''' __tablename__ = 'question' question_id = db.Column(db.Integer, primary_key=True) question_title = db.Column(db.Text) question_text = db.Column(db.Text) question_body = db.Column(db.Text)
class User(db.Model): __tablename__ = "users" id = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(128), nullable=False) email = db.Column(db.String(128), nullable=False) active = db.Column(db.Boolean(), default=True, nullable=False) def __init__(self, username, email): self.username = username self.email = email
class ArticleModel(db.Model): ''' 文章表 ''' __tablename__ = 'article' article_id = db.Column(db.Integer, primary_key=True) article_title = db.Column(db.Text) article_author = db.Column(db.Text) article_text = db.Column(db.Text) article_body = db.Column(db.Text)
class PhotoModel(db.Model): ''' 图片表 ''' __tablename__ = 'photo' photo_id = db.Column(db.Integer, primary_key=True) photo_url = db.Column(db.Text) photo_date = db.Column(db.Text) photo_text = db.Column(db.Text) wufazhuce_url = db.Column(db.Text)
class UserSearchAndResults(db.Model): # type: ignore """ Store details of user view (for audit purposes) and update after payment (for reconciliation). """ # As several users may be searching at the same time, we need a compound primary key. # Note that WebSeal prevents a user from being logged in from multiple places concurrently. search_datetime = db.Column(db.DateTime(), nullable=False, primary_key=True) user_id = db.Column(db.String(20), nullable=False, primary_key=True) title_number = db.Column(db.String(20), nullable=False) search_type = db.Column(db.String(20), nullable=False) purchase_type = db.Column(db.String(20), nullable=False) amount = db.Column(db.String(10), nullable=False) cart_id = db.Column(db.String(30), nullable=True) # Post-payment items: these (or the like) are also held in the 'transaction_data' DB. # TODO: Ideally they should be fetched from there instead, via the 'search_datetime' key. lro_trans_ref = db.Column(db.String(30), nullable=True) # Reconciliation: 'transId' from Worldpay. viewed_datetime = db.Column(db.DateTime(), nullable=True) # If null, user has yet to view the results. valid = db.Column(db.Boolean, default=False) def __init__(self, search_datetime, user_id, title_number, search_type, purchase_type, amount, cart_id, lro_trans_ref, viewed_datetime, valid ): self.search_datetime = search_datetime self.user_id = user_id self.title_number = title_number self.search_type = search_type self.purchase_type = purchase_type self.amount = amount self.cart_id = cart_id self.lro_trans_ref = lro_trans_ref self.viewed_datetime = viewed_datetime self.valid = valid # This is for serialisation purposes; it returns the arguments used and their values as a dict. # Note that __dict__ only works well in this case if no other local variables are defined. # "marshmallow" may be an alternative: https://marshmallow.readthedocs.org/en/latest. def get_dict(self): return self.__dict__ def id(self): return '<lro_trans_ref {}>'.format(self.lro_trans_ref)
class Store(db.Model): id = db.Column(db.Integer, autoincrement=True, primary_key=True) uuid = db.Column(db.String, nullable=False, unique=True) created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False) updated_at = db.Column(db.DateTime, onupdate=datetime.utcnow) def __init__(self, uuid): self.uuid = uuid def __repr__(self): return '<Store {}. uuid: {}>'.format(self.id, self.uuid)
class Storage(db.Model): name = db.Column(db.String(120), unique=True, nullable=False, primary_key=True) milvus_addr = db.Column(db.String(120), unique=False, nullable=False) milvus_port = db.Column(db.Integer, unique=False, nullable=False) milvus_table_name = db.Column(db.String(120), unique=False, nullable=False) milvus_dimension = db.Column(db.Integer, unique=False, nullable=False) milvus_index_file_size = db.Column(db.Integer, unique=False, nullable=False) milvus_metric_type = db.Column(db.String(120), unique=False, nullable=False) s3_addr = db.Column(db.String(120), unique=False, nullable=False) s3_port = db.Column(db.Integer, unique=False, nullable=False) s3_token = db.Column(db.String(120), unique=False, nullable=False) def __repr__(self): return '<Storage %r>' % self.name
class Preference(db.Model): id = db.Column(db.Integer, primary_key=True) group_id = db.Column(db.Integer, db.ForeignKey('group.id'), nullable=False) first_preference = db.Column(db.String(500), index=True) second_preference = db.Column(db.String(500), index=True) third_preference = db.Column(db.String(500), index=True) match_id = db.Column(db.Integer, db.ForeignKey('user.id')) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) last_updated_time = db.Column(db.DateTime, index=True, default=datetime.utcnow) #this is the many side, so uselist=False match = db.relationship("User", backref=db.backref("match_preferences", lazy='dynamic'), foreign_keys=[match_id], uselist=False) user = db.relationship("User", backref=db.backref("user_preferences", lazy='dynamic'), foreign_keys=[user_id], uselist=False) def __repr__(self): return '<Preference {}, {}>'.format(self.group_id, self.user_id)
class Group(db.Model): id = db.Column(db.Integer, primary_key=True) groupname = db.Column(db.String(120), index=True, unique=True, nullable=False) rsvp_close_date = db.Column(db.Date, index=True, nullable=False) reveal_date = db.Column(db.Date, index=True, nullable=False) budget = db.Column(db.Float, index=True) host_join = db.Column(db.Boolean, index=True) last_updated_time = db.Column(db.DateTime, index=True, default=datetime.utcnow) host_id = db.Column(db.Integer, db.ForeignKey('user.id')) preferences = db.relationship('Preference', backref='group', lazy='dynamic') members = db.relationship('GroupMember', backref='group', lazy='dynamic') def __repr__(self): return '<Group {}>'.format(self.groupname) def get_all_member_emails(self): current_members = self.members.all() current_emails = [] for member in current_members: current_emails.append(member.member_email) if self.host_join: current_members.append(self.host.email) return current_emails def get_all_signup_member_emails(self): current_members = self.members.all() current_emails = [] for member in current_members: if GroupMember.group_signup_status(self.id, member.member_email): current_emails.append(member.member_email) if self.host_join and GroupMember.group_signup_status( self.id, self.host.email): current_members.append(self.host.email) return current_emails def if_match_set(self): current_preferences = self.preferences.all() match_set = True for current_preference in current_preferences: if not current_preference.match: match_set = False break return match_set @staticmethod def check_group_member(group_name, email): current_group = Group.query.filter_by(groupname=group_name).first() current_emails = current_group.get_all_member_emails() if email in current_emails: return True else: return False
class Pipeline(db.Model): name = db.Column(db.String(120), unique=True, nullable=False, primary_key=True) description = db.Column(db.String(240), unique=False, nullable=True) processors = db.Column(db.String(240), unique=False, nullable=False) encoder = db.Column(db.String(240), unique=False, nullable=False) input = db.Column(db.String(120), unique=False, nullable=False) output = db.Column(db.String(120), unique=False, nullable=False) dimension = db.Column(db.Integer, unique=False, nullable=False) index_file_size = db.Column(db.Integer, unique=False, nullable=False) metric_type = db.Column(db.String(120), unique=False, nullable=False) def __repr__(self): return '<Pipeline %r>' % self.name
class TenantHistory(db.Model): __tablename__ = 'tenants_history' id = db.Column(db.Integer, primary_key=True) tenant_id = db.Column(db.String(50), db.ForeignKey('tenants.tenant_id'), nullable=False) update_time = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False) updated_by = db.Column(db.String(120), unique=False, nullable=False) updates_as_json = db.Column(db.String(10000), unique=False, nullable=False) @property def serialize(self): d = { 'tenant_id': self.tenant_id, 'update_time': str(self.update_time), 'updated_by': self.updated_by, 'updates': json.loads(self.updates_as_json) } return d
class DIDUserModel(BaseModel): __tablename__ = 'did_user' ''' CREATE TABLE `did_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uname` varchar(50) DEFAULT NULL COMMENT '用户名称', `passwd` varchar(100) DEFAULT NULL COMMENT '密码', `phone` varchar(15) DEFAULT NULL COMMENT '电话号码', `email` varchar(50) DEFAULT NULL COMMENT '邮件地址', `photo` varchar(50) DEFAULT NULL COMMENT '头像照片', `group_id` int(11) NOT NULL COMMENT '所属组 ID', `status` tinyint(4) NOT NULL COMMENT '用户状态', `ctime` datetime DEFAULT NULL COMMENT '创建时间', `mtime` datetime DEFAULT NULL COMMENT '修改时间', `create_time_unix` int(11) DEFAULT NULL COMMENT '创建时间 UNIX', `modify_time_unix` int(11) DEFAULT NULL COMMENT '修改时间 UNIX', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表' ''' uname = db.Column(VARCHAR(50), comment='用户名称') passwd = db.Column(VARCHAR(100), comment='密码') phone = db.Column(VARCHAR(15), comment='电话号码') email = db.Column(VARCHAR(50), comment='邮件地址') photo = db.Column(VARCHAR(50), comment='头像照片') group_id = db.Column(INTEGER, comment='所属组id') status = db.Column(TINYINT(4), nullable=False, default=1, comment='用户状态') @hybrid_property def _password(self): return self.passwd @_password.setter def _password(self, pwd): self.passwd = bcrypt.generate_password_hash(pwd)
class DIDGroupModel(BaseModel): __tablename__ = 'did_group' ''' CREATE TABLE `did_group` ( `id` int(11) NOT NULL AUTO_INCREMENT, `gname` varchar(50) DEFAULT NULL COMMENT '组织名称', `group_type` tinyint(4) NOT NULL DEFAULT '2' COMMENT '组织类型', `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '组织状态', `ctime` datetime DEFAULT NULL COMMENT '创建时间', `mtime` datetime DEFAULT NULL COMMENT '修改时间', `create_time_unix` int(11) DEFAULT NULL COMMENT '创建时间 UNIX', `modify_time_unix` int(11) DEFAULT NULL COMMENT '修改时间 UNIX', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='组织信息表' ''' gname = db.Column(VARCHAR(50), comment='组织名称') group_type = db.Column(TINYINT(4), nullable=False, default=2, comment='组织类型') status = db.Column(TINYINT(4), nullable=False, default=1, comment='组织状态')
class User(UserMixin, db.Model): y = db.Column(db.String(256), primary_key=True) def __init__(self, y): self.y = y def save_to_db(self): db.session.add(self) db.session.commit()
class Message(db.Model): id = db.Column(db.Integer, primary_key=True) body = db.Column(db.String(250), nullable=False) sender_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) recipient_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) is_palindrome = db.Column(db.Boolean, nullable=False) def to_dict(self): d = { 'id': self.id, 'body': self.body, 'sender_id': self.sender_id, 'recipient_id': self.recipient_id, 'is_palindrome': self.is_palindrome } return d
class TitleRegisterData(db.Model): # type: ignore title_number = db.Column(db.String(10), primary_key=True) register_data = db.Column(JSON) geometry_data = db.Column(JSON) official_copy_data = db.Column(JSON) is_deleted = db.Column(db.Boolean, default=False, nullable=False) last_modified = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now(), nullable=False) lr_uprns = db.Column(ARRAY(db.String), default=[], nullable=True)