#encoding:utf-8 from django.http import * from django.template.response import * from django.contrib.auth import * from django.contrib.auth.decorators import * from atencion_ciudadana.models import * from django.shortcuts import * from django.contrib.auth.models import User from atencion_ciudadana.forms import * from datetime import * from django.contrib import messages from django.db.models import * from atencion_ciudadana.forms import * from django import forms from django.db import * # Create your views here. def login_(request): return TemplateResponse(request,'index.html') def validar(request): username = request.POST['username'] password = request.POST['password'] user = authenticate(username=username, password=password) mensaje = '' if user is not None: if user.is_active: login(request, user ) # return HttpResponse ( dependencia.objects.filter(usuarios__in=[user.id]).count() ) if user.is_staff: return HttpResponseRedirect( '/admin0/0' ) else: return HttpResponseRedirect( '/admin1/0' ) else: mensaje = mensaje + 'cuenta desactivada' else: mensaje = mensaje + 'Usuario no valido, verifique sus credenciales' return TemplateResponse(request, 'index.html', {'msj': mensaje}) @login_required def admin0(request, dependencia_id): dependencias = dependencia.objects.all() if not request.user.is_staff: dependencias = dependencia.objects.filter(usuarios__in=[request.user.id]) dependencia_id = dependencias[0].id if dependencia_id != '0': solicitudes = solicitud.objects.all().filter(dependencia = dependencia_id) else: solicitudes = solicitud.objects.all() solicitudesC = solicitudes.filter( estatus__clave='C' ) solicitudesD = solicitudes.filter( estatus__clave='D' ) leidas = solicitudes.filter( estatus__clave='L' ) resueltos = solicitudes.filter(estatus__clave__in = ('RS', 'RI')) no_resueltos = solicitudes.filter(estatus__clave='AL').order_by('-bandera','-fecha_ultimo_cambio') ultimas = solicitudes.filter(estatus__clave__in=('C','D')).order_by('-bandera', '-fecha_ultimo_cambio') pendientes = solicitudes.filter(estatus__clave__in=('A','L')).order_by('-bandera', '-estatus', '-fecha_ultimo_cambio') proceso = solicitudes.filter(estatus__clave__in=('A','AL','L')) proceso.percent = 0 if solicitudes.count() != 0: proceso.percent = str(proceso.count() * 100 / solicitudes.count()) if not request.user.is_staff: solicitudes = solicitudes.filter(estatus__clave__in = ['A','AL','RS', 'RI']) solicitudesC = solicitudes.filter( estatus__clave='A' ) solicitudesD = solicitudes.filter( estatus__clave='AL' ) ultimas = solicitudes.filter(estatus__clave__in=['A']).order_by('-bandera','-estatus', '-fecha_ultimo_cambio') pendientes = solicitudes.filter(estatus__clave__in=['AL']).order_by('-bandera','-estatus', '-fecha_ultimo_cambio') resueltos = solicitudes.filter(estatus__clave__in = ['RS', 'RI']).order_by('-bandera','-fecha_ultimo_cambio') leidas = solicitudes.filter( estatus__clave='AL', dependencia = dependencia_id ) proceso = solicitudes.filter(estatus__clave__in=('AL'), dependencia = dependencia_id) if solicitudes.count() != 0: proceso.percent = str(proceso.count() * 100 / solicitudes.count()) return TemplateResponse(request, 'form-wizard.html', { 'solicitudesC': solicitudesC, 'solicitudesD': solicitudesD, 'dependencias':dependencias, 'solicitudes':solicitudes, 'leidas':leidas, 'resueltos':resueltos, 'ultimas':ultimas, 'pendientes':pendientes, 'no_resueltos':no_resueltos, 'proceso':proceso, 'dependencia_id':dependencia_id, 'ubicacion':'inicio' }) def captura(request): varSolicitanteForm = solicitanteform(request.POST) or None if 'esSolicitante' in request.POST: try: existePersona = persona.objects.get( curp = request.POST['curp'] ) except Exception, e: existePersona = None if existePersona: existePersona.mostrar = True existePersona.save() msj='El solicitante "%s" ya se encuentra registrado' % ( existePersona ) messages.info(request, msj) else: if varSolicitanteForm.is_valid(): try: solicitante = varSolicitanteForm.save(commit = False) solicitante.mostrar = True solicitante.save() except Exception, e: messages.success(request, e) return HttpResponseRedirect(request.path) msj='Se agrego el solicitante %s' % ( solicitante ) messages.success(request, msj) return HttpResponseRedirect(request.path) if request.method=='POST': if 'bandera' in request.POST: b = request.POST['bandera'] else: b = False s = solicitud(asigna_id = 6, nota = 'Registro web', bandera = b) if str(request.user) != 'AnonymousUser': if request.user.is_staff: s = solicitud(asigna_id = 1, estatus_id = 3, nota = 'Capturado por adminstrador', bandera = b ) formulario = SolicitudForm(request.POST, request.FILES, instance = s) if formulario.is_valid(): sol = formulario.save() if sol.solicitante_id != None: solicitante = persona.objects.get(pk = sol.solicitante_id) solicitante.mostrar = False solicitante.save() msj='• La solicitud con numero de folio %s se ha enviado correctamente \n recuerde este folio para monitorear su solicitud en la sección de consultas.' % ( sol.id ) formulario = SolicitudForm(initial={'asigna':6}) #return TemplateResponse(request, 'captura.html', {'msj': msj, 'formulario':formulario}) # return redirect('/captura/', {'msj':msj}, context_instance = RequestContext(request)) # return redirect('captura.html',{'formulario':formulario, 'msj':msj}) messages.success(request, msj) return HttpResponseRedirect(request.path) else: msj='Por favor, corrija el siguiente error.' messages.error(request, msj) else: id_d=0 # return HttpResponse( str(request.user) != 'AnonymousUser' ) if str(request.user) != 'AnonymousUser': if not request.user.is_staff: d = dependencia.objects.all().get(usuarios__in=[request.user.id]) # RECUPERA LA DEPENDENCIA VERIFICAR id_d = d.id solicitantesnuevos = persona.objects.all().filter(mostrar = True) #.exclude( #id__in = ( solicitud.objects.values_list('solicitante_id') ) ) # print solicitud.objects.values_list('solicitante_id') # print solicitantesnuevos # if solicitantesnuevos.count() != 0: # print solicitantesnuevos SolicitudForm.base_fields['solicitante'] = forms.ModelChoiceField(required = False, queryset = persona.objects.filter(pk__in = (solicitantesnuevos) ) ) formulario = SolicitudForm(initial={'asigna':6, 'dependencia':id_d}) # return HttpResponse(str(id_d)) return render_to_response('captura.html',{'formularioSolicitante':varSolicitanteForm,'formulario':formulario, 'user':request.user}, context_instance = RequestContext(request)) @login_required def editar_solicitud(request, solicitud_id): return HttpResponse('1 pantalla principal de edicion de solicitudes') @login_required def asignar_solicitud(request): return HttpResponse('2 pantalla principal de la dependencia') @login_required def ver_solicitudC(request, solicitud_id): # formulario = SolicitudForm() s = solicitud.objects.all().get(pk = solicitud_id) s.estatus = estatus.objects.get(clave = 'L') s.asigna = request.user s.nota = 'leido por el administrador' s.save() return render_to_response('solicitud.html',{'solicitud':s}, context_instance = RequestContext(request)) return HttpResponse('3 pantalla de consulta de solicitud capturados') @login_required def ver_solicitudD(request, solicitud_id): return HttpResponse('4 pantalla de consulta de solicitud devueltas') def logout_user(request): response = logout(request) return HttpResponseRedirect('/login') # def asignar(request, solicitud_id, dependencia_id): # formulario = AsignacionForm(initial={'solicitud': solicitud_id, 'asigna':request.user.id, 'fecha_ultimo_cambio':datetime.now()}) # if request.method=='POST': # dependencia_id = request.POST.get('dependencia') # formulario = AsignacionForm(request.POST) # if formulario.is_valid(): # formulario.save() # s = solicitud.objects.all().get(pk=solicitud_id) # if request.user.is_staff: # s.estatus = estatus.objects.get(clave = 'A') # s.nota = self.nota # else: # s.estatus = estatus.objects.get(clave = 'D') # s.dependencia_id = dependencia_id # s.nota = self.nota # s.asigna = request.user # s.save() # return redirect('/ver/solicitud/'+solicitud_id+'/'+dependencia_id) # return render_to_response('asignar.html',{'formulario':formulario, 'dependencia_id':dependencia_id}, context_instance = RequestContext(request)) @login_required def ver_solicitud(request, solicitud_id, dependencia_id): """ al mostrar la solicitud, le cambiamos el estatus """ # obtenemos la solicitud s = solicitud.objects.all().get(pk=solicitud_id) b = bitacora.objects.all().values('nota', 'dependencia__nombre', 'dependencia__clave', 'recibio__username', 'estatus__nombre').filter(solicitud_id = solicitud_id) dependencias = dependencia.objects.all() # verificamos si la solicitud es Captura y el usuario es Administrador # o si la solicitud esta asignada y el usuario es Dependencia if (s.estatus.clave == 'C' or s.estatus.clave == 'D') and request.user.is_staff: s.estatus = estatus.objects.get(clave = 'L') s.nota = 'leido por el administrador' elif s.estatus.clave == 'A' and not request.user.is_staff: s.estatus = estatus.objects.get(clave = 'AL') s.nota = 'leido en la dependencia' # modificamos el usuario quien registra y guardamos s.asigna = request.user s.save() # return HttpResponse (request.method) """ si el formulario fue enviado """ if request.method=='POST': formulario = AsignacionForm( request.POST ) if formulario.is_valid(): # s = solicitud.objects.all().get(pk=solicitud_id) if request.user.is_staff: s.estatus = estatus.objects.get(clave = 'A') else: s.estatus = estatus.objects.get(clave = 'D') s.dependencia_id = request.POST.get('dependencia') s.nota = request.POST.get('nota') s.asigna = request.user s.save() msj='la solicitud se asigno correctamente' messages.success(request, msj) return HttpResponseRedirect('/admin0/0') else: msj='Por favor, corrija el siguiente error.' messages.error(request, msj) # return render_to_response('solicitud.html',{'formulario':formulario, 'solicitud': s, 'dependencia_id':dependencia_id}, context_instance = RequestContext(request)) else: # """ inicializamos el formulario """ formulario = AsignacionForm(initial={'solicitud':s, 'dependencia':s.dependencia_id}) return render_to_response('solicitud.html',{'formulario':formulario,'solicitud':s, 'dependencia_id':dependencia_id, 'bitacora':b, 'dependencias':dependencias}, context_instance = RequestContext(request)) @login_required def resolver(request, solicitud_id, estatus_id, dependencia_id): s = solicitud.objects.all().get(pk = solicitud_id) if request.method=='POST': formulario = AsignacionForm( request.POST ) if formulario.is_valid(): if estatus_id == '0': s.estatus = estatus.objects.get(clave = 'RS') s.dependencia_id = request.POST.get('dependencia') s.nota = request.REQUEST['nota'] msj = 'satisfactoriamente' else: s.estatus = estatus.objects.get(clave = 'RI') s.dependencia_id = request.POST.get('dependencia') s.nota = request.REQUEST['nota'] msj = 'insatisfactoriamente' s.asigna = request.user s.save() msj=u'la solicitud se resolvio %s' % (msj) messages.success(request, msj) return HttpResponseRedirect('/admin0/' + str(dependencia_id)) else: msj='Por favor, corrija el siguiente error.' messages.error(request, msj) else: # """ inicializamos el formulario """ formulario = AsignacionForm(initial={'solicitud':s}) return render_to_response('solicitud.html',{'formulario':formulario,'solicitud':s, 'dependencia_id':dependencia_id}, context_instance = RequestContext(request)) return redirect('/ver/solicitud/'+solicitud_id+'/'+dependencia_id) @login_required def devolver(request, solicitud_id, dependencia_id): s = solicitud.objects.all().get(pk = solicitud_id) formulario = AsignacionForm(request.POST) # msj = u'%s' % (dependencia_id) # return HttpResponse(msj) if request.method=='POST': formulario = AsignacionForm(request.POST) if formulario.is_valid(): s.estatus = estatus.objects.get(clave = 'D') s.nota = request.POST.get('nota') s.asigna = request.user s.save() msj = 'La solicitud se ha devuelto ' messages.success(request, msj) return HttpResponseRedirect('/admin0/' + str(dependencia_id)) else: msj='Por favor, corrija el siguiente error.' messages.error(request, msj) return render_to_response('solicitud.html',{'formulario':formulario,'solicitud':s, 'dependencia_id':dependencia_id}, context_instance = RequestContext(request)) def consulta(request): s = None b = None if request.GET: id_ = -1 if 'folio' in request.GET: id_ = request.GET.get('folio') if id_ == '': messages.error(request, 'folio no proporcionado') curp_ = '' if 'curp' in request.GET: curp_ = request.GET.get('curp').upper() if curp_ == '': messages.error(request, 'CURP no proporcionado') try: s = solicitud.objects.all().get(id = id_, curp = curp_) b = bitacora.objects.all().values('nota', 'dependencia__nombre', 'dependencia__clave', 'recibio__username', 'estatus__nombre').filter(solicitud_id = id_) messages.info(request, 'Solicitud encontrada') except Exception, e: pass # msj='Por favor, corrija el siguiente error. %s ' % e # messages.error(request, msj) if s == None: messages.error(request, 'No se encontró solicitud con los datos proporcionados ') return render_to_response('consulta.html',{'solicitud':s, 'bitacora':b}, context_instance = RequestContext(request)) @login_required def dependenciaadd(request): dependencias = dependencia.objects.all if request.method == 'POST': formulario = dependenciaform(request.POST) if formulario.is_valid(): try: formulario.save() msj = 'La dependencia "%s" se ha agregado correctamente' % request.POST.get('nombre').upper() messages.success(request, msj) except Exception, e: msj = e.message messages.error(request, msj) return HttpResponseRedirect('/admin0/0') else: msj='Por favor, corrija el siguiente error.' messages.error(request, msj) else: formulario = dependenciaform() return render_to_response('dependencia.html',{'dependencias':dependencias, 'formulario':formulario, 'accion':'add'}, context_instance = RequestContext(request)) @login_required def dependenciaedit(request, dependencia_id): dependencias = dependencia.objects.all() if request.method == 'GET': d = dependencia.objects.all().get(pk = dependencia_id) formulario = dependenciaform(initial = {'clave':d.clave, 'nombre':d.nombre}, instance = d) # return HttpResponseRedirect(request.path) elif request.method == 'POST': formulario = dependenciaform(request.POST) if formulario.is_valid(): d = dependencia.objects.all().get(pk = dependencia_id) d.clave = request.POST.get('clave').upper() d.nombre = request.POST.get('nombre').upper() try: d.save() msj = 'La dependencia "%s" se modifico correctamente' % request.POST.get('nombre').upper() messages.success(request, msj) except Exception, e: msj = e.message messages.error(request, msj) return HttpResponseRedirect(request.path) else: msj='Por favor, corrija el siguiente error.' messages.error(request, msj) else: formulario = dependenciaform() return render_to_response('dependencia.html',{'dependencias':dependencias, 'formulario':formulario, 'accion':'editar', 'dependencia_id':dependencia_id}, context_instance = RequestContext(request)) def lugaradd(request): if 'REMOTE_ADDR' in request.META: RA = request.META['REMOTE_ADDR'] RA = request.META.get('HTTP_X_FORWARDED_FOR', '') or request.META.get('REMOTE_ADDR') messages.warning(request, str(' Por cuestiones de seguridad usaremos su ip: %s ' % RA ) ) i = lugar(ip = RA) lugares = lugar.objects.all if request.method == 'POST': formulario = lugarform(request.POST, instance = i) if formulario.is_valid(): try: formulario.save() msj = 'La localidad "%s" se ha agregado correctamente' % request.POST.get('nombre') messages.success(request, msj) except Exception, e: msj = e messages.error(request, msj) return HttpResponseRedirect('/captura') else: msj='Por favor, corrija el siguiente error.' messages.error(request, msj) else: formulario = lugarform() return render_to_response('lugar.html',{'lugares':lugares, 'formulario':formulario, 'accion':'add'}, context_instance = RequestContext(request)) def lugaredit(request, lugar_id): lugares = lugar.objects.all() if request.method == 'GET': d = lugar.objects.all().get(pk = lugar_id) formulario = lugarform(initial = {'clave':d.clave, 'nombre':d.nombre}, instance = d) # return HttpResponseRedirect(request.path) elif request.method == 'POST': formulario = lugarform(request.POST) if formulario.is_valid(): d = lugar.objects.all().get(pk = lugar_id) d.clave = request.POST.get('clave').upper() d.nombre = request.POST.get('nombre').upper() try: d.save() msj = 'La lugar "%s" se modifico correctamente' % request.POST.get('nombre') messages.success(request, msj) except Exception, e: msj = e.message messages.error(request, msj) return HttpResponseRedirect(request.path) else: msj='Por favor, corrija el siguiente error.' messages.error(request, msj) else: formulario = lugarform() return render_to_response('lugar.html',{'lugares':lugares, 'formulario':formulario, 'accion':'editar', 'lugar_id':lugar_id}, context_instance = RequestContext(request)) from django.db.models import Count from django.contrib.auth.decorators import login_required @login_required def bitacoraview(request, dependencia_id=0): if dependencia_id != '0': solicitudes = solicitud.objects.all().filter(dependencia = dependencia_id) else: solicitudes = solicitud.objects.all() solicitudesC = solicitudes.filter( estatus__clave='C' ) solicitudesD = solicitudes.filter( estatus__clave='D' ) leidas = solicitudes.filter( estatus__clave='L' ) resueltos = solicitudes.filter(estatus__clave__in = ('RS', 'RI')) no_resueltos = solicitudes.filter(estatus__clave='AL').order_by('-bandera','-fecha_ultimo_cambio') ultimas = solicitudes.filter(estatus__clave__in=('C','D')).order_by('-bandera','-fecha_ultimo_cambio') pendientes = solicitudes.filter(estatus__clave__in=('A','L')).order_by('-bandera','-estatus', '-fecha_ultimo_cambio') proceso = solicitudes.filter(estatus__clave__in=('A','AL','L')) proceso.percent = 0 if solicitudes.count() != 0: proceso.percent = str(proceso.count() * 100 / solicitudes.count()) if dependencia_id != '0': b = bitacora.objects.all().filter(dependencia_id = dependencia_id).order_by('-fecha_registro') solicitudes = solicitud.objects.all().filter(dependencia = dependencia_id) else: b = bitacora.objects.all() solicitudes = solicitud.objects.all().order_by('-bandera','-fecha_registro') solicitudesC = solicitudes.filter( estatus__clave='C' ) solicitudesD = solicitudes.filter( estatus__clave='D' ) totales = bitacora.objects.values('estatus__nombre').order_by('estatus').annotate(total=Count('estatus')) dependencias = dependencia.objects.all() return render_to_response('bitacora.html',{ 'bitacora':b, 'dependencias':dependencias, 'ubicacion':'bitacora', 'totales':totales, 'solicitudesC': solicitudesC, 'solicitudesD': solicitudesD, 'ultimas':ultimas, 'solicitudes': solicitudes, 'leidas':leidas, 'resueltos':resueltos, 'ultimas':ultimas, 'pendientes':pendientes, 'proceso':proceso, }, context_instance = RequestContext(request)) from reportlab.pdfgen import canvas from django.http import HttpResponse def pdf1(request): # Create the HttpResponse object with the appropriate PDF headers. response = HttpResponse(content_type='application/pdf') response ['Content-Disposition'] = 'filename="somefilename.pdf"' # Create the PDF object, using the response object as its "file." p = canvas.Canvas(response) # Draw things on the PDF. Here's where the PDF generation happens. # See the ReportLab documentation for the full list of functionality. if request.method == 'POST': if 'de' in request.POST: if request.REQUEST['de'] != '': de = request.REQUEST['de'] a = request.REQUEST['a'] lugares = lugar.objects.all().filter(fecha_registro__range=[de, a]) else: lugares = lugar.objects.all() i=800 for lug in lugares: linea = u' %s %s ' % (lug.padre, lug.nombre) p.drawString( 100 , i, linea ) i-=50 # Close the PDF object cleanly, and we're done. p.showPage() p.save() return response def pdf(request): return TemplateResponse(request, 'pdf.pdf') @login_required def SolicitudCURP(request, solicitud_id): # consultar solicitud, para extraer CURP s = solicitud.objects.get(id = solicitud_id ) # consultar solicitudes por CURP solicitudes = solicitud.objects.all().filter(curp = s.curp) return render_to_response('SolicitudCURP.html',{'solicitud':s, 'solicitudes':solicitudes}, context_instance = RequestContext(request)) @login_required def perfil(request, user_id): return TemplateResponse(request, 'perfil.html' ) from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger @login_required(login_url='/') def imprimirView(request, dependencia_id): bscr = '' if 'bscr' in request.GET: bscr= request.GET['bscr'] dependencias = dependencia.objects.all() if dependencia_id != '0': solicitudes = solicitud.objects.all().filter(dependencia = dependencia_id) else: solicitudes = solicitud.objects.all() solicitudesC = solicitudes.filter( estatus__clave='C' ) solicitudesD = solicitudes.filter( estatus__clave='D' ) solicitudes = solicitudes.filter( Q(nombre__icontains = bscr) | Q(apellido_paterno__icontains = bscr) | Q(apellido_materno__icontains = bscr) | Q(sexo__icontains = bscr) | Q(fecha_nacimiento__icontains = bscr) | Q(curp__icontains = bscr) | Q(localidad__nombre__icontains = bscr) | Q(localidad__padre__nombre__icontains = bscr) | Q(solicitud__icontains = bscr) | # Q(direccion__icontains = bscr) | Q(codigo_postal__icontains = bscr) #| # Q(identificacion__icontains = bscr) | # Q(correo_electronico__icontains = bscr) | Q(solicitante__nombre__icontains = bscr) | Q(solicitante__apellido_paterno__icontains = bscr) | Q(solicitante__apellido_materno__icontains = bscr) | Q(solicitante__fecha_nacimiento__icontains = bscr) )#.extra(where=[" CONCAT(trim(atencion_ciudadana_solicitud.nombre),' ',trim(atencion_ciudadana_solicitud.apellido_paterno),' ',trim(atencion_ciudadana_solicitud.apellido_materno)) like %s or CONCAT(trim(atencion_ciudadana_persona.nombre),' ',trim(atencion_ciudadana_persona.apellido_paterno),' ',trim(atencion_ciudadana_persona.apellido_materno)) like %s "], params=['%'+bscr+'%', '%'+bscr+'%']) rpp = 10 # Show 10 contacts per page if 'rpp' in request.GET: rpp = request.GET.get('rpp') paginator = Paginator(solicitudes, rpp) page = request.GET.get('page') try: solicitudes = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. solicitudes = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. solicitudes = paginator.page(paginator.num_pages) return TemplateResponse(request, 'imprimir.html', { 'dependencias':dependencias, 'solicitudesC':solicitudesC, 'solicitudes':solicitudes, 'bscr':bscr, 'rpp':rpp, 'dependencia_id':dependencia_id } ) from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.platypus import Table, TableStyle, SimpleDocTemplate,PageTemplate, Paragraph, Spacer, Image from reportlab.lib.pagesizes import letter, landscape, A4, portrait from reportlab.lib.units import cm, mm, inch, pica from reportlab.lib.enums import TA_JUSTIFY, TA_RIGHT, TA_LEFT, TA_CENTER from reportlab.lib import colors import os from reportlab.rl_config import defaultPageSize import locale PAGE_HEIGHT=defaultPageSize[1]; PAGE_WIDTH=defaultPageSize[0] Title = '' pageinfo = "" from reportlab.platypus import PageBreak def PDF(request, dependencia_id): bscr = '' if 'bscr' in request.GET: bscr= request.GET['bscr'] s = None response = HttpResponse(mimetype='application/pdf') #response['Content-Disposition'] = 'attachment;filename=Reporte.pdf' estilo=getSampleStyleSheet() elements = [] doc = SimpleDocTemplate(response,pagesize=landscape(A4), rightMargin=5*mm,leftMargin=5*mm, topMargin=2.5*cm,bottomMargin=3*cm) data = [] h1=estilo['h1'] estilo.add( ParagraphStyle( name = 'Centrado' ) ) Centrado = estilo["Centrado"] Centrado.alignment = TA_CENTER Centrado.fontName = "Helvetica" Centrado.fontSize = 10 estilo.add( ParagraphStyle (name = 'Justificado') ) Justificado = estilo['Justificado'] Justificado.alignment = TA_JUSTIFY Justificado.fontName = "Helvetica" Justificado.fontSize = 7 # logo = Paragraph('', h1) # elements.append(logo) # P=Paragraph("GOBIERNO DEL ESTADO DE TABASCO",Centrado) # elements.append(P) # P=Paragraph("SERVICIO ESTATAL DE ADMINISTRACION DE BIENES ASEGURADOS",Centrado) # elements.append(P) # elements.append(Spacer(0,40)) # foto = Image('/static/images/logo_tabasco.png') data=[[ 'Nombre', 'S', 'F. nac.', 'CURP', 'Localidad', 'Dirección', 'CP', 'IFE/Licencia', 'Correo', 'Teléfono', 'Celular', 'Solicitud', 'Depcia.', # 'Foto', # 'Estatus', # 'Asigna', # 'Nota' ]] if dependencia_id != '0': solicitudes = solicitud.objects.all().filter(dependencia = dependencia_id) else: solicitudes = solicitud.objects.all() solicitudesC = solicitudes.filter( estatus__clave='C' ) solicitudesD = solicitudes.filter( estatus__clave='D' ) solicitudes = solicitudes.filter( Q(nombre__icontains = bscr) | Q(apellido_paterno__icontains = bscr) | Q(apellido_materno__icontains = bscr) | Q(sexo__icontains = bscr) | Q(fecha_nacimiento__icontains = bscr) | Q(curp__icontains = bscr) | Q(localidad__nombre__icontains = bscr) | Q(localidad__padre__nombre__icontains = bscr) | Q(solicitud__icontains = bscr) | # Q(direccion__icontains = bscr) | Q(codigo_postal__icontains = bscr) #| # Q(identificacion__icontains = bscr) | # Q(correo_electronico__icontains = bscr) ) s = solicitudes if request.GET: fecha = request.GET.get('de') fecha1 = request.GET.get('de1') # try: # s = Bienes.objects.all().filter(fecha__range=(fecha, fecha1) ) # except Exception, e: # msj=e # messages.error(request, msj) # return HttpResponseRedirect ('/caronte/bienes/bienes/') for p in s: plocalidadnombre = '' if p.localidad.nombre != '': plocalidadnombre = p.localidad.nombre[0:100] plocalidadpadrenombre = '' if p.localidad.padre: plocalidadpadrenombre = p.localidad.padre.nombre[0:100] data.append([ Paragraph(p.nombre[0:50] + ' ' +p.apellido_paterno[0:50] + ' ' + p.apellido_materno[0:50], Justificado ), p.sexo, p.fecha_nacimiento, p.curp, Paragraph( plocalidadnombre + ', ' + plocalidadpadrenombre, Justificado ), Paragraph(p.direccion[0:100], Justificado ), p.codigo_postal, p.identificacion, p.correo_electronico, p.telefono, p.celular, Paragraph(p.solicitud[0:500], Justificado ), Paragraph(p.dependencia.nombre[0:100], Justificado ), # p.foto, # p.estatus, # p.asigna, # p.nota # Paragraph(p.numero_averiguacion, Justificado ), # p.autoridad, # p.numero_oficio, # p.persona_entrega, # Paragraph(p.propietario, Justificado ), # p.calidad_bien.calidad_bien[0:2], # p.tipo_bien.tipo_bien[0:1], # Paragraph(p.descripcion, Justificado ), # Paragraph(p.situacion_juridica, Justificado ), # p.fecha_devolucion ]) #data.append(PageBreak()) # elements.append(foto) # elements.append(ted) t_datos = Table(data, [ 3 * cm, #nombre #apellido paterno #apellido materno 0.50 * cm, #sexo 1.50 * cm, #fecha de nacimiento 3.25 * cm, #CURP 2.50 * cm, #localidad 2.50 * cm, #Direccion 1 * cm, #codigo postal 2.25 * cm, #identificacion 4 * cm, #correo 1.75 * cm, #telefono 1.50 * cm, #celular 2.75 * cm, #solicitud 1.75 * cm, #dependencia ], repeatRows=1, style=[('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,1),(-1,-1),7), # ('ALIGN',(0,0),(-1,0),'CENTER'), # ('ALIGN',(0,0),(-11,-1),'CENTER'), # ('ALIGN',(1,1),(-10,-1),'LEFT'), # ('ALIGN',(2,1),(-9,-1),'CENTER'), # ('ALIGN',(3,1),(-6,-1),'LEFT'), # ('ALIGN',(6,1),(-4,-1),'CENTER'), # ('ALIGN',(6,1),(-4,-1),'CENTER'), # ('ALIGN',(8,1),(-2,-1),'LEFT'), # ('ALIGN',(10,1),(-1,-1),'CENTER'), # ('BACKGROUND',(10,1),(-1,-1),colors.red), # ('INNERGRID', (0,0), (-1,-1), 0.25, colors.red), ]) # t_datos.hAlign = 'LEFT' elements.append(t_datos) import os # imagen = os.path.join(os.path.dirname(os.path.abspath('settings.py')), '/static/imagenes/pleca-sup-dif.png') imagen = ('http://atencion.tabasco.gob.mx/static/imagenes/pleca-sup-dif.png') def myFirstPage(canvas, doc): canvas.saveState() canvas.drawImage(imagen,1*cm,535, 219, 58) canvas.setFont('Helvetica',12) canvas.drawString(13.75*cm, 20 * cm, "GOBIERNO DEL ESTADO DE TABASCO") canvas.drawString(14*cm, 19.5 * cm, "Sistema Estatal de Atención Ciudadana") canvas.drawString(16.5*cm, 19 * cm, "Solicitudes" ) # canvas.setFont('Helvetica',10) # canvas.drawString(3.5*cm, 2.5 * cm, "____________________________________") # canvas.drawString(4.5*cm, 2 * cm, "Sr. José Antonio Rojas Calderón") # canvas.drawString(4*cm, 1.5 * cm, "Jefe de Depto. de Bienes Asegurados") # canvas.drawString(19.5*cm, 2.5 * cm, "_______________________________") # canvas.drawString(20.5*cm, 2 * cm, "Lic. Pedro Sanchez Sibaja") # canvas.drawString(20*cm, 1.5 * cm, "Dir. Gral. de Bienes Asegurados") # canvas.setFont('Helvetica',9) # canvas.drawString(27*cm, .25 * inch, "Página %d" % (doc.page)) canvas.restoreState() def myLaterPages(canvas, doc): canvas.saveState() canvas.drawImage(imagen,1*cm,535, 219, 58) canvas.setFont('Helvetica',12) canvas.drawString(13.75*cm, 20 * cm, "GOBIERNO DEL ESTADO DE TABASCO") canvas.drawString(14*cm, 19.5 * cm, "Sistema Estatal de Atención Ciudadana") canvas.drawString(16.5*cm, 19 * cm, "Solicitudes" ) # canvas.drawString(3.5*cm, 2.5 * cm, "____________________________________") # canvas.drawString(4.5*cm, 2 * cm, "Sr. José Antonio Rojas Calderón") # canvas.drawString(4*cm, 1.5 * cm, "Jefe de Depto. de Bienes Asegurados") # canvas.drawString(19.5*cm, 2.5 * cm, "_______________________________") # canvas.drawString(20.5*cm, 2 * cm, "Lic. Pedro Sanchez Sibaja") # canvas.drawString(20*cm, 1.5 * cm, "Dir. Gral. de Bienes Asegurados") # canvas.setFont('Helvetica',9) # canvas.drawString(27*cm, .25 * inch, "Página %d %s" % (doc.page, pageinfo)) canvas.restoreState() doc.build(elements, onFirstPage = myFirstPage, onLaterPages = myLaterPages) return response def comprobanteView(request): solicitud_id = 0 if 'solicitud_id' in request.POST: solicitud_id = request.POST['solicitud_id'] s = None response = HttpResponse(mimetype='application/pdf') #response['Content-Disposition'] = 'attachment;filename=Reporte.pdf' estilo=getSampleStyleSheet() elements = [] doc = SimpleDocTemplate(response,pagesize=portrait(letter), rightMargin=5*mm,leftMargin=5*mm, topMargin=2.5*cm,bottomMargin=3*cm) data = [] h1=estilo['h1'] estilo.add( ParagraphStyle( name = 'Centrado' ) ) Centrado = estilo["Centrado"] Centrado.alignment = TA_CENTER Centrado.fontName = "Helvetica" Centrado.fontSize = 10 estilo.add( ParagraphStyle (name = 'Justificado') ) Justificado = estilo['Justificado'] Justificado.alignment = TA_JUSTIFY Justificado.fontName = "Helvetica" Justificado.fontSize = 7 # logo = Paragraph('', h1) # elements.append(logo) # P=Paragraph("GOBIERNO DEL ESTADO DE TABASCO",Centrado) # elements.append(P) # P=Paragraph("SERVICIO ESTATAL DE ADMINISTRACION DE BIENES ASEGURADOS",Centrado) # elements.append(P) # elements.append(Spacer(0,40)) # foto = Image('/static/images/logo_tabasco.png') data=[] solicitudes = solicitud.objects.all().filter(id = solicitud_id) s = solicitudes print s print solicitud_id data.append(['Folio:', s[0].id]) data.append(['Nombre:', Paragraph(s[0].nombre+ ' ' +s[0].apellido_paterno+ ' ' +s[0].apellido_materno, Justificado ),]) if s[0].sexo == 'F': data.append(['Sexo:', 'Femenino']) else: data.append(['Sexo:', 'Masculino']) data.append(['CURP:', s[0].curp]) data.append(['Localidad:', s[0].localidad]) data.append(['Dirección:', Paragraph(s[0].direccion, Justificado )]) data.append(['Codigo Postal:', s[0].codigo_postal]) data.append(['IFE/Licencia:', s[0].identificacion]) data.append(['Fecha de nacimiento:', s[0].fecha_nacimiento]) data.append(['Correo electrónico:', s[0].correo_electronico]) data.append(['Teléfono:', s[0].telefono]) data.append(['Celular:', s[0].celular]) data.append(['Solicitud:', Paragraph(s[0].solicitud, Justificado ),]) data.append(['Estatus:', s[0].estatus]) data.append(['Dependencia:', s[0].dependencia]) data.append(['Asigna:', s[0].asigna]) data.append(['Fecha registro:', s[0].fecha_registro]) data.append(['Observaciones:', Paragraph(s[0].nota, Justificado)]) t_datos = Table(data, [ 3.5 * cm, #nombre 7 * cm, #nombre ], repeatRows=1, style=[('GRID',(0,0),(-1,-1),0.5,colors.grey), ('FONTSIZE',(0,0),(-1,-1),7), ('ALIGN',(0,0),(-11,-1),'CENTER'), ('ALIGN',(1,1),(-10,-1),'LEFT'), ('ALIGN',(2,1),(-9,-1),'CENTER'), ('ALIGN',(3,1),(-6,-1),'LEFT'), ('ALIGN',(6,1),(-4,-1),'CENTER'), ('ALIGN',(6,1),(-4,-1),'CENTER'), ('ALIGN',(8,1),(-2,-1),'LEFT'), ('ALIGN',(10,1),(-1,-1),'CENTER'), # ('BACKGROUND',(10,1),(-1,-1),colors.red), # ('INNERGRID', (0,0), (-1,-1), 0.25, colors.red), ]) # t_datos.hAlign = 'LEFT' elements.append(t_datos) import os # imagen = os.path.join(os.path.dirname(os.path.abspath('settings.py')), 'static/imagenes/pleca-sup-dif.png') imagen = ('http://atencion.tabasco.gob.mx/static/imagenes/pleca-sup-dif.png') def myFirstPage(canvas, doc): canvas.saveState() canvas.drawImage(imagen, 0.5*cm, 26*cm, 150, 62) canvas.setFont('Helvetica',12) canvas.drawString(9*cm, 27 * cm, "GOBIERNO DEL ESTADO DE TABASCO") canvas.drawString(9.2*cm, 26.5 * cm, "Sistema Estatal de Atención Ciudadana") canvas.drawString(12*cm, 26 * cm, "Comprobante" ) canvas.setFont('Helvetica',6) fecha = datetime.datetime.now() from django.utils import formats fecha_impresion = formats.date_format(fecha, "SHORT_DATETIME_FORMAT") canvas.drawString(17 * cm, 1.5 * cm, 'Fecha de impresion:' + str( fecha_impresion ) ) canvas.setFont('Helvetica',9) canvas.drawString(2.5*cm, 2.5 * cm, "Para conocer el estado de su solicitud ingrese con su número de Folio y CURP a: http://atencion.tabasco.gob.mx/consulta/") canvas.drawString(3.5*cm, 2 * cm, "") # canvas.drawString(4.5*cm, 2 * cm, "Sr. José Antonio Rojas Calderón") # canvas.drawString(4*cm, 1.5 * cm, "Jefe de Depto. de Bienes Asegurados") # canvas.drawString(19.5*cm, 2.5 * cm, "_______________________________") # canvas.drawString(20.5*cm, 2 * cm, "Lic. Pedro Sanchez Sibaja") # canvas.drawString(20*cm, 1.5 * cm, "Dir. Gral. de Bienes Asegurados") # canvas.setFont('Helvetica',9) # canvas.drawString(27*cm, .25 * inch, "Página %d" % (doc.page)) canvas.restoreState() def myLaterPages(canvas, doc): canvas.saveState() canvas.drawImage(imagen, 0.5*cm, 26*cm, 150, 62) canvas.setFont('Helvetica',12) canvas.drawString(9*cm, 27 * cm, "GOBIERNO DEL ESTADO DE TABASCO") canvas.drawString(9.2*cm, 26.5 * cm, "Sistema Estatal de Atención Ciudadana") canvas.drawString(12*cm, 26 * cm, "Comprobante" ) # canvas.setFont('Helvetica',10) # canvas.drawString(3.5*cm, 2.5 * cm, "____________________________________") # canvas.drawString(4.5*cm, 2 * cm, "Sr. José Antonio Rojas Calderón") # canvas.drawString(4*cm, 1.5 * cm, "Jefe de Depto. de Bienes Asegurados") # canvas.drawString(19.5*cm, 2.5 * cm, "_______________________________") # canvas.drawString(20.5*cm, 2 * cm, "Lic. Pedro Sanchez Sibaja") # canvas.drawString(20*cm, 1.5 * cm, "Dir. Gral. de Bienes Asegurados") # canvas.setFont('Helvetica',9) # canvas.drawString(27*cm, .25 * inch, "Página %d %s" % (doc.page, pageinfo)) canvas.restoreState() doc.build(elements, onFirstPage = myFirstPage, onLaterPages = myLaterPages) return response