#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