Beispiel #1
0
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})
Beispiel #2
0
 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(), {})
Beispiel #3
0
 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(), {})