Python RESTful
#!/usr/bin/env pypy
import sys
import getopt
import csv
import requests, json
sugar_url = ""
sugar_uname = ""
sugar_pw = ""
def form_post():
headers = {
'User-Agent': 'Chrome',
'Cookie:': 'lalala'
}
files = {
'module': (None, 'Users'),
'record': (None, '378d0b87-00dc-1111-bbbb-aaaaaaaaaaaaa'),
'action': (None, 'Save'),
'sugar_user_name': (None, 'abc'),
'unique_name': (None, 'aaa'),
'first_name': (None, 'bbb'),
'last_name': (None, 'ccc'),
'status': (None, 'Active'),
'timezone': (None, 'America/Montreal')
}
res = requests.post(
"http://test.com/index.php",
headers=headers,
files=files
)
print res.status_code
def sugar_send_request(method, rest_data):
rest_data = json.dumps(rest_data)
headers = {'user-agent': 'Chrome'}
payload = {
'method': method,
'input_type': 'json',
'response_type' : 'json',
'rest_data' : rest_data
}
try:
# r = requests.post(sugar_url, data, auth=(sugar_uname, sugar_pw))
res = requests.post(sugar_url, headers=headers, data=payload)
return res
except KeyError as e:
raise SugarUnhandledException(e)
def sugar_update_timezone(uid, timezone_id):
print uid + timezone_id
def sugar_login(username, passwd):
data = {
'user_auth': {
'user_name': sugar_uname,
'password': sugar_pw
}
}
res = sugar_send_request('login', data)
try:
print res.status_code
print res.headers.get('content-type')
print res.json()
except KeyError as e:
raise SugarUnhandledException(e)
def process_cvs_file(file):
# with statement will do try and finally close the file
with open(file, 'rb') as csvfile:
reader = csv.reader(csvfile, delimiter=',', quotechar='|')
try:
for row in reader:
# print len(row) # suppose to be 3, "id, editor_code, timezone_id"
uid = row[0];
editor_code = row[1];
timezone_id = row[2];
sugar_update_timezone(uid, timezone_id)
except csv.Error as e:
raise CSVException('file %s, line %d: %s' % (filename, reader.line_num, e))
def main():
# parse command line options
try:
opts, args = getopt.getopt(sys.argv[1:], "h", ["help"])
except getopt.error, msg:
print >>sys.stderr, msg
print >>sys.stderr, "for help use --help"
return 2
# process options
for o, a in opts:
if o in ("-h", "--help"):
print "Python Interpreter:\n" + (sys.version)
return 0
# process arguments
for file in args:
process_cvs_file(file)
# REVISIT: Remove testing code please
# sugar_login(sugar_uname, sugar_pw)
form_post()
if __name__ == '__main__':
sys.exit(main())