# encoding:utf-8 # from django.http import * from django.contrib import messages from django.core.exceptions import ImproperlyConfigured from .forms import * 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.dateparse import * from django.db.models import Q 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 from django.core import serializers from django.forms import model_to_dict import json from django_datatables_view.base_datatable_view import BaseDatatableView # 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() form_oficio = OficioForm() diccionario = {'inicio_menu': 'active', 'form_filtro': form_filtro, 'form_oficio': form_oficio, '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)) # vista para llamar al menu de Director @login_required(login_url='bienes:acceder') def menudirector(request): diccionario = {'director_menu': 'active', } return render_to_response('directormenu.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 creacion de Director @login_required(login_url='bienes:acceder') def creardirector(request): if request.method == 'POST': form = DirectorForm(request.POST) if form.is_valid(): estatus = Director.objects.filter(estatus=True) if estatus.count()==0: form.save() messages.success(request,'Se guardo exitosamente el director') return HttpResponseRedirect(reverse('bienes:creardirector')) else: messages.warning(request, 'Ya Existe un Director Activo, Edite su fecha de baja para crear un nuevo Director') return HttpResponseRedirect(reverse('bienes:creardirector')) else: messages.error(request,'corrija los siguientes errores') else: form = DirectorForm() diccionario = {'form':form, 'operacion': 'Crear', 'operacion_icon': 'icon-pencil', 'director_menu': 'active' } return render_to_response('formdirector.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)) # vista de insertcion de oficios. @login_required(login_url='bienes:acceder') def crearbien(request): if request.method == 'POST': form_oficio = OficioForm(request.POST, request.FILES) if form_oficio.is_valid(): form_oficio.save() v = form_oficio.save() historico = HistoricoBienes() historico.usuario_id = request.user.id historico.id_movimiento = v.pk serialized = serializers.serialize("json", [v, ]) historico.descripcion_movimiento = serialized historico.descripcion = 1 historico.save() messages.success(request, 'Se Guardo exitosamente el Oficio') return HttpResponseRedirect('/bienes/crear_bien_bien/%s' % (v.id)) else: messages.error(request, 'corrija los siguientes errores') else: form_oficio = OficioForm() diccionario = {'form': form_oficio, 'operacion': 'Crear', 'operacion_icon': 'icon-pencil', 'bien_menu': 'active' } return render_to_response('formbien.html', diccionario, context_instance=RequestContext(request)) # vista de insertcion de bienes @login_required(login_url='bienes:acceder') def crear_bien_bien(request, id_oficio): if request.method == 'POST': formulario_bien = BienesForm(request.POST, request.FILES) if formulario_bien.is_valid(): intan = formulario_bien.save(commit=False) intan.oficio_id = id_oficio intan.save() historico = HistoricoBienes() historico.usuario_id = request.user.id historico.id_movimiento = intan.pk serialized = serializers.serialize("json", [intan, ]) historico.descripcion_movimiento = serialized historico.descripcion = 2 historico.save() messages.success(request, "Se Guardo el bien") return HttpResponseRedirect('/bienes/crear_bien_bien/%s' % (id_oficio)) else: formulario_bien = BienesForm() oficio = Oficios.objects.get(pk=id_oficio) return render_to_response('bienes.html', {"form": formulario_bien, "oficio": oficio, 'bienes': Bienes.objects.filter(oficio=id_oficio)}, 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(): f = form.save(commit=False) f.save() historico = HistoricoBienes() historico.usuario_id = request.user.id historico.id_movimiento = f.pk serialized = serializers.serialize("json", [f, ]) historico.descripcion_movimiento = serialized historico.descripcion = 5 historico.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: r = Recepcion.objects.all() aux = [] for x in r: aux.append(x.oficio.id) RecepcionForm.base_fields["oficio"] = forms.ModelChoiceField(empty_label='Seleccione una ', required=True, queryset=Oficios.objects.all().exclude(id__in=aux), widget=forms.Select(attrs={'class': 'required span9 select2-select'}), label='Oficio') 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(): try: director = Director.objects.get(estatus=True) except: messages.warning(request, 'No se Encuentra Ningun Director Activo por el Momento') return HttpResponseRedirect(reverse('bienes:creardirector')) devo = form.save() devo.director = director devo.save() historico = HistoricoBienes() historico.usuario_id = request.user.id historico.id_movimiento = devo.pk serialized = serializers.serialize("json", [devo, ]) historico.descripcion_movimiento = serialized historico.descripcion = 8 historico.save() bien = request.POST.get('bien') fecha_dev = request.POST.get('fecha_devolucion') bien_devuelto = Bienes.objects.get(id=bien) bien_devuelto.devuelto = True bien_devuelto.fecha_devolucion = fecha_dev bien_devuelto.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: re_no = [] # todos los bienes que no estan devueltos b = Bienes.objects.filter(devuelto=False).values_list('oficio', flat=True) for x in b: re_no.append(x) DevolucionForm.base_fields['recepcion'] = forms.ModelChoiceField(empty_label='Selecciona una', required=True, queryset=Recepcion.objects.filter(oficio__in=re_no), widget=forms.Select(attrs={'class': 'required span9 select2-select'}), label='Recepción') form = DevolucionForm() b = Bienes.objects.filter(devuelto=False) diccionario = {'form': form, 'operacion': 'Crear', 'operacion_icon': 'icon-pencil', 'acta_menu': 'active', 'bienes': b } 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 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)) # 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 de Director por el id @login_required(login_url='bienes:acceder') def editardirector(request,director_id): director = Director.objects.get(pk=director_id) if request.method == 'POST': if director.estatus: form = EditarDirectorFormActivo(request.POST, instance=director) else: form = EditarDirectorForm(request.POST, instance=director) if form.is_valid(): form.save() messages.success(request, 'Se actualizo exitosamente el Director') return HttpResponseRedirect(reverse('bienes:mostrardirector')) else: if director.estatus: form = EditarDirectorFormActivo(instance=director) else: form = EditarDirectorForm(instance=director) diccionario = {'form': form, 'operacion': 'Editar', 'operacion_icon': 'icon-edit', 'autoridad_menu': 'active', 'director':director } return render_to_response('editardirector.html', diccionario, context_instance=RequestContext(request)) # Formulario de Baja de Director Activo @login_required(login_url='bienes:acceder') def bajadirector(request,director_id): director = Director.objects.get(pk=director_id) if request.method == 'POST': form = BajaDirectorForm(request.POST, instance=director) if form.is_valid(): director.estatus = False director.save() form.save() messages.success(request, 'Se actualizo exitosamente el Director') return HttpResponseRedirect(reverse('bienes:mostrardirector')) else: form = BajaDirectorForm(instance=director) diccionario = {'form': form, 'operacion': 'Editar', 'operacion_icon': 'icon-edit', 'autoridad_menu': 'active', 'baja': True, 'director': director } return render_to_response('editardirector.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 # from django.core import serializers @login_required(login_url='bienes:acceder') def editarbien(request, bien_id): bien = Bienes.objects.get(pk=bien_id) if request.method == 'POST': historico = HistoricoBienes() historico.usuario_id = request.user.id historico.id_movimiento = bien.pk serialized = serializers.serialize("json", [bien, ]) historico.descripcion_movimiento = serialized historico.descripcion = 3 historico.save() 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('editarbien.html', {"form": form}, 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): diccionario = {} recepcion = Recepcion.objects.get(pk=recepcion_id) if request.method == 'POST': historico = HistoricoBienes() historico.usuario_id = request.user.id historico.id_movimiento = recepcion.pk serialized = serializers.serialize("json", [recepcion, ]) historico.descripcion_movimiento = serialized historico.descripcion = 6 historico.save() form = EditarRecepcionForm(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 = EditarRecepcionForm(instance=recepcion) diccionario = {'form': form, 'operacion': 'Editar', 'operacion_icon': 'icon-edit', 'acta_menu': 'active' } return render_to_response('editar_recepcion.html', diccionario, context_instance=RequestContext(request)) @login_required(login_url='bienes:acceder') def validarfirmas(request, recepcion_id): recepcion = Recepcion.objects.get(pk= recepcion_id) if request.method == 'POST': form = validarfirmaForm(request.POST, instance=recepcion) form.save() messages.success(request, 'Se ha validado correctamente la Persona') form = validarfirmaForm(instance=recepcion) dict = {'form':form} return render_to_response('validarfirma.html',dict,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': historico = HistoricoBienes() historico.usuario_id = request.user.id historico.id_movimiento = devolucion.pk serialized = serializers.serialize("json", [devolucion, ]) historico.descripcion_movimiento = serialized historico.descripcion = 9 historico.save() form = EditarDevolucionForm(request.POST, instance=devolucion) if form.is_valid(): form.save() messages.success(request, 'Se actualizo exitosamente el bien') return HttpResponseRedirect(reverse('bienes:mostrardevolucion')) else: try: bien = Bienes.objects.get(devolucion__pk=devolucion_id).pk except Bienes.DoesNotExist: messages.error(request, "No tiene bien esta Devolucion") form = EditarDevolucionForm(instance=devolucion) # form.fields["bien"].queryset = Bienes.objects.filter(oficio_id = devolucion_id) diccionario = {'form': form, 'operacion': 'Editar', 'operacion_icon': 'icon-edit', 'acta_menu': 'active' } return render_to_response('editardevolucion.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.estatus = False persona.save() 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) historico = HistoricoBienes() historico.usuario_id = request.user.id historico.id_movimiento = recepcion.pk serialized = serializers.serialize("json", [recepcion, ]) historico.descripcion_movimiento = serialized historico.descripcion = 7 historico.save() recepcion.estatus = False recepcion.save() 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) historico = HistoricoBienes() historico.usuario_id = request.user.id historico.id_movimiento = devolucion.pk serialized = serializers.serialize("json", [devolucion, ]) historico.descripcion_movimiento = serialized historico.descripcion = 10 historico.save() devolucion.estatus = False devolucion.save() 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.estatus = False bien.save() historico = HistoricoBienes() historico.usuario_id = request.user.id historico.id_movimiento = bien.pk serialized = serializers.serialize("json", [bien, ]) historico.descripcion_movimiento = serialized historico.descripcion = 4 historico.save() bien.delete() messages.warning(request, 'Se elimino el bien') return HttpResponseRedirect(reverse('bienes:mostrarbien')) """ 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 imprimirtodo(View): def get(self, request, **kwargs): report_name = 'bienes_asegurados' try: # rid = kwargs.get('recepcion_id') # parametros = { # 'rid': rid, # } url = '{url}/jasperserver/flow.html?_flowId=viewReportFlow&standAlone=true&_flowId=viewReportFlow' \ '&ParentFolderUri=%2Fbienes_asegurados&reportUnit=%2Fbienes_asegurados%2Fglobal6&output=pdf'.format( url=settings.JASPER_URL, report_name=report_name) r = requests.get(url, auth=(settings.JASPER_USER, settings.JASPER_PASSWORD)) response = HttpResponse(content_type='application/pdf') response['Content-Disposition'] = 'filename=todo.pdf' buffer = BytesIO(r.content) pdf = buffer.getvalue() buffer.close() response.write(pdf) return response except Exception as error: return Response(status=status.HTTP_404_NOT_FOUND, data={"Error": "{0}".format(error)}) 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')) from io import BytesIO import requests class imprimirrecepcion(View): def get(self, request, **kwargs): report_name = 'bienes_asegurados' try: rid = kwargs.get('recepcion_id') parametros = { 'rid': rid, } url = '{url}/jasperserver/flow.html?_flowId=viewReportFlow&standAlone=true&_flowId=viewReportF' \ 'low&ParentFolderUri=%2Fbienes_asegurados&reportUnit=%2Fbienes_asegurados%2Frecepcion&output=pdf'.format( url=settings.JASPER_URL, report_name=report_name) r = requests.get(url, params=parametros, auth=(settings.JASPER_USER, settings.JASPER_PASSWORD)) response = HttpResponse(content_type='application/pdf') response['Content-Disposition'] = 'filename=actarecepcion{0}.pdf'.format(rid) buffer = BytesIO(r.content) pdf = buffer.getvalue() buffer.close() response.write(pdf) return response except Exception as error: return Response(status=status.HTTP_404_NOT_FOUND, data={"Error": "{0}".format(error)}) class imprimirdevolucion(View): def get(self, request, **kwargs): report_name = 'bienes_asegurados' try: did = kwargs.get('devolucion_id') parametros = { 'did': did, } url = '{url}/jasperserver/flow.html?_flowId=viewReportFlow&standAlone=true&_flowId=viewReportF' \ 'low&ParentFolderUri=%2Fbienes_asegurados&reportUnit=%2Fbienes_asegurados%2Fdevolucion&output=pdf'.format( url=settings.JASPER_URL, report_name=report_name) r = requests.get(url, params=parametros, auth=(settings.JASPER_USER, settings.JASPER_PASSWORD)) response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'filename=actadevolucion{0}.pdf'.format(did) buffer = BytesIO(r.content) pdf = buffer.getvalue() buffer.close() response.write(pdf) return response except Exception as error: return Response(status=status.HTTP_404_NOT_FOUND, data={"Error": "{0}".format(error)}) class reporteporfecha(View): def get(self, request, **kwargs): report_name = 'bienes_asegurados' try: desde = self.request.GET.get('id_fecha_de') hasta = self.request.GET.get('id_fecha_a') parametros = { 'desde': desde, 'hasta': hasta, } url = '{url}/jasperserver/flow.html?_flowId=viewReportFlow&standAlone=true&_flowId=viewReportFlow&ParentFolderUri=%2F' \ 'bienes_asegurados&reportUnit=%2Fbienes_asegurados%2Ffecha5&output=pdf'.format( url=settings.JASPER_URL, report_name=report_name) r = requests.get(url, params=parametros, auth=(settings.JASPER_USER, settings.JASPER_PASSWORD)) response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'filename=reportefecha{0}{0}.pdf'.format(desde,hasta) buffer = BytesIO(r.content) pdf = buffer.getvalue() buffer.close() response.write(pdf) return response except Exception as error: return Response(status=status.HTTP_404_NOT_FOUND, data={"Error": "{0}".format(error)}) 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): messages.success(self.request, 'corrija los errores') return super(crearfiltro, self).form_valid(form) 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'] a = Enlace.objects.filter(tipo_bien=tipo) regreso = serializers.serialize("json", Enlace.objects.filter(tipo_bien=tipo), fields=('id', 'texto')) return HttpResponse(regreso, mimetype='application/json') # 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) # LISTA Y BUSQUEDA PARA MOSTRAR RECEPCION 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.filter(estatus=True) 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__oficio__numero_averiguacion__icontains=filter_string) ) return queryset # LISTA Y BUSQUEDA PARA MOSTRAR DEVOLUCION 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.filter(estatus=True) return queryset def get_filter(self, filter_string, queryset): if filter_string: queryset = queryset.filter( Q(recepcion__numero_acta__icontains=filter_string) | Q(bien__descripcion__icontains=filter_string) | Q(numero_acta__icontains=filter_string) | Q(fechahora__icontains=filter_string) | Q(recepcion__oficio__numero_averiguacion__icontains=filter_string) ) return queryset # LISTA Y BUSQUEDA PARA MOSTRAR DE BIENES 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(oficio__fecha__icontains=filter_string) | Q(oficio__numero_averiguacion__icontains=filter_string) | Q(oficio__autoridad__autoridad__icontains=filter_string) | Q(oficio__numero_oficio__icontains=filter_string) | Q(oficio__persona_entrega__nombre__icontains=filter_string) | Q(oficio__persona_entrega__apellidopaterno__icontains=filter_string) | Q(oficio__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 @csrf_exempt def traer_bienes(request): if request.is_ajax(): if request.method == 'GET': respuest = "este se envio via get" elif request.method == 'POST': valod = request.POST['valor'] a = Recepcion.objects.get(pk=valod) b = Bienes.objects.filter(oficio=a.oficio) regreso = serializers.serialize("json", Bienes.objects.filter(oficio=a.oficio, devuelto=False), fields=('id', 'descripcion')) return HttpResponse(regreso, mimetype='application/json') @csrf_exempt def editar_traer_bienes(request): if request.is_ajax(): if request.method == 'GET': respuest = "este se envio via get" elif request.method == 'POST': valod = request.POST['valor'] a = Recepcion.objects.get(pk=valod) b = Bienes.objects.filter(oficio=a.oficio_id) regreso = serializers.serialize("json", Bienes.objects.filter(oficio=a.oficio_id)) return HttpResponse(regreso, mimetype='application/json') # LISTA Y BUSQUEDA PARA MOSTRAR PERSONAS class ListaPersonasView(TemplateView, View): template_name = 'mostrarpersona.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(ListaPersonasView, self).get_context_data(**kwargs) context["pro"] = "active" return context class PersonasDataTablesAPIView(DataTableView): model = Persona serializer = MostrarPersona def get_queryset(self): queryset = Persona.objects.filter(estatus=True) return queryset def get_filter(self, filter_string, queryset): if filter_string: queryset = queryset.filter( Q(nombre__icontains=filter_string) | Q(apellidopaterno__icontains=filter_string) | Q(cargo__icontains=filter_string) | Q(dependencia__autoridad__icontains=filter_string) ) return queryset class HistorialApiView(DataTableView): model = HistoricoBienes serializer = HistorialBienesSerialize def get_queryset(self): queryset = HistoricoBienes.objects.filter(id_movimiento=self.kwargs['pk'], descripcion__in=[2, 3, 4]) return queryset def get_filter(self, filter_string, queryset): if filter_string: user = User.objects.filter(username__icontains=filter_string).values('pk') queryset = queryset.objects.filter(usuario_id__in=user, id_movimiento=self.kwargs['pk'], descripcion__in=[2, 3, 4]) return queryset class HistorialListView(TemplateView): template_name = 'list_historial.html' def get_context_data(self, **kwargs): context = super(HistorialListView, self).get_context_data(**kwargs) context['id_movimiento'] = self.kwargs['pk'] print self.kwargs['pk'] return context class DetalleHistoria(DetailView): model = HistoricoBienes context_object_name = 'detalle_historia' template_name = 'detalle_historia.html' def get_context_data(self, **kwargs): context = super(DetalleHistoria, self).get_context_data(**kwargs) load_json = json.loads(self.object.descripcion_movimiento) usuario = User.objects.get(pk=self.object.usuario_id) oficio = Oficios.objects.get(pk=load_json[0]['fields']['oficio']) calidad_bien = CalidadBien.objects.get(pk=load_json[0]['fields']['calidad_bien']) tipo_bien = TipoBien.objects.get(pk=load_json[0]['fields']['tipo_bien']) enlace = None try: enlace = Enlace.objects.get(pk=load_json[0]['fields']['enlace']) except: pass context['json_load'] = load_json[0] context['usuario'] = usuario.username context['oficio'] = oficio context['calidad_bien'] = calidad_bien context['enlace'] = enlace context['tipo_bien'] = tipo_bien return context class HistorialActasRecepcionApiView(DataTableView): model = HistoricoBienes serializer = HistorialBienesSerialize def get_queryset(self): queryset = HistoricoBienes.objects.filter(id_movimiento=self.kwargs['pk'], descripcion__in=[5, 6, 7]) sSearch = self.request.GET.get('sSearch') if sSearch: user = User.objects.filter(username__icontains=sSearch).values_list('pk', flat=True) queryset = HistoricoBienes.objects.filter(usuario_id__in=user, id_movimiento=self.kwargs['pk'], descripcion__in=[5, 6, 7]) return queryset def get_filter(self, filter_string, queryset): if filter_string: queryset = queryset.filter( # Q(username__icontains=filter_string) ) return queryset class HistorialListActasRecepcionView(TemplateView): template_name = 'list_historial_actas_recepcion.html' def get_context_data(self, **kwargs): context = super(HistorialListActasRecepcionView, self).get_context_data(**kwargs) context['id_movimiento'] = self.kwargs['pk'] print self.kwargs['pk'] return context class DetalleHistoriaActasRecepcion(DetailView): model = HistoricoBienes context_object_name = 'detalle_historia' template_name = 'detalle_historia_actas_recepcion.html' def get_context_data(self, **kwargs): context = super(DetalleHistoriaActasRecepcion, self).get_context_data(**kwargs) load_json = json.loads(self.object.descripcion_movimiento) usuario = User.objects.get(pk=self.object.usuario_id) oficio = Oficios.objects.get(pk=load_json[0]['fields']['oficio']) persona_envia = Persona.objects.get(pk=load_json[0]['fields']['envia']) persona_recibe = Persona.objects.get(pk=load_json[0]['fields']['recibe']) persona_capturo = Persona.objects.get(pk=load_json[0]['fields']['capturo']) persona_reviso = Persona.objects.get(pk=load_json[0]['fields']['reviso']) print load_json[0] context['json_load'] = load_json[0] context['usuario'] = usuario.username context['oficio'] = oficio context['persona_envia'] = persona_envia context['persona_recibe'] = persona_recibe context['persona_capturo'] = persona_capturo context['persona_reviso'] = persona_reviso return context class HistorialActasDevolucionApiView(DataTableView): model = HistoricoBienes serializer = HistorialBienesSerialize def get_queryset(self): queryset = HistoricoBienes.objects.filter(id_movimiento=self.kwargs['pk'], descripcion__in=[8, 9, 10]) sSearch = self.request.GET.get('sSearch') if sSearch: user = User.objects.filter(username__icontains=sSearch).values_list('pk', flat=True) queryset = HistoricoBienes.objects.filter(usuario_id__in=user, id_movimiento=self.kwargs['pk'], descripcion__in=[8, 9, 10]) return queryset def get_filter(self, filter_string, queryset): if filter_string: queryset = queryset.filter( # Q(username__icontains=filter_string) ) return queryset class HistorialListActasDevolucionView(TemplateView): template_name = 'list_historial_actas_devolucion.html' def get_context_data(self, **kwargs): context = super(HistorialListActasDevolucionView, self).get_context_data(**kwargs) context['id_movimiento'] = self.kwargs['pk'] print self.kwargs['pk'] return context class DetalleHistoriaActasDevolucion(DetailView): model = HistoricoBienes context_object_name = 'detalle_historia' template_name = 'detalle_historia_actas_devolucion.html' def get_context_data(self, **kwargs): context = super(DetalleHistoriaActasDevolucion, self).get_context_data(**kwargs) load_json = json.loads(self.object.descripcion_movimiento) usuario = User.objects.get(pk=self.object.usuario_id) recepcion = Recepcion.objects.get(pk=load_json[0]['fields']['recepcion']) persona_asigna = Persona.objects.get(pk=load_json[0]['fields']['signado']) persona_autoriza = Persona.objects.get(pk=load_json[0]['fields']['autoriza']) persona_capturo = Persona.objects.get(pk=load_json[0]['fields']['capturo']) persona_reviso = Persona.objects.get(pk=load_json[0]['fields']['reviso']) print load_json[0] context['json_load'] = load_json[0] context['usuario'] = usuario.username context['recepcion'] = recepcion context['persona_asigna'] = persona_asigna context['persona_autoriza'] = persona_autoriza context['persona_capturo'] = persona_capturo context['persona_reviso'] = persona_reviso return context #LISTA Y BUSQUEDA PARA MOSTRAR DIRECTORES class ListaDirectoresView(TemplateView,View): template_name = 'mostrardiretor.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(ListaDirectoresView,self).get_context_data(**kwargs) context["pro"]= "active" return context class DirectorDataTablesAPIView(DataTableView): model = Director serializer = MostrarDirector def get_queryset(self): queryset = Director.objects.all().order_by('-estatus') return queryset def get_filter(self, filter_string, queryset): if filter_string: queryset = queryset.filter( Q(nombre__icontains=filter_string)| Q(apellidopaterno__icontains=filter_string)| Q(apellidomaterno__icontains=filter_string)| Q(cargo__icontains=filter_string) ) return queryset