class bbs_user(db.Model): __tablename__ = "bbs_user" uid = db.Column(db.Integer(11), primary_key=True, autoincrement=True) # 自增id username = db.Column(db.String(16), nullable=False) # 帐号 password = db.Column(db.String(256), nullable=False) # 密码(md5加密) email = db.Column(db.String(32), nullable=False) # 邮箱 udertype = db.Column(db.Boolean(), nullable=False, default=False) # 帐号类型 regtime = db.Column(db.DateTime, nullable=False, default=datetime.datetime.now()) # 注册时间 lasttime = db.Column(db.DateTime, nullable=False, default=datetime.datetime.now()) # 最后登录时间 regip = db.Column(db.Integer(12), nullable=False) # 注册IP picture = db.Column(db.String(256), nullable=False, default='/static/img/timg.jpeg') # 头像 grade = db.Column(db.Integer(10), nullable=True, default=0) # 积分 problem = db.Column(db.String(256), nullable=True) # 找回密码 result = db.Column(db.String(256), nullable=True) # 答案 realname = db.Column(db.String(50), nullable=True) # 真实姓名 sex = db.Column(db.Boolean(), nullable=True, default=False) # 性别 birthday = db.Column(db.String(32), nullable=True) # 生日 place = db.Column(db.String(64), nullable=True) # 所在地 qq = db.Column(db.String(16), nullable=True) # qq号 autograph = db.Column(db.String(512), nullable=True) # 个人签名 allowlogin = db.Column(db.Boolean(), nullable=False, default=False) # 是否允许登录
class User(UserModelWithPC): # 从BaseModel中继承了 id # 从BaseUserModel中继承了 name, _password, is_delete # 从UserModelWithPC中继承了permission 和 check_permission 方法 gender = db.Column(db.String(2)) is_super = db.Column(db.Boolean(), default=False) address = db.Column(db.String(128), default='') e_mail = db.Column(db.String(128)) phone = db.Column(db.String(16)) def __repr__(self): return "User(id={}, name={!r})".format(self.id, self.name) @staticmethod def create_admin(**kwargs): username = kwargs.get('username') address = kwargs.get('address') gender = kwargs.get('gender') e_mail = kwargs.get('email') phone = kwargs.get('phone') password = kwargs.get('password') user = User( permission=Permission.grant_super_code(), address=address, gender=gender, e_mail=e_mail, phone=phone, is_super=True, name=username ) user.password = password return user
class MovieUser(Baseful): name = db.Column(db.String(32), unique=True) _password = db.Column(db.String(256)) phone = db.Column(db.String(32), unique=True) is_delete = db.Column(db.Boolean(), default=False) permission = db.Column(db.Integer, default=PERMISSION_NONE) @property def password(self): raise Exception('不准查看') @password.setter def password(self, password_value): self._password = generate_password_hash(password_value) def check_password(self, user_password): return check_password_hash(self._password, user_password) def check_permission(self, permission_s): if BLAK_USER & permission_s == BLAK_USER: return False else: return self.permission & permission_s == permission_s
class bbs_order(db.Model): __tablename__ = "bbs_order" oid = db.Column(db.Integer(10), primary_key=True, nullable=False, autoincrement=True) # 自增id uid = db.Column(db.Integer(11), nullable=False) # 用户id(外键) tid = db.Column(db.Integer(11), nullable=False) # 帖子id(外键) rate = db.Column(db.Integer(11), nullable=False) # 价格 addtime = db.Column(db.Integer(11), nullable=False) # 创建时间 ispay = db.Column(db.Boolean(), nullable=False, default=False) # 是否支付
class BaseUserModel(BaseModel): __abstract__ = True name = db.Column(db.String(32), unique=True, nullable=False) _password = db.Column(db.String(128), nullable=False) is_delete = db.Column(db.Boolean(), default=False, nullable=False) # 项目扩展性保证,若需要对用户级联,只需要绑定相应id extension = db.Column(db.Integer, default=0) @property def password(self): raise LookupError("No Permission to get the PASSWPRD.") @password.setter def password(self, new_pass_val): self._password = generate_password_hash(new_pass_val) def check_password(self, input_pass_val): return check_password_hash(self._password, input_pass_val) def check_permission(self, permission): raise NotImplementedError