#encoding:utf-8 # Create your views here. from django.template.response import TemplateResponse from django.contrib.auth import authenticate, login, logout from django.contrib import messages from django.utils.translation import ugettext as _ from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect, HttpResponse from django.template import RequestContext, loader from django.shortcuts import get_object_or_404, render, render_to_response, redirect from django.core.urlresolvers import reverse from django.forms import ModelForm from django.forms.formsets import formset_factory from django.db.models import Count from django.contrib import messages from django.forms import ModelForm from django.contrib import auth from django.contrib.auth.decorators import login_required from django.template.response import TemplateResponse from datetime import datetime from django.core.paginator import Paginator, InvalidPage, EmptyPage import json from django.core import serializers from django.views.decorators.csrf import csrf_exempt from django.shortcuts import * from django.views.generic.base import TemplateView from django.views.generic.edit import CreateView from django.views.generic import ListView, DetailView, View from django.views.generic.edit import CreateView, UpdateView from django.core.urlresolvers import reverse from django.contrib import messages from django.views.generic.detail import DetailView from django.template.response import TemplateResponse from calificar.models import * from calificar.forms import * def perfil(request, user_id): return TemplateResponse(request, 'perfil.html' ) @login_required(login_url='/login/') def RegistroDependencia(request): if request.method=='POST': form = DependenciaForm(request.POST) if form.is_valid(): form.save() messages.success(request, 'Dependencia registrada') return HttpResponseRedirect('/calificar/listade/') else: form = DependenciaForm() return render_to_response('dependencia_form.html',{'form':form, 'Dependencia':'active','evaluacion':'closed','configuracion':'closed'},context_instance=RequestContext(request)) @login_required(login_url='/login/') def listaDepe(request): datos=Dependencias.objects.all() return render_to_response('TablaDepe.html',{'datos':datos,'Dependencia':'active','evaluacion':'closed','configuracion':'closed'},context_instance=RequestContext(request)) @login_required(login_url='/login/') def EditarDependencia(request , dependencia_id): uno = 1 catalogo = Dependencias.objects.get(pk=dependencia_id) cat_id = catalogo.id if request.method=='POST': form = DependenciaForm(request.POST , instance=catalogo) if form.is_valid(): form.save() messages.success(request, 'Dependencia Editada') return HttpResponseRedirect('/calificar/listade') else: form = DependenciaForm(instance=catalogo) return render_to_response('dependencia_form.html',{'form':form,'uno':uno,'Dependencia':'active','evaluacion':'closed','configuracion':'closed'},context_instance=RequestContext(request)) @login_required(login_url='/login/') def BorrarDependencia(request,dependencia_id): catalogo =Dependencias.objects.get(pk=dependencia_id) catalogo.delete() #datos = Area.objects.all() messages.warning(request, 'Se elimino el Registro') return HttpResponseRedirect('/calificar/listade/') @login_required(login_url='/login/') def RegistroCatalogo(request): if request.method=='POST': form = AspectosForm(request.POST) if form.is_valid(): a=form.save() Dependencia=Dependencias.objects.all() for dp in Dependencia: Cal=Calificacion.objects.filter(dependencia=dp) if Cal.exists(): c=Calificacion(dependencia=dp, aspecto=a ,Calificacion='No') c.save() messages.success(request, 'Catalogo registrado') return HttpResponseRedirect('/calificar/TablaCatalogo/') else: form = AspectosForm() return render_to_response('aspectos_form.html',{'form':form,'configuracion':'active','evaluacion':'closed','Dependencia':'closed'},context_instance=RequestContext(request)) @login_required(login_url='/login/') def listaCatalogo(request): datos=CatalogoAspectos.objects.all() return render_to_response('TablaCatalogo.html',{'datos':datos,'configuracion':'active','evaluacion':'closed','Dependencia':'closed'},context_instance=RequestContext(request)) @login_required(login_url='/login/') def listaDependencias(request): datos=Dependencias.objects.all().order_by('id') return render_to_response('TablaDependencias.html',{'datos':datos,'evaluacion':'active','configuracion':'closed','Dependencia':'closed'},context_instance=RequestContext(request)) @login_required(login_url='/login/') def EditarCatalogoRevision(request , catalogo_id): uno = 1 catalogo = CatalogoAspectos.objects.get(pk=catalogo_id) cat_id = catalogo.id if request.method=='POST': form = AspectosForm(request.POST , instance=catalogo) if form.is_valid(): form.save() messages.success(request, 'Catalogo Editado') return HttpResponseRedirect('/calificar/TablaCatalogo') else: form = AspectosForm(instance=catalogo) return render_to_response('aspectos_form.html',{'form':form,'uno':uno, 'configuracion':'active','evaluacion':'closed','Dependencia':'closed'},context_instance=RequestContext(request)) @login_required(login_url='/login/') def BorrarCatalogo(request,catalogo_id): catalogo = CatalogoAspectos.objects.get(pk=catalogo_id) catalogo.delete() #datos = Area.objects.all() messages.warning(request, 'Se elimino el Registro') return HttpResponseRedirect('/calificar/TablaCatalogo/') @login_required(login_url='/login/') def Calificar(request): aspecto=CatalogoAspectos.objects.all().order_by('id') aspectoCount=CatalogoAspectos.objects.all().count() if request.method=='POST': x= int(request.POST["dependencia"]) dependencia=Dependencias.objects.get(pk=x) for aspectos in aspecto: selected_choice = request.POST[u'%s'%aspectos.id] registro=Calificacion.objects.all().filter(dependencia=dependencia).count() if aspectoCount == registro: c=Calificacion.objects.get(dependencia=dependencia,aspecto=aspectos) c.Calificacion=selected_choice c.save() else: c=Calificacion(dependencia=dependencia,aspecto=aspectos, Calificacion=selected_choice) c.save() # except Exception, e: # return render(request, 'calificar_form.html',{ # 'aspecto':aspecto, # 'dependencia':dependencia, # 'error_message': "No ha seleccionado todos los aspectos",'evaluacion':'active','configuracion':'closed','Dependencia':'closed'}) messages.success(request, 'Revisión guardada') return HttpResponseRedirect('/calificar/lista/') @login_required(login_url='/login/') def MostrarCalificar(request, dependencia_id): aspecto=CatalogoAspectos.objects.all() dependencia=Dependencias.objects.get(pk=dependencia_id) return render_to_response('calificar_form.html',{ 'aspecto':aspecto, 'dependencia':dependencia, 'evaluacion':'active','configuracion':'closed','Dependencia':'closed'},context_instance=RequestContext(request)) def graficaGeneral(request): datosd=Dependencias.objects.all().order_by('id') total={} aspectos=CatalogoAspectos.objects.all().count() # for x in xrange(1,10): # pass for x in datosd: cal=Calificacion.objects.filter(dependencia= x, Calificacion='Si') total[x.id]=cal.count() from django.db.models import Count total = Calificacion.objects.filter(Calificacion='Si').values('dependencia').annotate(total=Count('dependencia')) datos=datosd.count() datos= datos*aspectos print(datosd) return render_to_response('index.html',{ 'datos':datos,'datosd':datosd,'total':total ,'evaluacion':'active','configuracion':'closed','Dependencia':'closed'},context_instance=RequestContext(request)) import json def calificaciones_json(request): dependencias=Dependencias.objects.all().order_by('id') respuesta = [] for dependencia in dependencias: d = {} aspectos=[] qs_aspectos = CatalogoAspectos.objects.all() calificaciones = Calificacion.objects.filter(dependencia=dependencia).order_by('-Calificacion') if not calificaciones.exists(): for aspecto in qs_aspectos: # aspectos.append(((aspecto.nombre),(False))) aspectos.append({'nombre': aspecto.nombre, 'valor' : False, 'porcentaje' : 0}) else: for calificacion in calificaciones: # aspectos.append(((calificacion.aspecto.nombre), (True if calificacion.Calificacion=='Si' else False))) aspectos.append({'nombre': calificacion.aspecto.nombre, 'valor': True if calificacion.Calificacion=='Si' else False,'porcentaje' :calificacion.aspecto.porcentaje}) d['id'] = dependencia.id d['aspectos'] = aspectos d['nombre'] = dependencia.descripcion respuesta.append(d) respuesta = json.dumps(respuesta) return HttpResponse(respuesta, mimetype='application/json') def graficaDependencia(request, dependencia_id): Dependencia=Dependencias.objects.get(pk=dependencia_id) datos=Calificacion.objects.all().filter(dependencia=Dependencia).order_by('Calificacion') datosc=Calificacion.objects.all().filter(dependencia=Dependencia).order_by('Calificacion').count() if datosc==0: datos=Dependencias.objects.all() messages.error(request, 'Dependencia aún no ha sido calificada') return HttpResponseRedirect('/index/') Aspectos=CatalogoAspectos.objects.all() print datos return render_to_response('canvas.html',{ 'datos':datos, 'Aspectos':Dependencia, 'evaluacion':'active','configuracion':'closed','Dependencia':'closed'},context_instance=RequestContext(request)) def login_(request): return TemplateResponse(request, 'login.html') def validarView(request): 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) return HttpResponseRedirect('/index') else: messages.error(request, 'cuenta desactivada') else: messages.error(request, 'Usuario no valido, verifique sus credenciales') return TemplateResponse(request, 'login.html') def logout_user(request): response = logout(request) return HttpResponseRedirect('/login') def index(request): return TemplateResponse(request, 'index.html',{'principal':'active','Dependencia':'closed','evaluacion':'closed','configuracion':'closed'})