Esempio n. 1
0
    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()
Esempio n. 2
0
	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.
				
						
Esempio n. 3
0
	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()))
Esempio n. 4
0
    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()))