Caso de Uso

O técnico não deve ter permissão para alterar o status da solicitação para Aguardando Compra a menos que a solicitação esteja aprovada.
 

Abaixo está a lista de pacotes usados no script

 

import sys, requests

import json,os

import datetime

 

################ Início da Definição do Método #############


# ------------------ Função para analisar a entrada do arquivo JSON da solicitação ----------------------


def read_file(file_Path, key=None):

    with open(file_Path) as data_file:

        data = json.load(data_file)

    if key==None:

        return data

    else:

        dataObj = data[key]

        return dataObj



#----------- Função para obter o valor antigo do json diff PARA o formato V3 -------------------

# Retornará o valor antigo presente no json diff


def getValueFromDiffJSON_V3(diffJSON,key):


    try:

        if key in diffJSON['old']:

            if(isinstance(diffJSON['old'][key],dict)):

                return diffJSON['old'][key]['name']

            else:

                return diffJSON['old'][key]

        else:

                print("Nenhum valor presente no JSON Diff")

    except:

        print("Erro inesperado ao analisar o json diff"+diffJSON)


#------------ Construindo o objeto Json para atualizar a solicitação.---------


# data é o Json que terá o Nome/Valor do Campo que precisa ser atualizado na solicitação

# data = {"LEVEL":"TIER 1","PRIORITY":"High","IMPACT":"High"}

# É necessário passar os dados para actionPlugin_constructReqJSON para obter o json completo

# UPDATE, Negate são compatíveis com V3.


def actionPlugin_UpdateRequest(data,OperationName="EDIT_REQUEST",module=None,additionalParams=""):

     if module is not None:

         temp={}

         temp[module]=json.loads(data)

         tempString=json.dumps(temp)

         data=tempString

     json_data = '''{

         "INPUT_DATA": [''' + data +    '''],

         "OPERATIONNAME": "''' + OperationName + '''",

        ''' + additionalParams + '''

     },'''

     return json_data


#------------ Construindo o Json para a funcionalidade de retorno padrão.---------


# Use uma combinação das duas funções acima para construir o parâmetro data

# data = actionPlugin_AddNote("O ticket foi criado no JIRA e as informações foram preenchidas no SDP")


def actionPlugin_constructReqJSON(data, message="Solicitação atualizada com sucesso"):

     json_data = '''{

              "message":"''' +message + '''",

              "result":"success",

              "operation":[''' + data + ''']

              }''' 

     return json_data



################ Fim da Definição do Método #############



# O arquivo que contém os detalhes da solicitação será armazenado como objeto json e o caminho do arquivo será passado como argumento para o script, substituindo o argumento $COMPLETE_JSON_FILE

file_Path = sys.argv[1]

# Carrega o conteúdo json que contém os detalhes da solicitação (Alterado)

requestObj = read_file(file_Path,'request')

diffObj = read_file(file_Path,'diff')

status=requestObj['status']['name']

appr_status=requestObj['approval_status']['name']



if  appr_status!=None and appr_status!="Approved" and status=="Waiting For Purchase":

        

     #Construindo o objeto Json para atualizar a solicitação.

    

    #A seguir está um exemplo da estrutura JSON para atualizar uma solicitação.

     '''{

         "result": "success",

         "operation": [

         {

              "OPERATIONNAME": "NEGATE",

             "REASON": "Motivo da negação"

              }

         ]

         }'''


     message = "Não é possível alterar o status da solicitação para "+status+" a menos que a solicitação esteja aprovada"

     #Criando o Json que terá o Nome/Valor do Campo que precisa ser atualizado na solicitação

     updatejson = actionPlugin_UpdateRequest("","NEGATE",additionalParams='''"REASON":"'''+message+'''"''')

     returnJson = actionPlugin_constructReqJSON(updatejson,message)

     #Retornando o objeto Json construído

     print(returnJson)


elif  appr_status!=None and appr_status=="Pending Approval":


    #A seguir está um exemplo da estrutura JSON para atualizar uma solicitação.


     '''{

       "result": "success",

       "message": "Script Python de exemplo",

       "operation": [

         {

           "OPERATIONNAME": "UPDATE",

           "INPUT_DATA": [

             {

               "request": {

                 "urgency": {

                   "name": "High"

                 },

                 "group": {

                   "name": "Network"

                 },

                 "priority": {

                   "name": "High"

                 }

               }

             }

           ]

         }

       ]

     }'''


     message = "Defina a prioridade como Alta quando o status de aprovação estiver como Aprovação Pendente"

     #Criando o Json que terá o Nome/Valor do Campo que precisa ser atualizado na solicitação.

     updatejson = actionPlugin_UpdateRequest('''{"priority":{"name":"High"}}''',"UPDATE","request")

     returnJson = actionPlugin_constructReqJSON(updatejson,message)

     #Retornando o objeto Json construído.

     print(returnJson)


else :

     print("Nenhuma alteração encontrada") # Esta mensagem será exibida no Histórico se nenhuma das condições no script for atendida.

 

 

Confiável pelas melhores organizações do mundo

Suporte mais rápido e fácil, juntos