#encoding:utf-8 # Create your views here. from django.http import HttpResponseRedirect,HttpResponse from django.template import RequestContext, loader, Context from django.shortcuts import get_object_or_404,render,render_to_response, redirect from encuesta.models import * from django.core.urlresolvers import reverse from django.contrib import auth from django.contrib.auth.decorators import login_required from encuesta.forms import * from django.contrib import messages from django.forms import ModelForm from django.db import transaction from django.template.response import TemplateResponse from django.utils.dateformat import DateFormat from django.utils.dateparse import * from django.utils.formats import get_format from django.utils import simplejson import json from django.utils.html import * from django.utils.datastructures import * from django.core import * from reportlab.lib.styles import * from reportlab.platypus import * from reportlab.lib.pagesizes import * from reportlab.lib.units import * from reportlab.lib.enums import * from reportlab.lib import * from reportlab.rl_config import defaultPageSize from reportlab.pdfgen import * from decimal import * import os import locale PAGE_HEIGHT=defaultPageSize[1]; PAGE_WIDTH=defaultPageSize[0] def cursopdf(request, curso_id): estilo=getSampleStyleSheet() elements = [] curso_info = Curso.objects.get(pk=curso_id) dato_comentario = Comentario.objects.filter(curso=curso_info) dato_curso = Curso.objects.all().order_by('id') dato_cuestionario = Cuestionario.objects.all().order_by('id') dato_categoria = Categoria.objects.all().order_by('id') dato_pregunta = Pregunta.objects.all().order_by('id') dato_respuesta = Respuesta.objects.all().order_by('id') diccionario_totales = {} for curso in dato_curso: if curso == curso_info: for cuestionario in dato_cuestionario: if curso == cuestionario.curso: for categoria in dato_categoria: if cuestionario == categoria.cuestionario: for pregunta in dato_pregunta: if categoria == pregunta.categoria: total = 0 for respuesta in dato_respuesta: if pregunta == respuesta.pregunta: total+=respuesta.contador diccionario_totales[int(pregunta.id)]=int(total) response = HttpResponse(mimetype='application/pdf') doc = SimpleDocTemplate(response,pagesize=letter, rightMargin=5*mm,leftMargin=5*mm, topMargin=5*cm,bottomMargin=3*cm) data = [] data2 = [] data3 = [] data4 = [] fila = [] data5 = [] h1=estilo['h1'] estilo.add( ParagraphStyle( name = 'Centrado' ) ) Centrado = estilo["Centrado"] Centrado.alignment = TA_CENTER Centrado.fontName = "Helvetica" Centrado.fontSize = 10 estilo.add( ParagraphStyle (name = 'Justificado') ) Justificado = estilo['Justificado'] Justificado.alignment = TA_JUSTIFY Justificado.fontName = "Helvetica" Justificado.fontSize = 10 data.append(['Nombre del Curso:', Paragraph(curso_info.nombre_curso,Justificado)]) data.append(['Nombre del Instructor:', Paragraph(curso_info.nombre_instructor+' '+curso_info.apellido_p_instructor+' '+curso_info.apellido_m_instructor,Justificado)]) data.append(['Dependencia y/o Entidad:',Paragraph(curso_info.dependencia_entidad,Justificado)]) data.append(['Lugar:',Paragraph(curso_info.lugar,Justificado)]) data.append(['Fecha:',curso_info.fecha]) data.append(['Numero de Encuestas:',Paragraph(str(diccionario_totales.itervalues().next()),Justificado)]) t_datos = Table(data, [ 5.5 * cm, #etiqueta 12.5 * cm, #datos ], repeatRows=1, style=[('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),10), ]) elements.append(t_datos) try: for curso in dato_curso: if curso == curso_info: for cuestionario in dato_cuestionario: if curso == cuestionario.curso: for categoria in dato_categoria: if cuestionario == categoria.cuestionario: for pregunta in dato_pregunta: if categoria == pregunta.categoria: fila = [] data4 = [] for respuesta in dato_respuesta: if pregunta == respuesta.pregunta: #fila.append([Paragraph(respuesta.texto_respuesta+':
'+str(respuesta.contador)+' de: '+str(diccionario_totales[pregunta.id]),Centrado )]) getcontext().prec = 2 porcentaje = float(respuesta.contador*100.00/diccionario_totales[pregunta.id]) fila.append([Paragraph(respuesta.texto_respuesta+':
'+str('%.2f'%porcentaje)+'%',Centrado )]) data4.append([Paragraph(categoria.texto_categoria+'\n'+pregunta.texto_pregunta, Centrado ),'','','','']) data4.append(fila) t_datos4 = Table(data4, [ 3.6 * cm, #etiqueta #datos ], repeatRows=0, style=[ ('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),10), ('SPAN',(0,0),(-1,0)), ('BACKGROUND',(0,2),(-1,2), colors.grey), ]) elements.append(t_datos4) #elements.append(t_datos4) data3.append([Paragraph('Comentario', Centrado )]) for comentario in dato_comentario: data3.append([Paragraph(comentario.texto_comentario,Justificado )]) t_datos3 = Table(data3, [ 18 * cm, #etiqueta #datos ], repeatRows=1, style=[('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),10), ]) elements.append(t_datos3) imagen = os.path.join(os.path.dirname(os.path.abspath('settings.py')), 'static/imagenes/pleca-cmaig-01.png') def myFirstPage(canvas, doc): canvas.saveState() canvas.drawImage(imagen, 1*cm, 23.2*cm, 272,77) canvas.setFont('Helvetica',10) canvas.drawString(11.2*cm, 24 * cm, "Sistema de Evaluacion de Resultados de Satisfaccion") canvas.drawString(15*cm, 23.5 * cm, "Reporte" ) canvas.restoreState() def myLaterPages(canvas, doc): canvas.saveState() canvas.drawImage(imagen, 1*cm, 23.2*cm, 272,77) canvas.setFont('Helvetica',10) canvas.drawString(11.2*cm, 24* cm, "Sistema de Evaluacion de Resultados de Satisfaccion") canvas.drawString(15*cm, 23.5 * cm, "Reporte" ) canvas.restoreState() doc.build(elements, onFirstPage = myFirstPage, onLaterPages = myLaterPages) return response except Exception, e: messages.error(request, 'no hay respuestas para ese curso') return HttpResponseRedirect(reverse('encuesta:mostrarcurso')) @login_required def perfil(request, user_id): return TemplateResponse(request, 'perfil.html' ) @login_required(login_url='encuesta:acceder') def crearestadistica(request): if request.method=='POST': form = EstadisticaForm(request.POST) if form.is_valid(): lista_respuesta =[] diccionario_totales = {} d = Dependencia.objects.get(pk=request.POST['dependencia_entidad']) try: curso_info= Curso.objects.get(pk=request.POST['curso'],dependencia_entidad=d.texto_dependencia) except Exception, e: messages.error(request, 'no existen cursos con esa dependencia') return HttpResponseRedirect(reverse('encuesta:crearestadistica')) else: dato_curso = Curso.objects.all().order_by('id') dato_cuestionario = Cuestionario.objects.all().order_by('id') dato_categoria = Categoria.objects.all().order_by('id') dato_pregunta = Pregunta.objects.all().order_by('id') dato_respuesta = Respuesta.objects.all().order_by('id') lista_preguntas = [] for pregunta in dato_pregunta: if pregunta.respuesta_set.count()>=2: lista_preguntas.append(int(pregunta.id)) for curso in dato_curso: if curso == curso_info: for cuestionario in dato_cuestionario: if curso == cuestionario.curso: for categoria in dato_categoria: if cuestionario == categoria.cuestionario: for pregunta in dato_pregunta: if categoria == pregunta.categoria: total = 0 for respuesta in dato_respuesta: if pregunta == respuesta.pregunta: total+=respuesta.contador diccionario_totales[int(pregunta.id)]=int(total) diccionario = {'curso_info':curso_info, 'lista_preguntas':lista_preguntas, 'dato_pregunta':dato_pregunta, 'dato_curso':dato_curso, 'dato_cuestionario':dato_cuestionario, 'dato_categoria':dato_categoria, 'curso_menu':'active', 'dato_respuesta':dato_respuesta, 'diccionario_totales':diccionario_totales} return render_to_response('graficaestadistica.html',diccionario,context_instance=RequestContext(request)) else: form = EstadisticaForm() informacion = { 'curso_menu':'active', 'form':form } return render_to_response('estadisticaform.html',informacion,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def asignarcurso(request): if request.method=='POST': form = AsignarForm(request.POST) if form.is_valid(): d = Dependencia.objects.get(pk=request.POST['dependencia_entidad']) try: curso_info= Curso.objects.get(pk=request.POST['curso'],dependencia_entidad=d.texto_dependencia) cues = Cuestionario.objects.get(pk=request.POST['cuestionario']) curs = cues.curso except Exception, e: messages.error(request, 'no existen cursos con esa dependencia') return HttpResponseRedirect(reverse('encuesta:asignarcurso')) else: curso_info= Curso.objects.get(pk=request.POST['curso'],dependencia_entidad=d.texto_dependencia) cues = Cuestionario.objects.get(pk=request.POST['cuestionario']) curs = cues.curso dato_curso = Curso.objects.all().order_by('id') dato_cuestionario = Cuestionario.objects.all().order_by('id') dato_categoria = Categoria.objects.all().order_by('id') dato_pregunta = Pregunta.objects.all().order_by('id') dato_respuesta = Respuesta.objects.all().order_by('id') print curso_info print cues print curs for curso in dato_curso: if curso == curs: for cuestionario in dato_cuestionario: if curso == cuestionario.curso: d = str(curso_info.fecha) date = datetime.datetime.strptime(d, '%Y-%m-%d').strftime('%d/%m/%Y') ccuestionario = Cuestionario(curso=curso_info,nombre_cuestionario=''+curso_info.nombre_curso+' '+curso_info.dependencia_entidad+' '+ str(date)) ccuestionario.save() for categoria in dato_categoria: if cuestionario == categoria.cuestionario: ccategoria = Categoria(cuestionario=ccuestionario,texto_categoria=categoria.texto_categoria) ccategoria.save() for pregunta in dato_pregunta: if categoria == pregunta.categoria: cpregunta = Pregunta(categoria=ccategoria,texto_pregunta=pregunta.texto_pregunta) cpregunta.save() for respuesta in dato_respuesta: if pregunta == respuesta.pregunta: crespuesta = Respuesta(pregunta=cpregunta,texto_respuesta=respuesta.texto_respuesta) crespuesta.save() return HttpResponseRedirect(reverse('encuesta:mostrarcurso')) else: form = AsignarForm() informacion = { 'curso_menu':'active', 'form':form } return render_to_response('asignarform.html',informacion,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def mostrarcomentario(request): if request.method=='POST': form = EstadisticaForm(request.POST) if form.is_valid(): curso_info= Curso.objects.get(pk=request.POST['curso']) dato_comentario = Comentario.objects.filter(curso=curso_info) diccionario = {'datos':dato_comentario, 'comentario_menu':'active' } return render_to_response('mostrarcomentario.html',diccionario,context_instance=RequestContext(request)) else: messages.error(request, 'corrija los siguientes errores') else: form = EstadisticaForm() informacion = { 'form':form, 'comentario_menu':'active' } return render_to_response('comentarioform.html',informacion,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def crearwizard(request): if request.method=='POST': curso_form = CursoForm2(request.POST) cuestionario_form = CuestionarioFormParcial(request.POST) if curso_form.is_valid() and cuestionario_form.is_valid(): d = Dependencia.objects.get(pk=request.POST['dependencia_entidad']) catc = CatalogoCurso.objects.get(pk=request.POST['nombre_curso']) i = Instructor.objects.get(pk=request.POST['instructor']) f = request.POST['fecha'] dates = f.encode('utf8') dat = datetime.datetime.strptime(dates, '%d/%m/%Y').strftime('%Y-%m-%d') c = Curso(nombre_curso=catc.nombre_curso , nombre_instructor=i.nombre_instructor, apellido_p_instructor=i.apellido_p_instructor, apellido_m_instructor=i.apellido_m_instructor, dependencia_entidad=d.texto_dependencia, lugar = request.POST['lugar'], fecha =dat) c.save() curso = Curso.objects.get(pk=c.id) cue = Cuestionario(curso=curso , nombre_cuestionario=request.POST['nombre_cuestionario']) cue.save() return HttpResponseRedirect(reverse('encuesta:crearwizard2')) else: messages.error(request, 'corrija los siguientes errores') else: curso_form = CursoForm2() cuestionario_form = CuestionarioFormParcial() diccionario={ 'curso_form':curso_form, 'cuestionario_form':cuestionario_form, 'contenido_menu':'active' } return render_to_response('wizard.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def crearwizard2(request): if request.method=='POST': categoria_form = CategoriaForm(request.POST) pregunta_form = PreguntaFormParcial(request.POST) respuesta_form = RespuestaFormParcial(request.POST) if categoria_form.is_valid() and pregunta_form.is_valid() and respuesta_form.is_valid(): cue=Cuestionario.objects.get(pk=request.POST['cuestionario']) ca = Categoria.objects.filter(cuestionario=cue,texto_categoria=request.POST['texto_categoria']) print ca.count() if ca.count()==0: cate=categoria_form.save() categoria = Categoria.objects.get(pk=cate.id) pre = Pregunta(categoria=categoria , texto_pregunta=request.POST['texto_pregunta']) pre.save() lista_opciones = request.POST.getlist('opcion') for opcion in lista_opciones: pregunta = Pregunta.objects.get(pk=pre.id) opcion = Opcion.objects.get(pk=opcion) r = Respuesta(pregunta=pregunta , texto_respuesta=opcion.texto_opcion) r.save() else: catego=Categoria.objects.get(cuestionario=cue,texto_categoria=request.POST['texto_categoria']) categoria = Categoria.objects.get(pk=catego.id) pre = Pregunta(categoria=categoria , texto_pregunta=request.POST['texto_pregunta']) pre.save() lista_opciones = request.POST.getlist('opcion') for opcion in lista_opciones: pregunta = Pregunta.objects.get(pk=pre.id) opcion = Opcion.objects.get(pk=opcion) r = Respuesta(pregunta=pregunta , texto_respuesta=opcion.texto_opcion) r.save() categoria_form = CategoriaForm(request.POST,instance=categoria) pregunta_form = PreguntaFormParcial() respuesta_form = RespuestaFormParcial() diccionario={ 'categoria_form':categoria_form, 'pregunta_form':pregunta_form, 'respuesta_form':respuesta_form, 'contenido_menu':'active' } return render_to_response('wizard2.html',diccionario,context_instance=RequestContext(request)) else: messages.error(request, 'corrija los siguientes errores') else: categoria_form = CategoriaForm() pregunta_form = PreguntaFormParcial() respuesta_form = RespuestaFormParcial() diccionario={ 'categoria_form':categoria_form, 'pregunta_form':pregunta_form, 'respuesta_form':respuesta_form, 'contenido_menu':'active' } return render_to_response('wizard2.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def crearopcion(request): if request.method=='POST': form = OpcionForm(request.POST) if form.is_valid(): form.save() datos = Opcion.objects.all() messages.success(request, 'Se guardo exitosamente la opcion') informacion={'datos':datos, 'opcion_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostraropcion')) else: messages.error(request, 'corrija los siguientes errores') else: form = OpcionForm() diccionario={'form':form, 'operacion':'Crear', 'operacion_icon':'icon-pencil', 'opcion_menu':'active' } return render_to_response('opcionform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def crearcatalogocurso(request): if request.method=='POST': form = CatalogoCursoForm(request.POST) if form.is_valid(): form.save() messages.success(request, 'Se guardo exitosamente la opcion') return HttpResponseRedirect(reverse('encuesta:mostrarcatalogocurso')) else: messages.error(request, 'corrija los siguientes errores') else: form = CatalogoCursoForm() diccionario={'form':form, 'operacion':'Crear', 'operacion_icon':'icon-pencil', 'catalogocurso_menu':'active' } return render_to_response('catalogocursoform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def crearinstructor(request): if request.method=='POST': form = InstructorForm(request.POST) if form.is_valid(): form.save() datos = Opcion.objects.all() messages.success(request, 'Se guardo exitosamente la opcion') informacion={'datos':datos, 'instructor_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarinstructor')) else: messages.error(request, 'corrija los siguientes errores') else: form = InstructorForm() diccionario={'form':form, 'operacion':'Crear', 'operacion_icon':'icon-pencil', 'instructor_menu':'active' } return render_to_response('instructorform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def creardependencia(request): if request.method=='POST': form = DependenciaForm(request.POST) if form.is_valid(): form.save() datos = Opcion.objects.all() messages.success(request, 'Se guardo exitosamente la dependencia') informacion={'datos':datos, 'opcion_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrardependencia')) else: messages.error(request, 'corrija los siguientes errores') else: form = DependenciaForm() diccionario={'form':form, 'operacion':'Crear', 'operacion_icon':'icon-pencil', 'dependencia_menu':'active' } return render_to_response('dependenciaform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def crearcurso(request): if request.method=='POST': form = CursoForm2(request.POST) if form.is_valid(): #form.save() d = Dependencia.objects.get(pk=request.POST['dependencia_entidad']) catc = CatalogoCurso.objects.get(pk=request.POST['nombre_curso']) i = Instructor.objects.get(pk=request.POST['instructor']) f = request.POST['fecha'] dates = f.encode('utf8') dat = datetime.datetime.strptime(dates, '%d/%m/%Y').strftime('%Y-%m-%d') c = Curso(nombre_curso=catc.nombre_curso , nombre_instructor=i.nombre_instructor, apellido_p_instructor=i.apellido_p_instructor, apellido_m_instructor=i.apellido_m_instructor, dependencia_entidad=d.texto_dependencia, lugar = request.POST['lugar'], fecha =dat) c.save() datos = Curso.objects.all() messages.success(request, 'Se guardo exitosamente el curso') informacion={'datos':datos, 'curso_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarcurso')) else: messages.error(request, 'corrija los siguientes errores') else: form = CursoForm2() diccionario={'form':form, 'operacion':'Crear', 'operacion_icon':'icon-pencil', 'curso_menu':'active' } return render_to_response('cursoform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def crearcuestionario(request): if request.method=='POST': form = CuestionarioForm(request.POST) if form.is_valid(): form.save() datos = Cuestionario.objects.all() messages.success(request, 'Se guardo exitosamente el cuestionario') informacion={'datos':datos, 'cuestionario_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarcuestionario')) else: messages.error(request, 'corrija los siguientes errores') else: form = CuestionarioForm() diccionario={'form':form, 'operacion':'Crear', 'operacion_icon':'icon-pencil', 'cuestionario_menu':'active' } return render_to_response('cuestionarioform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def crearcategoria(request): if request.method=='POST': form = CategoriaForm(request.POST) if form.is_valid(): form.save() datos = Categoria.objects.all() messages.success(request, 'Se guardo exitosamente la categoria') informacion={'datos':datos, 'categoria_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarcategoria')) else: messages.error(request, 'corrija los siguientes errores') else: form = CategoriaForm() diccionario={'form':form, 'operacion':'Crear', 'operacion_icon':'icon-pencil', 'categoria_menu':'active' } return render_to_response('categoriaform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def crearpregunta(request): if request.method=='POST': form = PreguntaForm(request.POST) if form.is_valid(): form.save() datos = Pregunta.objects.all() messages.success(request, 'Se guardo exitosamente la pregunta') informacion={'datos':datos, 'pregunta_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarpregunta')) else: messages.error(request, 'corrija los siguientes errores') else: form = PreguntaForm() diccionario={'form':form, 'operacion':'Crear', 'operacion_icon':'icon-pencil', 'pregunta_menu':'active' } return render_to_response('preguntaform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def crearrespuesta(request): if request.method=='POST': form = RespuestaForm(request.POST) if form.is_valid(): lista_opciones = request.POST.getlist('opcion') for opcion in lista_opciones: p = Pregunta.objects.get(pk=request.POST['pregunta']) o = Opcion.objects.get(pk=opcion) r = Respuesta(pregunta=p , texto_respuesta=o.texto_opcion) r.save() datos = Respuesta.objects.all() messages.success(request, 'Se guardo exitosamente la respuesta') informacion={'datos':datos, 'respuesta_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarrespuesta')) else: messages.error(request, 'corrija los siguientes errores') else: form = RespuestaForm() diccionario={'form':form, 'operacion':'Crear', 'operacion_icon':'icon-pencil', 'respuesta_menu':'active' } return render_to_response('respuestaform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def mostraropcion(request): datos = Opcion.objects.all() informacion={'datos':datos, 'opcion_menu':'active' } return render_to_response('mostraropcion.html',informacion,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def mostrarcatalogocurso(request): datos = CatalogoCurso.objects.all() informacion={'datos':datos, 'catalogocurso_menu':'active' } return render_to_response('mostrarcatalogocurso.html',informacion,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def mostrarinstructor(request): datos = Instructor.objects.all() informacion={'datos':datos, 'instructor_menu':'active' } return render_to_response('mostrarinstructor.html',informacion,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def mostrardependencia(request): datos = Dependencia.objects.all() informacion={'datos':datos, 'dependencia_menu':'active' } return render_to_response('mostrardependencia.html',informacion,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def mostrarcurso(request): datos = Curso.objects.all().order_by('-fecha') informacion={'datos':datos, 'curso_menu':'active' } return render_to_response('mostrarcurso.html',informacion,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def mostrarcuestionario(request): datos = Cuestionario.objects.all() informacion={'datos':datos, 'cuestionario_menu':'active' } return render_to_response('mostrarcuestionario.html',informacion,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def mostrarcategoria(request): datos = Categoria.objects.all() informacion={'datos':datos, 'categoria_menu':'active' } return render_to_response('mostrarcategoria.html',informacion,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def mostrarpregunta(request): datos = Pregunta.objects.all() informacion={'datos':datos, 'pregunta_menu':'active' } return render_to_response('mostrarpregunta.html',informacion,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def mostrarrespuesta(request): datos = Respuesta.objects.all() informacion={'datos':datos, 'respuesta_menu':'active' } return render_to_response('mostrarrespuesta.html',informacion,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def editaropcion(request,opcion_id): opcion = Opcion.objects.get(pk=opcion_id) if request.method=='POST': form = OpcionForm(request.POST,instance=opcion) if form.is_valid(): form.save() datos = Opcion.objects.all() messages.success(request, 'Se actualizo exitosamente la opcion') informacion={'datos':datos, 'opcion_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostraropcion')) else: form = OpcionForm(instance=opcion) diccionario={'form':form, 'operacion':'Editar', 'operacion_icon':'icon-edit', 'opcion_menu':'active' } return render_to_response('opcionform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def editarcatalogocurso(request,catalogocurso_id): catalogocurso = CatalogoCurso.objects.get(pk=catalogocurso_id) if request.method=='POST': form = CatalogoCursoForm(request.POST,instance=catalogocurso) if form.is_valid(): form.save() return HttpResponseRedirect(reverse('encuesta:mostrarcatalogocurso')) else: form = CatalogoCursoForm(instance=catalogocurso) diccionario={'form':form, 'operacion':'Editar', 'operacion_icon':'icon-edit', 'opcion_menu':'active' } return render_to_response('catalogocursoform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def editarinstructor(request,instructor_id): instructor = Instructor.objects.get(pk=instructor_id) if request.method=='POST': form = InstructorForm(request.POST,instance=instructor) if form.is_valid(): form.save() datos = Instructor.objects.all() messages.success(request, 'Se actualizo exitosamente la opcion') informacion={'datos':datos, 'opcion_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarinstructor')) else: form = InstructorForm(instance=instructor) diccionario={'form':form, 'operacion':'Editar', 'operacion_icon':'icon-edit', 'opcion_menu':'active' } return render_to_response('instructorform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def editardependencia(request,dependencia_id): dependencia = Dependencia.objects.get(pk=dependencia_id) if request.method=='POST': form = DependenciaForm(request.POST,instance=dependencia) if form.is_valid(): form.save() datos = Opcion.objects.all() messages.success(request, 'Se actualizo exitosamente la dependencia') informacion={'datos':datos, 'opcion_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrardependencia')) else: form = DependenciaForm(instance=dependencia) diccionario={'form':form, 'operacion':'Editar', 'operacion_icon':'icon-edit', 'dependencia_menu':'active' } return render_to_response('dependenciaform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def editarcurso(request,curso_id): curso = Curso.objects.get(pk=curso_id) dep = Dependencia.objects.get(texto_dependencia=curso.dependencia_entidad) ins = Instructor.objects.get(nombre_instructor=curso.nombre_instructor, apellido_p_instructor=curso.apellido_p_instructor, apellido_m_instructor=curso.apellido_m_instructor) cur = CatalogoCurso.objects.get(nombre_curso=curso.nombre_curso) if request.method=='POST': form = CursoForm2(request.POST) if form.is_valid(): d = Dependencia.objects.get(pk=request.POST['dependencia_entidad']) i = Instructor.objects.get(pk=request.POST['instructor']) catc = CatalogoCurso.objects.get(pk=request.POST['nombre_curso']) f = request.POST['fecha'] dates = f.encode('utf8') dat = datetime.datetime.strptime(dates, '%d/%m/%Y').strftime('%Y-%m-%d') curso.dependencia_entidad=d.texto_dependencia curso.nombre_curso=catc.nombre_curso curso.nombre_instructor=i.nombre_instructor curso.apellido_p_instructor = i.apellido_p_instructor curso.apellido_m_instructor = i.apellido_m_instructor curso.lugar = request.POST['lugar'] curso.fecha = dat curso.save() datos = Curso.objects.all() messages.success(request, 'Se actualizo exitosamente el curso') informacion={'datos':datos, 'curso_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarcurso')) else: data = {'nombre_curso': cur.id, 'instructor':ins.id, 'dependencia_entidad':dep.id, 'lugar':curso.lugar, 'fecha':curso.fecha } form = CursoForm2(data) diccionario={'form':form, 'operacion':'Editar', 'operacion_icon':'icon-edit', 'curso_menu':'active' } return render_to_response('cursoform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def editarcuestionario(request,cuestionario_id): cuestionario = Cuestionario.objects.get(pk=cuestionario_id) if request.method=='POST': form = CuestionarioForm(request.POST,instance=cuestionario) if form.is_valid(): form.save() datos = Cuestionario.objects.all() messages.success(request, 'Se actualizo exitosamente el cuestionario') informacion={'datos':datos, 'cuestionario_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarcuestionario')) else: form = CuestionarioForm(instance=cuestionario) diccionario={'form':form, 'operacion':'Editar', 'operacion_icon':'icon-edit', 'cuestionario_menu':'active' } return render_to_response('cuestionarioform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def editarcategoria(request,categoria_id): categoria = Categoria.objects.get(pk=categoria_id) if request.method=='POST': form = CategoriaForm(request.POST,instance=categoria) if form.is_valid(): form.save() datos = Categoria.objects.all() messages.success(request, 'Se actualizo exitosamente la categoria') informacion={'datos':datos, 'categoria_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarcategoria')) else: form = CategoriaForm(instance=categoria) diccionario={'form':form, 'operacion':'Editar', 'operacion_icon':'icon-edit', 'categoria_menu':'active' } return render_to_response('categoriaform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def editarpregunta(request,pregunta_id): pregunta = Pregunta.objects.get(pk=pregunta_id) if request.method=='POST': form = PreguntaForm(request.POST,instance=pregunta) if form.is_valid(): form.save() datos = Pregunta.objects.all() messages.success(request, 'Se actualizo exitosamente la Pregunta') informacion={'datos':datos, 'pregunta_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarpregunta')) else: form = PreguntaForm(instance=pregunta) diccionario={'form':form, 'operacion':'Editar', 'operacion_icon':'icon-edit', 'pregunta_menu':'active' } return render_to_response('preguntaform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def borraropcion(request,opcion_id): opcion = Opcion.objects.get(pk=opcion_id) opcion.delete() datos = Opcion.objects.all() messages.warning(request, 'Se elimino la opcion') informacion={'datos':datos, 'opcion_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostraropcion')) @login_required(login_url='encuesta:acceder') def borrarcatalogocurso(request,catalogocurso_id): catalogocurso = CatalogoCurso.objects.get(pk=catalogocurso_id) catalogocurso.delete() messages.warning(request, 'Se elimino el nombre del curso') return HttpResponseRedirect(reverse('encuesta:mostrarcatalogocurso')) @login_required(login_url='encuesta:acceder') def borrarinstructor(request,instructor_id): instructor = Instructor.objects.get(pk=instructor_id) instructor.delete() datos = Instructor.objects.all() messages.warning(request, 'Se elimino el instructor') informacion={'datos':datos, 'opcion_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarinstructor')) @login_required(login_url='encuesta:acceder') def borrardependencia(request,dependencia_id): dependencia = Dependencia.objects.get(pk=dependencia_id) dependencia.delete() datos = Opcion.objects.all() messages.warning(request, 'Se elimino la dependencia') informacion={'datos':datos, 'opcion_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrardependencia')) @login_required(login_url='encuesta:acceder') def borrarcurso(request,curso_id): curso = Curso.objects.get(pk=curso_id) curso.delete() datos = Curso.objects.all() messages.warning(request, 'Se elimino el curso') informacion={'datos':datos, 'curso_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarcurso')) @login_required(login_url='encuesta:acceder') def borrarcuestionario(request,cuestionario_id): cuestionario = Cuestionario.objects.get(pk=cuestionario_id) cuestionario.delete() datos = Cuestionario.objects.all() messages.warning(request, 'Se elimino el cuestionario') informacion={'datos':datos, 'cuestionario_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarcuestionario')) @login_required(login_url='encuesta:acceder') def borrarcategoria(request,categoria_id): categoria = Categoria.objects.get(pk=categoria_id) categoria.delete() datos = Categoria.objects.all() messages.warning(request, 'Se elimino la categoria') informacion={'datos':datos, 'categoria_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarcategoria')) @login_required(login_url='encuesta:acceder') def borrarpregunta(request,pregunta_id): pregunta = Pregunta.objects.get(pk=pregunta_id) pregunta.delete() datos = Pregunta.objects.all() messages.warning(request, 'Se elimino la pregunta') informacion={'datos':datos, 'pregunta_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarpregunta')) @login_required(login_url='encuesta:acceder') def borrarrespuesta(request,respuesta_id): respuesta = Respuesta.objects.get(pk=respuesta_id) respuesta.delete() datos = Respuesta.objects.all() messages.warning(request, 'Se elimino la respuesta') informacion={'datos':datos, 'respuesta_menu':'active' } return HttpResponseRedirect(reverse('encuesta:mostrarrespuesta')) def login(request): username = request.POST.get('username', '') password = request.POST.get('password', '') user = auth.authenticate(username=username, password=password) if user is not None and user.is_active: # Correct password, and the user is marked "active" auth.login(request, user) # Redirect to a success page. diccionario = {'inicio_menu':'active' } return HttpResponseRedirect(reverse('encuesta:menuinicio')) else: messages.error(request, 'error de acceso verifique su usuario y contraseƱa') return render_to_response ('index.html',context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def logout(request): auth.logout(request) lista_cursos = Curso.objects.order_by('fecha') template = loader.get_template('bloquear.html') context = RequestContext(request,{'lista_cursos':lista_cursos}) return HttpResponse(template.render(context)) @login_required(login_url='encuesta:acceder') def menuinicio(request): datos = Curso.objects.all().order_by('id') curso_form = CursoForm2() diccionario = { 'inicio_menu':'active', 'datos':datos, 'curso_form':curso_form, } return render_to_response('menuinicio.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def menuopcion(request): diccionario = { 'opcion_menu':'active' } return render_to_response('menuopcion.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def menucatalogocurso(request): diccionario = { 'catalogocurso_menu':'active' } return render_to_response('menucatalogocurso.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def menuinstructor(request): diccionario = { 'instructor_menu':'active' } return render_to_response('menuinstructor.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def menudependencia(request): diccionario = { 'dependencia_menu':'active' } return render_to_response('menudependencia.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def menucurso(request): diccionario = { 'curso_menu':'active' } return render_to_response('menucurso.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def menucuestionario(request): diccionario = { 'cuestionario_menu':'active' } return render_to_response('menucuestionario.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def menucategoria(request): diccionario = { 'categoria_menu':'active' } return render_to_response('menucategoria.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def menupregunta(request): diccionario = { 'pregunta_menu':'active' } return render_to_response('menupregunta.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def menurespuesta(request): diccionario = { 'respuesta_menu':'active' } return render_to_response('menurespuesta.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def menucomentario(request): diccionario = { 'comentario_menu':'active' } return render_to_response('menucomentario.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='encuesta:acceder') def menucontenido(request): diccionario = { 'contenido_menu':'active' } return render_to_response('menucontenido.html',diccionario,context_instance=RequestContext(request)) def acceder(request): return render_to_response('index.html',context_instance=RequestContext(request)) def principal(request): lista_cursos = Curso.objects.order_by('fecha') template = loader.get_template('principal.html') context = RequestContext(request,{ 'lista_cursos':lista_cursos }) return HttpResponse(template.render(context)) def encuesta(request, curso_id): curso_info = Curso.objects.get(pk=curso_id) dato_curso = Curso.objects.all().order_by('id') dato_cuestionario = Cuestionario.objects.all().order_by('id') dato_categoria = Categoria.objects.all().order_by('id') dato_pregunta = Pregunta.objects.all().order_by('id') dato_respuesta = Respuesta.objects.all().order_by('id') lista_preguntas = [] for curso in dato_curso: if curso == curso_info: for cuestionario in dato_cuestionario: if curso == cuestionario.curso: for categoria in dato_categoria: if cuestionario == categoria.cuestionario: for pregunta in dato_pregunta: if categoria == pregunta.categoria: if pregunta.respuesta_set.count()>=2: lista_preguntas.append(int(pregunta.id)) paquete = RequestContext(request,{ 'dato_curso':dato_curso, 'curso_info':curso_info, 'dato_cuestionario':dato_cuestionario, 'dato_pregunta':dato_pregunta, 'lista_preguntas':lista_preguntas, 'dato_categoria':dato_categoria, 'dato_respuesta':dato_respuesta }) return render_to_response('encuesta.html',paquete,context_instance=RequestContext(request)) def termino(request, curso_id): dato_curso_2 = Curso.objects.get(pk=curso_id) paquete = {'dato_curso_2':dato_curso_2} return render_to_response('termino.html',paquete,context_instance=RequestContext(request)) def errorguardar(request, curso_id): dato_curso_2 = Curso.objects.get(pk=curso_id) paquete = {'dato_curso_2':dato_curso_2} return render_to_response('errorguardar.html',paquete,context_instance=RequestContext(request)) #@transaction.commit_manually def respuesta(request,curso_id): #generar variables: conjunto de preguntas, lista de errores curso_info = Curso.objects.get(pk=curso_id) dato_curso = Curso.objects.all().order_by('id') dato_cuestionario = Cuestionario.objects.all().order_by('id') dato_categoria = Categoria.objects.all().order_by('id') dato_pregunta = Pregunta.objects.all().order_by('id') dato_respuesta = Respuesta.objects.all().order_by('id') error_respuesta = [] error_comentario = [] error_n_respuesta = [] seleccionados = {} comentario = '' lista_preguntas = [] for curso in dato_curso: if curso == curso_info: for cuestionario in dato_cuestionario: if curso == cuestionario.curso: for categoria in dato_categoria: if cuestionario == categoria.cuestionario: for pregunta in dato_pregunta: if categoria == pregunta.categoria: if pregunta.respuesta_set.count()>=2: lista_preguntas.append(int(pregunta.id)) if request.method == 'POST': #funcion de error de comentario bloqueada descomenta las linea siguiente para desbloquear # si no hay texto en el comentario #if not request.POST.get('comentario',''): #aniada a la lista de errores #error_comentario.append('Por favor ingrese un comentario.') #si hay comentarios if request.POST.get('comentario',''): #agregalos a la variable comentario comentario = request.POST['comentario'] #para pregunta en conjunto de preguntas for curso in dato_curso: if curso == curso_info: for cuestionario in dato_cuestionario: if curso == cuestionario.curso: for categoria in dato_categoria: if cuestionario == categoria.cuestionario: for pregunta in dato_pregunta: #leer respuesta if categoria == pregunta.categoria: for preg in lista_preguntas: if preg == pregunta.id: #si no hay respuesta if not request.POST.get(u'%s'%pregunta.id, ''): #aniadir a lista de errores error_respuesta.append(u'%s'%pregunta.texto_pregunta) error_n_respuesta.append(pregunta.id) #si hay una respuesta if request.POST.get(u'%s'%pregunta.id, ''): seleccionados[pregunta.id]=int(request.POST['%s'%pregunta.id]) #si hay errores diccionario = {'error_respuesta': error_respuesta, 'error_n_respuesta': error_n_respuesta, 'error_comentario':error_comentario, 'curso_info':curso_info, 'dato_curso':dato_curso, 'lista_preguntas':lista_preguntas, 'dato_cuestionario':dato_cuestionario, 'dato_categoria': dato_categoria, 'dato_pregunta':dato_pregunta, 'dato_respuesta':dato_respuesta, 'seleccionados':seleccionados, 'comentario':comentario} if error_comentario or error_respuesta: #enviar variables y lista de errores #redirigir al formulario return render_to_response('encuesta.html', diccionario,context_instance=RequestContext(request)) #si no hay errores if not error_comentario or error_respuesta: try: #creamos una nueva instancia de comentario if request.POST.get('comentario',''): c = Comentario(curso=curso_info,texto_comentario=request.POST['comentario']) c.save() #buscar respuesta en BD for curso in dato_curso: if curso == curso_info: for cuestionario in dato_cuestionario: if curso == cuestionario.curso: for categoria in dato_categoria: if cuestionario == categoria.cuestionario: for pregunta in dato_pregunta: if categoria == pregunta.categoria: for preg in lista_preguntas: if preg == pregunta.id: re = Respuesta.objects.get(pk=request.POST[u'%s'%pregunta.id]) #aumentar el contador re.contador+=1 #guardar en bd re.save() #redirigir a termino except: #transaction.rollback() return HttpResponseRedirect(reverse('encuesta:errorguardar', kwargs={'curso_id': curso_id})) else: #transaction.commit() return HttpResponseRedirect(reverse('encuesta:encuesta', kwargs={'curso_id': curso_id}))