def survey_ajax(request): """Ajax call to submit a survey.""" MAX_CHARACTER_LENGTH = 1000 course_id = request.POST.get('course_id') unit_id = request.POST.get('unit_id') survey_name = request.POST.get('survey_name') survey_answer = request.POST.get('survey_answer') if not course_id or not unit_id: log.warning("Illegal parameter. course_id=%s, unit_id=%s" % (course_id, unit_id)) raise Http404 if not survey_name: log.warning("Illegal parameter. survey_name=%s" % survey_name) raise Http404 if not survey_answer: log.warning("Illegal parameter. survey_answer=%s" % survey_answer) raise Http404 try: obj = json.loads(survey_answer) except: log.warning("Illegal parameter. survey_answer=%s" % survey_answer) raise Http404 for k, v in obj.iteritems(): if len(v) > MAX_CHARACTER_LENGTH: log.warning("%s cannot be more than %d characters long." % (k, MAX_CHARACTER_LENGTH)) raise Http404 try: submission = SurveySubmission.objects.filter( course_id=CourseLocator.from_string(course_id), unit_id=unit_id, user=request.user ).order_by('created')[0:1].get() except SurveySubmission.DoesNotExist: pass else: return JsonResponse({ 'success': False, 'survey_answer': submission.get_survey_answer(), }) submission = SurveySubmission( course_id=CourseLocator.from_string(course_id), unit_id=unit_id, user=request.user, survey_name=survey_name, survey_answer=survey_answer, ) submission.save() return JsonResponse({'success': True})
def test_survey_models_survey_submission(self): """Test for survey.models.SurveySubmission get_survey_answer/set_survey_answer""" submission = SurveySubmission() self.assertEquals(submission.get_survey_answer(), {}) submission.set_survey_answer({}) self.assertEquals(submission.get_survey_answer(), {})