使用样例

 

技术人员不得将请求状态更改为等待采购除非请求被批准。
 

下面是脚本中使用的包列表

 

import sys, requests  import json,os  import datetime

 

################ Method Definition Starts #############   # ------------------ Function to parse input from Request JSON file----------------------   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    #----------- Function to get diff json old value FOR V3 Format -------------------  # Will return old value present in the diff json   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("No value present in Diff JSON")      except:          print("Unexpected error in parsing diff json"+diffJSON)   #------------ Constructing the Json Object for updating the request.---------   # data is Json that will have the Field Name/Value that needs to be updated in the request  # data = {"LEVEL":"TIER 1","PRIORITY":"High","IMPACT":"High"}  # Need to pass the data to actionPlugin_constructReqJSON to vet the full json  # UPDATE,Negate are supporting for 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   #------------ Constructing the Json for default return functionality.---------   # Use a combination of above two functions to construct the data parameter  # data = actionPlugin_AddNote("Ticket has been created in JIRA and information populated in SDP")   def actionPlugin_constructReqJSON(data, message="Request Updated Successfully"):       json_data = '''{                "message":"''' +message + '''",                "result":"success",                "operation":[''' + data + ''']                }'''        return json_data    ################ Method Definition ends #############    # File containing request details will be stored as json object and the file path will be passed as argument to the script replacing the $COMPLETE_JSON_FILE argument  file_Path = sys.argv[1]  # Load the json content which contains request details (Changed)  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":                 #Constructing the Json Object for updating the request.            #The following is a Sample of the JSON structure for Updating a Request.       '''{           "result": "success",           "operation": [           {                "OPERATIONNAME": "NEGATE",               "REASON": "Negate Reason"                }           ]           }'''        message = "Cannot change the request status to "+status+" unless the request is approved"       #Creating the Json that will have the Field Name/Value that needs to be updated in the request       updatejson = actionPlugin_UpdateRequest("","NEGATE",additionalParams='''"REASON":"'''+message+'''"''')       returnJson = actionPlugin_constructReqJSON(updatejson,message)       #Returning the Constructed Json Object       print(returnJson)   elif  appr_status!=None and appr_status=="Pending Approval":       #The following is a Sample of the JSON structure for Updating a Request.        '''{         "result": "success",         "message": "Sample Python script",         "operation": [           {             "OPERATIONNAME": "UPDATE",             "INPUT_DATA": [               {                 "request": {                   "urgency": {                     "name": "High"                   },                   "group": {                     "name": "Network"                   },                   "priority": {                     "name": "High"                   }                 }               }             ]           }         ]       }'''        message = "Set priority to High when approval status is Pending approval"       #Creating the Json that will have the Field Name/Value that needs to be updated in the request.       updatejson = actionPlugin_UpdateRequest('''{"priority":{"name":"High"}}''',"UPDATE","request")       returnJson = actionPlugin_constructReqJSON(updatejson,message)       #Returning the Constructed Json Object.       print(returnJson)   else :       print("No changes found") # This message will be printed in the History if not of the Conditions in the Script was matched.

 

 


ServiceDeskPlus - 帮助台和资产管理软件
Copyright © 2006-2019 卓豪(北京)技术有限公司版权所有

Back to Top