Write Values to an ARDI Asset
Description
This script updates the value of a property in ARDI itself.
This is useful if you have last modified date or last maintained by information inside ARDI properties.
You can also interrogate information from ARDI in the same script, so if you were interested in storing the next time maintenance is required, you could query the asset for it's maintenance frequency first.
In the example below, two properties are being set. The date of the last inspection, and the username of the person who completed it.
Full Script
import requests from datetime import datetime import os import sys import traceback import warnings #Set default details server="servername/s/sitename" username="username" password="password" datepropertyid=[ID of the date property in ARDI]] userpropertyid=[[ID of the user property in ARDI]] asset = "Unknown Asset" checklist = "Unknown Checklist" user = "Unknown User" assetid = "1" tm = datetime.now().strftime("%Y/%m/%d %H:%M:%S") #Get submission details from environment variables try: asset = os.environ["assetname"] except: print "No Asset Provided" sys.exit(0) try: assetid = os.environ["assetid"] except: print "No Asset ID Provided" sys.exit(0) try: checklist = os.environ["checklist"] except: print "No Checklist Provided" sys.exit(0) try: user = os.environ["user"] except: print "No User Provided" sys.exit(0) def Sub(st,ass,chk,usr,dt): return st.replace("{checklist}",chk).replace("{asset}",ass).replace("{user}",usr).replace("{date}",dt) #Get auth key from ARDI server.... url = "http://" + server + "/api/auth?username=" + username + "&password=" + password resp = requests.get(url) data = resp.content #Extract the auth-key from the response (quick and dirty - real solutions might do more exception handling and error checking here... ind = data.find("<authcode>") if ind > 0: indx = data.find("</authcode>") totaloffset = ind + 10 authcode = data[totaloffset:indx] #Submit date url = "http://" + server + "/api/asset/property" payload = [('id',assetid),('property',datepropertyid),('node','text'),('value',tm),('auth',authcode)] resp = requests.post(url,data=payload) #Submit username payload = [('id',assetid),('property',userpropertyid),('node','text'),('value',user),('auth',authcode)] requests.post(url,data=payload) #If everything worked out, send the word 'OK'. print 'OK'