class UserModel(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80)) email = db.Column(db.String(120)) password = db.Column(db.String(80)) def __init__(self, username, email, password): self.username = username self.password = password self.email = email def save_to_db(self): db.session.add(self) db.session.commit() def json(self): return {'id': self.id, 'username': self.username, 'email': self.email} @classmethod def find_by_username(cls, username): return cls.query.filter_by(username=username).first() @classmethod def find_by_id(cls, _id): return cls.query.filter_by(id=_id).first()
class User(db.Model): """用户表""" __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(48), unique=True, nullable=False) email = db.Column(db.String(64), unique=True, nullable=False) password = db.Column(db.String(128), nullable=False) bucket = db.Column(db.String(64), nullable=True, comment="用户桶名称") use_space = db.Column(db.Integer, default=0, comment="用户已使用空间") avatar_s = db.Column(db.String(64)) avatar_m = db.Column(db.String(64)) avatar_l = db.Column(db.String(64)) # 邮箱确认字段 confirmed = db.Column(db.Boolean, default=False) posts = db.relationship('Post', back_populates='author') def __init__(self, **kwargs): super(User, self).__init__(**kwargs) self.generate_avatar() def generate_avatar(self): avatar = Identicon() filenames = avatar.generate(text=self.username) self.avatar_s = filenames[0] self.avatar_m = filenames[1] self.avatar_l = filenames[2] db.session.commit() def __repr__(self): return '<User %r>' % self.username
class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, nullable=False) password = db.Column(db.String(60), nullable=False) watch_queue = db.relationship('Series', secondary=association_table, backref=db.backref('queue', lazy='dynamic'))
class Environment(db.Model): """环境信息""" __tablename__ = 'environment' id = db.Column(db.Integer, nullable=False, primary_key=True, autoincrement=True) name = db.Column(db.String(20), nullable=False) def __repr__(self): return '<Environment %r>' % self.name
class PlayBookDetail(db.Model): __tablename__ = 'playbook_detail' id = db.Column(db.Integer, nullable=False, primary_key=True, autoincrement=True) playbook_id = db.Column(db.Integer, db.ForeignKey('playbook.id'), nullable=False) content = db.Column(db.Text) playbook = db.relationship('PlayBook', back_populates='detail') def __repr__(self): return '<PlayBookDetail %r>' % self.id
class PostType(db.Model): __tablename__ = "post_type" id = db.Column(db.Integer, primary_key=True) type = db.Column(db.String, unique=True) active = db.Column(db.Boolean, default=True) def __str__(self): return str(self.type)
class Location(db.Model): __tablename__ = 'locations' id = db.Column(db.Integer, primary_key=True) city = db.Column(db.String) state = db.Column(db.String) lat = db.Column(db.Float) lon = db.Column(db.Float)
class HostGroup(db.Model): """主机组表""" __tablename__ = 'host_group' id = db.Column(db.Integer, nullable=False, primary_key=True, autoincrement=True) name = db.Column(db.String(48), nullable=False, unique=True) description = db.Column(db.String(128)) # 关系定义,不会在数据库中生成字段 hosts = db.relationship('Host', back_populates='group') def __repr__(self): return '<HostGroup %r>' % self.name
class DrawGroup(db.Model): __tablename__ = 'draw_groups' id = db.Column(db.Integer, primary_key=True) game_id = db.Column(db.Integer, db.ForeignKey('games.id')) game = db.relationship("Game", back_populates='draw_groups') players = db.relationship('Player', secondary=association_draw_groups_players, back_populates='draw_groups') def __init__(self, game): self.game = game
class Host(db.Model): """主机表""" __tablename__ = 'host' id = db.Column(db.Integer, nullable=False, primary_key=True, autoincrement=True) hostname = db.Column(db.String(60), nullable=False, unique=True) ip = db.Column(db.String(20), nullable=False, unique=True) port = db.Column(db.Integer, nullable=False, default=22) group_id = db.Column(db.Integer, db.ForeignKey('host_group.id'), nullable=True) # 关系标量 group = db.relationship('HostGroup', back_populates='hosts') def __repr__(self): return '<Host %r>' % self.hostname
class Level(db.Model): __tablename__ = "levels" id = db.Column(db.Integer, primary_key=True) date_valid = db.Column(db.Date) level = db.Column(db.Integer) player_id = db.Column(db.Integer, db.ForeignKey('players.id')) player = db.relationship('Player', back_populates='levels') def __init__(self, player, date_valid, level): self.player = player self.date_valid = date_valid self.level = level
class RevokedTokenModel(db.Model): __tablename__ = 'revoked_tokens' id = db.Column(db.Integer, primary_key=True) jti = db.Column(db.String(120)) def add(self): db.session.add(self) db.session.commit() @classmethod def is_jti_blacklisted(cls, jti): query = cls.query.filter_by(jti=jti).first() return bool(query)
class Series(db.Model): __tablename__ = 'series' id = db.Column(db.Integer, primary_key=True) kitsu_id = db.Column(db.Integer, nullable=True) canonical_title = db.Column(db.String(120), nullable=True) en_title = db.Column(db.String(120), nullable=True) en_jp_title = db.Column(db.String(120), nullable=True) attributes = db.relationship('Attribute', uselist=False, backref='series') cover_image = db.relationship('CoverImage', uselist=False, backref='series') poster_image = db.relationship('PosterImage', uselist=False, backref='series')
class InventoryModel(db.Model): __tablename__ = 'inventory' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) cost = db.Column(db.Float) retail = db.Column(db.Float) sku = db.Column(db.String) description = db.Column(db.Text) buy_button = db.Column(db.Text) image_id = db.Column(db.Integer, db.ForeignKey('image.id')) image = db.relationship("ImageModel", back_populates="inventory") def __str__(self): return self.name @hybrid_property def path(self): return form.thumbgen_filename(self.image.path) @hybrid_property def quantity(self): return round( InventoryStockModel.get_quantity(self.id) - SalesModel.get_quantity(self.id), 2)
class Example(db.Model): """Example - to be changed """ id = db.Column(db.Integer, primary_key=True) search_query = db.Column(db.String(1500), nullable=True) search_tags = db.Column(db.Text, nullable=True) user_id = db.Column(db.Integer, db.ForeignKey("user.id")) def __init__(self, **kwargs): super(Example, self).__init__(**kwargs) def __repr__(self): return "<Example %s>" % self.id
class Player(db.Model): __tablename__ = 'players' id = db.Column(db.Integer, primary_key=True) first_name = db.Column(db.String) last_name = db.Column(db.String) levels = db.relationship("Level", back_populates="player") draw_groups = db.relationship('DrawGroup', secondary=association_draw_groups_players, back_populates='players') def __init__(self, first_name, last_name): self.first_name = first_name self.last_name = last_name
class SalesModel(db.Model): __tablename__ = "sales" id = db.Column(db.Integer, primary_key=True) quantity = db.Column(db.Integer) sale_date = db.Column(db.DateTime(), default=datetime.datetime.utcnow()) type_id = db.Column(db.Integer, db.ForeignKey("inventory.id")) type = db.relationship("InventoryModel") @classmethod def get_quantity(cls, foreign_id): quantity = cls.session.query(func.sum( cls.quantity)).filter(cls.type_id == foreign_id).scalar() return quantity if quantity else 0
class Incident(db.Model): __tablename__ = 'incidents' id = db.Column(db.Integer, primary_key=True) links = db.Column(JSONB) state = db.Column(db.String) city = db.Column(db.String) description = db.Column(db.String) tags = db.Column(JSONB) name = db.Column(db.String, nullable=False) date = db.Column(db.String) date_text = db.Column(db.String)
class Post(db.Model): __tablename__ = "post" __repr_attr__ = ("id", "type") id = db.Column(db.Integer, primary_key=True) body = db.Column(db.Text) active = db.Column(db.Boolean, default=True) # Type information type = db.relationship(PostType, secondary=type_association) # Connect the post to its user user = db.relationship(user_model, secondary=user_association, backref=db.backref('posts', lazy="dynamic"), lazy="dynamic")
class Game(db.Model): __tablename__ = 'games' id = db.Column(db.Integer, primary_key=True) golf = db.Column(db.String) game_format = db.Column(db.String) game_date = db.Column(db.Date) game_details = db.relationship("GameDetails", back_populates="game", uselist=False) draw_groups = db.relationship("DrawGroup", back_populates="game") def __init__(self, golf, game_format, game_date): self.golf = golf self.game_format = game_format self.game_date = game_date
class User(db.Model): """User model """ id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(80), unique=True, nullable=False) password = db.Column(db.String(255), nullable=False) active = db.Column(db.Boolean, default=True) is_admin = db.Column(db.Boolean, default=False) examples = db.relationship("Example", backref="user", lazy=True) def __init__(self, **kwargs): super(User, self).__init__(**kwargs) self.password = pwd_context.hash(self.password) def __repr__(self): return "<User %s>" % self.email
class Post(db.Model): """wiki文章表""" id = db.Column(db.Integer, nullable=False, primary_key=True, autoincrement=True) title = db.Column(db.String(60), nullable=False, comment="文章标题") desc = db.Column(db.String(180), comment="文章摘要") body = db.Column(db.Text) published = db.Column(db.Boolean, nullable=False, default=False, comment="文档发布状态") create_time = db.Column(db.DateTime, default=datetime.datetime.now, comment="创建时间") update_time = db.Column(db.DateTime, default=datetime.datetime.now, comment="更新时间") # 与分类表关联 category_id = db.Column(db.Integer, db.ForeignKey('category.id')) category = db.relationship('Category', back_populates='posts') # 作者 author_id = db.Column(db.Integer, db.ForeignKey('user.id')) author = db.relationship('User', back_populates='posts')
class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(100), nullable=False) firstname = db.Column(db.String(100), nullable=False) lastname = db.Column(db.String(100), nullable=False) password = db.Column(db.String(200), nullable=False) email = db.Column(db.String(100), nullable=False) language = db.Column(db.String())
class ResourceMixin(object): # Keep track when records are created and updated. created_on = db.Column(db.DateTime, nullable=False, default=datetime.datetime.utcnow) updated_on = db.Column(db.DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow) def save(self): """ Save a model instance. :return: Model instance """ db.session.add(self) db.session.commit() return self def delete(self): """ Delete a model instance. :return: db.session.commit()'s result """ db.session.delete(self) return db.session.commit() def __str__(self): """ Create a human readable version of a class instance. :return: self """ obj_id = hex(id(self)) columns = self.__table__.c.keys() values = ', '.join("%s=%r" % (n, getattr(self, n)) for n in columns) return '<%s %s(%s)>' % (obj_id, self.__class__.__name__, values)
class PosterImage(db.Model): id = db.Column(db.Integer, primary_key=True) large = db.Column(db.Text) original = db.Column(db.Text) small = db.Column(db.Text) tiny = db.Column(db.Text) series_id = db.Column(db.Integer, db.ForeignKey('series.id'), nullable=False)
class SurrogatePK(object): """A mixin that adds a surrogate integer 'primary key' column named ``id`` to any declarative-mapped class.""" __table_args__ = {'extend_existing': True} id = db.Column(db.Integer, primary_key=True) @classmethod def get_by_id(cls, record_id): """Get record by ID.""" if any((isinstance(record_id, basestring) and record_id.isdigit(), isinstance(record_id, (int, float))), ): return cls.query.get(int(record_id)) return None
class UserModel(db.Model): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(64), unique=True) password = db.Column(db.String(512), nullable=False) favourite_articles = db.Column(db.ARRAY(db.Integer), default=[]) favourite_services = db.Column(db.ARRAY(db.String), default=[]) has_been_initialized = db.Column(db.Boolean, default=False) show_fav_as_default = db.Column(db.Boolean, default=False) def commit_db(self): db.session.commit() def delete_user(self): self.query.delete() self.commit_db()
class PlayBook(db.Model): """playbook表""" __tablename__ = 'playbook' id = db.Column(db.Integer, nullable=False, primary_key=True, autoincrement=True) name = db.Column(db.String(48), nullable=False, unique=True) author = db.Column(db.String(20), nullable=False) information = db.Column(db.String(48), nullable=False, unique=True) is_env = db.Column(db.Boolean, nullable=False, default=False) upload = db.Column(db.Boolean, nullable=False, default=False) step = db.Column(db.Integer, nullable=True) # 建立一对一关系 detail = db.relationship('PlayBookDetail', back_populates='playbook', uselist=False, cascade='all') def __repr__(self): return '<PlayBook %r>' % self.name
class FileRepository(db.Model): """文件库""" __tablename__ = 'file_repository' id = db.Column(db.Integer, nullable=False, primary_key=True, autoincrement=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) file_type_choices = ( (1, '文件'), (2, '文件夹') ) file_type = db.Column(ChoiceType(file_type_choices, db.Integer()), nullable=True, comment="文件类型") name = db.Column(db.String(64), nullable=False, comment="文件/文件夹名称") key = db.Column(db.String(128), nullable=True, comment="文件存储在OSS中的KEY") file_size = db.Column(db.Integer, nullable=True, comment="文件大小/字节") file_path = db.Column(db.String(255), nullable=True, comment="文件路径") parent_id = db.Column(db.Integer, db.ForeignKey('file_repository.id'), nullable=True, comment="父级目录id") update_datetime = db.Column(db.DateTime, default=datetime.datetime.now, comment="更新时间") user = db.relationship('User') parent = db.relationship('FileRepository', remote_side=[id], back_populates='childs') childs = db.relationship('FileRepository', back_populates='parent', cascade='all') def __repr__(self): return "<{}: {}>".format(self.__class__.__name__, self.id)
class Options(db.Model): """playbook选项参数""" __tablename__ = 'options' id = db.Column(db.Integer, nullable=False, primary_key=True, autoincrement=True) name = db.Column(db.String(48), nullable=False) content = db.Column(db.Text, nullable=True) playbook_id = db.Column(db.Integer, db.ForeignKey('playbook.id'), nullable=False) env_id = db.Column(db.Integer, db.ForeignKey('environment.id')) url = db.Column(db.String(128), nullable=True) playbook = db.relationship('PlayBook') env = db.relationship('Environment') def __repr__(self): return '<Options %r>' % self.name