权限 Mixin
文件:accounts/mixins.py。未通过时多数重定向到登录页,而不是 403 模板。
| Mixin | 条件 |
|---|---|
LoginRequiredMixin | 已登录;login_url = accounts:account_login |
AdminRequiredMixin | has_global_admin |
ChairRequiredMixin | admin 或任意 chair |
ChairDepartmentRequiredMixin | kwargs 含 department_id,且 can_manage_department_interview |
ZhuxituanOrAdminRequiredMixin | 全局 admin 或主席团 chair |
ShichangbuOrAdminRequiredMixin | 全局 admin 或市场部 chair |
ApplicationProfileRequiredMixin | 已完成 ApplicationProfile;否则去申请档案页 |
UnassignedUserRequiredMixin | can_access_member_recruitment(尚无组织分配) |
常用 utils(accounts/utils.py)
| 函数 | 含义 |
|---|---|
has_global_admin | role=admin 且 department is NULL |
has_chair | 全局 admin 或 任一 chair |
get_chair_department | 当前用户的主席部门 |
is_zhuxituan_chair | 主席团 chair |
is_shichangbu_chair | 市场部 chair |
can_view_all_reimbursements | 报销审核可见性 |
can_add_income / can_edit_income_status | 入账(后端仍用) |
can_manage_classroom_requests | 教室工单审核 |
can_access_member_recruitment | 可走申请人招新流 |
can_redeem_activation_code | 可兑换激活码 |
user_has_application_profile | 档案已完成 |
Membership 缓存在 User._portal_memberships。Membership 增删会通过 signal 清缓存。
新增受保护视图时:选 Mixin → 同步导航 context processor → 补测试。不要只在模板里 {% if %}。