From 215b18314c5791a0ada0f67d8c16b03a46ef3f0c Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 14 Mar 2023 16:03:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E8=BF=87=E6=BB=A4=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E6=94=AF=E6=8C=81=E5=8F=8D=E5=90=91=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wf/services.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/apps/wf/services.py b/apps/wf/services.py index d9cf3bc8..b099da25 100755 --- a/apps/wf/services.py +++ b/apps/wf/services.py @@ -172,7 +172,14 @@ class WfService(object): if state.filter_dept not in [0, '0', None]: # if not new_ticket_data.get(state.filter_dept, None): # raise ParseError('部门过滤字段错误') - dpts = Dept.objects.filter(id=new_ticket_data[state.filter_dept]) + if '.' not in state.filter_dept: + dpts = Dept.objects.filter(id=new_ticket_data[state.filter_dept]) + else: + dpt_attrs = state.filter_dept.split('.') # 通过反向查询得到可能有多层 + expr = ticket + for i in dpt_attrs: + expr = getattr(expr, i) + dpts = Dept.objects.filter(id=expr.id) user_queryset = user_queryset.filter(depts__in=dpts) # if state.filter_policy == 1: # depts = get_parent_queryset(ticket.belong_dept) @@ -190,7 +197,14 @@ class WfService(object): if state.filter_dept not in [0, '0', None]: # if not new_ticket_data.get(state.filter_dept, None): # raise ParseError('部门过滤字段错误') - dpts = Dept.objects.filter(id=new_ticket_data[state.filter_dept]) + if '.' not in state.filter_dept: + dpts = Dept.objects.filter(id=new_ticket_data[state.filter_dept]) + else: + dpt_attrs = state.filter_dept.split('.') + expr = ticket + for i in dpt_attrs: + expr = getattr(expr, i) + dpts = Dept.objects.filter(id=expr.id) user_queryset = user_queryset.filter(depts__in=dpts) # if state.filter_policy == 1: # depts = get_parent_queryset(ticket.belong_dept)