def handle(self, *args, **options): for q in Quizes.objects.all(): # Call to qualtrics api_string = "https://survey.qualtrics.com/WRAPI/ControlPanel/api.php?API_SELECT=ControlPanel&Version=2.3&Request=getLegacyResponseData&User=econ%20ra&Token=h6ylmTK5Jr5yQhjHNwJrAmWzJCQl1UomFJAZIIS9&Format=JSON&SurveyID=" api_call = "%s%s" % (api_string, q.q_id) r = requests.get(api_call) data = r.json() #self.stdout.write('%s' % data) for response_id in data: try: score = str(data[response_id]['Score']['Sum']) except TypeError: score = str(data[response_id]['Score']) finished = data[response_id]['Finished'] if score == '': #and finished == u'1': score = "0" if Results.objects.filter(response_id=response_id).count() > 0: # CHecks if previously not finished and updates according if Results.objects.get( response_id=response_id).finished == "0" and data[ response_id]['Finished'] == u'1': Results.objects.filter(response_id=response_id).update( score=encode(score, 'utf-8'), finished="1") else: continue new_r = Results(response_id=response_id, score=encode(score, 'utf_8'), finished=finished) #new_r.response_id = response_id #new_r.score = encode(score, 'utf-8') #new_r.finished = finished new_r.save() # Associate with Quizes quiz = Quizes.objects.get(q_id=q.q_id) r = Results.objects.get(id=new_r.id) quiz.results_set.add(r) # Associate with user temp_uname = encode(data[response_id]['Name'], 'utf_8') uname = temp_uname.replace("Doe, ", "") #self.stdout.write('%s' % uname) try: user = User.objects.get(username=uname) user.results_set.add(r) except ObjectDoesNotExist: new_misfit = MisfitNames(username=uname) new_misfit.save()
def handle(self, *args, **options): for q in Quizes.objects.all(): # Call to qualtrics api_string = "https://survey.qualtrics.com/WRAPI/ControlPanel/api.php?API_SELECT=ControlPanel&Version=2.3&Request=getLegacyResponseData&User=econ%20ra&Token=h6ylmTK5Jr5yQhjHNwJrAmWzJCQl1UomFJAZIIS9&Format=JSON&SurveyID=" api_call = "%s%s" % (api_string, q.q_id) r = requests.get(api_call) data = r.json() #self.stdout.write('%s' % data) for response_id in data: try: score = str(data[response_id]['Score']['Sum']) except TypeError: score = str(data[response_id]['Score']) finished = data[response_id]['Finished'] if score == '': #and finished == u'1': score = "0" if Results.objects.filter(response_id=response_id).count() > 0: # CHecks if previously not finished and updates according if Results.objects.get(response_id=response_id).finished == "0" and data[response_id]['Finished'] == u'1': Results.objects.filter(response_id=response_id).update(score=encode(score,'utf-8'), finished="1") else: continue new_r = Results(response_id=response_id,score=encode(score, 'utf_8'),finished=finished) #new_r.response_id = response_id #new_r.score = encode(score, 'utf-8') #new_r.finished = finished new_r.save() # Associate with Quizes quiz = Quizes.objects.get(q_id=q.q_id) r = Results.objects.get(id=new_r.id) quiz.results_set.add(r) # Associate with user temp_uname = encode(data[response_id]['Name'],'utf_8') uname = temp_uname.replace("Doe, ", "") #self.stdout.write('%s' % uname) try: user = User.objects.get(username=uname) user.results_set.add(r) except ObjectDoesNotExist: new_misfit = MisfitNames(username=uname) new_misfit.save() # Only adds if quiz is in user's group.
def handle(self, *args, **options): self.stdout.write("%s: Begin!" % str(datetime.now())) api_string = "https://survey.qualtrics.com/WRAPI/ControlPanel/api.php?API_SELECT=ControlPanel&Version=2.3&Request=getLegacyResponseData&User=econ%20ra&Token=h6ylmTK5Jr5yQhjHNwJrAmWzJCQl1UomFJAZIIS9&Format=JSON&SurveyID=" api_urls = [] for q in Quizes.objects.all(): api_url = "%s%s" % (api_string, q.q_id) api_urls.append(api_url) rs = (grequests.get(u, stream=False) for u in api_urls) dataListDict = [] #grequests.map(rs) qualtricsData = grequests.map(rs) #creates a dictionary of all new results errorInQualData = False for r in qualtricsData: seperator = 'SurveyID=' try: before, seperator, q_id = r.url.partition(seperator) except AttributeError: errorInQualData = True break else: data = r.json() for response_id in data: try: score = str(data[response_id]['Score']['Sum']) except TypeError: score = str(data[response_id]['Score']) else: finished = data[response_id]['Finished'] if score == '': #and finished == u'1': score = "0" temp_uname = encode(data[response_id]['Name']) uname = temp_uname.replace("Doe, ", "") try: existingResult = Results.objects.get(response_id=response_id) continue except ObjectDoesNotExist: try: user = User.objects.get(username=uname) except ObjectDoesNotExist: new_misfit = MisfitNames(username=uname) new_misfit.save() else: quiz = Quizes.objects.get(q_id=q_id) new_r = Results(name_id=user.id, response_id=response_id,score=encode(score, 'utf_8'),finished=finished, quiz_id=quiz.id ) dataListDict.append(new_r) if errorInQualData: self.stdout.write("Connection to Qualtrics Timed out") #del qualtricsData, r, data, dataListDict, api_urls, rs, q_id, api_string, api_url else: Results.objects.bulk_create(dataListDict) gc.collect() #del qualtricsData, r, data, dataListDict, api_urls, rs, q_id, api_string, api_url self.stdout.write("%s: DONE" % str(datetime.now()))
def handle(self, *args, **options): self.stdout.write("%s: Begin!" % str(datetime.now())) api_string = "https://survey.qualtrics.com/WRAPI/ControlPanel/api.php?API_SELECT=ControlPanel&Version=2.3&Request=getLegacyResponseData&User=econ%20ra&Token=h6ylmTK5Jr5yQhjHNwJrAmWzJCQl1UomFJAZIIS9&Format=JSON&SurveyID=" api_urls = [] for q in Quizes.objects.all(): api_url = "%s%s" % (api_string, q.q_id) api_urls.append(api_url) rs = (grequests.get(u, stream=False) for u in api_urls) dataListDict = [] #grequests.map(rs) qualtricsData = grequests.map(rs) #creates a dictionary of all new results errorInQualData = False for r in qualtricsData: seperator = 'SurveyID=' try: before, seperator, q_id = r.url.partition(seperator) except AttributeError: errorInQualData = True break else: data = r.json() for response_id in data: try: score = str(data[response_id]['Score']['Sum']) except TypeError: score = str(data[response_id]['Score']) else: finished = data[response_id]['Finished'] if score == '': #and finished == u'1': score = "0" temp_uname = encode(data[response_id]['Name']) uname = temp_uname.replace("Doe, ", "") try: existingResult = Results.objects.get( response_id=response_id) continue except ObjectDoesNotExist: try: user = User.objects.get(username=uname) except ObjectDoesNotExist: new_misfit = MisfitNames(username=uname) new_misfit.save() else: quiz = Quizes.objects.get(q_id=q_id) new_r = Results(name_id=user.id, response_id=response_id, score=encode(score, 'utf_8'), finished=finished, quiz_id=quiz.id) dataListDict.append(new_r) if errorInQualData: self.stdout.write("Connection to Qualtrics Timed out") #del qualtricsData, r, data, dataListDict, api_urls, rs, q_id, api_string, api_url else: Results.objects.bulk_create(dataListDict) gc.collect() #del qualtricsData, r, data, dataListDict, api_urls, rs, q_id, api_string, api_url self.stdout.write("%s: DONE" % str(datetime.now()))