Skip to main content
Version: Current

权限 Mixin

文件:accounts/mixins.py。未通过时多数重定向到登录页,而不是 403 模板。

Mixin条件
LoginRequiredMixin已登录;login_url = accounts:account_login
AdminRequiredMixinhas_global_admin
ChairRequiredMixinadmin 或任意 chair
ChairDepartmentRequiredMixinkwargs 含 department_id,且 can_manage_department_interview
ZhuxituanOrAdminRequiredMixin全局 admin 或主席团 chair
ShichangbuOrAdminRequiredMixin全局 admin 或市场部 chair
ApplicationProfileRequiredMixin已完成 ApplicationProfile;否则去申请档案页
UnassignedUserRequiredMixincan_access_member_recruitment(尚无组织分配)

常用 utils(accounts/utils.py)​

函数含义
has_global_adminrole=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 %}。