From c14eba1837f39ed61ec48bd6dcd48b280835bacc Mon Sep 17 00:00:00 2001 From: hanshuaikang <1758504262@qq.com> Date: Tue, 31 Oct 2023 17:36:22 +0800 Subject: [PATCH] =?UTF-8?q?bugfix:=20=E4=BF=AE=E5=A4=8Dget=5Fservice=5Frol?= =?UTF-8?q?es=20=E9=A1=BA=E5=BA=8F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- itsm/openapi/service/views.py | 2 +- itsm/workflow/models/workflow.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/itsm/openapi/service/views.py b/itsm/openapi/service/views.py index 2bc410e13..55a54849c 100644 --- a/itsm/openapi/service/views.py +++ b/itsm/openapi/service/views.py @@ -169,7 +169,7 @@ def get_service_roles(self, request): workflow = self.queryset.get(id=service_id).workflow # 获取第一个提单节点的id first_state = workflow.first_state - # 根据提单节点 通过路径 乡下搜索,获得正确的state顺序 + # 根据提单节点 通过路径 向下搜索,获得正确的state顺序 states = workflow.post_states(first_state["id"]) # 全量数据下,将提单节点插入第一个 diff --git a/itsm/workflow/models/workflow.py b/itsm/workflow/models/workflow.py index 1c30ee2a7..b81806aea 100644 --- a/itsm/workflow/models/workflow.py +++ b/itsm/workflow/models/workflow.py @@ -22,6 +22,8 @@ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ +from collections import OrderedDict + import six import jsonfield @@ -571,6 +573,7 @@ def post_states(self, from_id): if from_id in path: from_id_index = path.index(from_id) state_id_list.extend(path[from_id_index + 1 :]) + state_list = [] common_type = [ NORMAL_STATE, @@ -579,7 +582,7 @@ def post_states(self, from_id): TASK_STATE, TASK_SOPS_STATE, ] - for state_id in set(state_id_list): + for state_id in list(OrderedDict.fromkeys(state_id_list)): state_info = self.states[str(state_id)] if state_info["type"] in common_type: state_list.append(state_info)