예제 #1
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
    })
예제 #2
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
        })
예제 #3
0
파일: app.py 프로젝트: FabriQuinteros/rfid
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)
예제 #4
0
파일: views.py 프로젝트: ortutay/wikitruth
    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)
예제 #5
0
파일: views.py 프로젝트: ortutay/wikitruth
 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)
예제 #6
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
    })
예제 #7
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')
예제 #8
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
            })
예제 #9
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))
예제 #10
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
                })
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)
예제 #12
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)