【Django | 开发】面试招聘信息网站(划分面试官权限 & 集成钉钉消息)
🤵♂️ 个人主页: @计算机魔术师👨💻 作者简介:CSDN 内容合伙人,全栈领域优质创作者。
🌐 推荐一款找工作神器网站: 牛客网🎉🎉|笔试题库|面试经验|实习招聘内推 还没账户的小伙伴 速速点击链接跳转牛客网登录注册 开始刷爆题库,速速通关面试吧🙋♂️
该文章收录专栏✨---【Django | 项目开发】从入门到上线 专栏---✨
@[toc]
一、设置面试官权限
1)数据权限
通过
get_list_fieldsets
控制admin
选项option
中的fieldsets
实现
预期效果:
hr 和超级用户 可以看到全部信息
一面面试官只能看到自己负责的一面面试信息
二面面试官只能看到自己负责二面面试信息
普通管理员(还未被指定一面或者二面面试官)只能修改候选人信息
代码实现(核心代码)
由于
fieldset
代码过长,我们将设置的fieldset
放到脚本candidate_fieldset
脚本文件中,直接引入进来。
HR 和超级用户
一面面试官
二面面试官
2) 数据集的权限控制
通过重写
get_queryset
进行条件判断,并借助Q对象
对数据库SQL语句
进行or and
组合实现需求
成功实现
3) action 行为权限
在添加群组时我们为
interviewer
群组添加了增删改查应聘者的权限,这里再为普通面试官添加不可导出为csv
action 行为 的权限以及不可删除对象 (delete_selected
)的权限
方法一:添加权限实现(为
Candidate模型
中Meta
为其设置自定义权限(元组))方法二:有条件的启用或禁用行为(
get_actions
)方法三:全局禁用,局部使用
https://docs.djangoproject.com/zh-hans/4.0/ref/contrib/admin/actions/
(各种方法文档都有例子)
方法一:添加权限实现(为
Candidate模型
中Meta
为其设置自定义权限(元组))
在
action装饰器
和ModelAdmin类
加上权限设置( permissions 的值必须是一个 列表或元组!传一个字符串会拆成各个字符)
You can specify any other value as long as you implement a corresponding has_[value]_permission(self, request) method on the ModelAdmin.(注意:这里的 value 就是你设置的权限)
admin
代码
总体代码思想,先在
model模型
添加Meta
信息,数据库同步则会添加在群组权限设置中,然后对action行为
添加permission
权限,接着还必须要在modeladmin
添加函数has_value_permission
判断登录user
是否has_perm
(拥有权限),返回值为boolean
, 我们可以看看permission 模型代码
这里的
opts
参数其实就是对应model
的Meta
效果
现在还无法看到权限,因为
model模型
的Meta
信息还没有同步到数据库(如果数据库 auth 用户验证模块没有这个定义,这里是不显示的)数据迁移两把斧运行
成功
二、 钉钉群消息集成
1)简单 shell 测试
在应用
interview
创建脚本dingtalk.py
创建群聊,选择自定义
将 Webhook 卸载 setting 中
使用
shell
测试
也可以 @面试官
2)在 admin 后台添加通知面试官 action
在实际中,我们希望直接通知最近需要面试候选人得面试官,所以我们为应聘者添加一个 action,被选中得应聘者可以直接发送到对应一面或二面面试官。
admin.py
效果
评论