# --------------------------------------------
# Title: packApp Multis Mock Generator
# Date: 10 / 14 / 2013
#
# Desc: A quick script to parse CSV and create structured JSON for packApp simulation
# ------------------------------------------------
import json, csv,sys
# Setup Constants and Variables
# ------------------------------------------------
slots = []
demo = {
'F4':{'item':['activation']},
'E2':{'item':['damaged']},
'E3':{'item':['missing']},
'D1':{'item':['unscannable']},
'D5':{'slot':['PSLIP']},
'E7':{'item':['activation','activation']},
}
def convItem(s):
i = {}
i['title'] = s['title']
i['asin'] = s['asin']
i['actions'] = {}
i['demo'] = {}
#if s['activation']:
# i['actions']['activation'] = 'true'
return i
def main(refData):
# Read In Reference Data
# ------------------------------------------------
data = [x for x in csv.DictReader(open(refData[0],'rU'))]
# fill by slot
for item in data:
try:
idx = [slot['id'] for slot in slots].index(item['slot'])
slots[idx]['items'].append(convItem(item))
except:
s = {}
s['id'] = item['slot']
if item['box']:
s['boxRec'] = item['box']
s['items'] = []
s['actions'] = {}
s['items'].append(convItem(item))
slots.append(s)
continue
# add demo conditions
for slot,conds in demo.iteritems():
idx = [s['id'] for s in slots].index(slot)
for i,cond in enumerate(conds.get('item',[])):
if cond in ['activation']:
loc = 'actions'
else:
loc = 'demo'
slots[idx]['items'][i][loc][cond] = 'true'
for i,cond in enumerate(conds.get('slot',[])):
i = conds['slot'].index(cond)
slots[idx]['actions'][cond] = 'true'
# Output & Save
# ------------------------------------------------
with open('data.json', 'w') as f:
f.write(json.dumps(slots))
if __name__ == "__main__":
main(sys.argv[1:])