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)