# encoding:utf-8 # from django.http import * from django.contrib import messages # from reportlab.pdfgen import canvas # from bienes.models import * from bienes.forms import * # from django.forms import ModelForm # from django.template import RequestContext # from django.shortcuts import render_to_response # from reportlab.pdfgen.canvas import Canvas from reportlab.lib.pagesizes import letter, landscape, A4 from reportlab.lib.units import cm, mm, inch, pica from reportlab.lib.enums import TA_JUSTIFY, TA_RIGHT, TA_LEFT, TA_CENTER from reportlab.platypus import Table, TableStyle, SimpleDocTemplate, PageTemplate, Paragraph, Spacer, Image from reportlab.lib import colors from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from django.template.response import TemplateResponse from django.http import HttpResponseRedirect, HttpResponse from django.template import RequestContext, loader, Context from django.shortcuts import get_object_or_404, render, render_to_response, redirect from django.core.urlresolvers import reverse from django.contrib import auth from django.contrib.auth.decorators import login_required # from django.utils.dateformat import DateFormat from django.utils.dateparse import * # from django.utils.formats import get_format # from django.core import * from pure_pagination import Paginator, EmptyPage, PageNotAnInteger from django.db.models import Q # from django.core import serializers # from django.conf import settings # from django.db.models import Max from pyjasperclient import JasperClient from django.views.generic import ListView, DetailView, View, TemplateView from django.views.generic.edit import CreateView, UpdateView, FormView from .serializers import * from rest_framework.views import APIView, Response, status # import os from reportlab.rl_config import defaultPageSize # import locale PAGE_HEIGHT = defaultPageSize[1]; PAGE_WIDTH = defaultPageSize[0] Title = '' pageinfo = "" # formulario de busqueda @login_required(login_url='bienes:acceder') def crearfiltroviejo(request): if request.method == 'POST': form = FiltroForm(request.POST) if form.is_valid(): fd = request.POST['fecha_de'] datesd = fd.encode('utf8') dated = datetime.datetime.strptime(datesd, '%d/%m/%Y').strftime('%Y-%m-%d') fa = request.POST['fecha_a'] datesa = fa.encode('utf8') datea = datetime.datetime.strptime(datesa, '%d/%m/%Y').strftime('%Y-%m-%d') try: s = Bienes.objects.all().filter(fecha__range=(dated, datea)).order_by('-fecha')[ :int(request.POST['cantidad'])] response = HttpResponse(mimetype='application/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 data = [[ 'Fecha', 'Averiguación', 'Autoridad', 'Oficio', 'Entrega', 'Propietario', 'Estado', 'Tipo', 'Descripción', 'Situación', 'Devolución']] for p in s: data.append([ p.fecha, 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[0:200], Justificado), Paragraph(p.situacion_juridica, Justificado), p.fecha_devolucion ]) t_datos = Table(data, [1.5 * cm, 3.5 * cm, 1.8 * cm, 3 * cm, 4.5 * cm, 3.5 * cm, 1.35 * cm, 1.35 * cm, 3.5 * cm, 3 * cm, 2 * cm], 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'), ] ) elements.append(t_datos) import os imagen = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'pleca-seaba-01.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 Bienes Asegurados") # canvas.drawString(15.5*cm, 19 * cm, "Concentrado de bienes" ) 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', 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 except Exception, e: messages.error(request, 'las fechas ingresadas no son correctas') return HttpResponseRedirect(reverse('bienes:crearfiltro')) else: messages.error(request, 'corrija los siguientes errores') else: form = FiltroForm() diccionario = {'form': form, 'bien_menu': 'active' } return render_to_response('formfiltro.html', diccionario, context_instance=RequestContext(request)) # vista para imprimir todo def imprimirtodoviejo(request): s = Bienes.objects.all() response = HttpResponse(mimetype='application/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 data = [[ 'Fecha', 'Averiguación', 'Autoridad', 'Oficio', 'Entrega', 'Propietario', 'Estado', 'Tipo', 'Descripción', 'Situación', 'Devolución']] for p in s: data.append([ p.fecha, 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[0:200], Justificado), Paragraph(p.situacion_juridica, Justificado), p.fecha_devolucion ]) t_datos = Table(data, [1.5 * cm, 3.5 * cm, 1.8 * cm, 3 * cm, 4.5 * cm, 3.5 * cm, 1.35 * cm, 1.35 * cm, 3.5 * cm, 3 * cm, 2 * cm], 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'), ] ) elements.append(t_datos) import os imagen = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'pleca-seaba-01.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 Bienes Asegurados") # canvas.drawString(15.5*cm, 19 * cm, "Concentrado de bienes" ) 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', 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 # vista para redirigir hacia el index def acceder(request): return render_to_response('index.html', context_instance=RequestContext(request)) # vista para ver el perfil del usuario @login_required(login_url='bienes:acceder') def perfil(request, user_id): return TemplateResponse(request, 'perfil.html') # vista para acceder a la aplicacion def login(request): username = request.POST.get('username', '') password = request.POST.get('password', '') user = auth.authenticate(username=username, password=password) if user is not None and user.is_active: # Correct password, and the user is marked "active" auth.login(request, user) # Redirect to a success page. return HttpResponseRedirect(reverse('bienes:menuinicio')) else: messages.error(request, 'error de acceso verifique su usuario y contraseña') return render_to_response('index.html', context_instance=RequestContext(request)) # vista para salir de la aplicacion @login_required def logout(request): auth.logout(request) return HttpResponseRedirect(reverse('bienes:acceder')) # vista para llamar al menu de inicio @login_required(login_url='bienes:acceder') def menuinicio(request): # ultimo_bien = Bienes.objects.latest('id') form_filtro = FiltroForm() # form_bien = BienesForm(initial={"fecha":ultimo_bien.fecha,"numero_averiguacion":ultimo_bien.numero_averiguacion,"autoridad":ultimo_bien.autoridad,"numero_oficio":ultimo_bien.numero_oficio}) form_bien = BienesForm() diccionario = {'inicio_menu': 'active', 'form_filtro': form_filtro, 'form_bien': form_bien} return render_to_response('menuinicio.html', diccionario, context_instance=RequestContext(request)) # vista para llamar al menu de autoridad @login_required(login_url='bienes:acceder') def menuautoridad(request): diccionario = {'autoridad_menu': 'active', } return render_to_response('menuautoridad.html', diccionario, context_instance=RequestContext(request)) # vista para llamar al menu de persona @login_required(login_url='bienes:acceder') def menupersona(request): diccionario = {'persona_menu': 'active', } return render_to_response('menupersona.html', diccionario, context_instance=RequestContext(request)) # vista para llamar al menu de persona @login_required(login_url='bienes:acceder') def menuacta(request): diccionario = {'acta_menu': 'active', } return render_to_response('menuacta.html', diccionario, context_instance=RequestContext(request)) # vista para llamar al menu de calidad @login_required(login_url='bienes:acceder') def menucalidad(request): diccionario = {'calidad_menu': 'active', } return render_to_response('menucalidad.html', diccionario, context_instance=RequestContext(request)) # vista para llamar al menu de tipo @login_required(login_url='bienes:acceder') def menutipo(request): diccionario = {'tipo_menu': 'active', } return render_to_response('menutipo.html', diccionario, context_instance=RequestContext(request)) # vista para llamar al menu de bien @login_required(login_url='bienes:acceder') def menubien(request): diccionario = {'bien_menu': 'active', } return render_to_response('menubien.html', diccionario, context_instance=RequestContext(request)) # formulario de insercion del modelo autoridad @login_required(login_url='bienes:acceder') def crearautoridad(request): if request.method == 'POST': form = AutoridadForm(request.POST) if form.is_valid(): form.save() messages.success(request, 'Se guardo exitosamente la autoridad') return HttpResponseRedirect(reverse('bienes:mostrarautoridad')) else: messages.error(request, 'corrija los siguientes errores') else: form = AutoridadForm() diccionario = {'form': form, 'operacion': 'Crear', 'operacion_icon': 'icon-pencil', 'autoridad_menu': 'active' } return render_to_response('formautoridad.html', diccionario, context_instance=RequestContext(request)) # formulario de insercion del modelo persona @login_required(login_url='bienes:acceder') def crearpersona(request): if request.method == 'POST': form = PersonaForm(request.POST) if form.is_valid(): form.save() messages.success(request, 'Se guardo exitosamente la persona') return HttpResponseRedirect(reverse('bienes:crearpersona')) else: messages.error(request, 'corrija los siguientes errores') else: form = PersonaForm() diccionario = {'form': form, 'operacion': 'Crear', 'operacion_icon': 'icon-pencil', 'autoridad_menu': 'active' } return render_to_response('formpersona.html', diccionario, context_instance=RequestContext(request)) # formulario de insercion del modelo calidad @login_required(login_url='bienes:acceder') def crearcalidad(request): if request.method == 'POST': form = CalidadBienForm(request.POST) if form.is_valid(): form.save() messages.success(request, 'Se guardo exitosamente la calidad') return HttpResponseRedirect(reverse('bienes:mostrarcalidad')) else: messages.error(request, 'corrija los siguientes errores') else: form = CalidadBienForm() diccionario = {'form': form, 'operacion': 'Crear', 'operacion_icon': 'icon-pencil', 'calidad_menu': 'active' } return render_to_response('formcalidad.html', diccionario, context_instance=RequestContext(request)) # formulario de insercion del modelo tipo @login_required(login_url='bienes:acceder') def creartipo(request): if request.method == 'POST': form = TipoBienForm(request.POST) if form.is_valid(): form.save() messages.success(request, 'Se guardo exitosamente el tipo') return HttpResponseRedirect(reverse('bienes:mostrartipo')) else: messages.error(request, 'corrija los siguientes errores') else: form = TipoBienForm() diccionario = {'form': form, 'operacion': 'Crear', 'operacion_icon': 'icon-pencil', 'tipo_menu': 'active' } return render_to_response('formtipo.html', diccionario, context_instance=RequestContext(request)) # formulario de insercion del modelo bien @login_required(login_url='bienes:acceder') def crearbien(request): if request.method == 'POST': form = BienesForm(request.POST, request.FILES) if form.is_valid(): form.save() messages.success(request, 'Se guardo exitosamente el bien') return HttpResponseRedirect(reverse('bienes:crearbien')) else: messages.error(request, 'corrija los siguientes errores') else: # bien = Bienes.objects.latest('id') form = BienesForm() # form = BienesForm(initial={"fecha": bien.fecha,"numero_averiguacion":bien.numero_averiguacion,"autoridad":bien.autoridad,"numero_oficio":bien.numero_oficio}) diccionario = {'form': form, 'operacion': 'Crear', 'operacion_icon': 'icon-pencil', 'bien_menu': 'active' } return render_to_response('formbien.html', diccionario, context_instance=RequestContext(request)) # formulario de insercion del modelo recepcion @login_required(login_url='bienes:acceder') def crearrecepcion(request): if request.method == 'POST': form = RecepcionForm(request.POST) if form.is_valid(): form.save() messages.success(request, 'Se guardo exitosamente el acta de recepcion') return HttpResponseRedirect(reverse('bienes:crearrecepcion')) else: messages.error(request, 'corrija los siguientes errores') else: form = RecepcionForm() diccionario = {'form': form, 'operacion': 'Crear', 'operacion_icon': 'icon-pencil', 'acta_menu': 'active' } return render_to_response('formrecepcion.html', diccionario, context_instance=RequestContext(request)) @login_required(login_url='bienes:acceder') def creardevolucion(request): if request.method == 'POST': form = DevolucionForm(request.POST) if form.is_valid(): form.save() messages.success(request, 'Se guardo exitosamente el acta de devolucion') return HttpResponseRedirect(reverse('bienes:creardevolucion')) else: messages.error(request, 'corrija los siguientes errores') else: form = DevolucionForm() diccionario = {'form': form, 'operacion': 'Crear', 'operacion_icon': 'icon-pencil', 'acta_menu': 'active' } return render_to_response('formdevolucion.html', diccionario, context_instance=RequestContext(request)) # muestra todos los registros del modelo autoridad @login_required(login_url='bienes:acceder') def mostrarautoridad(request): datos = Autoridad.objects.all() informacion = {'datos': datos, 'autoridad_menu': 'active' } return render_to_response('mostrarautoridad.html', informacion, context_instance=RequestContext(request)) # muestra todos los registros del modelo persona @login_required(login_url='bienes:acceder') def mostrarpersona(request): datos = Persona.objects.all() informacion = {'datos': datos, 'persona_menu': 'active' } return render_to_response('mostrarpersona.html', informacion, context_instance=RequestContext(request)) # muestra todos los registros del modelo recepcion # @login_required(login_url='bienes:acceder') # def mostrarrecepcion(request): # datos = Recepcion.objects.all() # informacion = {'datos': datos, # 'acta_menu': 'active' # } # return render_to_response('mostrarrecepcion.html', informacion, context_instance=RequestContext(request)) # muestra todos los registros del modelo devolucion # @login_required(login_url='bienes:acceder') # def mostrardevolucion(request): # datos = Devolucion.objects.all() # informacion = {'datos': datos, # 'acta_menu': 'active' # } # return render_to_response('mostrardevolucion.html', informacion, context_instance=RequestContext(request)) # muestra todos los registros del modelo calidad @login_required(login_url='bienes:acceder') def mostrarcalidad(request): datos = CalidadBien.objects.all() informacion = {'datos': datos, 'calidad_menu': 'active' } return render_to_response('mostrarcalidad.html', informacion, context_instance=RequestContext(request)) # muestra todos los registros del modelo tipo @login_required(login_url='bienes:acceder') def mostrartipo(request): datos = TipoBien.objects.all() informacion = {'datos': datos, 'tipo_menu': 'active' } return render_to_response('mostrartipo.html', informacion, context_instance=RequestContext(request)) # muestra todos los registros del modelo bien # @login_required(login_url='bienes:acceder') # def mostrarbien(request): # datos = Bienes.objects.all() # informacion={'datos':datos, # 'bien_menu':'active' # } # return render_to_response('mostrarbien.html',informacion,context_instance=RequestContext(request)) # pure pagination # @login_required(login_url='bienes:acceder') # def mostrarbien(request): # datos = Bienes.objects.all() # bscr = request.GET.get('bscr') if request.GET.get('bscr') else '' # if bscr != '': # datos = datos.filter( # Q(numero_averiguacion__icontains=bscr) | # Q(autoridad__autoridad__icontains=bscr) | # Q(numero_oficio__icontains=bscr) | # Q(persona_entrega__nombre__icontains=bscr) | # Q(persona_entrega__apellidomaterno__icontains=bscr) | # Q(persona_entrega__apellidopaterno__icontains=bscr) | # Q(persona_entrega__cargo__icontains=bscr) | # Q(persona_entrega__dependencia__autoridad__icontains=bscr) | # Q(calidad_bien__calidad_bien__icontains=bscr) | # Q(tipo_bien__tipo_bien__icontains=bscr) | # Q(descripcion__icontains=bscr) | # Q(situacion_juridica__icontains=bscr) | # Q(observaciones__icontains=bscr) # ) # rpp = int(request.GET.get('rpp')) if request.GET.get('rpp') else 10 # paginator = Paginator(datos, rpp) # page = request.GET.get('page') if request.GET.get('page') else 1 # try: # datos = paginator.page(page) # except PageNotAnInteger: # # If page is not an integer, deliver first page. # datos = paginator.page(1) # except EmptyPage: # # If page is out of range (e.g. 9999), deliver last page of results. # datos = paginator.page(paginator.num_pages) # return render_to_response('mostrarbien.html', # {'datos': datos, 'bien_menu': 'active', 'rpp': rpp, 'bscr': bscr, 'page': page, }, # context_instance=RequestContext(request)) # formulario de edicion del modelo autoridad especifico por el id @login_required(login_url='bienes:acceder') def editarautoridad(request, autoridad_id): autoridad = Autoridad.objects.get(pk=autoridad_id) if request.method == 'POST': form = AutoridadForm(request.POST, instance=autoridad) if form.is_valid(): form.save() messages.success(request, 'Se actualizo exitosamente la autoridad') return HttpResponseRedirect(reverse('bienes:mostrarautoridad')) else: form = AutoridadForm(instance=autoridad) diccionario = {'form': form, 'operacion': 'Editar', 'operacion_icon': 'icon-edit', 'autoridad_menu': 'active' } return render_to_response('formautoridad.html', diccionario, context_instance=RequestContext(request)) # formulario de edicion del modelo persona especifico por el id @login_required(login_url='bienes:acceder') def editarpersona(request, persona_id): persona = Persona.objects.get(pk=persona_id) if request.method == 'POST': form = PersonaForm(request.POST, instance=persona) if form.is_valid(): form.save() messages.success(request, 'Se actualizo exitosamente la persona') return HttpResponseRedirect(reverse('bienes:mostrarpersona')) else: form = PersonaForm(instance=persona) diccionario = {'form': form, 'operacion': 'Editar', 'operacion_icon': 'icon-edit', 'autoridad_menu': 'active' } return render_to_response('formpersona.html', diccionario, context_instance=RequestContext(request)) # formulario de edicion del modelo calidad especifico por el id @login_required(login_url='bienes:acceder') def editarcalidad(request, calidad_id): calidad = CalidadBien.objects.get(pk=calidad_id) if request.method == 'POST': form = CalidadBienForm(request.POST, instance=calidad) if form.is_valid(): form.save() messages.success(request, 'Se actualizo exitosamente la calidad') return HttpResponseRedirect(reverse('bienes:mostrarcalidad')) else: form = CalidadBienForm(instance=calidad) diccionario = {'form': form, 'operacion': 'Editar', 'operacion_icon': 'icon-edit', 'calidad_menu': 'active' } return render_to_response('formcalidad.html', diccionario, context_instance=RequestContext(request)) # formulario de edicion del modelo tipo especifico por el id @login_required(login_url='bienes:acceder') def editartipo(request, tipo_id): tipo = TipoBien.objects.get(pk=tipo_id) if request.method == 'POST': form = TipoBienForm(request.POST, instance=tipo) if form.is_valid(): form.save() messages.success(request, 'Se actualizo exitosamente el tipo') return HttpResponseRedirect(reverse('bienes:mostrartipo')) else: form = TipoBienForm(instance=tipo) diccionario = {'form': form, 'operacion': 'Editar', 'operacion_icon': 'icon-edit', 'tipo_menu': 'active' } return render_to_response('formtipo.html', diccionario, context_instance=RequestContext(request)) # formulario de edicion del modelo bien especifico por el id @login_required(login_url='bienes:acceder') def editarbien(request, bien_id): bien = Bienes.objects.get(pk=bien_id) if request.method == 'POST': form = BienesForm(request.POST, request.FILES, instance=bien) if form.is_valid(): form.save() messages.success(request, 'Se actualizo exitosamente el bien') return HttpResponseRedirect(reverse('bienes:mostrarbien')) else: messages.error(request, 'corrija los siguientes errores') else: form = BienesForm(instance=bien) return render_to_response('formbien.html', {'form': form, 'operacion': 'Editar', 'operacion_icon': 'icon-edit', 'bien_menu': 'active'}, context_instance=RequestContext(request)) # formulario de edicion del modelo recepcion especifico por el id @login_required(login_url='bienes:acceder') def editarrecepcion(request, recepcion_id): recepcion = Recepcion.objects.get(pk=recepcion_id) if request.method == 'POST': form = RecepcionForm(request.POST, instance=recepcion) if form.is_valid(): form.save() messages.success(request, 'Se actualizo exitosamente el bien') return HttpResponseRedirect(reverse('bienes:mostrarrecepcion')) else: form = RecepcionForm(instance=recepcion) diccionario = {'form': form, 'operacion': 'Editar', 'operacion_icon': 'icon-edit', 'acta_menu': 'active' } return render_to_response('formrecepcion.html', diccionario, context_instance=RequestContext(request)) # formulario de edicion del modelo devolucion especifico por el id @login_required(login_url='bienes:acceder') def editardevolucion(request, devolucion_id): devolucion = Devolucion.objects.get(pk=devolucion_id) if request.method == 'POST': form = DevolucionForm(request.POST, instance=devolucion) if form.is_valid(): form.save() messages.success(request, 'Se actualizo exitosamente el bien') return HttpResponseRedirect(reverse('bienes:mostrardevolucion')) else: form = DevolucionForm(instance=devolucion) diccionario = {'form': form, 'operacion': 'Editar', 'operacion_icon': 'icon-edit', 'acta_menu': 'active' } return render_to_response('formdevolucion.html', diccionario, context_instance=RequestContext(request)) # elimina un registro especifico por el id del modelo autoridad @login_required(login_url='bienes:acceder') def borrarautoridad(request, autoridad_id): autoridad = Autoridad.objects.get(pk=autoridad_id) autoridad.delete() messages.warning(request, 'Se elimino la autoridad') return HttpResponseRedirect(reverse('bienes:mostrarautoridad')) # elimina un registro especifico por el id del modelo persona @login_required(login_url='bienes:acceder') def borrarpersona(request, persona_id): persona = Persona.objects.get(pk=persona_id) persona.delete() messages.warning(request, 'Se elimino la persona') return HttpResponseRedirect(reverse('bienes:mostrarpersona')) # elimina un registro especifico por el id del modelo recepcion @login_required(login_url='bienes:acceder') def borrarrecepcion(request, recepcion_id): recepcion = Recepcion.objects.get(pk=recepcion_id) recepcion.delete() messages.warning(request, 'Se elimino el acta de recepcion') return HttpResponseRedirect(reverse('bienes:mostrarrecepcion')) # elimina un registro especifico por el id del modelo devolucion @login_required(login_url='bienes:acceder') def borrardevolucion(request, devolucion_id): devolucion = Devolucion.objects.get(pk=devolucion_id) devolucion.delete() messages.warning(request, 'Se elimino el acta de devolucion') return HttpResponseRedirect(reverse('bienes:mostrardevolucion')) # elimina un registro especifico por el id del modelo calidad @login_required(login_url='bienes:acceder') def borrarcalidad(request, calidad_id): calidad = CalidadBien.objects.get(pk=calidad_id) calidad.delete() messages.warning(request, 'Se elimino la calidad') return HttpResponseRedirect(reverse('bienes:mostrarcalidad')) # elimina un registro especifico por el id del modelo tipo @login_required(login_url='bienes:acceder') def borrartipo(request, tipo_id): tipo = TipoBien.objects.get(pk=tipo_id) tipo.delete() messages.warning(request, 'Se elimino el tipo') return HttpResponseRedirect(reverse('bienes:mostrartipo')) # elimina un registro especifico por el id del modelo tipo @login_required(login_url='bienes:acceder') def borrarbien(request, bien_id): bien = Bienes.objects.get(pk=bien_id) bien.delete() messages.warning(request, 'Se elimino el bien') return HttpResponseRedirect(reverse('bienes:mostrarbien')) @login_required(login_url='bienes:acceder') def consulta(request): 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 = [[ 'Fecha', 'Averiguacion', 'Autoridad', 'Oficio', 'Entrega', 'Propietario', 'Estado', 'Tipo', 'Descripcion', 'Situacion', 'Devolucion']] s = Bienes.objects.all() 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: data.append([ p.fecha, 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[0:200], Justificado), Paragraph(p.situacion_juridica, Justificado), p.fecha_devolucion ]) # elements.append(foto) # elements.append(ted) t_datos = Table(data, [1.5 * cm, 3.5 * cm, 1.8 * cm, 3 * cm, 4.5 * cm, 3.5 * cm, 1.35 * cm, 1.35 * cm, 3.5 * cm, 3 * cm, 2 * cm], 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(__file__)), 'seaba.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 Bienes Asegurados") # canvas.drawString(15.5*cm, 19 * cm, "Concentrado de bienes" ) 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', 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 """ Vistas para los reportes de los pdf en jasper""" class JasperMix(object): url = settings.JASPERSERVER 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() class imprimirtodo(View, JasperMix): def get(self, request, *args, **kwargs): try: # self.generateReport('/bienesasegurados/global',settings.MEDIA_ROOT+'reporte.PDF',{},'PDF') self.generateReport('/bienes_asegurados/global6', settings.MEDIA_ROOT + 'reporte.PDF', {}, 'PDF') return HttpResponseRedirect('/media/reporte.PDF') except Exception, e: messages.error(self.request, 'ocurrio un error durante la carga del PDF' + str(e)) return HttpResponseRedirect(reverse('bienes:menuinicio')) class imprimirinventario(View, JasperMix): def get(self, request, *args, **kwargs): try: # self.generateReport('/bienesasegurados/global',settings.MEDIA_ROOT+'reporte.PDF',{},'PDF') self.generateReport('/bienes_asegurados/contabilidad', settings.MEDIA_ROOT + 'inventario.PDF', {}, 'PDF') return HttpResponseRedirect('/media/inventario.PDF') except Exception, e: messages.error(self.request, 'ocurrio un error durante la carga del PDF' + str(e)) return HttpResponseRedirect(reverse('bienes:menuinicio')) class imprimirrecepcion(View, JasperMix): def get(self, request, *args, **kwargs): rid = kwargs.get('recepcion_id') print rid try: # self.generateReport('/bienesasegurados/recepcion4',settings.MEDIA_ROOT+'actarecepcion.PDF',{'rid':rid},'PDF') self.generateReport('/bienes_asegurados/recepcion', settings.MEDIA_ROOT + 'actarecepcion' + str(rid) + '.PDF', {'rid': rid}, 'PDF') return HttpResponseRedirect('/media/actarecepcion' + str(rid) + '.PDF') except Exception, e: messages.error(self.request, 'ocurrio un error durante la carga del reporte' + str(e)) return HttpResponseRedirect(reverse('bienes:mostrarrecepcion')) class imprimirdevolucion(View, JasperMix): def get(self, request, *args, **kwargs): did = kwargs.get('devolucion_id') try: self.generateReport('/bienes_asegurados/devolucion', settings.MEDIA_ROOT + 'actadevolucion.PDF', {'did': did}, 'PDF') # self.generateReport('/bienes_asegurados/global6',settings.MEDIA_ROOT+'reporte.PDF',{},'PDF') return HttpResponseRedirect('/media/actadevolucion.PDF') except Exception, e: messages.error(self.request, 'ocurrio un error durante la carga del reporte' + str(e)) return HttpResponseRedirect(reverse('bienes:mostrardevolucion')) class imprimirrecepcion2(View, JasperMix): def get(self, request, *args, **kwargs): rid = kwargs.get('recepcion_id') # url = 'http://10.2.8.36/jasperserver/flow.html?_flowId=viewReportFlow&standAlone=true&ParentFolderUri=%2Fbienesasegurados&reportUnit=%2Fbienesasegurados%2Frecepcion5&j_username=jasperadmin&j_password=jasperadmin&rid='+str(rid)+'&output=pdf' # url = 'http://10.2.8.36/jasperserver/flow.html?_flowId=viewReportFlow&standAlone=true&ParentFolderUri=%2Fbienes_asegurados&reportUnit=%2Fbienes_asegurados%2Frecepcion&j_username=jasperadmin&j_password=jasperadmin&rid='+str(rid)+'&output=pdf' # return HttpResponseRedirect(url) try: self.generateReport('/bienes_asegurados/recepcion', settings.MEDIA_ROOT + 'actarecepcion' + str(rid) + '.PDF', {'rid': rid}, 'PDF') # self.generateReport('/bienes_asegurados/global6',settings.MEDIA_ROOT+'reporte.PDF',{},'PDF') return HttpResponseRedirect('/media/actarecepcion' + str(rid) + '.PDF') except Exception, e: messages.error(self.request, 'ocurrio un error durante la carga del reporte' + str(e)) return HttpResponseRedirect(reverse('bienes:mostrardevolucion')) class crearfiltro(FormView, JasperMix): template_name = 'bienes/formfiltro.html' form_class = FiltroForm def get(self, request, *args, **kwargs): return super(crearfiltro, self).get(request, *args, **kwargs) def form_valid(self, form): fd = self.request.POST['fecha_de'] datesd = fd.encode('utf8') dated = datetime.datetime.strptime(datesd, '%d/%m/%Y').strftime('%d-%m-%Y') desde = dated # datetime.datetime.strptime(dated, '%d-%m-%Y') # desde = desde.isoformat() # print desde fa = self.request.POST['fecha_a'] datesa = fa.encode('utf8') datea = datetime.datetime.strptime(datesa, '%d/%m/%Y').strftime('%d-%m-%Y') hasta = datea # datetime.datetime.strptime(datea, '%d-%m-%Y') # hasta = hasta.isoformat() # print hasta limite = form.cleaned_data["cantidad"] # self.generateReport('/bienesasegurados/fecha2',settings.MEDIA_ROOT+'reporte2.PDF',{'desde':desde,'hasta':hasta,'limite':str(limite)},'PDF') # url = 'http://10.2.8.36/jasperserver/flow.html?_flowId=viewReportFlow&standAlone=true&ParentFolderUri=%2Fbienesasegurados&reportUnit=%2Fbienesasegurados%2Ffecha4&j_username=jasperadmin&j_password=jasperadmin&desde='+desde+'&hasta='+hasta+'&limite='+str(limite)+'&output=pdf' url = 'http://10.2.8.36/jasperserver/flow.html?_flowId=viewReportFlow&standAlone=true&ParentFolderUri=%2Fbienes_asegurados&reportUnit=%2Fbienes_asegurados%2Ffecha5&j_username=jasperadmin&j_password=jasperadmin&desde=' + desde + '&hasta=' + hasta + '&limite=' + str( limite) + '&output=pdf' return HttpResponseRedirect(url) # except Exception, e: # messages.error(self.request, 'ocurrio un error durante la carga del PDF '+str(e)) # return HttpResponseRedirect(reverse('bienes:menuinicio')) def form_invalid(self, form): messages.error(self.request, 'corrija los siguientes errores') return super(crearfiltro, self).form_invalid(form) def get_context_data(self, **kwargs): context = super(crearfiltro, self).get_context_data(**kwargs) context['bien_menu'] = 'active' return context def detallebien(request, bien_id): detalle = Bienes.objects.get(pk=bien_id) diccionario = {'detalle': detalle, } return render_to_response('detallebien.html', diccionario, context_instance=RequestContext(request)) from django.views.decorators.csrf import csrf_exempt @csrf_exempt def consultartipo(request): if request.is_ajax(): if request.method == 'GET': respuest = "este se envio via get" elif request.method == 'POST': tipo = request.POST['tipo'] print(tipo) regreso = serializers.serialize("json", Enlace.objects.all().filter(tipo_bien=tipo), fields=('id', 'texto')) return HttpResponse(regreso, mimetype="application/javascript") # vista para la ejecucion del serializers class DataTableView(APIView): model = None serializer = None queryset = None def get_queryset(self): if self.queryset: return self.queryset elif self.model: self.queryset = self.model.objects.all() return self.queryset else: raise ImproperlyConfigured('Debe especificar un queryset o un modelo') def get_serializer(self): if not self.serializer: raise ImproperlyConfigured('Debe especificar un serializer para la vista') else: return self.serializer def get_filter(self, filter_string, queryset): raise ImproperlyConfigured('Debe implementar la función get_filter') def get(self, request, *args, **kwargs): queryset = self.get_queryset() iTotalRecords = queryset.count() sSearch = request.GET.get('sSearch') if sSearch: queryset = self.get_filter(sSearch, queryset) iTotalDisplayRecords = queryset.count() sEcho = request.GET.get('sEcho') iDisplayStart = request.GET.get('iDisplayStart') if iDisplayStart: queryset = queryset[iDisplayStart:] iDisplayLength = request.GET.get('iDisplayLength') if iDisplayLength: queryset = queryset[:iDisplayLength] self.serializer = self.get_serializer() serializer = self.serializer(queryset, many=True) data = { "sEcho": sEcho, "iTotalRecords": iTotalRecords, "iTotalDisplayRecords": iTotalDisplayRecords, "aaData": serializer.data } return Response(data, status=status.HTTP_200_OK) class ListaRecepcionesView(TemplateView, View): template_name = 'mostrarrecepcion.html' def get(self, request, *args, **kwargs): if not request.user.is_authenticated(): return HttpResponseRedirect('/') return render(request, self.template_name, {'pro': 'active'}) def get_context_data(self, **kwargs): context = super(ListaRecepcionesView, self).get_context_data(**kwargs) context["pro"] = "active" return context class RecepcionesDataTablesAPIView(DataTableView): model = Recepcion serializer = MostrarRecepcion def get_queryset(self): queryset = Recepcion.objects.all() return queryset def get_filter(self, filter_string, queryset): if filter_string: queryset = queryset.filter( Q(numero_acta__icontains=filter_string)| Q(fecha__icontains = filter_string)| Q(hora__icontains = filter_string)| Q(bien__numero_averiguacion__icontains = filter_string) ) return queryset class ListaDevolucionesView(TemplateView, View): template_name = 'mostrardevolucion.html' def get(self, request, *args, **kwargs): if not request.user.is_authenticated(): return HttpResponseRedirect('/') return render(request, self.template_name, {'pro': 'active'}) def get_context_data(self, **kwargs): context = super(ListaDevolucionesView, self).get_context_data(**kwargs) context["pro"] = "active" return context class DevolucionescionesDataTablesAPIView(DataTableView): model = Devolucion serializer = MostrarDevolucion def get_queryset(self): queryset = Devolucion.objects.all() return queryset def get_filter(self, filter_string, queryset): if filter_string: queryset = queryset.filter( Q(numero_acta__icontains=filter_string)| Q(fechahora__icontains = filter_string)| Q(recepcion__bien__numero_averiguacion__icontains = filter_string) ) return queryset class ListaBienesView(TemplateView, View): template_name = 'mostrarbien.html' def get(self, request, *args, **kwargs): if not request.user.is_authenticated(): return HttpResponseRedirect('/') return render(request, self.template_name, {'pro': 'active'}) def get_context_data(self, **kwargs): context = super(ListaBienesView, self).get_context_data(**kwargs) context["pro"] = "active" return context class BienesDataTablesAPIView(DataTableView): model = Bienes serializer = MostrarBienes def get_queryset(self): queryset = Bienes.objects.all() return queryset def get_filter(self, filter_string, queryset): if filter_string: queryset = queryset.filter( Q(fecha__icontains=filter_string)| Q(numero_averiguacion__icontains=filter_string)| Q(autoridad__autoridad__icontains = filter_string)| Q(numero_oficio__icontains = filter_string)| Q(persona_entrega__nombre__icontains = filter_string)| Q(persona_entrega__apellidopaterno__icontains = filter_string)| Q(persona_entrega__apellidomaterno__icontains = filter_string)| Q(calidad_bien__calidad_bien__icontains = filter_string)| Q(tipo_bien__tipo_bien__icontains = filter_string)| Q(descripcion__icontains = filter_string)| Q(situacion_juridica__icontains = filter_string)| Q(observaciones__icontains = filter_string)| Q(fecha_devolucion__icontains = filter_string) ) return queryset