#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}))