Model - 模型

class app.models.AnonymousUser[源代码]
can(permissions)[源代码]
is_administrator()[源代码]
class app.models.Movie(**kwargs)[源代码]

类变量 __tablename__ 定义在数据库中使用的表名。

类变量 __searchable__ 定义可以搜索的列。

类变量 __analyzer__ 定义搜索使用的分词器。

列名 说明
id 序号
title 电影名
original_title 借阅时间
directors 导演
casts 主演
genres 类型
year 上映年份
rating 评分
images 封面图片
alt 豆瓣链接
amount 库存
counts 借阅次数
alt
amount
can()[源代码]
casts
counts
directors
genres
id
images
movie
original_title
rating
title
to_json()[源代码]

获取 movies 数据的 dict 格式,用于转成 json 格式生成 API

返回类型:dict
year
class app.models.Permission[源代码]

列出了要支持的用户角色以及定义角色使用的权限位。

值(int) 说明
BORROW 借阅
RETURN 归还
MODERATE_MOVIE 修改影片
ADMINISTER 超级管理员
ADMINISTER = 128
BORROW = 1
MODERATE_MOVIE = 4
RETURN = 2
class app.models.Record(**kwargs)[源代码]
列名 说明
customer_id 客户序号
movie_id 电影序号
timestamp 借阅时间
customer_id
movie_id
timestamp
class app.models.Role(**kwargs)[源代码]

类变量 __tablename__ 定义在数据库中使用的表名。

列名 说明
id 序号
name 角色名
default 默认值
permissions 权限位
default
id
static insert_roles()[源代码]

注解

将角色插入到数据库

insert_roles() 函数并不直接创建新角色对象,而是通过角色名查找现有的角色, 然后再进行更新。只有当数据库中没有某个角色名时才会创建新角色对象。

如此一来,如果以后更新了角色列表,就可以执行更新操作了。

要想添加新角色,或者修改角色的权限,修改 roles 数组,再运行函数即可。

name
permissions
users
class app.models.User(**kwagrs)[源代码]

类变量 __tablename__ 定义在数据库中使用的表名。

列名 说明
id 序号
eamil 邮箱
username 用户名
role_id 角色序号
password_hash 密码哈希值
confirmed 是否验证
amount 最大借阅数量
avatar_url 头像地址

注解

使用 UserMixin

使用 flask_login 中的 UserMixin 代替自己实现的用户方法

is_authenticated() 如果用户已经登录, 必须返回 True , 否则返回 False

is_active() 如果允许用户登录, 必须返回 True , 否则返回 False, 如果要禁用账户, 可以返回 False

is_anonymous() 对普通用户必须返回 False

get_id() 必须返回用户的唯一标识符, 使用 Unicode 编码字符串。

amount
avatar_url
borrow(movie, user)[源代码]

租借

borrowed_movies

当前用户借阅中的影片列表

返回类型:list
can(permissions)[源代码]

注解

can() 方法在请求和赋予角色这两种权限之间进行位与操作。 如果角色中包含请求的所有权限位,则返回 True,表示允许用户执行此项操作。

can_borrow()[源代码]

判断用户是否可以借阅

返回类型:bool
change_email(token)[源代码]

修改邮箱

confirm(token)[源代码]

注解

检验令牌

如果检验通过, 则把 confirmed 属性设为 True

除了检验令牌, confirm() 方法还检查令牌中的 id 是否和存储在 current_user 中的已登录用户匹配。

如此一来, 即使恶意用户知道如何生成签名令牌, 也无法确认别人的账户。

confirmed
customer
email
generate_auth_token(expriation)[源代码]

使用编码后的用户 id 字段值生成一个签名令牌, 还指定了以秒为单位的过期时间。

返回类型:json
generate_confirmation_token(expiration=3600)[源代码]

生成一个用于确认账户令牌, 有效期默认为一小时

generate_email_change_token(new_email, expiration=3600)[源代码]

生成一个用于修改邮箱的令牌, 有效期默认为一小时

generate_reset_token(expiration=3600)[源代码]

生成一个用于重置密码的令牌, 有效期默认为一小时

id
is_administrator()[源代码]

检查管理员权限

is_borrowing(movie)[源代码]

判断当前影片是否正在被用户借阅

password

拒绝用户读取 password 属性的值

password_hash
reset_password(token, new_password)[源代码]

重置密码

return_movie(movie)[源代码]

归还

role_id
username
static verify_auth_token(token)[源代码]

如果令牌可用就返回对应的用户

verify_password(password)[源代码]

注解

验证密码

verify_password 方法接受一个参数(即密码), 将其传给 Werkzeug 提供的 check_password_hash() 函数。

和存储在 User 模型中的密码散列值进行比对。 如果这个方法返回 True, 就表明密码是正确的。

app.models.load_user(user_id)[源代码]

注解

加载用户的回调函数接收以 Unicode 字符串形式表示的用户标识符。 如果能找到用户,这个函数必须返回用户对象,否则应该返回 None 。