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)
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:] })
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:], })
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:] })
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)
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})
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})
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}))
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})
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})
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)
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 })
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:] })
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 })
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:] })
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')
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 })
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), )
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)
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))
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 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 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, }, )
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)