Exemplo n.º 1
0
def hello2(id_pregunta):
    print "Id pregunta : %s" % id_pregunta
    id_pregunta = int(id_pregunta)
    if id_pregunta < 0 or id_pregunta >= len(preguntas):
        return abort(404)

    form = ResponseForm()
    if form.validate_on_submit():
        r = models.Respuesta(pregunta=id_pregunta,
                             respuesta=form.respuesta.data)
        db.session.add(r)
        db.session.commit()
        id_pregunta = id_pregunta + 1
        if id_pregunta >= 4:
            return redirect('/stats')
            #aca hay que aumentar el contador de cantidad de encuestados
        else:
            return redirect('/pregunta/%i' % id_pregunta)

    pregunta = preguntas[id_pregunta]
    respuestas = [x.decode('utf8') for x in pregunta['respuestas']]
    return render_template("pregunta.html",
                           pregunta=pregunta['pregunta'].decode('utf8'),
                           respuestas=respuestas,
                           id_pregunta=id_pregunta,
                           form=form)
Exemplo n.º 2
0
def encuesta_estudiante(request):
    codigo = codigo_encuesta_session(request)
    if not codigo:
        return codigo_encuesta(request)
    survey = Survey.objects.get(id=3)
    category_items = list(survey.category_set.all())

    if request.method == 'POST':
        form = ResponseForm(request.POST, survey=survey)
        if form.is_valid():
            form.save()
            return redirect('encuesta_finalizada')
        else:
            print "error llenando", form.errors
    else :
        form = ResponseForm(survey=survey)

    # customizar form de acuerdo a la encuesta para padres

    camposMaterias = [form['question_13%02d'%x] for x in xrange(1,20) ]
    camposRecursos = [form['question_18%02d'%x] for x in xrange(1,8) ]
    camposDispositivos = [form['question_2%0d'%x] for x in xrange(2,6) ]
    camposInternet = [form['question_28%02d'%x] for x in xrange(1,19) ]

    return render(request, 'encuesta_estudiante.html', {
        'form': form,
        'camposMaterias1': camposMaterias[:10],
        'camposMaterias2': camposMaterias[10:],
        'camposRecursos1': camposRecursos[:4],
        'camposRecursos2': camposRecursos[4:],
        'camposDispositivos1': camposDispositivos[:2],
        'camposDispositivos2': camposDispositivos[2:],
        'camposInternet1': camposInternet[:9],
        'camposInternet2': camposInternet[9:]
    })
Exemplo n.º 3
0
def encuesta_nuevo_padre(request):
    codigo = codigo_encuesta_session(request)
    if not codigo:
        return codigo_encuesta(request)
    survey = Survey.objects.get(id=6)
    category_items = list(survey.category_set.all())

    if request.method == 'POST':
        form = ResponseForm(request.POST, survey=survey)
        if form.is_valid():
            form.save()
            return redirect('encuesta_finalizada')
        else:
            print "error llenando", form.errors
    else :
        form = ResponseForm(survey=survey)


    camposMaterias = [form['question_18%02d'%x] for x in xrange(1,9) ]
    camposHerramientas = [form['question_26%02d'%x] for x in xrange(1,15) ]

    return render(request, 'encuesta_nuevo_padre.html', {
        'form': form,
        'camposMaterias1': camposMaterias[:4],
        'camposMaterias2': camposMaterias[4:],
        'camposHerramientas1': camposHerramientas[:7],
        'camposHerramientas2': camposHerramientas[7:],
    })
Exemplo n.º 4
0
def encuesta_nuevo_maestro(request):
    codigo = codigo_encuesta_session(request)
    if not codigo:
        return codigo_encuesta(request)
    survey = Survey.objects.get(id=5)
    category_items = list(survey.category_set.all())

    if request.method == 'POST':
        form = ResponseForm(request.POST, survey=survey)
        if form.is_valid():
            form.save()
            return redirect('encuesta_finalizada')
        else:
            print "error llenando", form.errors
    else :
        form = ResponseForm(survey=survey)


    camposHerramientas = [form['question_25%02d'%x] for x in xrange(1,18) ]
    #camposDispositivos = [form['question_38%02d'%x] for x in xrange(1,9) ]

    return render(request, 'encuesta_nuevo_maestro.html', {
        'form': form,
        'camposHerramientas1': camposHerramientas[:9],
        'camposHerramientas2': camposHerramientas[9:]
    })
Exemplo n.º 5
0
    def post(self, request, id):
        form = ResponseForm(request.POST)
        if not form.is_valid():
            return render(request, 'claims/detail.html', {'form': form})

        claim = Claim.objects.get(pk=id)
        add_response_to_claim(request, claim, form.cleaned_data)

        return redirect('claim-detail', id=claim.id)
Exemplo n.º 6
0
def SurveyDetail(request, survey_id, response_id):
  survey = Survey.objects.get(id=survey_id)
  response = Response.objects.get(id=response_id)
  category_items = Category.objects.filter(survey=survey)
  categories = [c.name for c in category_items]
  print 'categories for this survey:'
  print categories
  if request.method == 'POST':
    form = ResponseForm(request.POST, survey=survey, response=response)
    if form.is_valid():
      response = form.save()
      return HttpResponseRedirect("/confirm/%s" % response.interview_uuid)
  else:
    form = ResponseForm(survey=survey, response=response)
  return render(request, 'survey.html', {'response_form': form, 'survey': survey, 'response': response, 'categories': categories})
Exemplo n.º 7
0
def SurveyDetail(request, id):
    survey = Survey.objects.get(id=id)
    category_items = Category.objects.filter(survey=survey)
    categories = [c.name for c in category_items]
    print "categories for this survey:"
    print categories
    if request.method == "POST":
        form = ResponseForm(request.POST, survey=survey)
        if form.is_valid():
            response = form.save()
            return HttpResponseRedirect("/exam/confirm/%s" % response.interview_uuid)
    else:
        form = ResponseForm(survey=survey)
        print form
        # TODO sort by category
    return render(request, "survey.html", {"response_form": form, "survey": survey, "categories": categories})
Exemplo n.º 8
0
def SurveyDetail(request, id):
    survey = Survey.objects.get(id=id)
    category_items = Category.objects.filter(survey=survey)
    categories = [c.name for c in category_items]
    if request.method == 'POST':
        form = ResponseForm(request.POST, survey=survey, request=request)
        if form.is_valid():
            response = form.save()
            return HttpResponseRedirect("/confirm/%s" % response.interview_uuid)
    else:
        form = ResponseForm(survey=survey, request=request)
    return render_to_response('survey.html',
                              RequestContext(request,
                                             {'response_form': form,
                                              'survey': survey,
                                              'categories': categories}))
Exemplo n.º 9
0
def SurveyDetail(request, id):
	survey = Survey.objects.get(id=id)
	category_items = Category.objects.filter(survey=survey)
	categories = [c.name for c in category_items]
	print 'categories for this survey:'
	print categories
	if request.method == 'POST':
		form = ResponseForm(request.POST, survey=survey)
		if form.is_valid():
			response = form.save()
			return HttpResponseRedirect("/" )
	else:
		form = ResponseForm(survey=survey)
		print form
		# TODO sort by category
	return render(request, 'survey.html', {'response_form': form, 'survey': survey, 'categories': categories})
Exemplo n.º 10
0
def SurveyDetail(request, id):
	survey = Survey.objects.get(id=id)
	category_items = Category.objects.filter(survey=survey)
	categories = [c.name for c in category_items]
	print 'categories for this survey:'
	print categories
	if request.method == 'POST':
		form = ResponseForm(request.POST, survey=survey)
		if form.is_valid():
			response = form.save()
			return HttpResponseRedirect(
                              urlresolvers.reverse('confirmation', kwargs={'uuid': response.interview_uuid}))
	else:
		form = ResponseForm(survey=survey)
		print form
		# TODO sort by category
	return render(request, 'survey/survey.html', {'response_form': form, 'survey': survey, 'categories': categories})
Exemplo n.º 11
0
 def get(self, request, id):
     form = ResponseForm()
     reply_form = ReplyForm()
     claim = Claim.objects.get(pk=id)
     context = {
         'claim': claim,
         'form': form,
         'reply_form': reply_form,
         'responses': claim.response_set.all(),
     }
     return render(request, 'claims/detail.html', context)
Exemplo n.º 12
0
def survey_detail(request, survey_id):
    global counter
    survey = Survey.objects.get(id=survey_id)
    category_items = Category.objects.filter(survey=survey)
    categories = [c.category_name for c in category_items]
    logging.debug('\t\t\t\tCategories\n')
    logging.debug('Categories for this survey')
    logging.debug('Categories are: {}\n'.format(categories))

    if request.method == 'POST':
        if counter < 1:
            form = ResponseForm(request.POST, survey=survey)

            if form.is_valid():
                response = form.save()
                response.country = locate(request)
                response.save()

                counter += 1
                logging.debug('Value of counter is: {}'.format(counter))
                return HttpResponseRedirect("/confirm/%s" %
                                            response.interview_uuid)

        else:
            return HttpResponse('/participation.html/')

    else:
        form = ResponseForm(survey=survey)
        logging.debug('form print: {}'.format(form))

    return render(request, 'survey.html', {
        'response_form': form,
        'survey': survey,
        'categories': categories
    })
Exemplo n.º 13
0
def encuesta_docente(request):
    codigo = codigo_encuesta_session(request)
    if not codigo:
        return codigo_encuesta(request)
    survey = Survey.objects.get(id=2)
    category_items = list(survey.category_set.all())

    if request.method == 'POST':
        form = ResponseForm(request.POST, survey=survey)
        if form.is_valid():
            form.save()
            return redirect('encuesta_finalizada')
        else:
            print "error llenando", form.errors
    else :
        form = ResponseForm(survey=survey)


    # customizar form de acuerdo a la encuesta para padres
    #form.fields['jornada'].label = u"1. Jornada en la que enseñas"
    #form.fields['institucion'].label = u"2. Nombre de tu institución educativa"
    #form.fields['nombre'].label = u"3. Nombre y apellidos"


    camposMaterias = [form['question_09%02d'%x] for x in xrange(1,20) ]
    camposHerramientas = [form['question_15%02d'%x] for x in xrange(1,30) ]
    camposDispositivos = [form['question_%02d'%x] for x in xrange(25,29) ]
    camposUsos = [form['question_31%02d'%x] for x in xrange(1,21) ]

    return render(request, 'encuesta_docente.html', {
        'form': form,
        'camposMaterias1': camposMaterias[:10],
        'camposMaterias2': camposMaterias[10:],
        'camposHerramientas1': camposHerramientas[:14],
        'camposHerramientas2': camposHerramientas[14:],
        'camposDispositivos1': camposDispositivos[:2],
        'camposDispositivos2': camposDispositivos[2:],
        'camposUsos1': camposUsos[:10],
        'camposUsos2': camposUsos[10:]
    })
Exemplo n.º 14
0
def SurveyDetail(request, id):
    companydetails = CompanyDetail.objects.all()
    survey = Survey.objects.get(id=id)
    category_items = Theme.objects.filter(survey=survey)
    categories = [c.name for c in category_items]
    print 'themes for this survey:'
    print categories
    if request.method == 'POST':
        form = ResponseForm(request.POST, survey=survey)
        if form.is_valid():
            response = form.save()
            return HttpResponseRedirect("/confirm/%s" %
                                        response.interview_uuid)
    else:
        form = ResponseForm(survey=survey)
        print form
        # TODO sort by category

    return render(
        request, 'survey.html', {
            'response_form': form,
            'survey': survey,
            'categories': categories,
            'companydetails': companydetails
        })
Exemplo n.º 15
0
def encuesta_padre(request):
    codigo = codigo_encuesta_session(request)
    if not codigo:
        return codigo_encuesta(request)

    survey = Survey.objects.get(id=1)

    if request.method == 'POST':
        form = ResponseForm(request.POST, survey=survey)
        if form.is_valid():
            form.save()
            return redirect('encuesta_finalizada')
        else:
            print "error llenando", form.errors
    else :
        form = ResponseForm(survey=survey)

    # customizar form de acuerdo a la encuesta para padres
    #form.fields['jornada'].label = u"1. Jornada en la que estudia su hijo(a)"
    #form.fields['nombre'].label = u"3. Nombre(s) y apellidos del padre de familia o acudiente"
    #form.fields['institucion'].label = u"5. Nombre de la institución educativa en la que estudia su hijo(a)"

    camposMaterias = [form['question_13%02d'%x] for x in xrange(1,20) ]
    camposDispositivos = [form['question_%d'%x] for x in xrange(23,27) ]
    camposUsos = [form['question_29%02d'%x] for x in xrange(1,20)]
    camposHerramientas = [form['question_19%02d'%x] for x in xrange(1,15) ]

    return render(request, 'encuesta_padre.html', {
        'form': form,

        'camposMaterias1': camposMaterias[:10],
        'camposMaterias2': camposMaterias[10:],
        'camposDispositivos1': camposDispositivos[:2],
        'camposDispositivos2': camposDispositivos[2:],
        'camposHerramientas1' : camposHerramientas[:7],
        'camposHerramientas2' : camposHerramientas[7:],
        'camposUsos1' : camposUsos[:10],
        'camposUsos2' : camposUsos[10:]
    })
Exemplo n.º 16
0
def upload_file():
    if request.method == 'POST':
        # check if the post request has the file part
        if 'file' not in request.files:
            flash('No file part')
            return redirect(request.url)
        # end if
        file = request.files['file']
        # if user does not select file, browser also
        # submit an empty part without filename
        if file.filename == '':
            flash('No selected file')
            return redirect(request.url)
        # end if
        if file and allowed_extension(file.filename):
            filename = secure_filename(file.filename)
            if 'upload_count' in session:
                session['upload_count'] = session['upload_count'] + 1
            else:
                session['upload_count'] = 1
            # end if
            flash('Loading .. ' + filename)
            flash('Saving to ' + app.config['UPLOAD_FOLDER'])
            filename = file.filename
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))

            form = ResponseForm()
            return render_template(
                'ack_upload.html',
                form=form,
                filename=filename,
                uploadcount=str(session['upload_count']),
            )
        # end if
    # end if
    return render_template('upload.html', title='Upload File')
Exemplo n.º 17
0
def SurveyDetail(request, id):
    survey = Survey.objects.get(id=id)
    category_items = Category.objects.filter(survey=survey)
    categories = [c.name for c in category_items]
    print 'categories for this survey:'
    print categories
    if request.method == 'POST':
        form = ResponseForm(request.POST, survey=survey)
        if form.is_valid():
            response = form.save()
            return HttpResponseRedirect(
                urlresolvers.reverse('confirmation',
                                     kwargs={'uuid': response.interview_uuid}))
    else:
        form = ResponseForm(survey=survey)
        print form
        # TODO sort by category
    return render(request, 'survey/survey.html', {
        'response_form': form,
        'survey': survey,
        'categories': categories
    })
Exemplo n.º 18
0
def login_page(request):

    if "_encuesta" in request.POST:
        # Redirecciono a Survey con el egresado elegido

        egresado_id = None
        survey_id = None
        for key in request.POST:
            if key.startswith("egresado_id"):
                egresado_id = request.POST[key]
            elif key.startswith("survey_id"):
                survey_id = request.POST[key]

        egresado = User.objects.filter(id=egresado_id)
        survey = Encuesta.objects.get(id=survey_id)

        # Chequeo si ya respondieron encuesta para ese egresado
        response = Response.objects.filter(survey=survey, interviewee=egresado)
        if response:
            mensaje = "Ya se cargó esa encuesta para ese egresado."
            # Operador
            # Cargo un combo de egresados, lo elige y ahi puede cargar formulario nuevo.
            surveys_list = Encuesta.objects.order_by("name")
            egresados_list = User.objects.filter(groups__name__in=["egresados"], is_active=True).order_by("last_name")
            return render(
                request,
                "index.html",
                {
                    "surveys_list": surveys_list,
                    "response_list": None,
                    "egresados_list": egresados_list,
                    "mensaje": mensaje,
                },
            )

            # pagina
        p = 1
        # Lleno preguntas de la pagina de esa encuesta
        category_items = Pagina.objects.filter(survey=survey, name=str(p))
        form = ResponseForm(category=p, id=None, interviewee=egresado_id, survey=survey)

        return render(
            request,
            "survey.html",
            {
                "response_form": form,
                "survey": survey,
                "category_items": category_items,
                "ultima": False,
                "egresado_id": egresado_id,
                "response_id": 0,
                "porcentaje": 0,
                "operador": 1,
            },
        )
    else:
        response_list = None
        surveys_list = None
        message = None
        if request.method == "POST":
            form = LoginForm(request.POST)
            if form.is_valid():
                username = request.POST["username"]
                password = request.POST["password"]
                user = authenticate(username=username, password=password)
                if user is not None:
                    if user.is_active:
                        login(request, user)

                        if not is_member(request.user):
                            # Egresado
                            surveys_list = Encuesta.objects.order_by("name")
                            response_list = Response.objects.filter(interviewee=request.user.id).order_by("-category")[
                                :1
                            ]
                            return render(
                                request,
                                "index.html",
                                {"surveys_list": surveys_list, "response_list": response_list, "egresados_list": None},
                            )
                        else:
                            # Operador
                            # Cargo un combo de egresados, lo elige y ahi puede cargar formulario nuevo.
                            surveys_list = Encuesta.objects.order_by("name")
                            egresados_list = User.objects.filter(
                                groups__name__in=["egresados"], is_active=True
                            ).order_by("last_name")
                            return render(
                                request,
                                "index.html",
                                {"surveys_list": surveys_list, "response_list": None, "egresados_list": egresados_list},
                            )

                    else:
                        message = "Tu usuario está inactivo"
                        return render_to_response(
                            "login.html",
                            {
                                "message": message,
                                "form": form,
                                "surveys_list": surveys_list,
                                "response_list": response_list,
                            },
                            context_instance=RequestContext(request),
                        )
                else:
                    message = "Nombre de usuario y/o password incorrecto"
                    return render_to_response(
                        "login.html",
                        {
                            "message": message,
                            "form": form,
                            "surveys_list": surveys_list,
                            "response_list": response_list,
                        },
                        context_instance=RequestContext(request),
                    )
            else:
                return render_to_response(
                    "login.html",
                    {"message": message, "form": form, "surveys_list": surveys_list, "response_list": response_list},
                    context_instance=RequestContext(request),
                )

        else:
            form = LoginForm()
            surveys_list = Encuesta.objects.order_by("name")
            response_list = Response.objects.filter(interviewee=request.user.id).order_by("-category")[:1]

            return render_to_response(
                "login.html",
                {"message": message, "form": form, "surveys_list": surveys_list, "response_list": response_list},
                context_instance=RequestContext(request),
            )
Exemplo n.º 19
0
def upload_file():
    form = UploadForm()
    if form.validate_on_submit():
        if request.method == 'POST':
            file = form.photo.data
            if not allowed_extension(file.filename):
                #  File must be a jpg, etc
                exts = ""
                flash(
                    'File name must end in one of: '
                    + ', '.join(ALLOWED_EXTENSIONS)
                    + '. You entered:  '
                    + file.filename
                )
                return redirect(request.url)
            else:
                filename = secure_filename(file.filename)

                # if needed, initialize upload count, else bump count
                if 'upload_count' in session:
                    session['upload_count'] = session['upload_count'] + 1
                else:
                    session['upload_count'] = 1
                # end if

                # report upload success to user, showing file name
                flash('Loading ... ' + filename)
                flash('Saving to ' + app.config['UPLOAD_FOLDER'] + '...')
                filename = file.filename
                file.save(
                    os.path.join(
                        app.instance_path, app.config['UPLOAD_FOLDER'], filename
                    )
                )
                flash('Saved to ' + app.config['UPLOAD_FOLDER'])

                #  run CNN on image
                my_cnn = Recognizer()

                model_path = os.path.join(app.instance_path, app.config['MODEL_FOLDER'])
                image_path = os.path.join(
                    app.instance_path, app.config['UPLOAD_FOLDER'], filename
                )
                guesses = my_cnn.recognize(model_path, image_path)

                flash('Processing complete ...')

                image_path = os.path.join(
                    app.instance_path, app.config['UPLOAD_FOLDER'], filename
                )

                # read the image into a base64 encoded string, for later display to user
                with open(image_path, "rb") as image_file:
                    encoded_string = base64.b64encode(image_file.read())
                    encoded_string = encoded_string.decode('utf-8')
                # end with

                # remove the file, having performed guess process
                try:
                    os.remove(image_path)
                    flash('File cleanup OK.')
                except OSError:
                    flash('File cleanup: error seen !')
                # end try
                flash('File cleanup ended.')

                # Display result to user
                #  Show uploaded image, followed by identification guesses

                # get file extension, to include in HTML response
                image_type = filename.rsplit('.', 1)[1].lower()
                # b64 is the src value for the <img> tag in response page
                b64 = "data:image/" + image_type + ";base64," + encoded_string

                form = ResponseForm()
                return render_template(
                    'ack_upload.html',
                    form=form,
                    filename=filename,
                    uploadcount=str(session['upload_count']),
                    guesses=guesses,
                    image64=b64,
                )
            # end if
        # end if
    # end if
    return render_template('upload.html', title='Upload File', form=form)
Exemplo n.º 20
0
def login_page(request):

    if '_encuesta' in request.POST:
        #Redirecciono a Survey con el egresado elegido

        egresado_id = None
        survey_id = None
        for key in request.POST:
            if key.startswith('egresado_id'):
                egresado_id = request.POST[key]
            elif key.startswith('survey_id'):
                survey_id = request.POST[key]

        egresado = User.objects.filter(id=egresado_id)
        survey = Encuesta.objects.get(id=survey_id)

        #Chequeo si ya respondieron encuesta para ese egresado
        response = Response.objects.filter(survey=survey, interviewee=egresado)
        if response:
            mensaje = "Ya se cargó esa encuesta para ese egresado."
            #Operador
            #Cargo un combo de egresados, lo elige y ahi puede cargar formulario nuevo.
            surveys_list = Encuesta.objects.order_by('name')
            egresados_list = User.objects.filter(
                groups__name__in=['egresados'],
                is_active=True).order_by('last_name')
            return render(
                request, 'index.html', {
                    'surveys_list': surveys_list,
                    'response_list': None,
                    'egresados_list': egresados_list,
                    'mensaje': mensaje
                })

        #pagina
        p = 1
        #Lleno preguntas de la pagina de esa encuesta
        category_items = Pagina.objects.filter(survey=survey, name=str(p))
        form = ResponseForm(category=p,
                            id=None,
                            interviewee=egresado_id,
                            survey=survey)

        return render(
            request, 'survey.html', {
                'response_form': form,
                'survey': survey,
                'category_items': category_items,
                'ultima': False,
                'egresado_id': egresado_id,
                'response_id': 0,
                'porcentaje': 0,
                'operador': 1
            })
    else:
        response_list = None
        surveys_list = None
        message = None
        if request.method == 'POST':
            form = LoginForm(request.POST)
            if form.is_valid():
                username = request.POST['username']
                password = request.POST['password']
                user = authenticate(username=username, password=password)
                if user is not None:
                    if user.is_active:
                        login(request, user)

                        if not is_member(request.user):
                            #Egresado
                            surveys_list = Encuesta.objects.order_by('name')
                            response_list = Response.objects.filter(
                                interviewee=request.user.id).order_by(
                                    '-category')[:1]
                            return render(
                                request, 'index.html', {
                                    'surveys_list': surveys_list,
                                    'response_list': response_list,
                                    'egresados_list': None
                                })
                        else:
                            #Operador
                            #Cargo un combo de egresados, lo elige y ahi puede cargar formulario nuevo.
                            surveys_list = Encuesta.objects.order_by('name')
                            egresados_list = User.objects.filter(
                                groups__name__in=['egresados'],
                                is_active=True).order_by('last_name')
                            return render(
                                request, 'index.html', {
                                    'surveys_list': surveys_list,
                                    'response_list': None,
                                    'egresados_list': egresados_list
                                })

                    else:
                        message = "Tu usuario está inactivo"
                        return render_to_response(
                            'login.html', {
                                'message': message,
                                'form': form,
                                'surveys_list': surveys_list,
                                'response_list': response_list
                            },
                            context_instance=RequestContext(request))
                else:
                    message = "Nombre de usuario y/o password incorrecto"
                    return render_to_response(
                        'login.html', {
                            'message': message,
                            'form': form,
                            'surveys_list': surveys_list,
                            'response_list': response_list
                        },
                        context_instance=RequestContext(request))
            else:
                return render_to_response(
                    'login.html', {
                        'message': message,
                        'form': form,
                        'surveys_list': surveys_list,
                        'response_list': response_list
                    },
                    context_instance=RequestContext(request))

        else:
            form = LoginForm()
            surveys_list = Encuesta.objects.order_by('name')
            response_list = Response.objects.filter(
                interviewee=request.user.id).order_by('-category')[:1]

            return render_to_response('login.html', {
                'message': message,
                'form': form,
                'surveys_list': surveys_list,
                'response_list': response_list
            },
                                      context_instance=RequestContext(request))
Exemplo n.º 21
0
def Index(request):

    if '_encuesta' in request.POST:
        #Redirecciono a Survey con el egresado elegido

        egresado_id = None
        survey_id = None
        for key in request.POST:
            if key.startswith('egresado_id'):
                egresado_id = request.POST[key]
            elif key.startswith('survey_id'):
                survey_id = request.POST[key]

        egresado = User.objects.filter(id=egresado_id)
        survey = Encuesta.objects.get(id=survey_id)

        #Chequeo si ya respondieron encuesta para ese egresado
        response = Response.objects.filter(survey=survey, interviewee=egresado)
        if response:
            mensaje = "Ya se cargó esa encuesta para ese egresado."
            #Operador
            #Cargo un combo de egresados, lo elige y ahi puede cargar formulario nuevo.
            surveys_list = Encuesta.objects.order_by('name')
            egresados_list = User.objects.filter(
                groups__name__in=['egresados'],
                is_active=True).order_by('last_name')
            return render(
                request, 'index.html', {
                    'surveys_list': surveys_list,
                    'response_list': None,
                    'egresados_list': egresados_list,
                    'mensaje': mensaje
                })

        #pagina
        p = 1
        #Lleno preguntas de la pagina de esa encuesta
        category_items = Pagina.objects.filter(survey=survey, name=str(p))
        form = ResponseForm(category=p,
                            id=None,
                            interviewee=egresado_id,
                            survey=survey)

        return render(
            request, 'survey.html', {
                'response_form': form,
                'survey': survey,
                'category_items': category_items,
                'ultima': False,
                'egresado_id': egresado_id,
                'response_id': 0,
                'porcentaje': 0,
                'operador': 1
            })

    else:
        if not is_member(request.user):
            #Egresado
            surveys_list = Encuesta.objects.order_by('name')
            response_list = Response.objects.filter(
                interviewee=request.user.id).order_by('-category')[:1]
            return render(
                request, 'index.html', {
                    'surveys_list': surveys_list,
                    'response_list': response_list,
                    'egresados_list': None
                })
        else:
            #Operador
            #Cargo un combo de egresados, lo elige y ahi puede cargar formulario nuevo.
            surveys_list = Encuesta.objects.order_by('name')
            egresados_list = User.objects.filter(
                groups__name__in=['egresados'],
                is_active=True).order_by('last_name')
            return render(
                request, 'index.html', {
                    'surveys_list': surveys_list,
                    'response_list': None,
                    'egresados_list': egresados_list
                })
Exemplo n.º 22
0
def SurveyDetail(request, response_id, id, p):
		
	survey = Survey.objects.get(id=id)	         	
	pagina_original = p
	
	#Lleno preguntas de la pagina de esa encuesta	
	category_items = Category.objects.filter(survey=survey, name=str(p))
	#Seteo booleans para workflow
	formnuevo = False
	formcorrecto = True

	if '_siguiente' in request.POST:	
		#Chequeo si la respuesta seleccionada implica un salto en los formularios (solo si es siguiente)
		salta_a_otra = False
		for key in request.POST:
			if key.startswith('question'):
				value = request.POST[key]
				if value != '':
					question_id = key[9:]
					questions = Question.objects.filter(survey=survey, id=int(question_id))
					if questions:						
						for question in questions:											
							if question.choices_salta_a_opcion == value:
								#esa respuesta tiene un "salta a"
								salta_a_otra = True
								pagina_nueva = question.choices_salta_a_numero
							else:
								if not salta_a_otra:
									pagina_nueva = question.choice_salta_por_default		


		#Si se presiono siguiente - me muevo a la pagina correspondiente
		form_sin_grabar = ResponseForm(request.POST, category=pagina_original, id=response_id, interviewee=request.user, survey=survey)		
		form_sin_grabar.survey = survey
		form_sin_grabar.interviewee = request.user
		for categoria in category_items:
			form_sin_grabar.category = categoria							
		if form_sin_grabar.is_valid():						
			for field_name, field_value in form_sin_grabar.cleaned_data.iteritems():
				if field_name.startswith("question_"):
					#Creo un form nuevo y lo grabo por cada campo
					form_grabar = ResponseForm(request.POST, category=pagina_original, id=response_id, interviewee=request.user, survey=survey)									
					form_grabar.survey = form_sin_grabar.survey
					form_grabar.interviewee = form_sin_grabar.interviewee
					form_grabar.category = form_sin_grabar.category
					#Grabo nuevo o update

					if response_id == '0': 					
						form_grabar.save(request.user, field_name, field_value, response_id)
					else:
						#Tengo que ver si ya existe o no						
						questions_actual = Question.objects.filter(id=field_name[9:])
						for question_actual in questions_actual:
							responses_actual = Response.objects.filter(survey=form_sin_grabar.survey, interviewee=form_sin_grabar.interviewee, category=form_sin_grabar.category, question=question_actual)
						
						if responses_actual:
							response_to_save = 0
							for response_actual in responses_actual:
								response_to_save = response_actual.id
							form_grabar.save(request.user, field_name, field_value, response_to_save)
						else:
							form_grabar.save(request.user, field_name, field_value, '0')						

		else:
			formcorrecto = False

		if formcorrecto:							
			p = pagina_nueva				
			category_items = Category.objects.filter(survey=survey, name=str(p))

			#Chequear response_id, para ver si ya esta llena la pagina siguiente o no
			if response_id == '0':
				form_nuevo = ResponseForm(category=p, id=response_id, interviewee=request.user, survey=survey)
			else:				
				responses_siguiente = Response.objects.filter(interviewee=request.user,survey=survey,category=p).order_by('id')[:1]
				if responses_siguiente:
					for response_siguiente in responses_siguiente:
						form_nuevo = ResponseForm(category=p, id=response_siguiente.id, interviewee=request.user, survey=survey)		
				else:					
					form_nuevo = ResponseForm(category=p, id=response_id, interviewee=request.user, survey=survey)		
			
			formnuevo = True

	elif '_anterior' in request.POST:
		#Si se presiono anterior - me muevo a la pagina correspondiente
		form_sin_grabar = ResponseForm(request.POST, category=pagina_original, id=response_id, interviewee=request.user, survey=survey)			
		form_sin_grabar.survey = survey
		form_sin_grabar.interviewee = request.user
		for categoria in category_items:
			form_sin_grabar.category = categoria			
		if form_sin_grabar.is_valid():							
			for field_name, field_value in form_sin_grabar.cleaned_data.iteritems():
				if field_name.startswith("question_"):
					#Creo un form nuevo y lo grabo por cada campo
					form_grabar = ResponseForm(request.POST, category=pagina_original, id=response_id, interviewee=request.user, survey=survey)					
					form_grabar.survey = form_sin_grabar.survey
					form_grabar.interviewee = form_sin_grabar.interviewee
					form_grabar.category = form_sin_grabar.category 					
					if response_id == '0': 					
						form_grabar.save(request.user, field_name, field_value, response_id)
					else:
						questions_actual = Question.objects.filter(id=field_name[9:])
						for question_actual in questions_actual:
							responses_actual = Response.objects.filter(survey=form_sin_grabar.survey, interviewee=form_sin_grabar.interviewee, category=form_sin_grabar.category, question=question_actual)
						if responses_actual:
							response_to_save = 0
							for response_actual in responses_actual:
								response_to_save = response_actual.id

							form_grabar.save(request.user, field_name, field_value, response_to_save)
		else:
			formcorrecto = False			
		
		form_nuevo = None
		if formcorrecto:						
			#Loop en responses, para encontrar el primer response de la pagina anterior						
		
			responses = Response.objects.filter(interviewee=request.user,survey=survey).order_by('-category')
			for response_anterior in responses: 
				if (response_anterior.category.name != str(p)) and (int(response_anterior.category.name) < int(p)):
					p_nuevo = response_anterior.category.name
					break

			p = int(p_nuevo)
			category_items = Category.objects.filter(survey=survey, name=str(p_nuevo))
			response_anterior = Response.objects.filter(interviewee=request.user,survey=survey,category=p_nuevo)[:1]
			if response_anterior:
				form_nuevo = ResponseForm(category=response_anterior[0].category, id=response_anterior[0].id, interviewee=request.user, survey=survey)

			formnuevo = True

	elif '_finalizar' in request.POST:
		#Si se presiono finalizar - redirecciono a la pagina de saludo
		form_sin_grabar = ResponseForm(request.POST, category=pagina_original, id=response_id, interviewee=request.user, survey=survey)		
		form_sin_grabar.survey = survey
		form_sin_grabar.interviewee = request.user
		for categoria in category_items:
			form_sin_grabar.category = categoria			
		if form_sin_grabar.is_valid():							
			for field_name, field_value in form_sin_grabar.cleaned_data.iteritems():
				if field_name.startswith("question_"):					
					#Creo un form nuevo y lo grabo por cada campo
					form_grabar = ResponseForm(request.POST, category=pagina_original, id=response_id, interviewee=request.user, survey=survey)	
					form_grabar.survey = form_sin_grabar.survey
					form_grabar.interviewee = form_sin_grabar.interviewee
					form_grabar.category = form_sin_grabar.category 					
					if response_id == '0': 					
						form_grabar.save(request.user, field_name, field_value, response_id)
					else:
						questions_actual = Question.objects.filter(id=field_name[9:])
						for question_actual in questions_actual:
							responses_actual = Response.objects.filter(survey=form_sin_grabar.survey, interviewee=form_sin_grabar.interviewee, category=form_sin_grabar.category, question=question_actual)
						if responses_actual:
							response_to_save = 0
							for response_actual in responses_actual:
								response_to_save = response_actual.id

							form_grabar.save(request.user, field_name, field_value, response_to_save)
						else:
							form_grabar.save(request.user, field_name, field_value, '0')	

			return HttpResponseRedirect("/confirm/%s" % request.user.username)
		else:
			formcorrecto = False			

	#Chequeo el form	
	if not request.method == 'POST':
		#Si es para edicion, tengo que pasarle un parametro de response
		form = ResponseForm(category=pagina_original, id=response_id, interviewee=request.user, survey=survey)

	#Reviso si es la ultima categoria para no mostrar Siguiente (mostrar "Finalizar")
	ultima = False
	ultimas_categorias = Category.objects.filter(survey=survey).order_by('-name')[:1]
	for ultima_categoria in ultimas_categorias:
		if int(ultima_categoria.name) == int(p):
			ultima = True
	
	#Calcular porcentaje de llenado
	surveys_paginas_totales = survey.categories().order_by('-name')[:1]
	for survey_paginas_totales in surveys_paginas_totales:
		porcentaje = (int(p)-1)*100/int(survey_paginas_totales.name)

	if formcorrecto:
		if formnuevo:
			return render(request, 'survey.html', {'response_form': form_nuevo, 'survey': survey, 'category_items': category_items, 'ultima': ultima, 'estudiante': request.user.id, 'response_id': response_id, 'porcentaje': porcentaje})
		else:
			return render(request, 'survey.html', {'response_form': form, 'survey': survey, 'category_items': category_items, 'ultima': ultima, 'estudiante': request.user.id, 'response_id': response_id,'porcentaje': porcentaje})	
	else:
		#form con errores
		return render(request, 'survey.html', {'response_form': form_sin_grabar, 'survey': survey, 'category_items': category_items, 'ultima': ultima, 'estudiante': request.user.id, 'form_errors': form_sin_grabar.errors, 'response_id': response_id, 'porcentaje': porcentaje})
Exemplo n.º 23
0
def SurveyDetail(request, response_id, id, p, operador, egresado_id):

    survey = Encuesta.objects.get(id=id)
    pagina_original = p

    # Lleno preguntas de la pagina de esa encuesta
    category_items = Pagina.objects.filter(survey=survey, name=str(p))
    # Seteo booleans para workflow
    formnuevo = False
    formcorrecto = True

    if operador == "1":
        usuario = User.objects.get(id=egresado_id)
    else:
        usuario = request.user

    if "_siguiente" in request.POST:
        # Chequeo si la respuesta seleccionada implica un salto en los formularios (solo si es siguiente)
        salta_a_otra = False
        for key in request.POST:
            if key.startswith("question"):
                value = request.POST[key]
                if value != "":
                    question_id = key[9:]
                    questions = Pregunta.objects.filter(survey=survey, id=int(question_id))
                    if questions:
                        for question in questions:
                            if question.choices_salta_a_opcion == value:
                                # esa respuesta tiene un "salta a"
                                salta_a_otra = True
                                pagina_nueva = question.choices_salta_a_numero
                            else:
                                if not salta_a_otra:
                                    pagina_nueva = question.choice_salta_por_default

                                # Si se presiono siguiente - me muevo a la pagina correspondiente
        form_sin_grabar = ResponseForm(
            request.POST, category=pagina_original, id=response_id, interviewee=egresado_id, survey=survey
        )
        form_sin_grabar.interviewee = usuario
        form_sin_grabar.survey = survey

        for categoria in category_items:
            form_sin_grabar.category = categoria
        if form_sin_grabar.is_valid():
            for field_name, field_value in form_sin_grabar.cleaned_data.iteritems():
                if field_name.startswith("question_"):
                    # Creo un form nuevo y lo grabo por cada campo
                    form_grabar = ResponseForm(
                        request.POST, category=pagina_original, id=response_id, interviewee=usuario, survey=survey
                    )
                    form_grabar.survey = form_sin_grabar.survey
                    form_grabar.interviewee = form_sin_grabar.interviewee
                    form_grabar.category = form_sin_grabar.category
                    # Grabo nuevo o update

                    if response_id == "0":
                        form_grabar.save(usuario, field_name, field_value, response_id)
                    else:
                        # Tengo que ver si ya existe o no
                        questions_actual = Pregunta.objects.filter(id=field_name[9:])
                        for question_actual in questions_actual:
                            responses_actual = Response.objects.filter(
                                survey=form_sin_grabar.survey,
                                interviewee=form_sin_grabar.interviewee,
                                category=form_sin_grabar.category,
                                question=question_actual,
                            )

                        if responses_actual:
                            response_to_save = 0
                            for response_actual in responses_actual:
                                response_to_save = response_actual.id
                            form_grabar.save(usuario, field_name, field_value, response_to_save)
                        else:
                            form_grabar.save(usuario, field_name, field_value, "0")
        else:
            formcorrecto = False

        if formcorrecto:
            p = pagina_nueva
            category_items = Pagina.objects.filter(survey=survey, name=str(p))

            # Chequear response_id, para ver si ya esta llena la pagina siguiente o no
            if response_id == "0":
                form_nuevo = ResponseForm(category=p, id=response_id, interviewee=usuario, survey=survey)
            else:
                responses_siguiente = Response.objects.filter(interviewee=usuario, survey=survey, category=p).order_by(
                    "id"
                )[:1]
                if responses_siguiente:
                    for response_siguiente in responses_siguiente:
                        form_nuevo = ResponseForm(
                            category=p, id=response_siguiente.id, interviewee=usuario, survey=survey
                        )
                else:
                    form_nuevo = ResponseForm(category=p, id=response_id, interviewee=usuario, survey=survey)
            formnuevo = True

    elif "_anterior" in request.POST:
        # Si se presiono anterior - me muevo a la pagina correspondiente
        form_sin_grabar = ResponseForm(
            request.POST, category=pagina_original, id=response_id, interviewee=usuario, survey=survey
        )
        form_sin_grabar.survey = survey
        form_sin_grabar.interviewee = usuario
        for categoria in category_items:
            form_sin_grabar.category = categoria
        if form_sin_grabar.is_valid():
            for field_name, field_value in form_sin_grabar.cleaned_data.iteritems():
                if field_name.startswith("question_"):
                    # Creo un form nuevo y lo grabo por cada campo
                    form_grabar = ResponseForm(
                        request.POST, category=pagina_original, id=response_id, interviewee=usuario, survey=survey
                    )
                    form_grabar.survey = form_sin_grabar.survey
                    form_grabar.interviewee = form_sin_grabar.interviewee
                    form_grabar.category = form_sin_grabar.category
                    if response_id == "0":
                        form_grabar.save(usuario, field_name, field_value, response_id)
                    else:
                        questions_actual = Pregunta.objects.filter(id=field_name[9:])
                        for question_actual in questions_actual:
                            responses_actual = Response.objects.filter(
                                survey=form_sin_grabar.survey,
                                interviewee=form_sin_grabar.interviewee,
                                category=form_sin_grabar.category,
                                question=question_actual,
                            )
                        if responses_actual:
                            response_to_save = 0
                            for response_actual in responses_actual:
                                response_to_save = response_actual.id

                            form_grabar.save(usuario, field_name, field_value, response_to_save)
        else:
            formcorrecto = False

        form_nuevo = None
        if formcorrecto:
            # Loop en responses, para encontrar el primer response de la pagina anterior

            responses = Response.objects.filter(interviewee=usuario, survey=survey).order_by("-category")
            for response_anterior in responses:
                if (response_anterior.category.name != str(p)) and (int(response_anterior.category.name) < int(p)):
                    p_nuevo = response_anterior.category.name
                    break

            p = int(p_nuevo)
            category_items = Pagina.objects.filter(survey=survey, name=str(p_nuevo))
            response_anterior = Response.objects.filter(interviewee=usuario, survey=survey, category=p_nuevo)[:1]
            if response_anterior:
                form_nuevo = ResponseForm(
                    category=response_anterior[0].category,
                    id=response_anterior[0].id,
                    interviewee=usuario,
                    survey=survey,
                )

            formnuevo = True

    elif "_finalizar" in request.POST:
        # Si se presiono finalizar - redirecciono a la pagina de saludo
        form_sin_grabar = ResponseForm(
            request.POST, category=pagina_original, id=response_id, interviewee=usuario, survey=survey
        )
        form_sin_grabar.survey = survey
        form_sin_grabar.interviewee = usuario
        for categoria in category_items:
            form_sin_grabar.category = categoria
        if form_sin_grabar.is_valid():
            for field_name, field_value in form_sin_grabar.cleaned_data.iteritems():
                if field_name.startswith("question_"):
                    # Creo un form nuevo y lo grabo por cada campo
                    form_grabar = ResponseForm(
                        request.POST, category=pagina_original, id=response_id, interviewee=usuario, survey=survey
                    )
                    form_grabar.survey = form_sin_grabar.survey
                    form_grabar.interviewee = form_sin_grabar.interviewee
                    form_grabar.category = form_sin_grabar.category
                    if response_id == "0":
                        form_grabar.save(usuario, field_name, field_value, response_id)
                    else:
                        questions_actual = Pagina.objects.filter(id=field_name[9:])
                        responses_actual = None
                        for question_actual in questions_actual:
                            responses_actual = Response.objects.filter(
                                survey=form_sin_grabar.survey,
                                interviewee=form_sin_grabar.interviewee,
                                category=form_sin_grabar.category,
                                question=question_actual,
                            )
                        if responses_actual:
                            response_to_save = 0
                            for response_actual in responses_actual:
                                response_to_save = response_actual.id

                            form_grabar.save(usuario, field_name, field_value, response_to_save)
                        else:
                            form_grabar.save(usuario, field_name, field_value, "0")

            return HttpResponseRedirect("/confirm/%s" % usuario.username)
        else:
            formcorrecto = False

            # Chequeo el form
    if not request.method == "POST":
        # Si es para edicion, tengo que pasarle un parametro de response
        form = ResponseForm(category=pagina_original, id=response_id, interviewee=usuario, survey=survey)

        # Reviso si es la ultima categoria para no mostrar Siguiente (mostrar "Finalizar")
    ultima = False
    ultimas_categorias = survey.categories()[:1]
    for ultima_categoria in ultimas_categorias:
        if int(ultima_categoria.name) == int(p):
            ultima = True

            # Calcular porcentaje de llenado
            # surveys_paginas_totales = survey.categories().order_by('-name')[:1]
    surveys_paginas_totales = survey.categories()[:1]
    for survey_paginas_totales in surveys_paginas_totales:
        porcentaje = (int(p) - 1) * 100 / int(survey_paginas_totales.name)

    if formcorrecto:
        if formnuevo:
            if operador == "1":
                return render(
                    request,
                    "survey.html",
                    {
                        "response_form": form_nuevo,
                        "survey": survey,
                        "category_items": category_items,
                        "ultima": ultima,
                        "estudiante": usuario.id,
                        "response_id": response_id,
                        "porcentaje": porcentaje,
                        "operador": 1,
                        "egresado_id": egresado_id,
                    },
                )
            else:
                return render(
                    request,
                    "survey.html",
                    {
                        "response_form": form_nuevo,
                        "survey": survey,
                        "category_items": category_items,
                        "ultima": ultima,
                        "estudiante": usuario.id,
                        "response_id": response_id,
                        "porcentaje": porcentaje,
                        "operador": 0,
                        "egresado_id": 0,
                    },
                )
        else:
            if operador == "1":
                return render(
                    request,
                    "survey.html",
                    {
                        "response_form": form,
                        "survey": survey,
                        "category_items": category_items,
                        "ultima": ultima,
                        "estudiante": usuario.id,
                        "response_id": response_id,
                        "porcentaje": porcentaje,
                        "operador": 1,
                        "egresado_id": egresado_id,
                    },
                )
            else:
                return render(
                    request,
                    "survey.html",
                    {
                        "response_form": form,
                        "survey": survey,
                        "category_items": category_items,
                        "ultima": ultima,
                        "estudiante": usuario.id,
                        "response_id": response_id,
                        "porcentaje": porcentaje,
                        "operador": 0,
                        "egresado_id": 0,
                    },
                )
    else:
        # form con errores
        if operador == "1":
            return render(
                request,
                "survey.html",
                {
                    "response_form": form_sin_grabar,
                    "survey": survey,
                    "category_items": category_items,
                    "ultima": ultima,
                    "estudiante": usuario.id,
                    "form_errors": form_sin_grabar.errors,
                    "response_id": response_id,
                    "porcentaje": porcentaje,
                    "operador": 1,
                    "egresado_id": egresado_id,
                },
            )
        else:
            return render(
                request,
                "survey.html",
                {
                    "response_form": form_sin_grabar,
                    "survey": survey,
                    "category_items": category_items,
                    "ultima": ultima,
                    "estudiante": usuario.id,
                    "form_errors": form_sin_grabar.errors,
                    "response_id": response_id,
                    "porcentaje": porcentaje,
                    "operador": 0,
                    "egresado_id": 0,
                },
            )
Exemplo n.º 24
0
def SurveyDetail(request, response_id, id, p):

    survey = Survey.objects.get(id=id)
    pagina_original = p

    #Lleno preguntas de la pagina de esa encuesta
    category_items = Category.objects.filter(survey=survey, name=str(p))
    #Seteo booleans para workflow
    formnuevo = False
    formcorrecto = True

    if '_siguiente' in request.POST:
        #Chequeo si la respuesta seleccionada implica un salto en los formularios (solo si es siguiente)
        salta_a_otra = False
        for key in request.POST:
            if key.startswith('question'):
                value = request.POST[key]
                if value != '':
                    question_id = key[9:]
                    questions = Question.objects.filter(survey=survey,
                                                        id=int(question_id))
                    if questions:
                        for question in questions:
                            if question.choices_salta_a_opcion == value:
                                #esa respuesta tiene un "salta a"
                                salta_a_otra = True
                                pagina_nueva = question.choices_salta_a_numero
                            else:
                                if not salta_a_otra:
                                    pagina_nueva = question.choice_salta_por_default

        #Si se presiono siguiente - me muevo a la pagina correspondiente
        form_sin_grabar = ResponseForm(request.POST,
                                       category=pagina_original,
                                       id=response_id,
                                       interviewee=request.user,
                                       survey=survey)
        form_sin_grabar.survey = survey
        form_sin_grabar.interviewee = request.user
        for categoria in category_items:
            form_sin_grabar.category = categoria
        if form_sin_grabar.is_valid():
            for field_name, field_value in form_sin_grabar.cleaned_data.iteritems(
            ):
                if field_name.startswith("question_"):
                    #Creo un form nuevo y lo grabo por cada campo
                    form_grabar = ResponseForm(request.POST,
                                               category=pagina_original,
                                               id=response_id,
                                               interviewee=request.user,
                                               survey=survey)
                    form_grabar.survey = form_sin_grabar.survey
                    form_grabar.interviewee = form_sin_grabar.interviewee
                    form_grabar.category = form_sin_grabar.category
                    #Grabo nuevo o update

                    if response_id == '0':
                        form_grabar.save(request.user, field_name, field_value,
                                         response_id)
                    else:
                        #Tengo que ver si ya existe o no
                        questions_actual = Question.objects.filter(
                            id=field_name[9:])
                        for question_actual in questions_actual:
                            responses_actual = Response.objects.filter(
                                survey=form_sin_grabar.survey,
                                interviewee=form_sin_grabar.interviewee,
                                category=form_sin_grabar.category,
                                question=question_actual)

                        if responses_actual:
                            response_to_save = 0
                            for response_actual in responses_actual:
                                response_to_save = response_actual.id
                            form_grabar.save(request.user, field_name,
                                             field_value, response_to_save)
                        else:
                            form_grabar.save(request.user, field_name,
                                             field_value, '0')

        else:
            formcorrecto = False

        if formcorrecto:
            p = pagina_nueva
            category_items = Category.objects.filter(survey=survey,
                                                     name=str(p))

            #Chequear response_id, para ver si ya esta llena la pagina siguiente o no
            if response_id == '0':
                form_nuevo = ResponseForm(category=p,
                                          id=response_id,
                                          interviewee=request.user,
                                          survey=survey)
            else:
                responses_siguiente = Response.objects.filter(
                    interviewee=request.user, survey=survey,
                    category=p).order_by('id')[:1]
                if responses_siguiente:
                    for response_siguiente in responses_siguiente:
                        form_nuevo = ResponseForm(category=p,
                                                  id=response_siguiente.id,
                                                  interviewee=request.user,
                                                  survey=survey)
                else:
                    form_nuevo = ResponseForm(category=p,
                                              id=response_id,
                                              interviewee=request.user,
                                              survey=survey)

            formnuevo = True

    elif '_anterior' in request.POST:
        #Si se presiono anterior - me muevo a la pagina correspondiente
        form_sin_grabar = ResponseForm(request.POST,
                                       category=pagina_original,
                                       id=response_id,
                                       interviewee=request.user,
                                       survey=survey)
        form_sin_grabar.survey = survey
        form_sin_grabar.interviewee = request.user
        for categoria in category_items:
            form_sin_grabar.category = categoria
        if form_sin_grabar.is_valid():
            for field_name, field_value in form_sin_grabar.cleaned_data.iteritems(
            ):
                if field_name.startswith("question_"):
                    #Creo un form nuevo y lo grabo por cada campo
                    form_grabar = ResponseForm(request.POST,
                                               category=pagina_original,
                                               id=response_id,
                                               interviewee=request.user,
                                               survey=survey)
                    form_grabar.survey = form_sin_grabar.survey
                    form_grabar.interviewee = form_sin_grabar.interviewee
                    form_grabar.category = form_sin_grabar.category
                    if response_id == '0':
                        form_grabar.save(request.user, field_name, field_value,
                                         response_id)
                    else:
                        questions_actual = Question.objects.filter(
                            id=field_name[9:])
                        for question_actual in questions_actual:
                            responses_actual = Response.objects.filter(
                                survey=form_sin_grabar.survey,
                                interviewee=form_sin_grabar.interviewee,
                                category=form_sin_grabar.category,
                                question=question_actual)
                        if responses_actual:
                            response_to_save = 0
                            for response_actual in responses_actual:
                                response_to_save = response_actual.id

                            form_grabar.save(request.user, field_name,
                                             field_value, response_to_save)
        else:
            formcorrecto = False

        form_nuevo = None
        if formcorrecto:
            #Loop en responses, para encontrar el primer response de la pagina anterior

            responses = Response.objects.filter(
                interviewee=request.user, survey=survey).order_by('-category')
            for response_anterior in responses:
                if (response_anterior.category.name != str(p)) and (int(
                        response_anterior.category.name) < int(p)):
                    p_nuevo = response_anterior.category.name
                    break

            p = int(p_nuevo)
            category_items = Category.objects.filter(survey=survey,
                                                     name=str(p_nuevo))
            response_anterior = Response.objects.filter(
                interviewee=request.user, survey=survey, category=p_nuevo)[:1]
            if response_anterior:
                form_nuevo = ResponseForm(
                    category=response_anterior[0].category,
                    id=response_anterior[0].id,
                    interviewee=request.user,
                    survey=survey)

            formnuevo = True

    elif '_finalizar' in request.POST:
        #Si se presiono finalizar - redirecciono a la pagina de saludo
        form_sin_grabar = ResponseForm(request.POST,
                                       category=pagina_original,
                                       id=response_id,
                                       interviewee=request.user,
                                       survey=survey)
        form_sin_grabar.survey = survey
        form_sin_grabar.interviewee = request.user
        for categoria in category_items:
            form_sin_grabar.category = categoria
        if form_sin_grabar.is_valid():
            for field_name, field_value in form_sin_grabar.cleaned_data.iteritems(
            ):
                if field_name.startswith("question_"):
                    #Creo un form nuevo y lo grabo por cada campo
                    form_grabar = ResponseForm(request.POST,
                                               category=pagina_original,
                                               id=response_id,
                                               interviewee=request.user,
                                               survey=survey)
                    form_grabar.survey = form_sin_grabar.survey
                    form_grabar.interviewee = form_sin_grabar.interviewee
                    form_grabar.category = form_sin_grabar.category
                    if response_id == '0':
                        form_grabar.save(request.user, field_name, field_value,
                                         response_id)
                    else:
                        questions_actual = Question.objects.filter(
                            id=field_name[9:])
                        for question_actual in questions_actual:
                            responses_actual = Response.objects.filter(
                                survey=form_sin_grabar.survey,
                                interviewee=form_sin_grabar.interviewee,
                                category=form_sin_grabar.category,
                                question=question_actual)
                        if responses_actual:
                            response_to_save = 0
                            for response_actual in responses_actual:
                                response_to_save = response_actual.id

                            form_grabar.save(request.user, field_name,
                                             field_value, response_to_save)
                        else:
                            form_grabar.save(request.user, field_name,
                                             field_value, '0')

            return HttpResponseRedirect("/confirm/%s" % request.user.username)
        else:
            formcorrecto = False

    #Chequeo el form
    if not request.method == 'POST':
        #Si es para edicion, tengo que pasarle un parametro de response
        form = ResponseForm(category=pagina_original,
                            id=response_id,
                            interviewee=request.user,
                            survey=survey)

    #Reviso si es la ultima categoria para no mostrar Siguiente (mostrar "Finalizar")
    ultima = False
    ultimas_categorias = Category.objects.filter(
        survey=survey).order_by('-name')[:1]
    for ultima_categoria in ultimas_categorias:
        if int(ultima_categoria.name) == int(p):
            ultima = True

    #Calcular porcentaje de llenado
    surveys_paginas_totales = survey.categories().order_by('-name')[:1]
    for survey_paginas_totales in surveys_paginas_totales:
        porcentaje = (int(p) - 1) * 100 / int(survey_paginas_totales.name)

    if formcorrecto:
        if formnuevo:
            return render(
                request, 'survey.html', {
                    'response_form': form_nuevo,
                    'survey': survey,
                    'category_items': category_items,
                    'ultima': ultima,
                    'estudiante': request.user.id,
                    'response_id': response_id,
                    'porcentaje': porcentaje
                })
        else:
            return render(
                request, 'survey.html', {
                    'response_form': form,
                    'survey': survey,
                    'category_items': category_items,
                    'ultima': ultima,
                    'estudiante': request.user.id,
                    'response_id': response_id,
                    'porcentaje': porcentaje
                })
    else:
        #form con errores
        return render(
            request, 'survey.html', {
                'response_form': form_sin_grabar,
                'survey': survey,
                'category_items': category_items,
                'ultima': ultima,
                'estudiante': request.user.id,
                'form_errors': form_sin_grabar.errors,
                'response_id': response_id,
                'porcentaje': porcentaje
            })
def upload_file():
    form = UploadForm()
    if form.validate_on_submit():
        if request.method == 'POST':
            file = form.photo.data
            if not allowed_extension(file.filename):
                #  File must be a jpg
                exts = ""
                flash('File name must end in one of: ' +
                      ', '.join(ALLOWED_EXTENSIONS) + '. You entered:  ' +
                      file.filename)
                return redirect(request.url)
            else:
                filename = secure_filename(file.filename)

                # if needed, initialize upload count, else bump count
                if 'upload_count' in session:
                    session['upload_count'] = session['upload_count'] + 1
                else:
                    session['upload_count'] = 1
                # end if

                # report upload success to user, showing file name
                flash('Loading ... ' + filename)
                flash('Saving to ' + app.config['UPLOAD_FOLDER'] + '...')
                filename = file.filename
                file.save(
                    os.path.join(app.instance_path,
                                 app.config['UPLOAD_FOLDER'], filename))
                flash('Saved to ' + app.config['UPLOAD_FOLDER'])

                #  run CNN on image
                my_cnn = Recognizer()

                model_path = os.path.join(app.instance_path,
                                          app.config['MODEL_FOLDER'])
                image_path = os.path.join(app.instance_path,
                                          app.config['UPLOAD_FOLDER'],
                                          filename)
                guesses = my_cnn.recognize(model_path, image_path)
                flash('Processing complete ...')

                # remove the file, having performed guess process
                try:
                    os.remove(image_path)
                except OSError:
                    pass
                # end try
                flash('File cleanup complete.')

                # Display result to user
                form = ResponseForm()
                return render_template(
                    'ack_upload.html',
                    form=form,
                    filename=filename,
                    uploadcount=str(session['upload_count']),
                    guesses=guesses,
                )
            # end if
        # end if
    # end if
    return render_template('upload.html', title='Upload File', form=form)