Örnek 8
Senaryo :
Müşterilere kiosk ekranından anketleri gösterelim ve seçtirelim, seçilen anketin soruları için cevapları alalım ve anket fişi oluşturalım.
Örnekler diadevdays sunucusu üzerinde çalışmaktadır.
Örnek Kod (python):
# coding=utf-8
import simplejson
import base64
import urllib2
from datetime import datetime
from pprint import pprint
wsAdresMain = 'https://diadevdays.ws.dia.com.tr/api/v3/'
firma_kodu = 4
donem_kodu = 1
apikey = "773f9085-9dc8-4f50-b34d-f7b56da33b5f"
def callWs(wsAdres, postBody):
try:
postBody = simplejson.dumps(postBody, cls=simplejson.JSONEncoder)
req = urllib2.Request(wsAdres,
data=postBody,
headers={"Content-Type": "application/json"})
content = urllib2.urlopen(req).read()
except Exception, e:
print("Exception: {}".format(repr(e)))
wsResult = simplejson.loads(content)
return wsResult
loginBody = {"login" :
{"username": "ws",
"password": "ws",
"disconnect_same_user": True,
"lang": "tr",
"params": {"apikey": apikey}
}
}
loginResult = callWs(wsAdresMain + 'sis/json', loginBody)
sessionID = loginResult['msg']
if not sessionID:
print("Login yapilamadi")
exit(0)
anketiyapan = raw_input('Lütfen ad ve soyadınızı giriniz: ')
postBody = {"ank_anketsablon_listele" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"filters": "",
"sorts": "",
"params": "",
"limit": 10,
"offset": 0
}
}
anketler = callWs(wsAdresMain + 'ank/json', postBody)
anketler = anketler['result']
if anketler and len(anketler) > 0:
secilenAnket = None
for anket in anketler:
print '%s - %s' % (anket['kodu'], anket['aciklama'])
anketKodu = raw_input('Lütfen cevaplamak istediğiniz anket kodunu giriniz: ')
for anket in anketler:
if anket['kodu'] == anketKodu:
secilenAnket = anket
if secilenAnket:
postBody = {"ank_anketsablon_getir" :
{"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"key": secilenAnket['_key'],
"params": ""
}
}
anket = callWs(wsAdresMain + 'ank/json', postBody)
anket = anket['result']
cevaplar = []
if anket and anket.get('m_kalemler'):
for soru in anket['m_kalemler']:
cevap = {'_key_ank_anketsablonu_kalemi': soru['_key']}
print '\n %s \n' % soru['soru']
for cevap in soru.get('m_cevaplar') or []:
print '%s - %s' % (cevap['deger'], cevap['aciklama'])
print '\n'
cvp = raw_input('Cevabınız: ')
for cevap in soru['m_cevaplar']:
if cevap['deger'] == int(cvp):
secilenCvp = cevap
cevap['_key_ank_anketsablonu_kalemi_cevaplar'] = secilenCvp['_key']
cevaplar.append(cevap)
postBody = { "ank_anket_fisi_ekle": {
"session_id": sessionID,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"kart": {
"_key_scf_carikart": {"carikartkodu": "V0001"},
"_key_ank_anketsablonu": {"kodu": anketKodu},
"fisno": "001",
"tarih": "2023-04-11",
"saat": "13:00:00",
"aciklama": "Anket fişi örnek açıklama",
"bitistarihi": "2023-04-14",
"bitissaati": "14:00:00",
"anketiyapan": anketiyapan,
"notlar": "Anket fişi örnek not",
"m_kalemler": cevaplar
}
}
}
wsResult = callWs(wsAdresMain + 'ank/json', postBody)
print u"%s" % wsResult['msg']
else:
print 'Gecersiz anket kodu'
exit(0)