class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), unique=False, default="", index=True) phone = db.Column(db.String(255), unique=True, default="", index=True) email = db.Column(db.String(255), unique=True, default="", index=True) password = db.Column(db.String(255), default="") info = db.Column(db.Text(), default="") avatar_url = db.Column(db.String(1024), default="") gender = db.Column(db.SmallInteger(), default=-1) status = db.Column(db.SmallInteger(), default=0, index=True) create_time = db.Column(db.DateTime(), server_default=func.now()) update_time = db.Column(db.DateTime(), server_default=func.now(), onupdate=func.now()) def is_authenticated(self): return True def is_active(self): return True def is_anonymous(self): return False def get_id(self): return str(self.id).encode("utf-8").decode("utf-8")
class Drug(db.Model): __tablename__ = 'drug' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) num = db.Column(db.String(50), nullable=False) name = db.Column(db.String(50), nullable=False) desc = db.Column(db.String(500), nullable=False) isSale = db.Column(db.Boolean(), nullable=False, default=False) # isChoose = db.Column(db.Boolean(), nullable=False, default=False) stockDate = db.Column(db.DateTime(), default=datetime.now) stockPrice = db.Column(db.REAL(), nullable=True, default=0) saleDate = db.Column(db.DateTime(), nullable=True) salePice = db.Column(db.REAL(), nullable=True, default=0) # foreignkey药品关联药品类别表id drugTypeId = db.Column(db.Integer(), db.ForeignKey('drugType.id')) drugType = db.relationship('DrugType', backref='drug')
class User(db.Model): """前台用户""" __tablename__ = 'user' id = db.Column(db.String(50), primary_key=True, default=uuid) username = db.Column(db.String(50), nullable=False) telephone = db.Column(db.String(20), nullable=False, unique=True) _password = db.Column(db.String(100), nullable=False) email = db.Column(db.String(50), unique=True) avatar = db.Column(db.String(100)) signature = db.Column(db.String(200)) realname = db.Column(db.String(50)) gender = db.Column(db.Enum(GenderEnum), default=GenderEnum.DOKNOW) join_time = db.Column(db.DateTime(), default=datetime.now) def __init__(self, *args, **kwargs): if 'password' in kwargs: self.password = kwargs.pop('password') super(User, self).__init__(*args, **kwargs) @property def password(self): return self._password @password.setter def password(self, newpwd): self._password = generate_password_hash(newpwd) def check_password(self, password): return check_password_hash(self.password, password)
class FrontUser(db.Model): __tablename__ = 'front_user' id = db.Column(db.String(100), primary_key=True, default=shortuuid.uuid()) telephone = db.Column(db.String(11), nullable=False) email = db.Column(db.String(100), unique=True) username = db.Column(db.String(100), nullable=False) _password = db.Column(db.String(100), nullable=False) join_time = db.Column(db.DateTime(), default=datetime.datetime.now) is_active = db.Column(db.Boolean, default=True) last_login_time = db.Column(db.DateTime, nullable=True) old_login_time = db.Column(db.DateTime) qq = db.Column(db.String(20)) realname = db.Column(db.String(20)) gender = db.Column(db.Integer, default=GenderType.UNKNOW) avatar = db.Column(db.String(100)) signature = db.Column(db.String(60)) points = db.Column(db.Integer, default=0) is_sign_in = db.Column(db.Boolean, default=True) def __init__(self, telephone, username, password): self.telephone = telephone self.username = username self.password = password @property def password(self): return self._password @password.setter def password(self, rawpwd): self._password = generate_password_hash(rawpwd) def check_password(self, rawpwd): return check_password_hash(self._password, rawpwd)
class avlDept(db.Model): __tablename__ = 'avl_dept' id = db.Column(db.Integer, primary_key=True, autoincrement=True) dept_code = db.Column(db.String(64),nullable=False) dept_name = db.Column(db.String(32),nullable=False) status = db.Column(db.String(10)) ts = db.Column(db.DateTime(), default=datetime.datetime.utcnow()) useage = db.Column(db.String(50),nullable=False)
class User(UserMixin, db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True, autoincrement=True) email = db.Column(db.String(50), nullable=False, index=True, unique=True) telephone = db.Column(db.String(11), nullable=False) username = db.Column(db.String(50), nullable=False) password_hash = db.Column(db.String(128), nullable=False) role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) location = db.Column(db.String(64)) about_me = db.Column(db.Text()) member_since = db.Column(db.DateTime(), default=datetime.utcnow) last_seen = db.Column(db.DateTime(), default=datetime.utcnow) courses = db.relationship('Course', secondary=follows, backref=db.backref('users', lazy='dynamic'), lazy='dynamic') comments = db.relationship('Comment', backref=db.backref('user'), lazy='dynamic') #todo:need to handle def __init__(self, **kwargs): super(User, self).__init__(**kwargs) if self.role is None: if self.email == current_app.config['FLASK_ADMIN']: self.role = Role.query.filter_by(name='Administrator').first() if self.role is None: self.role = Role.query.filter_by(default=True).first() @property def password(self): raise AttributeError('password is not a readable attribute') @password.setter def password(self, password): self.password_hash = generate_password_hash(password) def verify_password(self, password): return check_password_hash(self.password_hash, password) def can(self, perm): return self.role is not None and self.role.has_permission(perm) def is_administrator(self): return self.can(Permission.ADMIN)
class CMSUser(db.Model): __tablename__ = 'cms_user' id = db.Column(db.Integer,primary_key=True,autoincrement=True) email = db.Column(db.String(255),nullable=False,unique=True) username = db.Column(db.String(255),nullable=False) _password = db.Column(db.String(255),nullable=False) join_time = db.Column(db.DateTime(),default=datetime.datetime.now) is_active = db.Column(db.Boolean,default=True) last_login_time = db.Column(db.DateTime,nullable=True) roles = db.relationship('CMSRole',secondary=cms_user_role,backref='users') def __init__(self,email,username,password): self.email = email self.username = username self.password = password @property def password(self): return self._password @password.setter def password(self,rawpwd): self._password = generate_password_hash(rawpwd) def check_password(self,rawpwd): return check_password_hash(self.password,rawpwd) @property def is_superadmin(self): return self.has_permission(CMSPermission.ADMINSTRATOR) def has_permission(self,permission): if not self.roles: return None all_permission = 0 for role in self.roles: all_permission |= role.permissions return all_permission & permission == permission @property def permissions(self): if not self.roles: return None all_permission = 0 for role in self.roles: all_permission |= role.permissions permission_dicts = [] for permission,permission_info in CMSPermission.PERMISSION_MAP.iteritems(): if permission & all_permission == permission: permission_dicts.append({permission:permission_info}) return permission_dicts
class Question(db.Model): __tablename__ = 'question' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(100), nullable=False) content = db.Column(db.Text, nullable=False) # now()获取的是服务器第一次运行的时间 # now每次创建一个模型的时候,都获取当前的时间 create_time = db.Column(db.DateTime(), default=datetime.now) author_id = db.Column(db.Integer, db.ForeignKey('user.id')) author = db.relationship('User', backref=db.backref('questions'))
class Account(db.Model): __tablename__ = 'account' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) # 结账流水号 后期银行对接 可以用上 先架构着 默认是8个0 accountNo = db.Column(db.String(50), nullable=False, default='00000000') # 结账时间 time = db.Column(db.DateTime(), nullable=False, default=datetime.now) accountMoney = db.Column(db.REAL(), nullable=False, default=0) # 关联用户表id userId = db.Column(db.Integer(), db.ForeignKey('user.id')) user = db.relationship('User', backref='account')
class Comment(db.Model): __tablename__ = 'comment' id = db.Column(db.Integer, primary_key=True, autoincrement=True) content = db.Column(db.Text, nullable=False) question_id = db.Column(db.Integer, db.ForeignKey('question.id')) author_id = db.Column(db.Integer, db.ForeignKey('user.id')) question = db.relationship('Question', backref=db.backref('comments', order_by=id.desc)) author = db.relationship('User', backref=db.backref('comments')) create_time = db.Column(db.DateTime(), default=datetime.now)
class Category(db.Model): __tablename__ = "categories" id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(50), nullable=False, default='Untitled') last_modify = db.Column(db.DateTime(), default=datetime.utcnow) courses = db.relationship('Course', backref='category', lazy='dynamic') def delete(self): for c in self.courses: c.delete() db.session.delete(self) db.session.commit()
class Sale(db.Model): __tablename__ = 'sale' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) # 选购时间 time = db.Column(db.DateTime(), nullable=False, default=datetime.now) # 用户外键 userId = db.Column(db.Integer(), db.ForeignKey('user.id')) user = db.relationship('User', backref='sale') # 药品外键 # drugId = db.Column(db.Integer(), db.ForeignKey('drug.id')) # 药品编号 drugNum = db.Column(db.String(50), nullable=False)
class Stock(db.Model): __tablename__ = 'stock' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) stockDate = db.Column(db.DateTime(), nullable=False, default=datetime.now) stockPrice = db.Column(db.REAL(), nullable=False) stockCount = db.Column(db.Integer(), nullable=False) stockMoney = db.Column(db.REAL(), nullable=False) # 关联药品表id drugId = db.Column(db.Integer(), db.ForeignKey('drug.id')) drug = db.relationship('Drug', backref='stock') # 关联用户表id userId = db.Column(db.Integer(), db.ForeignKey('user.id')) user = db.relationship('User', backref='stock')
class Result(db.Model): __tablename__ = 'auto_result' id = db.Column(db.Integer,primary_key=True,autoincrement=True) mockid = db.Column(db.Integer) name = db.Column(db.String(150)) testresult = db.Column(db.Boolean) reqmethod = db.Column(db.String(10)) rspcode = db.Column(db.String(10)) reqpath = db.Column(db.String(100)) reqhead = db.Column(db.Text) reqbody = db.Column(db.Text) rsphead = db.Column(db.Text) rspbody = db.Column(db.Text) diff = db.Column(db.Text) ts = db.Column(db.DateTime(), default=datetime.datetime.utcnow())
class Sale(db.Model): __tablename__ = 'sale' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) time = db.Column(db.DateTime(), nullable=False, default=datetime.now) saleCount = db.Column(db.Integer(), nullable=False) saleMoney = db.Column(db.REAL(), nullable=False) # 关联用户表id userId = db.Column(db.Integer(), db.ForeignKey('user.id')) user = db.relationship('User', backref='sale') # 关联结账表id accountId = db.Column(db.Integer(), db.ForeignKey('account.id')) account = db.relationship('Account', backref='sale') # 关联药品表id drugId = db.Column(db.Integer(), db.ForeignKey('drug.id')) drug = db.relationship('Drug', backref='sale')
class Account(db.Model): __tablename__ = 'account' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) # 结账流水号 后期银行对接 可以用上 先架构着 默认是8个0 accountNo = db.Column(db.String(50), nullable=False, default='00000000') # 结账时间 time = db.Column(db.DateTime(), nullable=False, default=datetime.now) # 用户外键 userId = db.Column(db.Integer(), db.ForeignKey('user.id')) user = db.relationship('User', backref='account') # 药品外键 drugId = db.Column(db.Integer(), db.ForeignKey('drug.id')) drugNum = db.Column(db.String(50), nullable=False) # 药品编号 drug = db.relationship('Drug', backref='account')