一、背景
为了满足业务需求,需要保证archery不能自提自审,当然,这样做也是一种更安全的做法,简单的阅读下源码,有了个大体的思路,话不多说,直接上代码
二、修改部分
vi /opt/archery/sql/utils/workflow_audit.py
三、解释
这里可以看到改动的部分比较简单 can_review方法为当前审核人能不能审核工单,result为true的话则表示可以审核,所以这里面只需要把user为create_user的用户去掉就好
相关代码
Archery/sql/utils/resource_group.py
def auth_group_users(auth_group_names, group_id):
"""
获取资源组内关联指定权限组的用户
:param auth_group_names: 权限组名称list
:param group_id: 资源组ID
:return:
"""
users = ResourceGroup.objects.get(group_id=group_id).users_set.all()
users = users.filter(groups__name__in=auth_group_names)
return users
class Users(AbstractUser):
"""
用户信息扩展
"""
display = models.CharField('显示的中文名', max_length=50, default='')
ding_user_id = models.CharField('钉钉UserID', max_length=64, blank=True)
wx_user_id = models.CharField('企业微信UserID', max_length=64, blank=True)
feishu_open_id = models.CharField('飞书OpenID', max_length=64, blank=True)
failed_login_count = models.IntegerField('失败计数', default=0)
last_login_failed_at = models.DateTimeField('上次失败登录时间', blank=True, null=True)
resource_group = models.ManyToManyField(ResourceGroup, verbose_name='资源组', blank=True)
def save(self, *args, **kwargs):
self.failed_login_count = min(127, self.failed_login_count)
self.failed_login_count = max(0, self.failed_login_count)
super(Users, self).save(*args, **kwargs)
def __str__(self):
if self.display:
return self.display
return self.username
class Meta:
managed = True
db_table = 'sql_users'
verbose_name = u'用户管理'
verbose_name_plural = u'用户管理'
|