#encoding:utf-8 from io import BytesIO from reportlab.pdfgen import canvas import requests from django.shortcuts import * #Libreria para el HttpResponse from django.contrib.auth.decorators import * # Libreria para el login_required from django.utils import simplejson from django.views.generic import TemplateView, FormView, View from pyjasperclient import JasperClient from apps.control.forms import * from django.contrib import messages from django.http import * from django.db.models import Q from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.models import Group #LIBRERIAS PARA PDF CON'PISA# from django import http from django.template.loader import get_template from django.template import Context import ho.pisa as pisa import cStringIO as StringIO import cgi from datetime import datetime from django.views.decorators.csrf import csrf_exempt import json from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.utils.encoding import smart_str from django.core import serializers from rest_framework.generics import ListAPIView from rest_framework.response import Response from rest_framework.views import APIView ,status from apps.control.serializers import CatEscuelaSerializer, EscuelaSerializer class JasperMix(object): url ='http://10.2.8.36/jasperserver/services/repository?wsdl' username = 'jasperadmin' password = 'jasperadmin' def generateReport(self, path, namefile, params={}, tipo=None): """ Gennara reportes atravez del jasperserver :param path: :param namefile: :param params: :param tipo: default is PDF """ j = JasperClient(self.url, self.username, self.password) ret = j.runReport(path, ("PDF" if not tipo else tipo), params) f = file(namefile, 'w') f.write(ret['data']) f.close() @login_required(login_url='/login') def principal( request ): contexto = {'msj':'Este es la vista principal', 'principal':'active'} return render_to_response('principal.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def registro_comite( request ): usuario = request.user municipio = None tipo_persona = None try: persona = CatPersona.objects.get( usuario = usuario) municipio = persona.municipio tipo_persona = persona.tipoPersona.clave except CatPersona.DoesNotExist: pass if municipio != None and tipo_persona != 'ADMIN': comites = Comite.objects.filter( escuela__localidad__municipio = municipio) else: comites = Comite.objects.all() filtrado = 10 # Show 10 contacts per page if 'filtrado' in request.GET: filtrado = request.GET.get('filtrado') paginator = Paginator(comites, filtrado) # Muestra de 2 en 2 page = request.GET.get('page') try: comites = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. comites = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. comites = paginator.page(paginator.num_pages) #TERMINA PAGINACION# if request.method == 'POST': #RegistroComiteForm.base_fields['promotor'] = forms.ModelChoiceField( queryset = CatPersona.objects.filter( tipoPersona__clave = 'PRO')) formulario = RegistroComiteForm( request.POST, request.FILES ) if formulario.is_valid(): try: fecha = datetime.strptime(request.POST.get('fecha'),"%d/%m/%Y") validacion = Comite.objects.get( fecha = fecha, escuela = request.POST.get('escuela')) msj = 'EL COMITE YA EXISTE' messages.warning( request, msj ) except Comite.DoesNotExist: validacion = None if validacion == None: formulario.save() msj = 'EL REGISTRO DEL COMITE SE REALIZO CORRECTAMENTE' messages.success(request, msj) return HttpResponseRedirect('/registro_comite/') else: msj = 'Error' messages.error(request, msj) else: if municipio != None and tipo_persona != 'ADMIN': RegistroComiteForm.base_fields['escuela'] = forms.ModelChoiceField(empty_label = 'Seleccione una escuela', required = False, queryset = CatEscuela.objects.filter( status = True, localidad__municipio = municipio), widget = forms.Select(attrs={'class':'required span9 select2-select'})) RegistroComiteForm.base_fields['promotor'] = forms.ModelChoiceField(empty_label = 'Seleccione un promotor', required = False, queryset =CatPersona.objects.filter( tipoPersona__clave = 'PRO', municipio = municipio), widget = forms.Select(attrs={'class':'required span9 select2-select'})) else: RegistroComiteForm.base_fields['escuela'] = forms.ModelChoiceField(empty_label = 'Seleccione una escuela', required = False, queryset = CatEscuela.objects.filter( status = True), widget = forms.Select(attrs={'class':'required span9 select2-select'})) RegistroComiteForm.base_fields['promotor'] = forms.ModelChoiceField(empty_label = 'Seleccione un promotor', required = False, queryset =CatPersona.objects.filter( tipoPersona__clave = 'PRO'), widget = forms.Select(attrs={'class':'required span9 select2-select'})) formulario = RegistroComiteForm() contexto = {'filtrado':filtrado,'formulario':formulario, 'reg_abasto':'active', 'comites':comites} return render_to_response('registro_comite.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def editar_comite( request, id_comite ): comites = Comite.objects.all().order_by('-id')[:10] comite = Comite.objects.get( pk = id_comite ) if request.method == 'GET': formulario = RegistroComiteForm( instance = comite) elif request.method == 'POST': formulario = RegistroComiteForm( request.POST, instance = comite ) if formulario.is_valid(): formulario.save() msj = 'EL COMITE SE EDITO CORRECTAMENTE.' messages.success( request, msj ) return HttpResponseRedirect( '/registro_comite/' ) else: msj = 'Error' messages.error( request, msj ) else: formulario = RegistroComiteForm() contexto = {'formulario':formulario,'reg_abasto':'active','comites':comites,'comite':comite} return render_to_response('registro_comite.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def borrar_comite( request, id_comite ): comite = Comite.objects.get( pk = id_comite ) comite.delete() return HttpResponseRedirect('/registro_comite/') @login_required(login_url='/login') def registro_abasto( request ): usuario = request.user municipio = None tipo_persona = None try: persona = CatPersona.objects.get( usuario = usuario) municipio = persona.municipio tipo_persona = persona.tipoPersona.clave except CatPersona.DoesNotExist: pass if municipio != None and tipo_persona != 'ADMIN': abasto = RegistroAbasto.objects.filter( escuela__localidad__municipio = municipio) else: abasto = RegistroAbasto.objects.all() if request.method == 'POST': formulario = RegistroAbastoForm( request.POST ) if formulario.is_valid(): try: #x = CatEscuela.objects.get(id=int(request.POST.get('escuela_b')))#AGREGADO 03.02.2015 validacion = RegistroAbasto.objects.get( escuela = request.POST.get('escuela'),mes = request.POST.get('mes'), ano = request.POST.get('ano')) msj = 'EL REGISTRO DE ABASTO YA EXISTE' messages.warning( request, msj ) except RegistroAbasto.DoesNotExist: validacion = None if validacion == None: a=formulario.save(commit=False) #a.escuela=x a.save() msj = 'EL REGISTRO DE ABASTO SE REALIZO CORRECTAMENTE' messages.success(request, msj) return HttpResponseRedirect('/registro_abasto/') else: msj = 'Error' messages.error(request, msj) else: if municipio != None and tipo_persona != 'ADMIN': #RegistroAbastoForm.base_fields['escuela'] = forms.ModelChoiceField(empty_label = 'Seleccione una escuela', required = False, queryset = CatEscuela.objects.filter( status = True, localidad__municipio = municipio), widget = forms.Select(attrs={'class':'required span6 select2-select'})) RegistroAbastoForm.base_fields['promotor'] = forms.ModelChoiceField(empty_label = 'Seleccione un promotor', required = False, queryset =CatPersona.objects.filter( tipoPersona__clave = 'PRO', municipio = municipio), widget = forms.Select(attrs={'class':'required span6 select2-select'})) pass else: #RegistroAbastoForm.base_fields['escuela'] = forms.ModelChoiceField(empty_label = 'Seleccione una escuela', required = False, queryset = CatEscuela.objects.filter( status = True), widget = forms.Select(attrs={'class':'required span7 select2-select'})) RegistroAbastoForm.base_fields['promotor'] = forms.ModelChoiceField(empty_label = 'Seleccione un promotor', required = False, queryset =CatPersona.objects.filter( tipoPersona__clave = 'PRO'), widget = forms.Select(attrs={'class':'required span7 select2-select'})) pass formulario = RegistroAbastoForm() contexto = {'reg_abasto':'active','formulario':formulario} return render_to_response('registro_abasto.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def consultas_abasto( request, ano, mes, municipio_id,grado ): municipios = Municipio.objects.all() administracion = "" usuario = request.user municipio = None tipo_persona = None bscr = request.GET.get('bscr') if request.GET.get('bscr') else '' try: persona = CatPersona.objects.get( usuario = usuario) municipio = persona.municipio tipo_persona = persona.tipoPersona.clave except CatPersona.DoesNotExist: pass if municipio != None and tipo_persona != 'ADMIN': if ano != '0': abasto = RegistroAbasto.objects.filter(escuela__localidad__municipio = municipio, ano = ano).order_by('-mes','-ano') if bscr != '': abasto = abasto.filter(Q(escuela__nombre__icontains = bscr) | Q(promotor__nombre__icontains = bscr) | Q(promotor__apellidoPaterno__icontains = bscr) | Q(promotor__apellidoMaterno__icontains = bscr) | Q(ano__icontains = bscr) | Q(mes__icontains = bscr) | Q(escuela__localidad__nombre__icontains = bscr) | Q(escuela__grado__icontains = bscr) | Q(escuela__clave__icontains = bscr)) elif mes !='0': abasto = RegistroAbasto.objects.filter(escuela__localidad__municipio = municipio, mes = mes).order_by('-mes','-ano') if bscr != '': abasto = abasto.filter(Q(escuela__nombre__icontains = bscr) | Q(promotor__nombre__icontains = bscr) | Q(promotor__apellidoPaterno__icontains = bscr) | Q(promotor__apellidoMaterno__icontains = bscr) | Q(ano__icontains = bscr) | Q(mes__icontains = bscr) | Q(escuela__localidad__nombre__icontains = bscr) | Q(escuela__grado__icontains = bscr) | Q(escuela__clave__icontains = bscr)) else: abasto = RegistroAbasto.objects.filter( escuela__localidad__municipio = municipio).order_by('-mes','-ano') if bscr != '': abasto = abasto.filter(Q(escuela__nombre__icontains = bscr) | Q(promotor__nombre__icontains = bscr) | Q(promotor__apellidoPaterno__icontains = bscr) | Q(promotor__apellidoMaterno__icontains = bscr) | Q(ano__icontains = bscr) | Q(mes__icontains = bscr) | Q(escuela__localidad__nombre__icontains = bscr)| Q(escuela__grado__icontains = bscr) | Q(escuela__clave__icontains = bscr)) else: administracion = "administracion" if ano != '0': abasto = RegistroAbasto.objects.filter( ano = ano).order_by('-mes','-ano') if bscr != '': abasto = abasto.filter(Q(escuela__nombre__icontains = bscr) | Q(escuela__localidad__municipio__nombre__icontains = bscr) | Q(promotor__nombre__icontains = bscr) | Q(promotor__apellidoPaterno__icontains = bscr) | Q(promotor__apellidoMaterno__icontains = bscr) | Q(ano__icontains = bscr) | Q(mes__icontains = bscr) | Q(escuela__localidad__nombre__icontains = bscr)| Q(escuela__grado__icontains = bscr) | Q(escuela__clave__icontains = bscr)) elif mes !='0': abasto = RegistroAbasto.objects.filter( mes = mes).order_by('-mes','-ano') if bscr != '': abasto = abasto.filter(Q(escuela__nombre__icontains = bscr) | Q(escuela__localidad__municipio__nombre__icontains = bscr) | Q(promotor__nombre__icontains = bscr) | Q(promotor__apellidoPaterno__icontains = bscr) | Q(promotor__apellidoMaterno__icontains = bscr) | Q(ano__icontains = bscr) | Q(mes__icontains = bscr) | Q(escuela__localidad__nombre__icontains = bscr) | Q(escuela__grado__icontains = bscr) | Q(escuela__clave__icontains = bscr)) elif grado !='0': abasto = RegistroAbasto.objects.filter( escuela__grado__icontains = grado).order_by('-mes','-ano') if bscr != '': abasto = abasto.filter(Q(escuela__nombre__icontains = bscr) | Q(escuela__localidad__municipio__nombre__icontains = bscr) | Q(promotor__nombre__icontains = bscr) | Q(promotor__apellidoPaterno__icontains = bscr) | Q(promotor__apellidoMaterno__icontains = bscr) | Q(ano__icontains = bscr) | Q(mes__icontains = bscr) | Q(escuela__localidad__nombre__icontains = bscr) | Q(escuela__grado__icontains = bscr) | Q(escuela__clave__icontains = bscr)) elif municipio_id != '0': abasto = RegistroAbasto.objects.filter( escuela__localidad__municipio__id = municipio_id ).order_by('-mes','-ano') if bscr != '': abasto = abasto.filter(Q(escuela__nombre__icontains = bscr) | Q(escuela__localidad__municipio__nombre__icontains = bscr) | Q(promotor__nombre__icontains = bscr) | Q(promotor__apellidoPaterno__icontains = bscr) | Q(promotor__apellidoMaterno__icontains = bscr) | Q(ano__icontains = bscr) | Q(mes__icontains = bscr) | Q(escuela__localidad__nombre__icontains = bscr) | Q(escuela__grado__icontains = bscr) | Q(escuela__clave__icontains = bscr)) else: abasto = RegistroAbasto.objects.all().order_by('-mes','-ano') if bscr != '': abasto = abasto.filter(Q(escuela__nombre__icontains = bscr) | Q(escuela__localidad__municipio__nombre__icontains = bscr) | Q(promotor__nombre__icontains = bscr) | Q(promotor__apellidoPaterno__icontains = bscr) | Q(promotor__apellidoMaterno__icontains = bscr) | Q(ano__icontains = bscr) | Q(mes__icontains = bscr) | Q(escuela__localidad__nombre__icontains = bscr) | Q(escuela__grado__icontains = bscr) | Q(escuela__clave__icontains = bscr)) rpp = int(request.GET.get('rpp')) if request.GET.get('rpp') else 10 paginator = Paginator(abasto, rpp) # Muestra de 2 en 2 page = request.GET.get('page') try: abasto = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. abasto = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. abasto = paginator.page(paginator.num_pages) #TERMINA PAGINACION# contexto = {'bscr':bscr,'municipios':municipios,'administracion':administracion,'reg_abasto':'active', 'abasto':abasto,'rpp':rpp} return render_to_response('consultas_abasto.html', contexto, context_instance = RequestContext(request)) @csrf_exempt def consulta_detalle_abasto(request): if request.is_ajax(): q=request.POST['q'] if q is not None: abasto = RegistroAbasto.objects.get(pk = q) # print abasto list = [] list.append({ 'escuela': str(abasto.escuela.nombre), 'ninas': str(abasto.ninas), 'ninos': str(abasto.ninos), 'total_ninos': str(abasto.totalNinos), 'ninos_leche':str(abasto.totalNinosLeche), 'total_madres': str(abasto.totalMadres) }) recipe_list_json = json.dumps(list) #VOLCAMOS LA LISTA COMO JSON # print recipe_list_json return HttpResponse(recipe_list_json,mimetype="application/javascript") @csrf_exempt def escuela_ajax(request,param): if request.is_ajax(): q=request.GET['q'] if q is not None: resp=[dict(id=c.pk,text=str(c.localidad__municipio__nombre)+" - "+str(c.localidad__nombre)+" - "+str(c.nombre)+" - "+str(c.clave)) for c in CatEscuela.objects.filter( Q(nombre__icontains = q) | Q(folio__icontains = q) | Q(clave__icontains = q) | Q(localidad__nombre__icontains = q) | Q(localidad__municipio__nombre__icontains = q) )] return HttpResponse(json.dumps(resp), content_type="application/json") @login_required(login_url='/login') def editar_abasto( request, id_abasto ): abasto = RegistroAbasto.objects.all().order_by('-id')[:10] abas = RegistroAbasto.objects.get( pk = id_abasto ) if request.method == 'GET': formulario = RegistroAbastoForm( instance = abas) elif request.method == 'POST': formulario = RegistroAbastoForm( request.POST, instance = abas ) if formulario.is_valid(): formulario.save() msj = 'EL ABASTO SE EDITO CORRECTAMENTE.' messages.success( request, msj ) return HttpResponseRedirect( '/consultas_abasto/0/0/0/0' ) else: msj = 'Error' messages.error( request, msj ) else: formulario = RegistroAbastoForm() contexto = {'formulario':formulario,'reg_abasto':'active','abas':abas,'abasto':abasto} return render_to_response('registro_abasto.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def borrar_abasto( request, id_abasto ): abasto = RegistroAbasto.objects.get( pk = id_abasto ) abasto.delete() return HttpResponseRedirect('/consultas_abasto/0/0/0/0') @login_required(login_url='/login') def registro_escuela ( request ): if request.method == 'POST': formulario = RegistroEscuelaForm( request.POST ) if formulario.is_valid(): try: validacion = CatEscuela.objects.get( Q(clave = request.POST.get('clave')) | Q(nombre = request.POST.get('folio'))) msj = 'LA ESCUELA YA EXISTE' messages.warning( request, msj ) except CatEscuela.DoesNotExist: validacion = None if validacion == None: formulario.save() msj = 'EL REGISTRO DE LA ESCUELA SE REALIZO CORRECTAMENTE' messages.success(request, msj) return HttpResponseRedirect('/registro_escuela/') else: msj = 'Error' messages.error(request, msj) else: formulario = RegistroEscuelaForm() contexto = {'formulario':formulario,'reg_escuela':'active'} return render_to_response('registro_escuela.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def consultas_escuelas( request, municipio_id ): bscr = request.GET.get('bscr') if request.GET.get('bscr') else '' municipios = Municipio.objects.all() if municipio_id != '0': escuela = CatEscuela.objects.filter( localidad__municipio__id = municipio_id) if bscr != '': escuela = escuela.filter( Q(nombre__icontains = bscr) | Q(clave__icontains = bscr) | Q(folio__icontains = bscr) | Q(localidad__nombre__icontains = bscr) | Q(localidad__municipio__nombre__icontains = bscr) ) else: escuela = CatEscuela.objects.all() if bscr != '': escuela = escuela.filter( Q(nombre__icontains = bscr) | Q(folio__icontains = bscr) | Q(clave__icontains = bscr) | Q(localidad__nombre__icontains = bscr) | Q(localidad__municipio__nombre__icontains = bscr) ) rpp = int(request.GET.get('rpp')) if request.GET.get('rpp') else 10 paginator = Paginator(escuela, rpp) # Muestra de 2 en 2 page = request.GET.get('page') try: escuela = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. escuela = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. escuela = paginator.page(paginator.num_pages) #TERMINA PAGINACION# contexto = {'bscr':bscr,'municipios':municipios,'reg_escuela':'active','escuela':escuela,'rpp':rpp} return render_to_response('consultas_escuelas.html', contexto ,context_instance = RequestContext(request)) @csrf_exempt def consulta_detalle_escuela(request): if request.is_ajax(): q=request.POST['q'] if q is not None: escuela = CatEscuela.objects.get(pk = q) list = [] list.append({ 'localidad':str(escuela.localidad), 'clave':str(escuela.clave), 'folio':str(escuela.folio), 'nombre':str(escuela.nombre), 'observacion':str(escuela.observacion), }) recipe_list_json = json.dumps(list) #VOLCAMOS LA LISTA COMO JSON # print recipe_list_json return HttpResponse(recipe_list_json,mimetype="application/javascript") @login_required(login_url='/login') def editar_escuela( request, id_escuela ): ultimos = CatEscuela.objects.all().order_by('-id')[:7] escuela = CatEscuela.objects.get( pk = id_escuela ) if request.method == 'GET': formulario = RegistroEscuelaForm( instance = escuela) elif request.method == 'POST': formulario = RegistroEscuelaForm( request.POST, instance = escuela ) if formulario.is_valid(): formulario.save() msj = 'LA ESCUELA SE EDITO CORRECTAMENTE.' messages.success( request, msj ) return HttpResponseRedirect( '/consultas_escuelas/0' ) else: msj = 'Error' messages.error( request, msj ) else: formulario = RegistroEscuelaForm() contexto = {'formulario':formulario,'reg_escuela':'active','ultimos':ultimos,'escuela_':escuela} return render_to_response('registro_escuela.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def bloquear_escuela( request, id_escuela ): escuela = CatEscuela.objects.get( pk = id_escuela ) escuela.status = False escuela.save() return HttpResponseRedirect('/registro_escuela/') @login_required(login_url='/login') def desbloquear_escuela( request, id_escuela ): escuela = CatEscuela.objects.get( pk = id_escuela ) escuela.status = True escuela.save() return HttpResponseRedirect('/registro_escuela/') @login_required(login_url='/login') def registro_observaciones ( request ): observaciones = CatObservaciones.objects.all() if request.method == 'POST': formulario = RegistroObservacionesForm( request.POST ) if formulario.is_valid(): try: validacion = CatObservaciones.objects.get( Q(clave = request.POST.get('clave')) | Q(nombre = request.POST.get('nombre'))) msj = 'LA OBSERVACION YA EXISTE' messages.warning( request, msj ) except CatObservaciones.DoesNotExist: validacion = None if validacion == None: formulario.save() msj = 'EL REGISTRO DE LA OBSERVACION SE REALIZO CORRECTAMENTE' messages.success(request, msj) return HttpResponseRedirect('/registro_observaciones/') else: msj = 'Error' messages.error(request, msj) else: formulario = RegistroObservacionesForm() contexto = {'formulario':formulario,'reg_escuela':'active','observaciones':observaciones} return render_to_response('registro_observaciones.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def editar_observacion( request, id_observacion ): observaciones = CatObservaciones.objects.all() observacion = CatObservaciones.objects.get( pk = id_observacion ) if request.method == 'GET': formulario = RegistroObservacionesForm( instance = observacion) elif request.method == 'POST': formulario = RegistroObservacionesForm( request.POST, instance = observacion ) if formulario.is_valid(): formulario.save() msj = 'LA OBSERVACION SE EDITO CORRECTAMENTE.' messages.success( request, msj ) return HttpResponseRedirect( '/registro_observaciones/' ) else: msj = 'Error' messages.error( request, msj ) else: formulario = RegistroObservacionesForm() contexto = {'formulario':formulario,'reg_escuela':'active','observaciones':observaciones,'observacion':observacion} return render_to_response('registro_observaciones.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def borrar_observacion( request, id_observacion ): observacion = CatObservaciones.objects.get( pk = id_observacion ) observacion.delete() return HttpResponseRedirect('/registro_observaciones/') def registro_proyectos( request ): proyectos = CatProyecto.objects.all() if request.method == 'POST': formulario = RegistroProyectosForm( request.POST ) if formulario.is_valid(): try: validacion = CatProyecto.objects.get( Q(numeroProyecto = request.POST.get('numeroProyecto')) | Q(municipio = request.POST.get('municipio'))) msj = 'EL PROYECTO YA EXISTE' messages.warning( request, msj ) except CatProyecto.DoesNotExist: validacion = None if validacion == None: formulario.save() msj = 'EL REGISTRO DEL PROYECTO SE REALIZO CORRECTAMENTE' messages.success(request, msj) return HttpResponseRedirect('/registro_proyectos/') else: msj = 'Error' messages.error(request, msj) else: formulario = RegistroProyectosForm() contexto = {'formulario':formulario,'reg_proyectos':'active','proyectos':proyectos} return render_to_response('registro_proyectos.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def editar_proyecto( request, id_proyecto ): proyectos = CatProyecto.objects.all() proyecto = CatProyecto.objects.get( pk = id_proyecto ) if request.method == 'GET': formulario = RegistroProyectosForm( instance = proyecto) elif request.method == 'POST': formulario = RegistroProyectosForm( request.POST, instance = proyecto ) if formulario.is_valid(): formulario.save() msj = 'EL PROYECTO SE EDITO CORRECTAMENTE.' messages.success( request, msj ) return HttpResponseRedirect( '/registro_proyectos/' ) else: msj = 'Error' messages.error( request, msj ) else: formulario = RegistroProyectosForm() contexto = {'formulario':formulario,'reg_proyectos':'active','proyectos':proyectos,'proyecto':proyecto} return render_to_response('registro_proyectos.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def borrar_proyecto( request, id_proyecto ): proyecto = CatProyecto.objects.get( pk = id_proyecto ) proyecto.delete() return HttpResponseRedirect('/registro_proyectos/') def registro_vehiculos( request ): vehiculos = CatVehiculo.objects.all() if request.method == 'POST': formulario = RegistroVehiculosForm( request.POST ) if formulario.is_valid(): try: validacion = CatVehiculo.objects.get(numPlaca = request.POST.get('numPlaca')) msj = 'LA VEHICULO YA EXISTE' messages.warning( request, msj ) except CatVehiculo.DoesNotExist: validacion = None if validacion == None: formulario.save() msj = 'EL REGISTRO DEL VEHICULO SE REALIZO CORRECTAMENTE' messages.success(request, msj) return HttpResponseRedirect('/registro_vehiculos/') else: msj = 'Error' messages.error(request, msj) else: formulario = RegistroVehiculosForm() contexto = {'formulario':formulario,'reg_vehiculos':'active','vehiculos':vehiculos} return render_to_response('registro_vehiculos.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def editar_vehiculo( request, id_vehiculo ): vehiculos = CatVehiculo.objects.all() vehiculo = CatVehiculo.objects.get( pk = id_vehiculo ) if request.method == 'GET': formulario = RegistroVehiculosForm( instance = vehiculo) elif request.method == 'POST': formulario = RegistroVehiculosForm( request.POST, instance = vehiculo ) if formulario.is_valid(): formulario.save() msj = 'EL VEHICULO SE EDITO CORRECTAMENTE.' messages.success( request, msj ) return HttpResponseRedirect( '/registro_vehiculos/' ) else: msj = 'Error' messages.error( request, msj ) else: formulario = RegistroVehiculosForm() contexto = {'formulario':formulario,'reg_vehiculos':'active','vehiculos':vehiculos,'vehiculo':vehiculo} return render_to_response('registro_vehiculos.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def borrar_vehiculo( request, id_vehiculo ): vehiculo = CatVehiculo.objects.get( pk = id_vehiculo ) vehiculo.delete() return HttpResponseRedirect('/registro_vehiculos/') def registro_personas( request ): if request.method == 'POST': formulario = RegistroPersonasForm( request.POST ) formulario_user = UserCreationForm( request.POST ) if formulario.is_valid(): try: validacion = CatPersona.objects.get(nombre = request.POST.get('nombre'), apellidoPaterno = request.POST.get('apellidoPaterno'), apellidoMaterno = request.POST.get('apellidoMaterno'), municipio = request.POST.get('municipio'), tipoPersona = request.POST.get('tipoPersona')) msj = 'LA PERSONA YA EXISTE' messages.warning( request, msj ) except CatPersona.DoesNotExist: validacion = None if validacion == None: username = request.POST.get('username') password = request.POST.get('password1') if username and password: if formulario_user.is_valid(): user_id = formulario_user.save() #AGREGAR PERSONAS A LOS DIFERENTES GRUPOS# tip_person = request.POST.get('tipoPersona') tipo_persona = CatTipoPersona.objects.get( pk = tip_person ) if tipo_persona.clave == 'ADMIN': grupo = Group.objects.get(name='ADMINISTRADOR') grupo.user_set.add(user_id) elif tipo_persona.clave == 'CORM': grupo = Group.objects.get(name='COORDINADOR MUNICIPAL') grupo.user_set.add(user_id) elif tipo_persona.clave == 'ATC': grupo = Group.objects.get(name='APOYO TEC. DEL COORDINADOR') grupo.user_set.add(user_id) elif tipo_persona.clave == 'JAT': grupo = Group.objects.get(name='JEFATURA DE APOYO TECNICO') grupo.user_set.add(user_id) elif tipo_persona.clave == 'ABTO': grupo = Group.objects.get(name='ABASTO') grupo.user_set.add(user_id) elif tipo_persona.clave == 'SUBOP': grupo = Group.objects.get(name='SUBDIRECCION OPERATIVA') grupo.user_set.add(user_id) municipio = Municipio.objects.get( pk = request.POST.get('municipio')) tipoPersona = CatTipoPersona.objects.get( pk = request.POST.get('tipoPersona')) persona = CatPersona() persona.nombre = request.POST.get('nombre') persona.apellidoPaterno = request.POST.get('apellidoPaterno') persona.apellidoMaterno = request.POST.get('apellidoMaterno') persona.municipio = municipio persona.tipoPersona = tipoPersona persona.status = True if username and password: persona.usuario = user_id persona.save() msj = 'EL REGISTRO DE LA PERSONA SE REALIZO CORRECTAMENTE' messages.success(request, msj) return HttpResponseRedirect('/registro_personas/') else: msj = 'Error' messages.error(request, msj) else: formulario = RegistroPersonasForm() formulario_user = UserCreationForm() contexto = {'formulario_user':formulario_user,'formulario':formulario,'reg_personas':'active'} return render_to_response('registro_personas.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def consultas_personas( request, tipo_persona_id ): bscr = request.GET.get('bscr') if request.GET.get('bscr') else '' tipo_persona = CatTipoPersona.objects.all() if tipo_persona_id != '0': personas = CatPersona.objects.filter( tipoPersona__id = tipo_persona_id ) if bscr != '': personas = personas.filter( Q(nombre__icontains = bscr) | Q(apellidoPaterno__icontains = bscr) | Q(apellidoMaterno__icontains = bscr) | Q(municipio__nombre = bscr) | Q(tipoPersona__nombre = bscr) ) else: personas = CatPersona.objects.all() if bscr != '': personas = personas.filter( Q(nombre__icontains = bscr) | Q(apellidoPaterno__icontains = bscr) | Q(apellidoMaterno__icontains = bscr) | Q(municipio__nombre = bscr) | Q(tipoPersona__nombre = bscr) ) rpp = int(request.GET.get('rpp')) if request.GET.get('rpp') else 10 paginator = Paginator(personas, rpp) # Muestra de 2 en 2 page = request.GET.get('page') try: personas = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. personas = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. personas = paginator.page(paginator.num_pages) #TERMINA PAGINACION# contexto = {'tipo_persona':tipo_persona,'reg_personas':'active','personas':personas,'rpp':rpp} return render_to_response('consultas_personas.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def editar_persona( request, id_persona ): personas = CatPersona.objects.all() persona = CatPersona.objects.get( pk = id_persona ) if request.method == 'GET': formulario = RegistroPersonasForm( instance = persona) elif request.method == 'POST': formulario = RegistroPersonasForm( request.POST, instance = persona ) if formulario.is_valid(): formulario.save() msj = 'LA PERSONA SE EDITO CORRECTAMENTE.' messages.success( request, msj ) return HttpResponseRedirect( '/registro_personas/' ) else: msj = 'Error' messages.warning( request, msj ) else: formulario = RegistroPersonasForm() contexto = {'formulario':formulario,'reg_personas':'active','personas':personas,'persona':persona} return render_to_response('registro_personas.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def bloquear_persona( request, id_persona ): persona = CatPersona.objects.get( pk = id_persona ) persona.status = False if persona.usuario != None: persona.usuario.is_active = False persona.usuario.save() persona.save() return HttpResponseRedirect('/registro_personas/') @login_required(login_url='/login') def desbloquear_persona( request, id_persona ): persona = CatPersona.objects.get( pk = id_persona ) persona.status = True if persona.usuario != None: persona.usuario.is_active = True persona.usuario.save() persona.save() return HttpResponseRedirect('/registro_personas/') @csrf_exempt def validar_usuario(request): results="" if request.is_ajax(): q=request.POST['q'] #q = request.GET.get( 'q' ) if q is not None: results = User.objects.filter(username= q).order_by( 'username' ) return render_to_response('validar_usuario.html',{'results':results},context_instance = RequestContext( request ) ) def registro_tipo_persona( request ): tipo_personas = CatTipoPersona.objects.all() if request.method == 'POST': formulario = RegistroTipoPersonaForm( request.POST ) if formulario.is_valid(): try: validacion = CatTipoPersona.objects.get(Q(clave = request.POST.get('clave')) | Q(nombre = request.POST.get('nombre'))) msj = 'LA CLAVE O EL NOMBRE YA EXISTE' messages.warning( request, msj ) except CatTipoPersona.DoesNotExist: validacion = None if validacion == None: formulario.save() msj = 'EL REGISTRO DEL TIPO DE PERSONA SE REALIZO CORRECTAMENTE' messages.success(request, msj) return HttpResponseRedirect('/registro_tipo_persona/') else: msj = 'Error' messages.error(request, msj) else: formulario = RegistroTipoPersonaForm() contexto = {'formulario':formulario,'reg_personas':'active','tipo_personas':tipo_personas} return render_to_response('registro_tipo_personas.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def editar_tipo_persona( request, id_tipo_persona ): tipo_personas = CatTipoPersona.objects.all() tipo_persona = CatTipoPersona.objects.get( pk = id_tipo_persona ) if request.method == 'GET': formulario = RegistroTipoPersonaForm( instance = tipo_persona) elif request.method == 'POST': formulario = RegistroTipoPersonaForm( request.POST, instance = tipo_persona ) if formulario.is_valid(): formulario.save() msj = 'EL TIPO DE PERSONA SE EDITO CORRECTAMENTE.' messages.success( request, msj ) return HttpResponseRedirect( '/registro_tipo_persona/' ) else: msj = 'Error' messages.error( request, msj ) else: formulario = RegistroTipoPersonaForm() contexto = {'formulario':formulario,'reg_personas':'active','tipo_personas':tipo_personas,'tipo_persona':tipo_persona} return render_to_response('registro_tipo_personas.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def borrar_tipo_persona( request, id_tipo_persona ): tipo_persona = CatTipoPersona.objects.get( pk = id_tipo_persona ) tipo_persona.delete() return HttpResponseRedirect('/registro_tipo_persona/') def registro_proveedor( request ): proveedores = CatProveedor.objects.all() if request.method == 'POST': formulario = RegistroProveedorForm( request.POST ) if formulario.is_valid(): try: validacion = CatProveedor.objects.get( nombreProveedor = request.POST.get('nombreProveedor')) msj = ' EL PROVEEDOR YA EXISTE' messages.warning( request, msj ) except CatProveedor.DoesNotExist: #validacion = None #if validacion == None: #paquetes = CatPaquete.objects.filter( status = True ) #for p in paquetes: #p.status = False #p.save() #proveedor = CatProveedor.objects.get( status = True ) #proveedor.status = False #proveedor.save() formulario.save() msj = 'EL REGISTRO PROVEEDOR SE REALIZO CORRECTAMENTE' messages.success(request, msj) return HttpResponseRedirect('/registro_proveedor/') else: msj = 'Error' messages.error(request, msj) else: formulario = RegistroProveedorForm() contexto = {'formulario':formulario,'reg_productos':'active','proveedores':proveedores} return render_to_response('registro_proveedor.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def editar_proveedor( request, id_proveedor ): proveedores = CatProveedor.objects.all() proveedor = CatProveedor.objects.get( pk = id_proveedor ) if request.method == 'GET': formulario = RegistroProveedorForm( instance = proveedor) elif request.method == 'POST': formulario = RegistroProveedorForm( request.POST, instance = proveedor ) if formulario.is_valid(): formulario.save() msj = 'EL PROVEEDOR SE EDITO CORRECTAMENTE.' messages.success( request, msj ) return HttpResponseRedirect( '/registro_proveedor/' ) else: msj = 'Error' messages.error( request, msj ) else: formulario = RegistroProveedorForm() contexto = {'formulario':formulario,'reg_productos':'active','proveedores':proveedores,'proveedor':proveedor} return render_to_response('registro_proveedor.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def bloquear_proveedor( request, id_proveedor ): proveedor = CatProveedor.objects.get( pk = id_proveedor ) proveedor.status = False proveedor.save() paquetes = CatPaquete.objects.filter( status = True ) for p in paquetes: p.status = False p.save() return HttpResponseRedirect('/registro_proveedor/') @login_required(login_url='/login') def desbloquear_proveedor( request, id_proveedor ): proveedor = CatProveedor.objects.get( pk = id_proveedor ) proveedor.status = True proveedor.save() return HttpResponseRedirect('/registro_proveedor/') @login_required(login_url='/login') def registro_presentacion_producto( request ): presentaciones = CatPresentacionProducto.objects.all() if request.method == 'POST': formulario = RegistroPresentacionProductoForm( request.POST ) if formulario.is_valid(): try: validacion = CatPresentacionProducto.objects.get( presentacion = request.POST.get('presentacion')) msj = 'LA PRESENTACION DEL PRODUCTO YA EXISTE' messages.warning( request, msj ) except CatPresentacionProducto.DoesNotExist: validacion = None if validacion == None: formulario.save() msj = 'EL REGISTRO DE LA PRESENTACION DEL PRODUCTO SE REALIZO CORRECTAMENTE' messages.success(request, msj) return HttpResponseRedirect('/registro_presentacion_producto/') else: msj = 'Error' messages.error(request, msj) else: formulario = RegistroPresentacionProductoForm() contexto = {'formulario':formulario,'reg_productos':'active','presentaciones':presentaciones} return render_to_response('registro_presentacion_producto.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def editar_presentacion_producto( request, id_presentacion_producto ): presentaciones = CatPresentacionProducto.objects.all() presentacion = CatPresentacionProducto.objects.get( pk = id_presentacion_producto ) if request.method == 'GET': formulario = RegistroPresentacionProductoForm( instance = presentacion) elif request.method == 'POST': formulario = RegistroPresentacionProductoForm( request.POST, instance = presentacion ) if formulario.is_valid(): formulario.save() msj = 'LA PRESENTACION DEL PRODUCTO SE EDITO CORRECTAMENTE.' messages.success( request, msj ) return HttpResponseRedirect( '/registro_presentacion_producto/' ) else: msj = 'Error' messages.error( request, msj ) else: formulario = RegistroPresentacionProductoForm() contexto = {'formulario':formulario,'reg_productos':'active','presentaciones':presentaciones,'presentacion':presentacion} return render_to_response('registro_presentacion_producto.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def borrar_presentacion_producto( request, id_presentacion_producto ): presentacion = CatPresentacionProducto.objects.get( pk = id_presentacion_producto ) presentacion.delete() return HttpResponseRedirect('/registro_presentacion_producto/') def registro_productos( request ): productos = CatProductos.objects.all() if request.method == 'POST': formulario = RegistroProductosForm( request.POST ) if formulario.is_valid(): try: validacion = CatProductos.objects.get( nombre = request.POST.get('nombre')) msj = ' EL PRODUCTO YA EXISTE' messages.warning( request, msj ) except CatProductos.DoesNotExist: validacion = None if validacion == None: formulario.save() msj = 'EL REGISTRO DEL PRODUCTO SE REALIZO CORRECTAMENTE' messages.success(request, msj) return HttpResponseRedirect('/registro_productos/') else: msj = 'Error' messages.error(request, msj) else: formulario = RegistroProductosForm() contexto = {'formulario':formulario,'reg_productos':'active','productos':productos} return render_to_response('registro_productos.html', contexto ,context_instance = RequestContext(request)) @csrf_exempt def consulta_detalle_producto(request): if request.is_ajax(): q=request.POST['q'] if q is not None: producto = CatProductos.objects.get(pk = q) list = [] list.append({ 'nombre': str(producto.nombre), 'cantidad': str(producto.cantidad), 'presentacion': str(producto.presentacion), 'marca': str(producto.marca), 'descripcion':str(producto.descripcion), }) recipe_list_json = json.dumps(list) #VOLCAMOS LA LISTA COMO JSON # print recipe_list_json return HttpResponse(recipe_list_json,mimetype="application/javascript") @login_required(login_url='/login') def editar_producto( request, id_producto ): productos = CatProductos.objects.all() producto = CatProductos.objects.get( pk = id_producto ) if request.method == 'GET': formulario = RegistroProductosForm( instance = producto) elif request.method == 'POST': formulario = RegistroProductosForm( request.POST, instance = producto ) if formulario.is_valid(): formulario.save() msj = 'EL PRODUCTO SE EDITO CORRECTAMENTE.' messages.success( request, msj ) return HttpResponseRedirect( '/registro_productos/' ) else: msj = 'Error' messages.error( request, msj ) else: formulario = RegistroProductosForm() contexto = {'formulario':formulario,'reg_productos':'active','productos':productos,'producto':producto} return render_to_response('registro_productos.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def bloquear_producto( request, id_producto ): producto = CatProductos.objects.get( pk = id_producto ) producto.status = False producto.save() return HttpResponseRedirect('/registro_productos/') @login_required(login_url='/login') def desbloquear_producto( request, id_producto ): producto = CatProductos.objects.get( pk = id_producto ) producto.status = True producto.save() return HttpResponseRedirect('/registro_productos/') @login_required(login_url='/login') def registro_paquetes( request ): paquetes = CatPaquete.objects.all().order_by('-id')[:10] if request.method == 'POST': formulario = RegistroPaqueteForm( request.POST ) if formulario.is_valid(): try: #validacion = CatPaquete.objects.get( proveedor = request.POST.get('proveedor'), tipoPaquete = request.POST.get('tipoPaquete')) validacion = CatPaquete.objects.get( proveedor = request.POST.get('proveedor'), tipoPaquete = request.POST.get('tipoPaquete')) msj = ' EL PAQUETE YA EXISTE' messages.warning( request, msj ) except CatPaquete.DoesNotExist: validacion = None if validacion == None: formulario.save() msj = 'EL REGISTRO DEL PAQUETE SE REALIZO CORRECTAMENTE' messages.success(request, msj) return HttpResponseRedirect('/registro_paquetes/') else: msj = 'Error' messages.error(request, msj) else: formulario = RegistroPaqueteForm() contexto = {'formulario':formulario,'reg_productos':'active','paquetes':paquetes} return render_to_response('registro_paquetes.html', contexto ,context_instance = RequestContext(request)) @csrf_exempt def consulta_detalle_paquete(request): if request.is_ajax(): q=request.POST['q'] if q is not None: paquete = CatPaquete.objects.get(pk = q) # print paquete list = [] for p in paquete.producto.all(): list.append({ 'descripcion':p.descripcion }) recipe_list_json = json.dumps(list) #VOLCAMOS LA LISTA COMO JSON # print recipe_list_json return HttpResponse(recipe_list_json,mimetype="application/javascript") @login_required(login_url='/login') def editar_paquete( request, id_paquete ): paquetes = CatPaquete.objects.all().order_by('-id')[:10] paquete = CatPaquete.objects.get( pk = id_paquete ) if request.method == 'GET': formulario = RegistroPaqueteForm( instance = paquete) elif request.method == 'POST': formulario = RegistroPaqueteForm( request.POST, instance = paquete ) if formulario.is_valid(): formulario.save() msj = 'EL PAQUETE SE EDITO CORRECTAMENTE.' messages.success( request, msj ) return HttpResponseRedirect( '/registro_paquetes/' ) else: msj = 'Error' messages.error( request, msj ) else: formulario = RegistroPaqueteForm() contexto = {'formulario':formulario,'reg_productos':'active','paquetes':paquetes,'paquete':paquete} return render_to_response('registro_paquetes.html', contexto ,context_instance = RequestContext(request)) @login_required(login_url='/login') def bloquear_paquete( request, id_paquete ): paquete = CatPaquete.objects.get( pk = id_paquete ) paquete.status = False paquete.save() return HttpResponseRedirect('/registro_paquetes/') @login_required(login_url='/login') def desbloquear_paquete( request, id_paquete ): paquete = CatPaquete.objects.get( pk = id_paquete ) paquete.status = True paquete.save() return HttpResponseRedirect('/registro_paquetes/') @login_required(login_url='/login') def lista_municipio_abasto( request ): municipios = Municipio.objects.all() contexto= {'municipios':municipios,'reg_abasto':'active'} return render_to_response('lista_municipio_abasto.html', contexto ,context_instance = RequestContext(request)) #from decimal import * @login_required(login_url='/login') def cuadro_abasto( request, municipio, mes, ano,ruta_combo ): validar=None mes_abasto = None tonelaje = 0 abastocompleto = RegistroAbasto.objects.filter(escuela__localidad__municipio=municipio,mes=mes,ano=ano) dotaciones = Dotacion.objects.filter(registro_abasto__escuela__localidad__municipio=municipio, registro_abasto__mes=mes,registro_abasto__ano=ano) try: validar = ValidarCuadroAbasto.objects.get( Municipio = municipio, mes = mes, ano = ano) except ValidarCuadroAbasto.DoesNotExist: pass municipios = Municipio.objects.get( pk = municipio ) municipios_rutas_combo = CatRuta.objects.filter( Localidad__municipio = municipio ).distinct() diccionariototalescuela ={} diccionariototalninosruta = {} diccionariototalninosleche = {} diccionariototalleche = {} diccionariototalpaqueteleche = {} diccionariototalpaquete = {} diccionariotonelaje = {} municipios_rutas=municipios_rutas_combo.filter(pk =ruta_combo) for ruta in municipios_rutas: totalescuelas=[] totalninos= 0 totalninosleche = 0 totalleche = 0 totalpaquete = 0 for loc in ruta.Localidad.all(): if loc.municipio.nombre == municipios.nombre: for escuela in loc.catescuela_set.all(): if ruta.nombre == escuela.ruta.nombre: if escuela.status == True: for ninos in escuela.registroabasto_set.all(): if mes == ninos.mes and ano == ninos.ano: mes_abasto = ninos.mes totalninos = totalninos + ninos.totalNinos totalninosleche = totalninosleche+ninos.totalNinosLeche #revisamos si la escuela no tiene dotacion if Dotacion.objects.filter(registro_abasto__pk=ninos.id).count()==0: if (mes == "Abril" or mes == "Agosto" or mes == "Diciembre"): totalleche = totalleche+int(ninos.totalNinosLeche * 2) else: totalleche = totalleche+int(ninos.totalNinosLeche * 4) if ninos.totalNinos >= 5 and ninos.totalNinos < 10: resultado = 1 else: resultado = ninos.totalNinos % 10 if resultado == 0: resultado = ninos.totalNinos / 10 elif resultado > 5: resultado = ((ninos.totalNinos / 10) + 1) elif resultado <= 5: resultado = ninos.totalNinos / 10 totalpaquete=totalpaquete+resultado else: dotacion = Dotacion.objects.get(registro_abasto__pk=ninos.id) resultado = dotacion.paquetes resultado2 = dotacion.leches totalleche=totalleche+resultado2 totalpaquete=totalpaquete+resultado totalescuelas.append(escuela) if totalescuelas != 0: diccionariototalescuela[ruta.id]=len(totalescuelas) if totalninos!= 0: diccionariototalninosruta[int(ruta.id)]=int(totalninos) if totalninosleche!= 0: diccionariototalninosleche[int(ruta.id)]=int(totalninosleche) if totalleche!=0: diccionariototalleche[int(ruta.id)]=int(totalleche) if totalleche%12 == 0: diccionariototalpaqueteleche[int(ruta.id)]=str(totalleche/12)+" paquete(s)" else: diccionariototalpaqueteleche[int(ruta.id)]=str(totalleche/12)+" paquete(s) y "+str(totalleche%12)+" pieza(s)" try: leche = CatPaquete.objects.get( status = True, tipoPaquete__clave = 'L') paquete = CatPaquete.objects.get( status = True, tipoPaquete__clave = 'PA') pesoporleche = (float(leche.peso) / 12 ) tonelajeleche = (float(pesoporleche) * float(totalleche) ) tonelajepaquete = (float(paquete.peso) * float(totalpaquete)) tonelaje = (float(tonelajepaquete) + float(tonelajeleche)) except CatPaquete.DoesNotExist: pass if totalpaquete!=0: diccionariototalpaquete[int(ruta.id)]=int(totalpaquete) if tonelaje!=0: diccionariotonelaje[int(ruta.id)]=int(tonelaje) contexto= {'id_municipio':municipio,'dotaciones':dotaciones,'abastocompleto':abastocompleto,'diccionariototalescuela':diccionariototalescuela,'diccionariototalninosruta':diccionariototalninosruta,'diccionariototalninosleche':diccionariototalninosleche,'diccionariototalleche':diccionariototalleche,'diccionariototalpaquete':diccionariototalpaquete,'diccionariototalpaqueteleche':diccionariototalpaqueteleche,'diccionariotonelaje':diccionariotonelaje,'validar':validar,'mes':mes,'ano':ano,'mes_abasto':mes_abasto,'municipios':municipios,'municipios_rutas':municipios_rutas,'municipios_rutas_combo':municipios_rutas_combo, 'reg_abasto':'active'} return render_to_response('cuadro_abasto.html', contexto ,context_instance = RequestContext(request)) def validar_cuadro( request, id_municipio, mes, ano ): municipio = Municipio.objects.get(pk = id_municipio) validar = ValidarCuadroAbasto() validar.Municipio = municipio validar.mes = mes validar.ano = ano validar.status = True validar.save() ruta_combo = "1" return HttpResponseRedirect('/cuadro_abasto/'+id_municipio+' and '+ mes+' and '+ ano +' and '+ruta_combo) @login_required(login_url='/login') def requerimientos( request ): paquete = CatPaquete.objects.filter( status = True ) firma = CatPersona.objects.all() contexto= {'paquete':paquete,'reg_abasto':'active','firma':firma} return render_to_response('requerimientos.html', contexto ,context_instance = RequestContext(request)) #VISTAS PARA GENERAR REPORTES DE LOS CUADROS DE ABASTOS # def render_to_pdf(template_src, context_dict): template = get_template(template_src) context = Context(context_dict) html = template.render(context) result = StringIO.StringIO() pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), result,encoding='UTF-8') if not pdf.err: return http.HttpResponse(result.getvalue(), mimetype='application/pdf') return http.HttpResponse('We had some errors
%s
' % cgi.escape(html)) def cuadro_abasto_pdf(request, municipio, mes, ano ): validar=None mes_abasto = None tonelaje = 0 abastocompleto = RegistroAbasto.objects.filter(escuela__localidad__municipio=municipio,mes=mes,ano=ano) observaciones= RegistroAbasto.objects.filter(escuela__localidad__municipio=municipio,mes=mes,ano=ano, observacion_id__gte=1) Vespertinas=0 Fucionadas=0 DotacionExtra=0 DotacionFusionada=0 DisminucionPaquetes=0 BajaTemporal=0 for a in observaciones: if a.observacion.id == 6: Vespertinas = Vespertinas + 1 elif a.observacion.id == 7: Fucionadas = Fucionadas + 1 elif a.observacion.id == 8: DotacionExtra = DotacionExtra + 1 elif a.observacion.id == 9: DisminucionPaquetes = DisminucionPaquetes + 1 elif a.observacion.id == 14: DotacionFusionada = DotacionFusionada + 1 elif a.observacion.id == 15: BajaTemporal = BajaTemporal + 1 else: pass try: validar = ValidarCuadroAbasto.objects.get( Municipio = municipio, mes = mes, ano = ano) except ValidarCuadroAbasto.DoesNotExist: pass municipios = Municipio.objects.get( pk = municipio ) municipios_rutas = CatRuta.objects.filter( Localidad__municipio = municipio ).distinct() diccionariototalescuela ={} diccionariototalninosruta = {} diccionariototalninosleche = {} diccionariototalleche = {} diccionariototalpaqueteleche = {} diccionariototalpaquete = {} diccionariotonelaje = {} globalninos= 0 globalninosleche = 0 globalleche = 0 globalpaquete = 0 for ruta in municipios_rutas: totalescuelas=[] totalninos= 0 totalninosleche = 0 totalleche = 0 totalpaquete = 0 for loc in ruta.Localidad.all(): if loc.municipio.nombre == municipios.nombre: for escuela in loc.catescuela_set.all(): if ruta.nombre == escuela.ruta.nombre: if escuela.status == True: for ninos in escuela.registroabasto_set.all(): if mes == ninos.mes and ano == ninos.ano: mes_abasto = ninos.mes totalninos = totalninos + ninos.totalNinos totalninosleche = totalninosleche+ninos.totalNinosLeche if Dotacion.objects.filter(registro_abasto__pk=ninos.id).count()==0: if(mes == "Abril" or mes == "Agosto" or mes == "Diciembre"): totalleche = totalleche+int(ninos.totalNinosLeche * 2) else: totalleche = totalleche+int(ninos.totalNinosLeche * 4) if ninos.totalNinos >= 5 and ninos.totalNinos < 10: resultado = 1 else: resultado = ninos.totalNinos % 10 if resultado == 0: resultado = ninos.totalNinos / 10 elif resultado > 5: resultado = ((ninos.totalNinos / 10) + 1) elif resultado <= 5: resultado = ninos.totalNinos / 10 totalpaquete=totalpaquete+resultado else: dotacion = Dotacion.objects.get(registro_abasto__pk=ninos.id) resultado = dotacion.paquetes resultado2= dotacion.leches totalleche=totalleche + resultado2 totalpaquete=totalpaquete+resultado totalescuelas.append(escuela) if totalescuelas != 0: diccionariototalescuela[ruta.id]=len(totalescuelas) if totalninos!= 0: diccionariototalninosruta[int(ruta.id)]=int(totalninos) globalninos=globalninos+totalninos if totalninosleche!= 0: diccionariototalninosleche[int(ruta.id)]=int(totalninosleche) globalninosleche=globalninosleche+totalninosleche if totalleche!=0: diccionariototalleche[int(ruta.id)]=int(totalleche) globalleche=globalleche+totalleche if totalleche%12 == 0: diccionariototalpaqueteleche[int(ruta.id)]=str(totalleche/12)+" paquete(s)" else: diccionariototalpaqueteleche[int(ruta.id)]=str(totalleche/12)+" paquete(s) y "+str(totalleche%12)+" pieza(s)" try: leche = CatPaquete.objects.get( status = True, tipoPaquete__clave = 'L') paquete = CatPaquete.objects.get( status = True, tipoPaquete__clave = 'PA') pesoporleche = (leche.peso / 12 ) tonelajeleche = (pesoporleche * totalleche ) tonelajepaquete = (paquete.peso * totalpaquete) tonelaje = (tonelajepaquete + tonelajeleche) except CatPaquete.DoesNotExist: pass if totalpaquete!=0: diccionariototalpaquete[int(ruta.id)]=int(totalpaquete) globalpaquete=globalpaquete+totalpaquete if tonelaje!=0: diccionariotonelaje[int(ruta.id)]=int(tonelaje) #firma = CatPersona.objects.get(municipio=municipios,tipoPersona__pk=5) firma = CatPersona.objects.filter(municipio=municipios,tipoPersona__pk=5) contexto= {'Vespertinas':Vespertinas,'Fucionadas':Fucionadas,'DotacionExtra':DotacionExtra,'DotacionFusionada':DotacionFusionada,'DisminucionPaquetes':DisminucionPaquetes,'BajaTemporal':BajaTemporal,'pagesize': 'A4','abastocompleto':abastocompleto,'diccionariototalescuela':diccionariototalescuela,'diccionariototalninosruta':diccionariototalninosruta,'diccionariototalninosleche':diccionariototalninosleche,'diccionariototalleche':diccionariototalleche,'diccionariototalpaquete':diccionariototalpaquete,'diccionariototalpaqueteleche':diccionariototalpaqueteleche,'diccionariotonelaje':diccionariotonelaje, 'mes_abasto':mes_abasto,'validar':validar,'mes':mes,'ano':ano,'municipios':municipios,'municipios_rutas':municipios_rutas, 'reg_abasto':'active','globalninos':globalninos,'globalninosleche':globalninosleche,'globalleche':globalleche,'globalpaquete':globalpaquete,'firma':firma} return render_to_pdf('reporte_cuadro_abasto_pdf.html',contexto) def papeletas_entrega_pdf(request, municipio, mes, ano ): municipios = Municipio.objects.get( pk = municipio ) municipios_rutas = CatRuta.objects.filter( Localidad__municipio = municipio ).distinct() paquete_alimentario1 = CatPaquete.objects.filter( tipoPaquete__clave = 'PA', status = True ) #pa = paquete_alimentario.producto.all()zz for x in paquete_alimentario1: paquete_alimentario = x.producto.all() mes_abasto = None totalpaquete = 0 diccionariototalpaqueteleche = {} diccionariototalpaquete = {} for ruta in municipios_rutas: for loc in ruta.Localidad.all(): if loc.municipio.nombre == municipios.nombre: for escuela in loc.catescuela_set.all(): if ruta.nombre == escuela.ruta.nombre: if escuela.status == True: for ninos in escuela.registroabasto_set.all(): if mes == ninos.mes and ano == ninos.ano: mes_abasto = ninos.mes #revisamos si la escuela no tiene dotacion if Dotacion.objects.filter(registro_abasto__pk=ninos.id).count()==0: if ninos.totalNinos >= 5 and ninos.totalNinos < 10: resultado = 1 else: resultado = ninos.totalNinos % 10 if resultado == 0: resultado = ninos.totalNinos / 10 elif resultado > 5: resultado = ((ninos.totalNinos / 10) + 1) elif resultado <= 5: resultado = ninos.totalNinos / 10 if mes == "Abril" or mes=="Agosto" or mes== "Diciembre": litros_leche = ninos.totalNinosLeche * 2 else: litros_leche = ninos.totalNinosLeche * 4 else: dotacion = Dotacion.objects.get(registro_abasto__pk=ninos.id) resultado = dotacion.paquetes litros_leche = dotacion.leches if litros_leche != 0: if litros_leche % 12 == 0: diccionariototalpaqueteleche[int(escuela.id)]=str(litros_leche/12)+" PAQUETES." else: diccionariototalpaqueteleche[int(escuela.id)]=str(litros_leche/12)+" PAQUETES CON "+str(litros_leche%12)+" LITROS. " if resultado!=0: diccionariototalpaquete[int(escuela.id)]=int(resultado) contexto= {'paquete_alimentario':paquete_alimentario,'mes_abasto':mes_abasto,'diccionariototalpaqueteleche':diccionariototalpaqueteleche,'diccionariototalpaquete':diccionariototalpaquete,'municipios_rutas':municipios_rutas,'municipios':municipios,'mes':mes,'ano':ano,'pagesize': 'A4'} return render_to_response('reporte_papeletas_entrega_pdf.html',contexto) def requerimiento_producto_pdf( request, paquete, ano, mes, licitacion, firma1, firma2, firma3 ): firma1 = CatPersona.objects.get( pk = firma1) firma2 = CatPersona.objects.get( pk = firma2) firma3 = CatPersona.objects.get( pk = firma3) paquete = CatPaquete.objects.get( status = True, id = paquete ) proyectos = CatProyecto.objects.all() municipios = Municipio.objects.all() diccionario_total_litros_leche = {} diccionario_importe = {} diccionario_total_paquete = {} diccionario_importe_paquete = {} for municipio in municipios: abasto = RegistroAbasto.objects.filter( mes = mes, ano = ano, escuela__localidad__municipio__nombre = municipio.nombre ) total_ninos = 0 total_litros_leche = 0 total_litros_leche1 = 0 total_litros_leche2 = 0 importe = 0 importe1=0 importe2=0 totalpaquete = 0 importe_paquete = 0 totales_leche = 0 for ninos in abasto: if paquete.tipoPaquete.clave == 'L': if Dotacion.objects.filter(registro_abasto__pk=ninos.id).count()==0: total_ninos = total_ninos + ninos.totalNinosLeche if mes == "Abril" or mes == "Agosto" or mes == "Diciembre": total_litros_leche1 = total_ninos * 2 else: total_litros_leche1 = total_ninos * 4 importe1 = float(paquete.precio) * total_litros_leche1 else: dotacion = Dotacion.objects.get(registro_abasto__pk=ninos.id) resultado=dotacion.leches total_litros_leche2=total_litros_leche2+resultado importe2=float(paquete.precio)*total_litros_leche2 importe = importe1+importe2 total_litros_leche = (total_litros_leche1+total_litros_leche2) elif paquete.tipoPaquete.clave == 'PA': if Dotacion.objects.filter(registro_abasto__pk=ninos.id).count()==0: if ninos.totalNinos >= 5 and ninos.totalNinos < 10: resultado = 1 else: resultado = ninos.totalNinos % 10 if resultado == 0: resultado = ninos.totalNinos / 10 elif resultado > 5: resultado = ((ninos.totalNinos / 10) + 1) elif resultado <= 5: resultado = ninos.totalNinos / 10 totalpaquete=totalpaquete+resultado else: dotacion = Dotacion.objects.get(registro_abasto__pk=ninos.id) resultado = dotacion.paquetes totalpaquete=totalpaquete+resultado importe_paquete = float(paquete.precio) * totalpaquete if total_litros_leche != 0: diccionario_total_litros_leche[int(municipio.id)]=int(total_litros_leche) diccionario_importe[int(municipio.id)]=float(importe) if totalpaquete != 0: diccionario_total_paquete[int(municipio.id)]=int(totalpaquete) diccionario_importe_paquete[int(municipio.id)]=float(importe_paquete) abasto2 = RegistroAbasto.objects.filter( mes = mes, ano = ano ) totales_ninos_leche_estado = 0 totales_leche_estado = 0 totales_leche_estado1 = 0 totales_leche_estado2 = 0 total_paquete = 0 importe_total_leche_estado = 0 importe_total_paquete_estado = 0 for ninos in abasto2: if paquete.tipoPaquete.clave == 'L': if Dotacion.objects.filter(registro_abasto__pk=ninos.id).count()==0: totales_ninos_leche_estado = totales_ninos_leche_estado + ninos.totalNinosLeche if mes == "Abril" or mes == "Agosto" or mes == "Diciembre": totales_leche_estado1 = totales_ninos_leche_estado * 2 else: totales_leche_estado1 = totales_ninos_leche_estado * 4 else: dotacion = Dotacion.objects.get(registro_abasto__pk=ninos.id) resultado = dotacion.leches totales_leche_estado2 =totales_leche_estado2 + resultado totales_leche_estado = totales_leche_estado1+totales_leche_estado2 importe_total_leche_estado = totales_leche_estado * float(paquete.precio) elif paquete.tipoPaquete.clave == 'PA': if Dotacion.objects.filter(registro_abasto__pk=ninos.id).count()==0: if ninos.totalNinos >= 5 and ninos.totalNinos < 10: resultado = 1 else: resultado = ninos.totalNinos % 10 if resultado == 0: resultado = ninos.totalNinos / 10 elif resultado > 5: resultado = ((ninos.totalNinos / 10) + 1) elif resultado <= 5: resultado = ninos.totalNinos / 10 total_paquete=total_paquete+resultado else: dotacion = Dotacion.objects.get(registro_abasto__pk=ninos.id) resultado = dotacion.paquetes total_paquete=total_paquete+resultado importe_total_paquete_estado = total_paquete * float(paquete.precio) contexto= {'importe_total_paquete_estado':importe_total_paquete_estado,'importe_total_leche_estado':importe_total_leche_estado,'total_paquete':total_paquete,'totales_leche_estado':totales_leche_estado,'diccionario_importe_paquete':diccionario_importe_paquete,'diccionario_total_paquete':diccionario_total_paquete,'diccionario_importe':diccionario_importe,'diccionario_total_litros_leche':diccionario_total_litros_leche,'proyectos':proyectos,'paquete':paquete,'licitacion':licitacion,'ano':ano,'mes':mes,'pagesize': 'A4', 'firma1':firma1, 'firma2': firma2, 'firma3':firma3} return render_to_response('reporte_requerimiento_leche_pdf.html',contexto) def dotacion(request,id_abasto): instanciaregistroabasto = RegistroAbasto.objects.get(pk=id_abasto) #si no existe un registro de dotacion se inserta if Dotacion.objects.filter(registro_abasto__pk=id_abasto).count()==0 : if request.method=='POST': form = DotacionForm(request.POST) if form.is_valid(): paquetes = form.cleaned_data.get('paquetes') opcion = form.cleaned_data.get('opcion') concepto = form.cleaned_data.get('concepto') leches = form.cleaned_data.get('leches') opcion_leches = form.cleaned_data.get('opcion_leches') concepto_leche = request.POST.get('concepto_leche') if(paquetes ==None): paquetes=0 if(opcion ==None): opcion = '-----' if(leches==None): leches=0 if(opcion_leches==None): opcion_leches='-------' if (concepto_leche==''): concepto_leche=0 dotacion=form.save(commit=False) dotacion.registro_abasto = instanciaregistroabasto dotacion.paquetes=paquetes dotacion.opcion=opcion dotacion.concepto=concepto dotacion.leches=leches dotacion.opcion_leches=opcion_leches dotacion.concepto_leche = concepto_leche dotacion.save() messages.success(request, 'Se guardo exitosamente el registro') return HttpResponseRedirect( '/consultas_abasto/0/0/0/0' ) else: messages.error(request, 'corrija los siguientes errores') else: form = DotacionForm(initial={'paquetes':instanciaregistroabasto.paquete_alimentario,'leches':instanciaregistroabasto.litros_leche()}) diccionario={'form':form,'instanciaregistroabasto':instanciaregistroabasto } return render_to_response('dotacion.html',diccionario,context_instance=RequestContext(request)) #si existe un registro de dotacion se edita else: instanciadotacion = Dotacion.objects.get(registro_abasto__pk=id_abasto) if request.method=='POST': form = DotacionForm(request.POST,instance=instanciadotacion) if form.is_valid(): paquetes = form.cleaned_data.get('paquetes') opcion = form.cleaned_data.get('opcion') concepto = form.cleaned_data.get('concepto') leches = form.cleaned_data.get('leches') opcion_leches = form.cleaned_data.get('opcion_leches') concepto_leche = request.POST.get('concepto_leche') if(paquetes ==None): paquetes=0 if(opcion ==None): opcion = '-----' if(leches==None): leches=0 if(opcion_leches==None): opcion_leches='-------' if (concepto_leche==''): concepto_leche=0 dotacion=form.save(commit=False) dotacion.registro_abasto = instanciaregistroabasto dotacion.paquetes=paquetes dotacion.opcion=opcion dotacion.concepto=concepto dotacion.leches=leches dotacion.opcion_leches=opcion_leches dotacion.concepto_leche = concepto_leche dotacion.save() messages.success(request, 'Se actualizo exitosamente el registro') return HttpResponseRedirect( '/consultas_abasto/0/0/0/0' ) else: messages.error(request, 'corrija los siguientes errores') else: form = DotacionForm(instance=instanciadotacion) diccionario={'form':form,'instanciaregistroabasto':instanciaregistroabasto,'instanciadotacion':instanciadotacion, } return render_to_response('dotacion.html',diccionario,context_instance=RequestContext(request)) #AJAX DE CARGA RAPIDA PARA ESCUELAS Registro_abasto class CatEscuelaListAPIView(ListAPIView): model = CatEscuela serializer_class = CatEscuelaSerializer def get_queryset(self): usuario = self.request.user municipio = None tipo_persona = None queryset = super(CatEscuelaListAPIView, self).get_queryset() search = self.request.QUERY_PARAMS.get('search') id = self.request.QUERY_PARAMS.get('id') if id: queryset =queryset.filter( Q(id=id) ) if search: queryset =queryset.filter( #Busqueda Escuela Q(nombre__icontains = search) | #Busqueda por Localidad Q(localidad__nombre__icontains = search) | #Busqueda por Municipio Q(localidad__municipio__nombre__icontains = search) ) return queryset @login_required(login_url='/login') def consulta_padron(request): datos = PadronPersona.objects.all() contexto={'datos': datos} return render_to_response('consulta_alumno_tutor.html', contexto, context_instance=RequestContext(request)) @csrf_exempt def consulta_detalle_alumno(request): if request.is_ajax(): q=request.POST['q'] if q is not None: alumno = PadronPersona.objects.get(pk = q) list = [] list.append({ 'nombre': smart_str(alumno.a_nombre), 'a_paterno': smart_str(alumno.a_paterno), 'a_materno': smart_str(alumno.a_materno), 'a_curp': smart_str(alumno.a_curp), 'genero':smart_str(alumno.genero), 'tutor_nombre': smart_str(alumno.tutor_nombre), 'tutor_paterno': smart_str(alumno.tutor_paterno), 'tutor_materno': smart_str(alumno.tutor_materno), 'tutor_fecha_nacimiento': smart_str(alumno.tutor_fecha_nacimiento), 't_curp': smart_str(alumno.t_curp) }) recipe_list_json = json.dumps(list) #VOLCAMOS LA LISTA COMO JSON return HttpResponse(recipe_list_json,mimetype="application/javascript") @login_required(login_url='/login') def consulta_padron_nino(request): municipios = Municipio.objects.all() contexto= {'municipios':municipios} return render_to_response('buscar_padron.html', contexto, context_instance=RequestContext(request)) @login_required(login_url='/login') def consulta_escuela_nino(request, municipio): municipio = Municipio.objects.get(pk=municipio) # print(municipio) escuelas = CatEscuela.objects.filter(localidad__municipio_id=municipio, status=True) contexto={'escuelas':escuelas} return render_to_response('consulta_escuela_alumno.html', contexto, context_instance=RequestContext(request)) @login_required(login_url='/login') def consulta_padron(request, escuela): datos = PadronPersona.objects.filter(escuela_id=escuela, status=True) escuela = CatEscuela.objects.get(id=escuela) contexto={'datos': datos, 'escuela': escuela} return render_to_response('consulta_alumno_tutor.html', contexto, context_instance=RequestContext(request)) @login_required(login_url='/login') def registro_nino(request): if request.method == 'POST': formulario = RegistroNinosForm(request.POST) if formulario.is_valid(): try: validacion = PadronPersona.objects.get( a_curp = request.POST.get('a_curp')) if validacion.status==False: msj = 'LA CURP INGRESADA YA EXISTE, EL ALUMNO ESTA DADO DE BAJA.' messages.warning(request, msj) else: msj = 'LA CURP INGRESADA YA EXISTE.' messages.warning(request, msj) except PadronPersona.DoesNotExist: validacion = None if validacion == None: curp_tutor= request.POST.get('t_curp') if curp_tutor == '': curp_tutor = request.POST.get('curp_hidden') x = CatEscuela.objects.get(id=int(request.POST.get('escuela_b'))) a=formulario.save(commit=False) a.escuela=x a.t_curp = curp_tutor a.save() msj = 'El alumno y su tutor se han registrado correctamente' messages.success(request, msj) return HttpResponseRedirect('/registro_nino/') else: msj = 'Error campos vacios' messages.error(request, msj) else: formulario = RegistroNinosForm() contexto = {'formulario':formulario} return render_to_response('registro_ninos.html', contexto, context_instance=RequestContext(request)) @login_required(login_url='/login') def bloquear_nino(request, persona): persona = PadronPersona.objects.get(pk=persona) persona.status = False persona.save() msj = 'El Alumno se ha dado de baja correctamente.' messages.success(request, msj) return HttpResponseRedirect('/consulta_padron/%s' %persona.escuela.id) @login_required(login_url='/login') def editar_nino(request, persona): nino = PadronPersona.objects.get(pk=persona) if request.method == 'POST': escuela= nino.escuela.id formulario = RegistroNinosForm(request.POST, instance=nino) if formulario.is_valid(): curp_tutor = request.POST.get('t_curp') if curp_tutor == '': curp_tutor = request.POST.get('curp_hidden') x = CatEscuela.objects.get(id=int(request.POST.get('escuela_b'))) a=formulario.save(commit=False) a.escuela=x a.t_curp = curp_tutor a.save() escuela2 = PadronPersona.objects.get(pk=persona) msj = 'El Alumno se edito correctamente y pertenece a la Escuela: %s, %s , %s' %(escuela2.escuela.localidad.municipio.nombre, escuela2.escuela.nombre , escuela2.escuela.domicilio) messages.success(request, msj) return HttpResponseRedirect('/consulta_padron/%s' %escuela) else: msj = 'Error al editar el Alumno' messages.error(request, msj) else: escuela = nino.escuela.id formulario = RegistroNinosForm(instance=nino) contexto = {'formulario':formulario, 'escuela':escuela, 'nino':nino} return render_to_response('registro_ninos.html', contexto ,context_instance = RequestContext(request)) class BusquedaAjaxEscuelaNinoView(TemplateView): def get(self, request, *args, **kwargs): escuela = request.GET['escuela'] nino = PadronPersona.objects.filter(escuela_id=escuela, status=True) data = serializers.serialize('json', nino) # print(data) return HttpResponse(data, mimetype='application/json') class EscuelaAPIView(ListAPIView): serializer_class = EscuelaSerializer queryset = CatEscuela.objects.all() def filter_queryset(self, queryset): q = self.request.QUERY_PARAMS.get('q') id = self.request.QUERY_PARAMS.get('id') if q: queryset = queryset.filter( Q(nombre__icontains = q) | #Busqueda por Localidad Q(localidad__nombre__icontains = q) | #Busqueda por Municipio Q(localidad__municipio__nombre__icontains = q) | Q(clave__icontains = q) ) if id: queryset = queryset.filter(id = id) return queryset def ConsultarAlumnosBaja(request): bscr = request.GET.get('bscr') if request.GET.get('bscr') else '' alumnos = PadronPersona.objects.filter(status=False) if bscr != '': alumnos=alumnos.filter( Q(pk__icontains= bscr)| Q(a_nombre__icontains = bscr)| Q(a_materno__icontains = bscr)| Q(a_paterno__icontains = bscr)| Q(genero__icontains = bscr)| Q(a_curp__icontains = bscr)| Q(escuela__nombre__icontains = bscr)| Q(escuela__domicilio__icontains = bscr) ) rpp = int(request.GET.get('rpp')) if request.GET.get('rpp') else 10 paginator = Paginator(alumnos, rpp) # Muestra de 2 en 2 page = request.GET.get('page') try: alumnos = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. alumnos = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. alumnos = paginator.page(paginator.num_pages) #TERMINA PAGINACION# contexto ={'bscr':bscr,'rpp':rpp,'alumnos':alumnos} return render_to_response('alumnos_baja.html' ,contexto,context_instance = RequestContext(request)) def editar_nino_baja_new(request, persona): nino = PadronPersona.objects.get(pk=persona) if request.method == 'POST': escuela= nino.escuela.id formulario = RegistroNinosForm(request.POST, instance=nino) if formulario.is_valid(): curp_tutor = request.POST.get('t_curp') if curp_tutor == '': curp_tutor = request.POST.get('curp_hidden') x = CatEscuela.objects.get(id=int(request.POST.get('escuela_b'))) a=formulario.save(commit=False) a.escuela=x a.t_curp = curp_tutor a.status = True a.save() escuela2 = PadronPersona.objects.get(pk=persona) msj = 'El Alumno se ha dado de Alta correctamente y pertenece a la Escuela: %s, %s del Municipio de %s' %(escuela2.escuela.nombre, escuela2.escuela.domicilio, escuela2.escuela.localidad.municipio.nombre) messages.success(request, msj) return HttpResponseRedirect('/alumnos_baja/') else: msj = 'Error al editar el Alumno' messages.error(request, msj) else: escuela = nino.escuela.id formulario = RegistroNinosForm(instance=nino) contexto = {'formulario':formulario, 'escuela':escuela, 'nino':nino} return render_to_response('registro_ninos.html', contexto, context_instance=RequestContext(request)) def desbloquear_alumno(request, persona): nino = PadronPersona.objects.get(pk=persona) nino.status = True nino.save() msj = 'El Alumno se ha dado de Alta correctamente y pertenece a la Escuela: %s, %s del Municipio de %s' %(nino.escuela.nombre, nino.escuela.domicilio, nino.escuela.localidad.municipio.nombre) messages.success(request, msj) return HttpResponseRedirect('/alumnos_baja/') @login_required(login_url='/login') def registro_abasto_automatico(request): if request.method=='POST': form = RegistroAbastoAutomaticoForm(request.POST) if form.is_valid(): municipio=request.POST['municipio'] mes=request.POST['mes'] ano=request.POST['ano'] existe = None promotor = CatPersona.objects.get(id = 96) listaescuelas = CatEscuela.objects.filter(localidad__municipio =municipio ,status = True) #numeroescuelas= CatEscuela.objects.filter(localidad__municipio =municipio ,status = True).count() validar = ValidarCuadroAbasto.objects.filter(Municipio= municipio, mes = mes , ano = ano).count() if validar == 0: for escuelas in listaescuelas: try: existe = RegistroAbasto.objects.get(escuela = escuelas, mes = mes , ano = ano) ninos = PadronPersona.objects.filter(escuela = escuelas.id, genero = 'H',status = True).count() ninas=PadronPersona.objects.filter(escuela = escuelas.id, genero = 'M',status = True).count() totalninios = ninos+ninas totalpadres=PadronPersona.objects.filter(escuela = escuelas.id ,status = True).distinct('t_curp').count() Abasto = RegistroAbasto( id =existe.id, escuela = escuelas, mes = mes, ano= ano, ninas = ninas, ninos=ninos, totalNinos=totalninios, totalNinosLeche=totalninios, totalMadres=totalpadres, promotor = promotor, enviado = False, ) Abasto.save() except RegistroAbasto.DoesNotExist: existe= None if existe == None: ninos = PadronPersona.objects.filter(escuela = escuelas.id, genero = 'H',status = True).count() ninas=PadronPersona.objects.filter(escuela = escuelas.id, genero = 'M',status = True).count() totalninios = ninos+ninas totalpadres=PadronPersona.objects.filter(escuela = escuelas.id,status = True).distinct('t_curp').count() registroabasto = RegistroAbasto.objects.create( escuela = escuelas, mes = mes, ano= ano, ninas = ninas, ninos=ninos, totalNinos=totalninios, totalNinosLeche=totalninios, totalMadres=totalpadres, promotor = promotor, enviado = False, ) msj = 'REGISTRO ABASTO CAPTURADO CON EXITO' messages.success(request, msj) return HttpResponseRedirect('/consulta_registroabasto/') else: msj = 'EL REGISTRO DE ABASTO DE ESTE MUNICIPIO, MES Y AÑO YA FUERON VALIDADOS' messages.warning(request, msj) return HttpResponseRedirect('/consulta_registroabasto/') else: messages.error(request, 'corrija los siguientes errores') else: form = RegistroAbastoAutomaticoForm() diccionario={'form':form } return render_to_response('registroabastobusqueda.html',diccionario,context_instance=RequestContext(request)) class EscuelaAPIView(ListAPIView): serializer_class = EscuelaSerializer queryset = CatEscuela.objects.all() def filter_queryset(self, queryset): q = self.request.QUERY_PARAMS.get('q') id = self.request.QUERY_PARAMS.get('id') if q: queryset = queryset.filter( Q(nombre__icontains = q) | #Busqueda por Localidad Q(localidad__nombre__icontains = q) | #Busqueda por Municipio Q(localidad__municipio__nombre__icontains = q) | #Busqieda por Clave Q(clave__icontains = q) ) if id: queryset = queryset.filter(id = id) return queryset def editar_nino_baja_new(request, persona): nino = PadronPersona.objects.get(pk=persona) if request.method == 'POST': escuela= nino.escuela.id formulario = RegistroNinosForm(request.POST, instance=nino) if formulario.is_valid(): curp_tutor = request.POST.get('t_curp') if curp_tutor == '': curp_tutor = request.POST.get('curp_hidden') x = CatEscuela.objects.get(id=int(request.POST.get('escuela_b'))) a=formulario.save(commit=False) a.escuela=x a.t_curp = curp_tutor a.status = True a.save() escuela2 = PadronPersona.objects.get(pk=persona) msj = 'El Alumno se ha dado de Alta correctamente y pertenece a la Escuela: %s, %s del Municipio de %s' %(escuela2.escuela.nombre, escuela2.escuela.domicilio, escuela2.escuela.localidad.municipio.nombre) messages.success(request, msj) return HttpResponseRedirect('/alumnos_baja/') else: msj = 'Error al editar el Alumno' messages.error(request, msj) else: escuela = nino.escuela.id formulario = RegistroNinosForm(instance=nino) contexto = {'formulario':formulario, 'escuela':escuela, 'nino':nino} return render_to_response('registro_ninos.html', contexto, context_instance=RequestContext(request)) def desbloquear_alumno(request, persona): nino = PadronPersona.objects.get(pk=persona) nino.status = True nino.save() msj = 'El Alumno se ha dado de Alta correctamente y pertenece a la Escuela: %s, %s del Municipio de %s' %(nino.escuela.nombre, nino.escuela.domicilio, nino.escuela.localidad.municipio.nombre) messages.success(request, msj) return HttpResponseRedirect('/alumnos_baja/') def repo_alumnos_escuela(request): form = RepoEscuelaAlumnosForm() contexto = {'reg_abasto': 'active', 'form': form} return render_to_response('repo_alumnos_escuela.html', contexto, context_instance=RequestContext(request)) def reporte_alumnos_escuelas_pdf(request): if request.method == 'POST': form = RepoEscuelaAlumnosForm(request.POST) if form.is_valid(): ano = request.POST.get('ano') mes = request.POST.get('mes') escuelas = CatEscuela.objects.filter(status=True) abasto = RegistroAbasto.objects.all() municipios = Municipio.objects.all() gran_totalescuelas = CatEscuela.objects.filter(status=True).count() grado_muy_alto = CatEscuela.objects.filter(status=True, grado='MUY ALTO').count() grado_alto = CatEscuela.objects.filter(status=True, grado='ALTO').count() grado_medio = CatEscuela.objects.filter(status=True, grado='MEDIO').count() grado_bajo = CatEscuela.objects.filter(status=True, grado='BAJO').count() grado_muy_bajo = CatEscuela.objects.filter(status=True, grado='MUY BAJO').count() primarias_urbanas = CatEscuela.objects.filter(status=True, ambito='URBANA', no_jn__icontains='P').count() primarias_rurales = CatEscuela.objects.filter(status=True, ambito='RURAL', no_jn__icontains='P').count() jardines_rurales = CatEscuela.objects.filter(status=True, ambito='RURAL', no_jn__icontains='J').count() jardines_urbana = CatEscuela.objects.filter(status=True, ambito='URBANA', no_jn__icontains='J').count() totalprimarias = CatEscuela.objects.filter(status=True, no_jn__icontains='P').count() totaljardines = CatEscuela.objects.filter(status=True, no_jn__icontains='J').count() dic_totalescuelas={} dic_totalescuelasj={} dic_totalescuelasp={} dic_totalescuelasuj={} dic_totalescuelasrj={} dic_totalescuelasup={} dic_totalescuelasrp={} dic_totalescuelasmarginacionma={} dic_totalescuelasmarginaciona={} dic_totalescuelasmarginacionm={} dic_totalescuelasmarginacionb={} dic_totalescuelasmarginacionmb={} dic_totalninos={} dic_totalninas={} dic_totalambos={} dic_totalmamasj={} dic_totalmamasp={} dic_totalma = {} totalno = 0 totalna = 0 totalg = 0 gtmaj = 0 gtmap = 0 gtma = 0 for mu in municipios: totalescuelas=[] totalescuelasj=[] totalescuelasp=[] totalescuelasuj=[] totalescuelasrj=[] totalescuelasup=[] totalescuelasrp=[] totalescuelasmarginacionma=[] totalescuelasmarginaciona=[] totalescuelasmarginacionm=[] totalescuelasmarginacionb=[] totalescuelasmarginacionmb=[] for escuela in escuelas: if escuela.localidad.municipio_id == mu.id: totalescuelas.append(escuela) if 'J' in escuela.no_jn: totalescuelasj.append(escuela) if 'P' in escuela.no_jn: totalescuelasp.append(escuela) if escuela.ambito == 'URBANA' and 'J' in escuela.no_jn: totalescuelasuj.append(escuela) if escuela.ambito == 'RURAL' and 'J' in escuela.no_jn: totalescuelasrj.append(escuela) if escuela.ambito == 'URBANA' and 'P' in escuela.no_jn: totalescuelasup.append(escuela) if escuela.ambito == 'RURAL' and 'P' in escuela.no_jn: totalescuelasrp.append(escuela) if escuela.grado == 'MUY ALTO': totalescuelasmarginacionma.append(escuela) if escuela.grado == 'ALTO': totalescuelasmarginaciona.append(escuela) if escuela.grado == 'MEDIO': totalescuelasmarginacionm.append(escuela) if escuela.grado == 'BAJO': totalescuelasmarginacionb.append(escuela) if escuela.grado == 'MUY BAJO': totalescuelasmarginacionmb.append(escuela) if totalescuelas >= 0: dic_totalescuelas[mu.id] = len(totalescuelas) dic_totalescuelasp[mu.id] = len(totalescuelasp) dic_totalescuelasj[mu.id] = len(totalescuelasj) dic_totalescuelasuj[mu.id] = len(totalescuelasuj) dic_totalescuelasrj[mu.id] = len(totalescuelasrj) dic_totalescuelasup[mu.id] = len(totalescuelasup) dic_totalescuelasrp[mu.id] = len(totalescuelasrp) dic_totalescuelasmarginacionma[mu.id] = len(totalescuelasmarginacionma) dic_totalescuelasmarginaciona[mu.id] = len(totalescuelasmarginaciona) dic_totalescuelasmarginacionm[mu.id] = len(totalescuelasmarginacionm) dic_totalescuelasmarginacionb[mu.id] = len(totalescuelasmarginacionb) dic_totalescuelasmarginacionmb[mu.id] = len(totalescuelasmarginacionmb) for mu in municipios: totalma = 0 totalninas = 0 totalninos = 0 totalambos = 0 totalmamaj = 0 totalmamap = 0 for escuela in escuelas: if escuela.localidad.municipio_id == mu.id: for ninos in abasto: if escuela.id == ninos.escuela_id: if mes == ninos.mes and ano == ninos.ano: totalninos = totalninos + ninos.ninos dic_totalninos[mu.id] = int(totalninos) totalninas += ninos.ninas dic_totalninas[mu.id] = int(totalninas) totalambos += ninos.totalNinos dic_totalambos[mu.id] = int(totalambos) totalma += ninos.totalMadres dic_totalma[mu.id] = int(totalma) if 'J' in escuela.no_jn: totalmamaj += ninos.totalMadres dic_totalmamasj[mu.id] = int(totalmamaj) if 'P' in escuela.no_jn: totalmamap += ninos.totalMadres dic_totalmamasp[mu.id] = int(totalmamap) if totalninos != 0: totalno = sum(dic_totalninos.values()) totalna = sum(dic_totalninas.values()) totalg = sum(dic_totalambos.values()) gtmap = sum(dic_totalmamasp.values()) gtmaj = sum(dic_totalmamasj.values()) gtma = sum(dic_totalma.values()) contexto = {'municipios':municipios, 'ano':ano, 'mes': mes, 'dic_totalescuelas':dic_totalescuelas, 'dic_totalescuelasp':dic_totalescuelasp,'dic_totalescuelasj':dic_totalescuelasj, 'dic_totalescuelasuj':dic_totalescuelasuj, 'dic_totalescuelasrj':dic_totalescuelasrj,'dic_totalescuelasup':dic_totalescuelasup, 'dic_totalescuelasrp':dic_totalescuelasrp, 'dic_totalescuelasmarginacionma':dic_totalescuelasmarginacionma, 'dic_totalescuelasmarginaciona':dic_totalescuelasmarginaciona, 'dic_totalescuelasmarginacionm':dic_totalescuelasmarginacionm, 'dic_totalescuelasmarginacionb':dic_totalescuelasmarginacionb, 'dic_totalescuelasmarginacionmb':dic_totalescuelasmarginacionmb, 'gran_totalescuelas':gran_totalescuelas, 'grado_muy_alto':grado_muy_alto, 'grado_alto':grado_alto, 'grado_medio':grado_medio, 'grado_bajo':grado_bajo, 'grado_muy_bajo':grado_muy_bajo, 'primarias_urbanas':primarias_urbanas, 'primarias_rurales':primarias_rurales,'jardines_rurales':jardines_rurales,'jardines_urbana':jardines_urbana, 'totalprimarias':totalprimarias,'totaljardines':totaljardines, 'dic_totalninos':dic_totalninos,'dic_totalninas':dic_totalninas, 'dic_totalambos':dic_totalambos,'dic_totalmamasj':dic_totalmamasj,'dic_totalmamasp':dic_totalmamasp,'dic_totalma':dic_totalma, 'totalno':totalno, 'totalna':totalna,'totalg':totalg, 'gtmap':gtmap,'gtmaj':gtmaj,'gtma':gtma} return render_to_response("reporte_alumnos_escuelas_pdf.html", contexto) else: form = RepoEscuelaAlumnosForm() contexto = {'reg_abasto': 'reg_programacion', 'form': form} return render_to_response('repo_alumnos_escuela.html', contexto, context_instance=RequestContext(request)) class ReportePadronFormatoGeneral(FormView, JasperMix): template_name = 'reporte_padron_formato_general_pdf.html' form_class = MunicipioForm def get(self, request, *args, **kwargs): return super(ReportePadronFormatoGeneral, self).get(request, *args, **kwargs) def form_valid(self, form): municipio = self.request.POST['municipio'] url = settings.RUTA_REPORTE + 'flow.html?_flowId=viewReportFlow&standAlone=true&_flowId=viewReportFlow&ParentFolderUri=%2Finsumos%2Freportes&reportUnit=%2Finsumos%2Freportes%2Fpadron_formato_general&j_username=jasperadmin&j_password=jasperadmin&municipio=' + str(municipio) + '&output=xls' r = requests.get(url=url) response = HttpResponse(content_type='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment; filename=ReportePadronGeneral.xls' buffer = BytesIO(r.content) # Create the PDF object, using the BytesIO object as its "file." p = canvas.Canvas(buffer) # Get the value of the BytesIO buffer and write it to the response. xls = buffer.getvalue() buffer.close() response.write(xls) return response def form_invalid(self, form): messages.error(self.request, 'corrija los siguientes errores') return super(ReportePadronFormatoGeneral, self).form_invalid(form) def get_context_data(self, **kwargs): context = super(ReportePadronFormatoGeneral, self).get_context_data(**kwargs) context['reporte']='active' return context # # class ReportePadronFormatoEscuela(FormView, JasperMix): # # template_name = 'reporte_padron_formato_escuela_pdf.html' # form_class = EscuelaForm # # def get(self, request, *args, **kwargs): # return super(ReportePadronFormatoEscuela, self).get(request, *args, **kwargs) # # def form_valid(self, form): # escuela = self.request.POST['escuela_b'] # url = settings.RUTA_REPORTE + 'flow.html?_flowId=viewReportFlow&standAlone=true&_flowId=viewReportFlow&ParentFolderUri=%2Finsumos%2Freportes&reportUnit=%2Finsumos%2Freportes%2Fpadron_formato_escuela&j_username=jasperadmin&j_password=jasperadmin&escuela=' + str(escuela) + '&output=xls' # r = requests.get(url=url) # response = HttpResponse(content_type='application/vnd.ms-excel') # response['Content-Disposition'] = 'attachment; filename=ReportePadronEscuela.xls' # buffer = BytesIO(r.content) # # # Create the PDF object, using the BytesIO object as its "file." # p = canvas.Canvas(buffer) # # Get the value of the BytesIO buffer and write it to the response. # xls = buffer.getvalue() # buffer.close() # response.write(xls) # return response # # def form_invalid(self, form): # messages.error(self.request, 'corrija los siguientes errores') # return super(ReportePadronFormatoEscuela, self).form_invalid(form) # # def get_context_data(self, **kwargs): # context = super(ReportePadronFormatoEscuela, self).get_context_data(**kwargs) # context['reporte']='active' # # return context class ReportePadronFormatoEscuelaTemplate(TemplateView): template_name = 'reporte_padron_formato_escuela_pdf.html' # form_class = EscuelaForm def get_context_data(self, **kwargs): context = super(ReportePadronFormatoEscuelaTemplate, self).get_context_data(**kwargs) return context class ReportePadronFormatoEscuela(View, JasperMix): def get(self, request, *args, **kwargs): escuela =self.request.GET.get('escuela_b') url = settings.RUTA_REPORTE + 'flow.html?_flowId=viewReportFlow&standAlone=true&_flowId=viewReportFlow&ParentFolderUri=%2Finsumos%2Freportes&reportUnit=%2Finsumos%2Freportes%2Fpadron_formato_escuela&j_username=jasperadmin&j_password=jasperadmin&escuela=' + str(escuela) + '&output=xls' r = requests.get(url=url) response = HttpResponse(content_type='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment; filename=ReportePadronEscuela.xls' buffer = BytesIO(r.content) # Create the PDF object, using the BytesIO object as its "file." p = canvas.Canvas(buffer) # Get the value of the BytesIO buffer and write it to the response. xls = buffer.getvalue() buffer.close() response.write(xls) return response class Ajax_editar_grado_nino(View): def post(self, request, *args, **kwargs): # pk = kwargs.('pk') # escuela = request.POST['grado_escolar'] # print(kwargs, args, request.POST.get('grado_escolar')) # print(request.POST['pk'], request.POST['grado_escolar']) pk = request.POST['pk'] nino_actualizar = PadronPersona.objects.get(id=pk) nino_actualizar.grado_escolar = request.POST['grado_escolar'] nino_actualizar.save() nino = PadronPersona.objects.filter(id=pk) # print (nino.count()) data = serializers.serialize('json', nino) # print(data) return HttpResponse(data, mimetype='application/json')