示例#1
0
文件: views.py 项目: zjfansu/loonflow
    def delete(self, request, *args, **kwargs):
        """
        删除工单,仅用于管理员干预处理工单,loonflow管理后台的功能
        :param request:
        :param args:
        :param kwargs:
        :return:
        """
        # 校验工单权限
        ticket_id = kwargs.get('ticket_id')
        username = request.META.get('HTTP_USERNAME')
        json_str = request.body.decode('utf-8')
        suggestion = ''
        if json_str:
            request_data_dict = json.loads(json_str)
            suggestion = request_data_dict.get('suggestion')

        flag, result = ticket_base_service_ins.ticket_admin_permission_check(ticket_id, username)
        if flag is False:
            return api_response(-1, result, {})
        flag, result = ticket_base_service_ins.delete_ticket(ticket_id, username, suggestion)
        if flag is False:
            return api_response(-1, result, {})
        else:
            return api_response(0, '', {})
示例#2
0
文件: views.py 项目: zjfansu/loonflow
    def put(self, request, *args, **kwargs):
        """
        修改工单状态
        :param request:
        :param args:
        :param kwargs:
        :return:
        """
        json_str = request.body.decode('utf-8')
        if not json_str:
            return api_response(-1, 'patch参数为空', {})
        request_data_dict = json.loads(json_str)
        ticket_id = kwargs.get('ticket_id')
        username = request.META.get('HTTP_USERNAME')
        state_id = request_data_dict.get('state_id')
        suggestion = request_data_dict.get('suggestion', '')

        app_name = request.META.get('HTTP_APPNAME')
        # 调用来源应用是否有此工单对应工作流的权限校验
        app_permission_check, msg = account_base_service_ins.app_ticket_permission_check(app_name, ticket_id)
        if not app_permission_check:
            return api_response(-1, msg, '')

        # 强制修改工单状态需要对应工作流的管理员或者超级管理员
        flag, result = ticket_base_service_ins.ticket_admin_permission_check(ticket_id, username)
        if flag is False:
            return api_response(-1, result, {})

        flag, result = ticket_base_service_ins.update_ticket_state(ticket_id, state_id, username, suggestion)
        if flag is False:
            return api_response(-1, result, {})
        else:
            return api_response(0, '', {})
示例#3
0
    def post(self, request, *args, **kwargs):
        """
        转交操作会直接修改工单处理人,且工单状态不变,所以在使用的时候可以在前端做些提醒 避免用户把工单直接转交给下个人,从而干扰了工单的正常流转(
        如用户提交了一个请假单,部门TL审批状态下,tl本来应该点击"同意",工单会自动流转到财务人员审批状态。 应该避免tl直接将工单转交给了某个财务)。这个地方后续会考虑怎么优化下,目前先在前端做提醒
        :param request:
        :param args:
        :param kwargs:
        :return:
        """
        json_str = request.body.decode('utf-8')
        request_data_dict = json.loads(json_str)
        ticket_id = kwargs.get('ticket_id')
        username = request.META.get('HTTP_USERNAME')
        target_username = request_data_dict.get('target_username', '')
        suggestion = request_data_dict.get('suggestion', '')
        from_admin = request_data_dict.get('from_admin', 0)

        app_name = request.META.get('HTTP_APPNAME')
        app_permission_check, msg = account_base_service_ins.app_ticket_permission_check(
            app_name, ticket_id)
        if not app_permission_check:
            return api_response(-1, msg, {})

        if from_admin:
            flag, result = ticket_base_service_ins.ticket_admin_permission_check(
                ticket_id, username)
            if flag is False:
                return api_response(-1, result, {})
        else:
            # 非管理员操作,校验用户是否有处理权限
            flag, result = ticket_base_service_ins.ticket_handle_permission_check(
                ticket_id, username)
            if flag is False:
                return api_response(-1, result, {})
            if result.get('permission') is False:
                return api_response(-1, result.get('msg'), {})

        result, msg = ticket_base_service_ins.deliver_ticket(
            ticket_id, username, target_username, suggestion)
        if result:
            code, msg, data = 0, msg, result
        else:
            code, msg, data = -1, msg, ''
        return api_response(code, msg, data)