Exemplo n.º 1
0
def submit(request):
    if not 'id' in request.POST:
        return HttpResponse('{"Error": "No ID supplied."}', content_type='application/json', status=400)
    if not 'result_data' in request.POST:
        return HttpResponse('{"Error": "No result data supplied."}', content_type='application/json', status=400)
    try:
        subject = Subject.objects.filter(subject_id=request.POST['id']).all()[0]
    except IndexError:
        return HttpResponse('{"Error": "Unknown id."}', content_type='application/json')
    result_data = json.loads(request.POST['result_data'])
    try:
        task = Task.objects.filter(pk=result_data['task_id']).all()[0]
    except IndexError:
        return HttpResponse('{"Error": "Unknown task."}', content_type='application/json')
    result = Result(subject=subject, task=task)
    result.first_card_flipped = result_data['1']
    result.second_card_flipped = result_data['2']
    result.third_card_flipped = result_data['3']
    result.fourth_card_flipped = result_data['4']
    result.time = result_data['time']
    result.save()
    if subject.results.count() >= min(AbstractTask.objects.count(), ConcreteTask.objects.count()):
        return HttpResponse('{"Finished": "Tasks completed."}', content_type='application/json')
    if subject.is_abstract_group():
        task = AbstractTask.objects.all()[subject.results.count()]
    else:
        task = ConcreteTask.objects.all()[subject.results.count()]
    return HttpResponse(json.dumps({
        'task_id': task.pk,
        'description': task.description,
        1: {
            'card_id': task.first_card
        },
        2: {
            'card_id': task.second_card
        },
        3: {
            'card_id': task.third_card
        },
        4: {
            'card_id': task.fourth_card
        },
        'story': task.story,
        'task_number': min(AbstractTask.objects.count(), ConcreteTask.objects.count()),
        'progress': subject.results.count()
    }), content_type='application/json')