# encoding:utf-8 import json from django.http import * from django.template.response import * from django.contrib import messages from django.shortcuts import * from django.views.generic import View from snct.forms import * from django.contrib.auth.decorators import * from django.contrib import messages from django.contrib.auth.models import User from django.template import * from django.contrib.auth import * from django.db.models import Q from datetime import * from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.db.models import Sum from django.core.mail.message import EmailMultiAlternatives from django.template.loader import render_to_string from django.utils.html import strip_tags import smtplib import time import datetime from datetime import date import locale import os import zipfile import StringIO import unicodedata from pyjasperclient import JasperClient #importacion del jasper client from reportlab.pdfgen import canvas 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.core.paginator import Paginator, EmptyPage, InvalidPage from reportlab.rl_config import defaultPageSize PAGE_HEIGHT = defaultPageSize[1] PAGE_WIDTH = defaultPageSize[0] Title = '' pageinfo = "" import json from django.utils import simplejson from django.core import serializers from django.views.decorators.csrf import csrf_exempt class JasperMix(object): #clase para invocar el reporte 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() def index(request): convoca = convocatorias.objects.all() publicacion = PublicacionInicio.objects.filter(activo=True).order_by('id') enlaces = SitiosDeInteresInicio.objects.filter(activo=True).order_by('id') prog = ProgramaSedeEstatal.objects.filter(activo=True).order_by('id') banner = BannerInicio.objects.all() lista_graficos = graficos.objects.filter(activo=True).order_by('id') return TemplateResponse(request, 'dashboard_base.html', {'request': request, 'convoca': convoca, 'publicacion': publicacion, 'enlaces': enlaces, 'prog': prog, 'lista_graficos': lista_graficos, 'banner': banner}) def snct(request): return render_to_response('snct.html', {'request': request}, context_instance=RequestContext(request)) def web_service_json(request): imagen_inicio = LogotipoInicio.objects.latest('id') data = {'img': "/media/" + str(imagen_inicio)} return HttpResponse(json.dumps(data), content_type='application/json') def frecuentes(request): return render_to_response('frecuentes.html', {'request': request}, context_instance=RequestContext(request)) def dudas(request): return render_to_response('dudas.html', {'request': request}, context_instance=RequestContext(request)) def programa_sede_estatal(request): return render_to_response('programa_sede_estatal.html', {'request': request}, context_instance=RequestContext(request)) def convocatorias_(request): convoca = convocatorias.objects.filter(activo=True).order_by('id') return render_to_response('convocatoria.html', {'request': request, 'convoca': convoca}, context_instance=RequestContext(request)) def sourceSendMail(email, finalidad, cuerpo_aviso): error = '' result = '' try: email_context = { 'finalidad': finalidad, 'cuerpo_aviso': cuerpo_aviso, } email_html = render_to_string('maquetado_correos.html', email_context) # se rendereriza el template con el context email_text = strip_tags(email_html) # se quitan las etiquetas html para que quede en texto plano correo = EmailMultiAlternatives( 'INFORMACION CONSEJO DE CIENCIA Y TECNOLOGIA DEL ESTADO DE TABASCO', # TODO MODIFICADO MANUALMENTE email_text, # contenido del correo settings.EMAIL_HOST_USER, # quien lo envia [email], # a quien se envia ) correo.attach_alternative(email_html, 'text/html') # se especifica que el contenido es html time.sleep(2) correo.send() result = 'Envío completamente exitoso' except smtplib.SMTPRecipientsRefused: result = '' error = "SMTP Recipient Refused, destinatarios denegados" except smtplib.SMTPHeloError: result = '' error = "SMTP Helo Error, acceso denegado al servicio de correo" except smtplib.SMTPSenderRefused: result = '' error = "SMTP Sender Refused, correo origen denegado" except smtplib.SMTPDataError: result = '' error = "SMTP Data Error, probablemente ha llegado al límite de envío de correos" except smtplib: result = '' error = "SMTP Error, probablemente ha llegado al límite de envío de correos" except Exception as Error: result = '' error = str(Error) + ", probablemente ha llegado al límite de envío de correos" return (result, error) def registro_institucion(request): if request.method == "POST": formulario1 = RegistroResponsable(request.POST) form = RegistroInsticion(request.POST) formulario2 = UserCreationForm() if form.is_valid() and formulario1.is_valid(): nombre = form.cleaned_data['nombre'] siglas = form.cleaned_data['siglas'] direccion = form.cleaned_data['direccion'] poblacion = form.cleaned_data['poblacion'] municipio = form.cleaned_data['municipio'] codigo_postal = form.cleaned_data['codigo_postal'] telefono = form.cleaned_data['telefono'] extencion = form.cleaned_data['extencion'] # correo = form.cleaned_data['correo'] pagina_web = form.cleaned_data['pagina_web'] fecha_registro = form.cleaned_data['fecha_registro'] fax = form.cleaned_data['fax'] tipo_institucion = form.cleaned_data['tipo_institucion'] # usuario = form.cleaned_data['usuario'] participacion = formulario1.cleaned_data['participacion'] nombre_responsable = formulario1.cleaned_data['nombre_responsable'] telefono_responsable = formulario1.cleaned_data['telefono_responsable'] extencion_responsable = formulario1.cleaned_data['extencion_responsable'] celular = formulario1.cleaned_data['celular'] correo_responsable = formulario1.cleaned_data['correo_responsable'] # institucion_ = formulario1.cleaned_data['institucion_'] q = cat_personas() q.participacion = participacion q.municipio = municipio q.nombre = nombre_responsable q.telefono = telefono_responsable q.extencion = extencion_responsable q.celular = celular q.correo = correo_responsable q.admin_municipio = True # participacion_suplente = formulario1.cleaned_data['participacion_suplente'] nombre_suplente = formulario1.cleaned_data['nombre_suplente'] telefono_suplente = formulario1.cleaned_data['telefono_suplente'] extension_suplente = formulario1.cleaned_data['extension_suplente'] celular_suplente = formulario1.cleaned_data['celular_suplente'] correo_suplente = formulario1.cleaned_data['correo_suplente'] s = cat_personas() # s.participacion = participacion_suplente s.municipio = municipio s.nombre = nombre_suplente s.telefono = telefono_suplente s.extencion = extension_suplente s.celular = celular_suplente s.correo = correo_suplente s.admin_municipio = False consulta = cat_personas.objects.filter(municipio=municipio) partici = consulta.filter(participacion__nombre="Coordinador del Comité Organizador Municipal") parti = "" admin_municipio = "" for p in partici: parti = p.participacion admin_municipio = p.admin_municipio if str(parti) == str(participacion) and admin_municipio == True: mssj = 'El municipio ya cuenta con un Coordinador Municipal registrado. Favor de elegir la otra opcion disponible.' msj = str(mssj.encode('utf-8')) messages.warning(request, msj) return HttpResponseRedirect(request.path) else: q.save() s.save() idi = q odo = s administrador = str("Miembro del Comité Organizador Municipal") participacion = formulario1.cleaned_data['participacion'] if str(participacion) == administrador: i = User(first_name=nombre_responsable, email=correo_responsable, is_staff=True) formulario2 = UserCreationForm(request.POST, instance=i) else: i = User(first_name=nombre_responsable, email=correo_responsable) formulario2 = UserCreationForm(request.POST, instance=i) if formulario2.is_valid(): cd = formulario2.save() q.usuario = cd q.save() p = institucion() p.nombre = nombre p.siglas = siglas p.direccion = direccion p.poblacion = poblacion p.municipio = municipio p.codigo_postal = codigo_postal p.telefono = telefono p.extencion = extencion # p.correo = correo p.pagina_web = pagina_web p.fecha_registro = fecha_registro p.fax = fax p.tipo_institucion = tipo_institucion p.participacion = idi p.usuario = cd p.save() # name = "" # instituto = institucion.objects.filter(nombre=nombre) # for p in instituto: # name = p.nombre # # ins = None # if str(name.encode('utf-8')) != str(nombre.encode('utf-8')): # ins = p.save() # else: # msj = 'La institucion ya exite.' # messages.success(request, msj) # return HttpResponseRedirect(request.path) sup = Suplente(institucion=p) sup.save() sp = SuplentePersonas(suplente=sup, persona=odo) sp.save() correo_ = correo_responsable username = request.POST.get('username') password = request.POST.get('password1') msj = str('Gracias por participar en la Semana Nacional de Ciencia y Tecnología en Tabasco: \n\n' + 'Usuario: ' + str( username) + '\nContrasenia: ' + str(password)) var_email = str(correo_) try: resultado = sourceSendMail(email=var_email, finalidad=2, cuerpo_aviso=msj) messages.success(request, 'Los datos se guardaron correctamente. Su usuario y contraseña fueron enviados a su correo') return HttpResponseRedirect(request.path) except Exception as e: return HttpResponseRedirect('/index/') else: msj = 'Por favor, corrija el siguiente error.' messages.error(request, msj) else: formulario1 = RegistroResponsable() form = RegistroInsticion() formulario2 = UserCreationForm() return render_to_response('registro_institucion.html', {'request': request, 'form': form, 'formulario1': formulario1, 'formulario2': formulario2}, context_instance=RequestContext(request)) def login_(request): return TemplateResponse(request, 'login1.html', {'request': request}) def validar(request): username = request.POST['username'] password = request.POST['password'] user = authenticate(username=username, password=password) mensaje = '' if user is not None: if user.is_active: login(request, user) if user.is_superuser: return HttpResponseRedirect('/registro_de_actividad/') if user.is_staff: return HttpResponseRedirect('/registro_de_actividad/') else: return HttpResponseRedirect('/registro_de_actividad/') else: mensaje = mensaje + 'Cuenta desactivada' else: mensaje = mensaje + 'Usuario no valido, Verifique sus credenciales' return TemplateResponse(request, 'login1.html', {'msj': mensaje}) @login_required(login_url='/') def principal_administrador(request): municipios = cat_municipio.objects.all() total_actividades = registro_actividad.objects.all() actividades_confirmadas = registro_actividad.objects.all().filter(bandera=True) actividades_no_confirmadas = registro_actividad.objects.all().filter(bandera=False) folios_generados = registro_actividad.objects.all().filter(generar_folio=True, bandera=True) # return HttpResponse(folios_generados) instituciones_ = institucion.objects.all() return render_to_response('principal.html', {'municipios': municipios, 'total_actividades': total_actividades, 'actividades_confirmadas': actividades_confirmadas, 'actividades_no_confirmadas': actividades_no_confirmadas, 'instituciones_': instituciones_, 'folios_generados': folios_generados, 'request': request}, context_instance=RequestContext(request)) @login_required(login_url='/') def instituciones_(request, id_municipio): municipios = cat_municipio.objects.all() municipio = cat_municipio.objects.get(pk=id_municipio) instituciones = institucion.objects.filter(municipio=id_municipio) # return HttpResponse(instituciones) # institutos = return render_to_response('institucion.html', {'municipios': municipios, 'municipio': municipio, 'instituciones': instituciones, 'request': request, 'cat_municipio': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def reporte_actividades(request): municipios = cat_municipio.objects.all() lista_actividades = ReporteActividades1.objects.all().order_by('tipo_actividad_id') #TODO. Hecho lista_publico_actividades = ReporteActividades2.objects.all().order_by('tipo_actividad_id') #TODO. Hecho lista_publico_actividades_realizadas = ReporteActividades3.objects.all().order_by('tipo_actividad_id') #TODO. Hecho # Dejar este print por si se necesita depurar #print lista_valores_publico # Dejar este print por si se necesita depurar # print lista_publico_actividades #print 'Cantidad total con clasificacion" + str(cantidad_global) #print 'Cantidad total de publico con Consulta/Query' + str(paso_tipo_publico.objects.aggregate(Sum('cantidad'))) return render_to_response('reporte_actividades.html', {'municipios': municipios, 'lista_actividades': lista_actividades, 'lista_publico_actividades' : lista_publico_actividades, 'lista_publico_actividades_realizadas' : lista_publico_actividades_realizadas, 'request': request}, context_instance=RequestContext(request)) # @login_required # def principal_municipal(request): # user = request.user # perfil_ = perfil.objects.filter(usuario=user) # x="" # for p in perfil_: # x=p.municipio.nombre # instituciones_ = institucion.objects.all().filter(municipio__nombre=x) # return render_to_response('principal.html',{'instituciones_':instituciones_,'request':request},context_instance=RequestContext(request)) @login_required(login_url='/') def mun_actividades_institucion(request, id_institucion): nombre_institucion = institucion.objects.filter(usuario__in=[request.user.id]) municipios = cat_municipio.objects.all() instituciones_ = institucion.objects.filter(pk=id_institucion) x = "" for p in instituciones_: x = p.usuario.id lista_actividad = registro_actividad.objects.filter(usuario=x) bscr = '' if 'bscr' in request.GET: bscr = request.GET.get('bscr') lista_actividad = lista_actividad.filter( Q(titulo__icontains=bscr) | Q(tipo_actividad__nombre__icontains=bscr) | Q(tema__icontains=bscr) | Q(responsable_actividad__nombre__icontains=bscr) | Q(expositor__nombre__icontains=bscr) ) rpp = 10 # Show 10 contacts per page if 'rpp' in request.GET: rpp = request.GET.get('rpp') paginator = Paginator(lista_actividad, rpp) page = request.GET.get('page') try: contacts = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. contacts = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. contacts = paginator.page(paginator.num_pages) # return HttpResponse(lista_actividad) return render_to_response('mun_actividades_institucion.html', {'nombre_institucion': nombre_institucion, 'contacts': contacts, 'rpp': rpp, 'bscr': bscr, 'municipios': municipios, 'instituciones_': instituciones_, 'cat_municipio': 'active', 'lista_actividad': lista_actividad, 'id_institucion': id_institucion, 'request': request}, context_instance=RequestContext(request)) @login_required(login_url='/') def principal(request): lista_actividad = registro_actividad.objects.all().filter(usuario__in=[request.user.id]) nombre_institucion = institucion.objects.filter(usuario__in=[request.user.id]) act_realizadas = lista_actividad.filter(bandera=True) return render_to_response('principal.html', {'lista_actividad': lista_actividad, 'act_realizadas': act_realizadas, 'nombre_institucion': nombre_institucion, 'request': request}, context_instance=RequestContext(request)) @login_required(login_url='/') def registro_de_actividad(request): nombre_institucion = institucion.objects.filter(usuario__in=[request.user.id]) lista_actividad = registro_actividad.objects.filter(usuario__in=[request.user.id]) lista_responsables = cat_personas.objects.values('nombre').distinct('nombre').order_by('nombre') municipios = cat_municipio.objects.all() total_actividades = registro_actividad.objects.all() actividades_confirmadas = registro_actividad.objects.all().filter(bandera=True) actividades_no_confirmadas = registro_actividad.objects.all().filter(bandera=False) asistentes_esperados = paso_tipo_publico.objects.all().aggregate(Sum('cantidad')) asistentes_esperados = asistentes_esperados['cantidad__sum'] asistentes_confirmados = Paso_Tipo_Publico_Final.objects.all().aggregate(Sum('cantidad')) asistentes_confirmados = asistentes_confirmados['cantidad__sum'] folios_generados = registro_actividad.objects.all().filter(generar_folio=True, bandera=True) # return HttpResponse(folios_generados) instituciones_ = institucion.objects.all() bscr = '' if 'bscr' in request.GET: bscr = request.GET.get('bscr') lista_actividad = lista_actividad.filter( Q(titulo__icontains=bscr) | Q(tipo_actividad__nombre__icontains=bscr) | Q(tema__icontains=bscr) | Q(responsable_actividad__nombre__icontains=bscr) ) rpp = 10 # Show 10 contacts per page if 'rpp' in request.GET: rpp = request.GET.get('rpp') paginator = Paginator(lista_actividad, rpp) page = request.GET.get('page') try: contacts = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. contacts = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. contacts = paginator.page(paginator.num_pages) if request.method == 'POST': formulario = RegistroActividad(request.POST) responsable_object = cat_personas.objects.filter(usuario=request.user) #TODO. Obtener responsable que debe de estar registrado if formulario.is_valid(): if responsable_object.exists(): responsable_object = responsable_object[:1].get() prueba = formulario.save(commit=False) prueba.responsable_actividad_id = responsable_object.id prueba.usuario_id = request.user.id prueba.save() a = formulario.cleaned_data['tipo_publico'] for y in a: paso = paso_tipo_publico(tipo_publico=y, actividad=prueba, cantidad=request.POST[y.nombre.replace(' ', '_')]) paso.save() for s in request.POST: consulta = registro_actividad.objects.get(pk=prueba.pk) persona = cat_personas() persona.nombre = request.POST[s] persona.actividad_relacionada_id = prueba.pk if s.startswith('expositor'): persona.save() consulta.expositor.add(persona.id) elif s.startswith('organizador'): persona.save() consulta.organizadores.add(persona.id) elif s.startswith('participante'): persona.save() consulta.participantes.add(persona.id) elif s.startswith('patrocinador'): persona.save() consulta.patrocinadores.add(persona.id) msj = 'Los datos se guardaron correctamente.' messages.success(request, msj) return HttpResponseRedirect('/registro_de_actividad/') else: msj = 'No se logro localizar los datos del usuario en el catalogo de nombres.' messages.error(request, msj) return HttpResponseRedirect('/registro_de_actividad/') else: formulario = RegistroActividad() return render_to_response('registro_actividad.html', {'municipios': municipios, 'm_actividades': 'active', 'total_actividades': total_actividades, 'actividades_confirmadas': actividades_confirmadas, 'actividades_no_confirmadas': actividades_no_confirmadas, 'asistentes_esperados' : asistentes_esperados, 'asistentes_confirmados' : asistentes_confirmados, 'instituciones_': instituciones_, 'folios_generados': folios_generados, 'request': request, 'rpp': rpp, 'bscr': bscr, 'page': page, 'formulario': formulario, 'nombre_institucion': nombre_institucion, 'contacts': contacts, 'lista_responsables': lista_responsables}, context_instance=RequestContext(request)) @login_required(login_url='/') def edit_actividad(request, id_actividad): nombre_institucion = institucion.objects.filter(usuario__in=[request.user.id]) lista_actividad = registro_actividad.objects.filter(usuario__in=[request.user.id]) lista_actividad = lista_actividad.filter(pk=id_actividad) imgs = imagen_registro_actividad.objects.filter(registro_actividad=id_actividad) # lista_responsables = cat_personas.objects.values('nombre').distinct('nombre').order_by('nombre') municipios = cat_municipio.objects.all() cantidad_publico = paso_tipo_publico.objects.filter(actividad=id_actividad) bscr = '' if 'bscr' in request.GET: bscr = request.GET.get('bscr') lista_actividad = lista_actividad.filter( Q(titulo__icontains=bscr) | Q(tipo_actividad__nombre__icontains=bscr) | Q(tema__icontains=bscr) | Q(responsable_actividad__nombre__icontains=bscr) | Q(expositor__nombre__icontains=bscr) ) rpp = 10 # Show 10 contacts per page if 'rpp' in request.GET: rpp = request.GET.get('rpp') paginator = Paginator(lista_actividad, rpp) page = request.GET.get('page') try: contacts = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. contacts = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. contacts = paginator.page(paginator.num_pages) if request.method == 'GET': d = registro_actividad.objects.get(pk=id_actividad) # responsable = d.responsable_actividad.id # pr = cat_personas.objects.all().get(pk=responsable) formulario = RegistroActividad(initial={'titulo': d.titulo, 'tipo_actividad': d.tipo_actividad, 'especificar_actividad': d.especificar_actividad, 'tema': d.tema, 'fecha': d.fecha, 'hora': d.hora, 'lugar': d.lugar, 'municipio': d.municipio, 'direccion': d.direccion, 'cupo': d.cupo, 'descripcion': d.descripcion }, instance=d) # formulario_responsable = RegistroResponsable1(initial={'nombre': pr.nombre}, instance=pr) elif request.method == 'POST': formulario = RegistroActividad(request.POST, request.FILES) # formulario_responsable = RegistroResponsable1(request.POST) if formulario.is_valid(): #and formulario_responsable.is_valid(): d = registro_actividad.objects.get(pk=id_actividad) # archivo = request.FILES['imagenes'] #instanciando el campo imagenes para obtener la nueva imagen # responsable = d.responsable_actividad.id # pr = cat_personas.objects.all().get(pk=responsable) d.titulo = formulario.cleaned_data['titulo'] d.tipo_actividad = formulario.cleaned_data['tipo_actividad'] d.especificar_actividad = formulario.cleaned_data['especificar_actividad'] d.tema = formulario.cleaned_data['tema'] d.fecha = formulario.cleaned_data['fecha'] d.hora = formulario.cleaned_data['hora'] d.lugar = formulario.cleaned_data['lugar'] d.municipio = formulario.cleaned_data['municipio'] d.direccion = formulario.cleaned_data['direccion'] # d.tipo_publico = formulario.cleaned_data['tipo_publico'] d.cupo = formulario.cleaned_data['cupo'] # d.imagenes= formulario.cleaned_data['imagenes'] d.descripcion = formulario.cleaned_data['descripcion'] # pr.nombre = formulario_responsable.cleaned_data['nombre'] # d.imagenes=archivo # agregando al nuevo formulario la variable en donde se encuentra la imagen d.save() # pr.save() for f in request.FILES.getlist('imagenes'): imag = imagen_registro_actividad(registro_actividad=d) imag.imagenes = f imag.save() a = formulario.cleaned_data['tipo_publico'] for y in a: paso = paso_tipo_publico(tipo_publico=y, actividad=d, cantidad=request.POST[y.nombre.replace(' ', '_')]) paso.save() # pr.save() # msj="El registro se modifico correctamente" # messages.success(request, msj) msj = 'Los datos se actualizaron correctamente.' messages.success(request, msj) return HttpResponseRedirect(request.path) else: msj = 'Por favor, corrija el siguiente error.' messages.error(request, msj) else: formulario = RegistroActividad() return render_to_response('edit_actividad.html', {'cantidad_publico': cantidad_publico, 'municipios': municipios, 'nombre_institucion': nombre_institucion, 'request': request, 'registro_actividad': id_actividad, 'contacts': contacts, 'formulario': formulario, 'imgs': imgs}, context_instance=RequestContext(request)) @login_required(login_url='/') def programa_actividad(request): municipios = cat_municipio.objects.all() nombre_institucion = institucion.objects.filter(usuario__in=[request.user.id]) lista_actividad = registro_actividad.objects.all().filter(usuario__in=[request.user.id]) bscr = '' if 'bscr' in request.GET: bscr = request.GET.get('bscr') lista_actividad = lista_actividad.filter( Q(titulo__icontains=bscr) | Q(tipo_actividad__nombre__icontains=bscr) | Q(tema__icontains=bscr) | Q(responsable_actividad__nombre__icontains=bscr) ) rpp = 10 # Show 10 contacts per page if 'rpp' in request.GET: rpp = request.GET.get('rpp') paginator = Paginator(lista_actividad, rpp) page = request.GET.get('page') try: contacts = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. contacts = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. contacts = paginator.page(paginator.num_pages) lista_actividad = registro_actividad.objects.all().filter(usuario__in=[request.user.id]) return render_to_response('programa_actividad.html', {'municipios': municipios, 'lista_actividad': lista_actividad, 'rpp': rpp, 'bscr': bscr, 'page': page, 'nombre_institucion': nombre_institucion, 'contacts': contacts, 'request': request, 'm_actividades': 'active'}, context_instance=RequestContext(request)) #solo para el admin que podra generar el de todos @login_required(login_url='/') def generar_reconocimiento(request): #lista_roles = involucrados.objects.all() municipios = cat_municipio.objects.all() nombre_institucion = institucion.objects.filter(usuario__in=[request.user.id]) lista_actividad = registro_actividad.objects.all().filter(usuario__in=[request.user.id], bandera=True, generar_folio=True) bandera = True for p in lista_actividad: bandera = p.bandera bscr = '' if 'bscr' in request.GET: bscr = request.GET.get('bscr') lista_actividad = lista_actividad.filter( Q(titulo__icontains=bscr) | Q(tipo_actividad__nombre__icontains=bscr) | Q(tema__icontains=bscr) | Q(responsable_actividad__nombre__icontains=bscr) ) #print(lista_actividad) rpp = 10 # Show 10 contacts per page if 'rpp' in request.GET: rpp = request.GET.get('rpp') paginator = Paginator(lista_actividad, rpp) page = request.GET.get('page') try: contacts = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. contacts = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. contacts = paginator.page(paginator.num_pages) lista_actividad = registro_actividad.objects.all().filter(usuario__in=[request.user.id]) return render_to_response('reconocimiento.html', {'municipios': municipios, 'bandera': bandera, 'lista_actividad': lista_actividad, 'rpp': rpp, 'bscr': bscr, 'page': page, 'nombre_institucion': nombre_institucion, 'contacts': contacts, 'reconocimientos': 'active', 'request': request}, context_instance=RequestContext(request)) @login_required(login_url='/') def confirmar_actividad(request): municipios = cat_municipio.objects.all() nombre_institucion = institucion.objects.filter(usuario__in=[request.user.id]) lista_actividad = registro_actividad.objects.filter(usuario__in=[request.user.id]) for actividad in lista_actividad: imagenes_actividad = imagen_registro_actividad.objects.filter(registro_actividad=actividad.id) if imagenes_actividad.exists(): actividad.imagenes = True else: actividad.imagenes = False actividad.save() bscr = '' if 'bscr' in request.GET: bscr = request.GET.get('bscr') lista_actividad = lista_actividad.filter( Q(titulo__icontains=bscr) | Q(tipo_actividad__nombre__icontains=bscr) | Q(tema__icontains=bscr) | Q(responsable_actividad__nombre__icontains=bscr) ) rpp = 100 # Show 100 contacts per page if 'rpp' in request.GET: rpp = request.GET.get('rpp') paginator = Paginator(lista_actividad, rpp) page = request.GET.get('page') try: contacts = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. contacts = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. contacts = paginator.page(paginator.num_pages) return render_to_response('cofirmar_actividad.html', {'municipios': municipios, 'confirmar_genarar': 'active', 'rpp': rpp, 'bscr': bscr, 'page': page, 'nombre_institucion': nombre_institucion, 'contacts': contacts, 'request': request}, context_instance=RequestContext(request)) @login_required(login_url='/') def subir_imagen_actividad(request, id_actividad): imagenes = imagen_registro_actividad.objects.filter(registro_actividad=id_actividad) actividad = registro_actividad.objects.get(pk=id_actividad) #Esta variable 'cantidad_publico_final' se pasa por medio del contexto cantidad_publico_final = Paso_Tipo_Publico_Final.objects.all().filter(actividad=id_actividad) if request.method == 'POST': formulario = PasoTipoPublicoFinalForm(request.POST) if formulario.is_valid(): publicos = formulario.cleaned_data['tipo_publico'] for publico in publicos: cantidad_publico = request.POST[publico.nombre.replace(' ', '_')] #print publico.nombre + " " + str(cantidad_publico) #El siguiente try - except se encarga de preguntar si existe el registro #En caso de existir entonces se modifica #De lo contrario no encontrara el registro y lanzara la excepcion DoesNotExist # y aqui es donde se creara ese nuevo registro # En las futuras versiones de Django este algoritmo es llamado 'get_or_update' try: combinacion_actividad = Paso_Tipo_Publico_Final.objects.get(actividad=actividad, tipo_publico=publico) combinacion_actividad.cantidad = cantidad_publico combinacion_actividad.save() #print 'EDITADO' except Paso_Tipo_Publico_Final.DoesNotExist: nueva_combinacion = Paso_Tipo_Publico_Final() nueva_combinacion.actividad = actividad nueva_combinacion.tipo_publico = publico nueva_combinacion.cantidad = cantidad_publico nueva_combinacion.save() #print 'GUARDADO' for imagen in request.FILES.getlist('imagenes'): imag = imagen_registro_actividad(registro_actividad=actividad) imag.imagenes = imagen imag.save() else: formulario = PasoTipoPublicoFinalForm() return render_to_response('subir_imagen_actividad.html', {'request': request, 'imgs' : imagenes, 'form' : formulario, 'cantidad_publico': cantidad_publico_final}, context_instance=RequestContext(request)) @login_required(login_url='/') def folios_actividad(request, id_actividad): imagenes_actividad = imagen_registro_actividad.objects.filter(registro_actividad=id_actividad) if imagenes_actividad: actividad_confirmada = registro_actividad.objects.get(pk=id_actividad) actividad_confirmada.bandera = not actividad_confirmada.bandera actividad_confirmada.save() return HttpResponseRedirect('/confirmar_actividad/') @login_required(login_url='/') def generar_folios_actividad(request, id_actividad_confirmada): actividad = registro_actividad.objects.get(pk=id_actividad_confirmada) if actividad.bandera: #Si la actividad se ha realizado actividad.generar_folio = True # Entonces se generara el folio actividad.save() #Guarda en la base de datos return HttpResponseRedirect('/confirmar_actividad/') from django.db.models import Count @login_required(login_url='/') def folios_expositores(request): # ACTIVIDADES# lista_actividad = registro_actividad.objects.all().filter(usuario__in=[request.user.id]) # EXPOSITORES# lista_actividad = lista_actividad.filter(bandera=True, generar_folio=True) d = date.today() year = d.year expositor = "" 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 = [[ 'FOLIO', 'EXPOSITORES', 'ACTIVIDADES', ]] aux = "" for p in lista_actividad: for exp in p.expositor.all(): data.append([ "TAB-AI-" + str(year) + "-" + str(exp.id) + "-" + str(p.id), Paragraph(exp.nombre, Justificado), Paragraph(p.titulo, Justificado), ]) t_datos = Table(data, [5 * cm, 7 * cm, 4.5 * cm, 3.5 * 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'), ] ) t_datos.hAlign = 'CENTER' elements.append(t_datos) import os imagen = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo.png') imagen2 = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo-dgtic.png') def myFirstPage(canvas, doc): canvas.saveState() canvas.drawImage(imagen, 1 * cm, 520, 156, 50) canvas.setFont('Helvetica', 9) canvas.drawImage(imagen2, 14.2 * cm, 25, 80, 40) canvas.drawString(15 * cm, .25 * inch, "Página %d" % (doc.page)) canvas.restoreState() def myLaterPages(canvas, doc): canvas.saveState() # canvas.drawImage(imagen,1*cm,520, 162, 70) canvas.setFont('Helvetica', 9) # canvas.drawImage(imagen2,27.2*cm,-17, 80, 90) canvas.drawString(15 * cm, .25 * inch, "Página %d %s" % (doc.page, pageinfo)) canvas.restoreState() doc.build(elements, onFirstPage=myFirstPage, onLaterPages=myLaterPages) return response @login_required(login_url='/') def folios_participantes(request): # ACTIVIDADES# lista_actividad = registro_actividad.objects.all().filter(usuario__in=[request.user.id]) # EXPOSITORES# lista_actividad = lista_actividad.filter(bandera=True, generar_folio=True) d = date.today() year = d.year expositor = "" 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 = [[ 'FOLIO', 'PARTICIPANTES', 'ACTIVIDADES', ]] aux = "" for p in lista_actividad: for exp in p.participantes.all(): data.append([ "TAB-AI-" + str(year) + "-" + str(exp.id) + "-" + str(p.id), Paragraph(exp.nombre, Justificado), Paragraph(p.titulo, Justificado), ]) t_datos = Table(data, [5 * cm, 7 * cm, 4.5 * cm, 3.5 * 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'), ] ) t_datos.hAlign = 'CENTER' elements.append(t_datos) import os imagen = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo.png') imagen2 = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo-dgtic.png') def myFirstPage(canvas, doc): canvas.saveState() canvas.drawImage(imagen, 1 * cm, 520, 156, 50) canvas.setFont('Helvetica', 9) canvas.drawImage(imagen2, 14.2 * cm, 25, 80, 40) canvas.drawString(15 * cm, .25 * inch, "Página %d" % (doc.page)) canvas.restoreState() def myLaterPages(canvas, doc): canvas.saveState() # canvas.drawImage(imagen,1*cm,520, 162, 70) canvas.setFont('Helvetica', 9) # canvas.drawImage(imagen2,27.2*cm,-17, 80, 90) canvas.drawString(15 * cm, .25 * inch, "Página %d %s" % (doc.page, pageinfo)) canvas.restoreState() doc.build(elements, onFirstPage=myFirstPage, onLaterPages=myLaterPages) return response @login_required(login_url='/') def folios_organizadores(request): # ACTIVIDADES# lista_actividad = registro_actividad.objects.all().filter(usuario__pk=request.user.id) # EXPOSITORES# lista_actividad = lista_actividad.filter(bandera=True, generar_folio=True) d = date.today() year = d.year expositor = "" # for p in expositor_lista_actividad: # expositor+="Folio: "+"Tab-"+str(year)+"-"+str(p.expositor.id)+"Nombre Expositor: "+p.expositor.nombre 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 = [[ 'FOLIO', 'ORGANIZADORES', 'ACTIVIDADES', ]] aux = "" for p in lista_actividad: responsableid = 0 responsablenombre = '' if p.responsable_actividad is None: responsableid = 0 responsablenombre = 'sin responsable' else: responsableid = p.responsable_actividad.id responsablenombre = p.responsable_actividad.nombre for par in p.organizadores.all(): data.append([ "TAB-OI-" + str(year) + "-" + str(par.id) + "-" + str(p.id), Paragraph(par.nombre, Justificado), Paragraph(p.titulo, Justificado), ]) t_datos = Table(data, [5 * cm, 5 * cm, 4.5 * cm, 3.5 * 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'), ] ) t_datos.hAlign = 'CENTER' elements.append(t_datos) import os # imagen = os.path.join(os.path.dirname(__file__),'static/img/logo.jpg') # imagen2 = os.path.join(os.path.dirname(__file__),'static/img/triangulo.jpg') imagen = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo.png') imagen2 = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo-dgtic.png') def myFirstPage(canvas, doc): canvas.saveState() canvas.drawImage(imagen, 1 * cm, 520, 156, 50) canvas.setFont('Helvetica', 9) canvas.drawImage(imagen2, 14.2 * cm, 25, 80, 40) canvas.drawString(15 * cm, .25 * inch, "Página %d" % (doc.page)) canvas.restoreState() def myLaterPages(canvas, doc): canvas.saveState() # canvas.drawImage(imagen,1*cm,520, 162, 70) canvas.setFont('Helvetica', 9) # canvas.drawImage(imagen2,27.2*cm,-17, 80, 90) canvas.drawString(15 * cm, .25 * inch, "Página %d %s" % (doc.page, pageinfo)) canvas.restoreState() doc.build(elements, onFirstPage=myFirstPage, onLaterPages=myLaterPages) return response @login_required(login_url='/') def folios_patrocinadores(request): # ACTIVIDADES# lista_actividad = registro_actividad.objects.all().filter(usuario__in=[request.user.id]) # EXPOSITORES# lista_actividad = lista_actividad.filter(bandera=True, generar_folio=True) d = date.today() year = d.year expositor = "" # for p in expositor_lista_actividad: # expositor+="Folio: "+"Tab-"+str(year)+"-"+str(p.expositor.id)+"Nombre Expositor: "+p.expositor.nombre 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 = [[ 'FOLIO', 'PATROCINADORES', 'ACTIVIDADES', ]] for p in lista_actividad: for par in p.patrocinadores.all(): data.append([ "TAB-PI-" + str(year) + "-" + str(par.id) + "-" + str(p.id), Paragraph(par.nombre, Justificado), Paragraph(p.titulo, Justificado), ]) t_datos = Table(data, [5 * cm, 5 * cm, 4.5 * cm, 3.5 * 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'), ] ) t_datos.hAlign = 'CENTER' elements.append(t_datos) import os imagen = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo.png') imagen2 = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo-dgtic.png') # imagen = os.path.join(os.path.dirname(__file__),'static/img/logo.jpg') # imagen2 = os.path.join(os.path.dirname(__file__),'static/img/triangulo.jpg') def myFirstPage(canvas, doc): canvas.saveState() canvas.drawImage(imagen, 1 * cm, 520, 156, 50) canvas.setFont('Helvetica', 9) canvas.drawImage(imagen2, 14.2 * cm, 25, 80, 40) canvas.drawString(15 * cm, .25 * inch, "Página %d" % (doc.page)) canvas.restoreState() def myLaterPages(canvas, doc): canvas.saveState() # canvas.drawImage(imagen,1*cm,520, 162, 70) canvas.setFont('Helvetica', 9) # canvas.drawImage(imagen2,27.2*cm,-17, 80, 90) canvas.drawString(15 * cm, .25 * inch, "Página %d %s" % (doc.page, pageinfo)) canvas.restoreState() doc.build(elements, onFirstPage=myFirstPage, onLaterPages=myLaterPages) return response @login_required(login_url='/') def folio_responsable(request): lista_actividad = registro_actividad.objects.all().filter(usuario__in=[request.user.id], bandera=True, generar_folio=True) d = date.today() year = d.year usuario_responsable = User.objects.get(id=request.user.id) 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 = [[ 'FOLIO', 'RESPONSABLE', 'ACTIVIDADES', ]] #Si el responsable tiene actividades confirmadas y evidenciadas if lista_actividad: actividades_responsable = '' for actividad in lista_actividad: actividades_responsable += actividad.titulo + '\n' data.append([ "TAB-RI-" + str(year) + "-" + str(usuario_responsable.id) + "-" + str(lista_actividad.count()), Paragraph(usuario_responsable.first_name, Justificado), Paragraph(actividades_responsable, Justificado), ]) #for p in lista_actividad: # for par in p.patrocinadores.all(): # data.append([ # "TAB-PI-" + str(year) + "-" + str(par.id) + "-" + str(p.id), # Paragraph(par.nombre, Justificado), # Paragraph(p.titulo, Justificado), # ]) t_datos = Table(data, [5 * cm, 5 * cm, 4.5 * cm, 3.5 * 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'), ] ) t_datos.hAlign = 'CENTER' elements.append(t_datos) import os imagen = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo.png') imagen2 = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo-dgtic.png') # imagen = os.path.join(os.path.dirname(__file__),'static/img/logo.jpg') # imagen2 = os.path.join(os.path.dirname(__file__),'static/img/triangulo.jpg') def myFirstPage(canvas, doc): canvas.saveState() canvas.drawImage(imagen, 1 * cm, 520, 156, 50) canvas.setFont('Helvetica', 9) canvas.drawImage(imagen2, 14.2 * cm, 25, 80, 40) canvas.drawString(15 * cm, .25 * inch, "Página %d" % (doc.page)) canvas.restoreState() def myLaterPages(canvas, doc): canvas.saveState() # canvas.drawImage(imagen,1*cm,520, 162, 70) canvas.setFont('Helvetica', 9) # canvas.drawImage(imagen2,27.2*cm,-17, 80, 90) canvas.drawString(15 * cm, .25 * inch, "Página %d %s" % (doc.page, pageinfo)) canvas.restoreState() doc.build(elements, onFirstPage=myFirstPage, onLaterPages=myLaterPages) return response @login_required(login_url='/') def folios_expositores1(request): # ACTIVIDADES# lista_actividad = registro_actividad.objects.all().filter(usuario__in=[request.user.id]) # EXPOSITORES# lista_actividad = lista_actividad.filter(bandera=True, generar_folio=True) d = date.today() year = d.year expositor = "" 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 = [[ 'FOLIO', 'EXPOSITORES', 'ACTIVIDADES', ]] for p in lista_actividad: for exp in p.expositor.all(): data.append([ "TAB-AE-" + str(year) + "-" + str(exp.id) + "-" + str(p.id), Paragraph(exp.nombre, Justificado), Paragraph(p.titulo, Justificado), ]) t_datos = Table(data, [5 * cm, 7 * cm, 4.5 * cm, 3.5 * 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'), ] ) t_datos.hAlign = 'CENTER' elements.append(t_datos) import os imagen = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo.png') imagen2 = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo-dgtic.png') def myFirstPage(canvas, doc): canvas.saveState() canvas.drawImage(imagen, 1 * cm, 520, 156, 50) canvas.setFont('Helvetica', 9) canvas.drawImage(imagen2, 14.2 * cm, 25, 80, 40) canvas.drawString(15 * cm, .25 * inch, "Página %d" % (doc.page)) canvas.restoreState() def myLaterPages(canvas, doc): canvas.saveState() # canvas.drawImage(imagen,1*cm,520, 162, 70) canvas.setFont('Helvetica', 9) # canvas.drawImage(imagen2,27.2*cm,-17, 80, 90) canvas.drawString(15 * cm, .25 * inch, "Página %d %s" % (doc.page, pageinfo)) canvas.restoreState() doc.build(elements, onFirstPage=myFirstPage, onLaterPages=myLaterPages) return response @login_required(login_url='/') def folios_participantes1(request): # ACTIVIDADES# lista_actividad = registro_actividad.objects.all().filter(usuario__in=[request.user.id]) # EXPOSITORES# lista_actividad = lista_actividad.filter(bandera=True, generar_folio=True) d = date.today() year = d.year expositor = "" 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 = [[ 'FOLIO', 'PARTICIPANTES', 'ACTIVIDADES', ]] for p in lista_actividad: for par in p.participantes.all(): data.append([ "TAB-AE-" + str(year) + "-" + str(par.id) + "-" + str(p.id), Paragraph(par.nombre, Justificado), Paragraph(p.titulo, Justificado), ]) t_datos = Table(data, [5 * cm, 7 * cm, 4.5 * cm, 3.5 * 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'), ] ) t_datos.hAlign = 'CENTER' elements.append(t_datos) import os imagen = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo.png') imagen2 = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo-dgtic.png') def myFirstPage(canvas, doc): canvas.saveState() canvas.drawImage(imagen, 1 * cm, 520, 156, 50) canvas.setFont('Helvetica', 9) canvas.drawImage(imagen2, 14.2 * cm, 25, 80, 40) canvas.drawString(15 * cm, .25 * inch, "Página %d" % (doc.page)) canvas.restoreState() def myLaterPages(canvas, doc): canvas.saveState() # canvas.drawImage(imagen,1*cm,520, 162, 70) canvas.setFont('Helvetica', 9) # canvas.drawImage(imagen2,27.2*cm,-17, 80, 90) canvas.drawString(15 * cm, .25 * inch, "Página %d %s" % (doc.page, pageinfo)) canvas.restoreState() doc.build(elements, onFirstPage=myFirstPage, onLaterPages=myLaterPages) return response @login_required(login_url='/') def folios_organizadores1(request): # ACTIVIDADES# lista_actividad = registro_actividad.objects.all().filter(usuario__pk=request.user.id) # EXPOSITORES# lista_actividad = lista_actividad.filter(bandera=True, generar_folio=True) d = date.today() year = d.year expositor = "" # for p in expositor_lista_actividad: # expositor+="Folio: "+"Tab-"+str(year)+"-"+str(p.expositor.id)+"Nombre Expositor: "+p.expositor.nombre 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 = [[ 'FOLIO', 'ORGANIZADORES', 'ACTIVIDADES', ]] aux = "" for p in lista_actividad: responsableid = 0 responablenombre = '' if p.responsable_actividad is None: responsableid = 0 responablenombre = 'sin responsable' else: responsableid = p.responsable_actividad.id responablenombre = p.responsable_actividad.nombre data.append([ "TAB-OI-" + str(year) + "-" + str(responsableid) + "-" + str(p.id), Paragraph(responablenombre, Justificado), Paragraph(p.titulo, Justificado), ]) for par in p.organizadores.all(): data.append([ "TAB-OI-" + str(year) + "-" + str(par.id) + "-" + str(p.id), Paragraph(par.nombre, Justificado), Paragraph(p.titulo, Justificado), ]) t_datos = Table(data, [5 * cm, 5 * cm, 4.5 * cm, 3.5 * 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'), ] ) t_datos.hAlign = 'CENTER' elements.append(t_datos) import os imagen = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo.png') imagen2 = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo-dgtic.png') def myFirstPage(canvas, doc): canvas.saveState() canvas.drawImage(imagen, 1 * cm, 520, 156, 50) canvas.setFont('Helvetica', 9) canvas.drawImage(imagen2, 14.2 * cm, 25, 80, 40) canvas.drawString(15 * cm, .25 * inch, "Página %d" % (doc.page)) canvas.restoreState() def myLaterPages(canvas, doc): canvas.saveState() # canvas.drawImage(imagen,1*cm,520, 162, 70) canvas.setFont('Helvetica', 9) # canvas.drawImage(imagen2,27.2*cm,-17, 80, 90) canvas.drawString(15 * cm, .25 * inch, "Página %d %s" % (doc.page, pageinfo)) canvas.restoreState() doc.build(elements, onFirstPage=myFirstPage, onLaterPages=myLaterPages) return response @login_required(login_url='/') def folios_patrocinadores1(request): # ACTIVIDADES# lista_actividad = registro_actividad.objects.all().filter(usuario__in=[request.user.id]) # EXPOSITORES# lista_actividad = lista_actividad.filter(bandera=True, generar_folio=True) d = date.today() year = d.year expositor = "" # for p in expositor_lista_actividad: # expositor+="Folio: "+"Tab-"+str(year)+"-"+str(p.expositor.id)+"Nombre Expositor: "+p.expositor.nombre 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 = [[ 'FOLIO', 'PATROCINADORES', 'ACTIVIDADES', ]] aux = "" for p in lista_actividad: for pat in p.patrocinadores.all(): data.append([ "TAB-PE-" + str(year) + "-" + str(pat.id) + "-" + str(p.id), Paragraph(pat.nombre, Justificado), Paragraph(p.titulo, Justificado), ]) t_datos = Table(data, [5 * cm, 5 * cm, 4.5 * cm, 3.5 * 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'), ] ) t_datos.hAlign = 'CENTER' elements.append(t_datos) import os imagen = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo.png') imagen2 = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo-dgtic.png') def myFirstPage(canvas, doc): canvas.saveState() canvas.drawImage(imagen, 1 * cm, 520, 156, 50) canvas.setFont('Helvetica', 9) canvas.drawImage(imagen2, 14.2 * cm, 25, 80, 40) canvas.drawString(15 * cm, .25 * inch, "Página %d" % (doc.page)) canvas.restoreState() def myLaterPages(canvas, doc): canvas.saveState() # canvas.drawImage(imagen,1*cm,520, 162, 70) canvas.setFont('Helvetica', 9) # canvas.drawImage(imagen2,27.2*cm,-17, 80, 90) canvas.drawString(15 * cm, .25 * inch, "Página %d %s" % (doc.page, pageinfo)) canvas.restoreState() doc.build(elements, onFirstPage=myFirstPage, onLaterPages=myLaterPages) return response def reportes(request): # ACTIVIDADES# lista_actividad = registro_actividad.objects.all().filter(usuario__in=[request.user.id]) # EXPOSITORES# # lista_actividad = lista_actividad.filter() d = date.today() year = d.year expositor = "" # for p in expositor_lista_actividad: # expositor+="Folio: "+"Tab-"+str(year)+"-"+str(p.expositor.id)+"Nombre Expositor: "+p.expositor.nombre 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 = [[ 'Actividad', 'Tipo de Actividad', 'Tema', 'Fecha y Hora', 'Lugar', 'Municipio', 'Direccion', 'Descripción', ]] aux = "" for p in lista_actividad: data.append([ Paragraph(p.titulo, Justificado), Paragraph(p.tipo_actividad.nombre, Justificado), Paragraph(p.tema, Justificado), Paragraph(str("Fecha:" + str(p.fecha.fecha) + " Hora:" + str(p.hora)), Justificado), Paragraph(p.lugar, Justificado), Paragraph(p.municipio.nombre, Justificado), Paragraph(p.direccion, Justificado), Paragraph(p.descripcion, Justificado), ]) t_datos = Table(data, [3 * cm, 3 * cm, 3 * cm, 3 * cm, 3 * cm, 3 * cm, 3 * cm, 3 * cm, 3 * 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'), ] ) t_datos.hAlign = 'CENTER' elements.append(t_datos) import os imagen = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo.png') imagen2 = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo-dgtic.png') def myFirstPage(canvas, doc): canvas.saveState() canvas.drawImage(imagen, 1 * cm, 520, 156, 50) canvas.setFont('Helvetica', 9) canvas.drawImage(imagen2, 14.2 * cm, 25, 80, 40) canvas.drawString(15 * cm, .25 * inch, "Página %d" % (doc.page)) canvas.restoreState() def myLaterPages(canvas, doc): canvas.saveState() # canvas.drawImage(imagen,1*cm,520, 162, 70) canvas.setFont('Helvetica', 9) # canvas.drawImage(imagen2,27.2*cm,-17, 80, 90) canvas.drawString(15 * cm, .25 * inch, "Página %d %s" % (doc.page, pageinfo)) canvas.restoreState() doc.build(elements, onFirstPage=myFirstPage, onLaterPages=myLaterPages) return response @login_required(login_url='/') def institucion_(request): try: ins = institucion.objects.get(usuario_id=request.user.id) if(ins.participacion.participacion.id == 1): nombre_institucion = institucion.objects.filter(municipio=ins.municipio) else: nombre_institucion = institucion.objects.filter(usuario__in=[request.user.id]) return render_to_response('institucion.html', {'nombre_institucion': nombre_institucion, 'institucion': ins}, context_instance=RequestContext(request)) except institucion.DoesNotExist: return render_to_response('institucion.html', context_instance=RequestContext(request)) @login_required(login_url='/') def edit_institucion(request, id_institucion): municipios = cat_municipio.objects.all() nombre_institucion = institucion.objects.filter(usuario__in=[request.user.id]) institucion_admin = institucion.objects.filter(id=id_institucion) f = "" if request.method == 'GET': d = institucion.objects.get(pk=id_institucion) formulario = RegistroInsticion( initial={'nombre': d.nombre, 'direccion': d.direccion, 'poblacion': d.poblacion, 'municipio': d.municipio, 'codigo_postal': d.codigo_postal, 'telefono': d.telefono, 'extencion': d.extencion, # 'correo': d.correo, 'pagina_web': d.pagina_web, 'fecha_registro': d.fecha_registro, 'fax': d.fax, 'tipo_institucion': d.tipo_institucion, 'parti': d.participacion}) elif request.method == 'POST': formulario = RegistroInsticion(request.POST) if formulario.is_valid(): d = institucion.objects.get(pk=id_institucion) d.nombre = formulario.cleaned_data['nombre'] d.direccion = formulario.cleaned_data['direccion'] d.poblacion = formulario.cleaned_data['poblacion'] d.municipio = formulario.cleaned_data['municipio'] d.codigo_postal = formulario.cleaned_data['codigo_postal'] d.telefono = formulario.cleaned_data['telefono'] d.extencion = formulario.cleaned_data['extencion'] # d.correo = formulario.cleaned_data['correo'] d.pagina_web = formulario.cleaned_data['pagina_web'] d.fecha_registro = formulario.cleaned_data['fecha_registro'] d.fax = formulario.cleaned_data['fax'] d.tipo_institucion = formulario.cleaned_data['tipo_institucion'] d.save() return HttpResponseRedirect('/registro_de_actividad/') else: formulario = RegistroInsticion() return render_to_response('edit_institucion.html', {'municipios': municipios, 'institucion_admin': institucion_admin, 'cat_municipio': 'active', 'formulario': formulario, 'nombre_institucion': nombre_institucion, 'request': request, 'parti': d.participacion}, context_instance=RequestContext(request)) @login_required(login_url='/') def agregar_expositor(request, id_actividad): municipios = cat_municipio.objects.all() nombre_institucion = institucion.objects.filter(usuario__pk=request.user.id) lista_actividad = registro_actividad.objects.filter(id=id_actividad, usuario__pk=request.user.id).distinct() bscr = '' if 'bscr' in request.GET: bscr = request.GET.get('bscr') lista_actividad = lista_actividad.filter( Q(titulo__icontains=bscr) | Q(tipo_actividad__nombre__icontains=bscr) | Q(tema__icontains=bscr) | Q(responsable_actividad__nombre__icontains=bscr) | Q(expositor__nombre__icontains=bscr) ) rpp = 10 # Show 10 contacts per page if 'rpp' in request.GET: rpp = request.GET.get('rpp') paginator = Paginator(lista_actividad, rpp) page = request.GET.get('page') try: contacts = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. contacts = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. contacts = paginator.page(paginator.num_pages) Conferencia = "Conferencia" a = "Conferencia" return render_to_response('registro_expositor.html', {'municipios': municipios, 'a': a, 'Conferencia': Conferencia, 'rpp': rpp, 'bscr': bscr, 'contacts': contacts, 'nombre_institucion': nombre_institucion, 'request': request, 'm_actividades': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def add_expositor(request, id_actividad): municipios = cat_municipio.objects.all() lista_expositores = cat_personas.objects.values('nombre').distinct('nombre').order_by('nombre') if request.method == 'POST': formulario2 = RegistroExpositor(request.POST) if formulario2.is_valid(): expositor_ = request.POST.get('nombre') consulta_expo = cat_personas.objects.filter(nombre__icontains=' '.join(expositor_.split())) var = "" exp_id = 0 for ep in consulta_expo: var = ep.nombre exp_id = ep.id expositor_ = textNormalized(texto=expositor_)#TODO. Validando si existe pero aplicando eliminacion de espacios, acentos var = textNormalized(texto=var)#TODO. Validando si existe pero aplicando eliminacion de espacios, acentos if expositor_ == var: consulta = registro_actividad.objects.get(pk=id_actividad) consulta.expositor.add(exp_id) consulta.save() messages.success(request, 'EL EXPOSITOR ASOCIADO CORRECTAMENTE A LA ACTIVIDAD') return HttpResponseRedirect('/agregar_expositor/'+str(id_actividad)+'/') else: expositor_ = request.POST.get('nombre') exp = cat_personas() exp.nombre = expositor_ exp.save() a = exp.id consulta = registro_actividad.objects.get(pk=id_actividad) actividad_id = consulta.id consulta.expositor.add(a) consulta.save() messages.success(request, 'EXPOSITOR REGISTRADO CORRECTAMENTE Y ASOCIADO A LA ACTIVIDAD') return HttpResponseRedirect('/agregar_expositor/'+str(id_actividad)+'/') else: messages.error(request, 'FALTAN DATOS EN EL FORMULARIO') else: formulario2 = RegistroExpositor() return render_to_response('add_expositor.html', {'municipios': municipios, 'id_actividad': id_actividad, 'request': request, 'formulario2': formulario2, 'lista_expositores': lista_expositores}, context_instance=RequestContext(request)) @login_required(login_url='/') def borrar_expositor(request, id_actividad, id_expositor): url = request.META['HTTP_REFERER'] url_registro = 'http://' + request.META['HTTP_HOST'] + '/registro_de_actividad/' consul_expositor = registro_actividad.objects.get(id=id_actividad) consul_expositor.expositor.remove(id_expositor) if url.startswith(url_registro): return HttpResponseRedirect('/registro_de_actividad/') else: return HttpResponseRedirect('/agregar_expositor/' + id_actividad) @login_required(login_url='/') def borrar_imagen(request, id): try: consul_imagen = imagen_registro_actividad.objects.get(id=id) consul_imagen.delete() a = simplejson.dumps({'status': 'success', 'id': int(id)}) return HttpResponse(a, content_type='application/json') except: a = simplejson.dumps({'status': 'error', 'id': int(id)}) return HttpResponse(a, content_type='application/json') @login_required(login_url='/') def agregar_participantes(request, id_actividad): municipios = cat_municipio.objects.all() nombre_institucion = institucion.objects.filter(usuario__pk=request.user.id) lista_actividad = registro_actividad.objects.filter(id=id_actividad, usuario__pk=request.user.id).distinct() bscr = '' if 'bscr' in request.GET: bscr = request.GET.get('bscr') lista_actividad = lista_actividad.filter( Q(titulo__icontains=bscr) | Q(tipo_actividad__nombre__icontains=bscr) | Q(tema__icontains=bscr) | Q(responsable_actividad__nombre__icontains=bscr) | Q(expositor__nombre__icontains=bscr) ) rpp = 10 # Show 10 contacts per page if 'rpp' in request.GET: rpp = request.GET.get('rpp') paginator = Paginator(lista_actividad, rpp) page = request.GET.get('page') try: contacts = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. contacts = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. contacts = paginator.page(paginator.num_pages) return render_to_response('registro_participantes.html', {'municipios': municipios, 'rpp': rpp, 'bscr': bscr, 'contacts': contacts, 'nombre_institucion': nombre_institucion, 'request': request, 'm_actividades': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def add_participantes(request, id_actividad): municipios = cat_municipio.objects.all() lista_expositores = cat_personas.objects.values('nombre').distinct('nombre').order_by('nombre') if request.method == 'POST': formulario2 = RegistroParticipantes(request.POST) if formulario2.is_valid(): participantes_ = request.POST.get('nombre') consulta_participantes = cat_personas.objects.filter(nombre__icontains=' '.join(participantes_.split())) var = "" part_id = 0 for ep in consulta_participantes: var = ep.nombre part_id = ep.id participantes_ = textNormalized(texto=participantes_)#TODO. Validando si existe pero aplicando eliminacion de espacios, acentos var = textNormalized(texto=var)#TODO. Validando si existe pero aplicando eliminacion de espacios, acentos if participantes_ == var: consulta = registro_actividad.objects.get(pk=id_actividad) consulta.participantes.add(part_id) consulta.save() messages.success(request, 'EL PARTICIPANTE ASOCIADO CORRECTAMENTE A LA ACTIVIDAD') return HttpResponseRedirect('/agregar_participantes/'+str(id_actividad)+'/') else: participantes_ = request.POST.get('nombre') part = cat_personas() part.nombre = participantes_ part.save() a = part.id consulta = registro_actividad.objects.get(pk=id_actividad) actividad_id = consulta.id consulta.participantes.add(a) consulta.save() messages.success(request, 'PARTICIPANTE REGISTRADO CORRECTAMENTE Y ASOCIADO A LA ACTIVIDAD') return HttpResponseRedirect('/agregar_participantes/'+str(id_actividad)+'/') else: messages.error(request, 'FALTAN DATOS EN EL FORMULARIO') else: formulario2 = RegistroParticipantes() return render_to_response('add_participantes.html', {'municipios': municipios, 'id_actividad': id_actividad, 'formulario2': formulario2, 'lista_expositores': lista_expositores, 'request': request}, context_instance=RequestContext(request)) @login_required(login_url='/') def borrar_participante(request, id_actividad, id_participante): url = request.META['HTTP_REFERER'] url_registro = 'http://'+request.META['HTTP_HOST'] + '/registro_de_actividad/' consul_participante = registro_actividad.objects.get(id=id_actividad) consul_participante.participantes.remove(id_participante) if url.startswith(url_registro): return HttpResponseRedirect('/registro_de_actividad/') else: return HttpResponseRedirect('/agregar_participantes/' + id_actividad) @login_required(login_url='/') def agregar_organizadores(request, id_actividad): municipios = cat_municipio.objects.all() nombre_institucion = institucion.objects.filter(usuario__pk=request.user.id) lista_actividad = registro_actividad.objects.filter(id=id_actividad, usuario__pk=request.user.id).distinct() bscr = '' if 'bscr' in request.GET: bscr = request.GET.get('bscr') lista_actividad = lista_actividad.filter( Q(titulo__icontains=bscr) | Q(tipo_actividad__nombre__icontains=bscr) | Q(tema__icontains=bscr) | Q(responsable_actividad__nombre__icontains=bscr) | Q(expositor__nombre__icontains=bscr) ) rpp = 10 # Show 10 contacts per page if 'rpp' in request.GET: rpp = request.GET.get('rpp') paginator = Paginator(lista_actividad, rpp) page = request.GET.get('page') try: contacts = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. contacts = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. contacts = paginator.page(paginator.num_pages) return render_to_response('registro_organizadores.html', {'municipios': municipios, 'rpp': rpp, 'bscr': bscr, 'contacts': contacts, 'nombre_institucion': nombre_institucion, 'request': request, 'm_actividades': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def add_organizadores(request, id_actividad): municipios = cat_municipio.objects.all() lista_expositores = cat_personas.objects.values('nombre').distinct('nombre').order_by('nombre') if request.method == 'POST': formulario2 = RegistroOrganizador(request.POST) if formulario2.is_valid(): organizador_ = request.POST.get('nombre') consulta_organizador = cat_personas.objects.filter(nombre__icontains=' '.join(organizador_.split())) var = "" org_id = 0 for ep in consulta_organizador: var = ep.nombre org_id = ep.id organizador_ = textNormalized(texto=organizador_)#TODO. Validando si existe pero aplicando eliminacion de espacios, acentos var = textNormalized(texto=var)#TODO. Validando si existe pero aplicando eliminacion de espacios, acentos if organizador_ == var: consulta = registro_actividad.objects.get(pk=id_actividad) consulta.organizadores.add(org_id) consulta.save() messages.success(request, 'EL ORGANIZADOR ASOCIADO CORRECTAMENTE A LA ACTIVIDAD') return HttpResponseRedirect('/agregar_organizadores/'+str(id_actividad)+'/') else: organizador_ = request.POST.get('nombre') org = cat_personas() org.nombre = organizador_ org.save() a = org.id consulta = registro_actividad.objects.get(pk=id_actividad) actividad_id = consulta.id consulta.organizadores.add(a) consulta.save() messages.success(request, 'ORGANIZADOR REGISTRADO CORRECTAMENTE Y ASOCIADO A LA ACTIVIDAD') return HttpResponseRedirect('/agregar_organizadores/'+str(id_actividad)+'/') else: messages.error(request, 'FALTAN DATOS EN EL FORMULARIO') else: formulario2 = RegistroOrganizador() return render_to_response('add_organizadores.html', {'municipios': municipios, 'formulario2': formulario2, 'id_actividad': id_actividad, 'lista_expositores': lista_expositores, 'request': request}, context_instance=RequestContext(request)) @login_required(login_url='/') def borrar_organizador(request, id_actividad, id_organizador): url = request.META['HTTP_REFERER'] url_registro = 'http://' + request.META['HTTP_HOST'] + '/registro_de_actividad/' consul_organizadores = registro_actividad.objects.get(id=id_actividad) consul_organizadores.organizadores.remove(id_organizador) if url.startswith(url_registro): return HttpResponseRedirect('/registro_de_actividad/') else: return HttpResponseRedirect('/agregar_organizadores/' + id_actividad) @login_required(login_url='/') def agregar_patrocinadores(request, id_actividad): municipios = cat_municipio.objects.all() nombre_institucion = institucion.objects.filter(usuario__pk=request.user.id) lista_actividad = registro_actividad.objects.filter(id=id_actividad, usuario__pk=request.user.id).distinct() bscr = '' if 'bscr' in request.GET: bscr = request.GET.get('bscr') lista_actividad = lista_actividad.filter( Q(titulo__icontains=bscr) | Q(tipo_actividad__nombre__icontains=bscr) | Q(tema__icontains=bscr) | Q(responsable_actividad__nombre__icontains=bscr) | Q(expositor__nombre__icontains=bscr) ) rpp = 10 # Show 10 contacts per page if 'rpp' in request.GET: rpp = request.GET.get('rpp') paginator = Paginator(lista_actividad, rpp) page = request.GET.get('page') try: contacts = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. contacts = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. contacts = paginator.page(paginator.num_pages) return render_to_response('registro_patrosinador.html', {'municipios': municipios, 'rpp': rpp, 'bscr': bscr, 'contacts': contacts, 'nombre_institucion': nombre_institucion, 'request': request, 'm_actividades': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def add_patrocinadores(request, id_actividad): municipios = cat_municipio.objects.all() lista_expositores = cat_personas.objects.values('nombre').distinct('nombre').order_by('nombre') if request.method == 'POST': formulario2 = RegistroPatrosinador(request.POST) if formulario2.is_valid(): patrocinador_ = request.POST.get('nombre') consulta_organizador = cat_personas.objects.filter(nombre__icontains=' '.join(patrocinador_.split())) var = "" patr_id = 0 for ep in consulta_organizador: var = ep.nombre patr_id = ep.id patrocinador_ = textNormalized(texto=patrocinador_)#TODO. Validando si existe pero aplicando eliminacion de espacios, acentos var = textNormalized(texto=var)#TODO. Validando si existe pero aplicando eliminacion de espacios, acentos if patrocinador_ == var: consulta = registro_actividad.objects.all().get(pk=id_actividad) consulta.patrocinadores.add(patr_id) consulta.save() messages.success(request, 'EL PATROCINADOR ASOCIADO CORRECTAMENTE A LA ACTIVIDAD') return HttpResponseRedirect('/agregar_patrocinadores/'+str(id_actividad)+'/') else: patrocinador_ = request.POST.get('nombre') patr = cat_personas() patr.nombre = patrocinador_ patr.save() a = patr.id consulta = registro_actividad.objects.get(pk=id_actividad) actividad_id = consulta.id consulta.patrocinadores.add(a) consulta.save() messages.success(request, 'PATROCINADOR REGISTRADO CORRECTAMENTE Y ASOCIADO A LA ACTIVIDAD') return HttpResponseRedirect('/agregar_patrocinadores/'+str(id_actividad)+'/') else: messages.error(request, 'FALTAN DATOS EN EL FORMULARIO') else: formulario2 = RegistroPatrosinador() return render_to_response('add_patrosinador.html', {'municipios': municipios, 'id_actividad': id_actividad, 'formulario2': formulario2, 'lista_expositores': lista_expositores, 'request': request}, context_instance=RequestContext(request)) @login_required(login_url='/') def borrar_patrocinadores(request, id_actividad, id_patrocinador): url = request.META['HTTP_REFERER'] url_registro = 'http://' + request.META['HTTP_HOST'] + '/registro_de_actividad/' consul_patrocinadores = registro_actividad.objects.get(id=id_actividad) consul_patrocinadores.patrocinadores.remove(id_patrocinador) if url.startswith(url_registro): return HttpResponseRedirect('/registro_de_actividad/') else: return HttpResponseRedirect('/agregar_patrocinadores/' + id_actividad) @login_required(login_url='/') def borrar(request, id_borrar): registro_actividad.objects.filter(id=id_borrar).delete() return HttpResponseRedirect('/registro_de_actividad/') @login_required(login_url='/') def borrar_institucion(request, borrar_institucion): institucion.objects.filter(id=borrar_institucion).delete() return HttpResponseRedirect('/principal_administrador/') @login_required(login_url='/') def logout_user(request): response = logout(request) return HttpResponseRedirect('/index') def send_email(request): correo = request.POST.get('wizard[email]') consulta_user = User.objects.filter(email=correo) new_password = User.objects.make_random_password(length=10) idi = 0 name = "" email = "" for p in consulta_user: idi = p.id name = p.username email = p.email try: usuario = User.objects.get(pk=idi) except User.DoesNotExist: return HttpResponse('El correo no existe, o Verifique que lo escribio correctamente') raise Http404 usuario.set_password(new_password) usuario.save() msj = str('Tu cuenta de usuario es:' + name + '. Su nueva contrasenia es: ' + new_password + '. Por su seguridad se recomienda cambiarla, una vez que haya accedido.') var_email = str(email) try: resultado = sourceSendMail(email=var_email, finalidad=1, cuerpo_aviso=msj) messages.success(request, resultado[0] + '.' + resultado[1]) return HttpResponseRedirect('/login_/') except Exception as e: return HttpResponseRedirect('/index/') @login_required(login_url='/') def list_instituciones(request): nombre_institucion = institucion.objects.filter(usuario__in=[request.user.id]) user = request.user.id mun_ins = institucion.objects.get(usuario=user) municipio = mun_ins.municipio instituciones = institucion.objects.filter(municipio__nombre=municipio) bscr = '' if 'bscr' in request.GET: bscr = request.GET.get('bscr') instituciones = institucion.objects.filter(nombre__icontains=bscr) rpp = 10 # Show 10 contacts per page if 'rpp' in request.GET: rpp = request.GET.get('rpp') paginator = Paginator(instituciones, rpp) page = request.GET.get('page') try: contacts = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. contacts = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. contacts = paginator.page(paginator.num_pages) return render_to_response('lista_instituciones.html', {'request': request, 'nombre_institucion': nombre_institucion, 'rpp': rpp, 'bscr': bscr, 'contacts': contacts, 'instituciones': instituciones}, context_instance=RequestContext(request)) @login_required(login_url='/') def folios_institucionales(request, id_institucion): instituto = institucion.objects.get(pk=id_institucion) user = instituto.usuario municipio_ = instituto.municipio # ACTIVIDADES# lista_actividad = registro_actividad.objects.filter(usuario=user) # EXPOSITORES# lista_actividad = lista_actividad.filter(bandera=True, generar_folio=True) personas = cat_personas.objects.all() expositores_ = personas.filter(id__in=(lista_actividad.values_list('expositor'))) participantes_ = personas.filter(id__in=(lista_actividad.values_list('participantes'))) responsable_actividad_ = personas.filter(id__in=(lista_actividad.values_list('responsable_actividad'))) organizador_ = personas.filter(id__in=(lista_actividad.values_list('organizadores'))) patrocinadores_ = personas.filter(id__in=(lista_actividad.values_list('patrocinadores'))) d = date.today() year = d.year expositor = "" 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 = [[ 'FOLIOS', 'Nombre', ]] for p in expositores_: data.append([ "TAB-AI-" + str(year) + "-" + str(p.id), p.nombre, ]) for p in participantes_.exclude(id__in=(expositores_)): data.append([ "TAB-AI-" + str(year) + "-" + str(p.id), p.nombre, ]) for p in responsable_actividad_.exclude(id__in=(participantes_)): data.append([ "TAB-OI-" + str(year) + "-" + str(p.id), p.nombre, ]) for p in organizador_.exclude(id__in=(responsable_actividad_)): data.append([ "TAB-OI-" + str(year) + "-" + str(p.id), p.nombre, ]) for p in patrocinadores_.exclude(id__in=(organizador_)): data.append([ "TAB-PI-" + str(year) + "-" + str(p.id), p.nombre, ]) t_datos = Table(data, [5 * cm, 7 * cm, 4.5 * cm, 3.5 * 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'), ] ) t_datos.hAlign = 'CENTER' elements.append(t_datos) import os imagen = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo.png') imagen2 = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/logo-dgtic.png') def myFirstPage(canvas, doc): canvas.saveState() canvas.drawImage(imagen, 1 * cm, 520, 156, 50) canvas.setFont('Helvetica', 9) canvas.drawString(6.75 * cm, 19.5 * cm, "Institucion: " + str(instituto)) canvas.drawString(18.75 * cm, 19.5 * cm, "Municipio: " + str(municipio_)) canvas.drawImage(imagen2, 14.2 * cm, 25, 80, 40) canvas.drawString(15 * cm, .25 * inch, "Página %d" % (doc.page)) canvas.restoreState() def myLaterPages(canvas, doc): canvas.saveState() # canvas.drawImage(imagen,1*cm,520, 162, 70) canvas.setFont('Helvetica', 9) # canvas.drawImage(imagen2,27.2*cm,-17, 80, 90) canvas.drawString(15 * cm, .25 * inch, "Página %d %s" % (doc.page, pageinfo)) canvas.restoreState() doc.build(elements, onFirstPage=myFirstPage, onLaterPages=myLaterPages) return response # VALIDACION DE USUARIO CON AJAX# @csrf_exempt def ajax_user_search(request): results = "" if request.is_ajax(): q = request.POST['q'] # q = request.GET.get( 'q' ) if q is not None: results = User.objects.filter(username=q).order_by('username') return render_to_response('results.html', {'results': results}, context_instance=RequestContext(request)) @csrf_exempt def ajax_institucion(request): instituto = "" if request.is_ajax(): i = request.POST['i'] # q = request.GET.get( 'q' ) if i is not None: instituto = institucion.objects.filter(nombre=i).order_by('nombre') return render_to_response('results_instituto.html', {'instituto': instituto}, context_instance=RequestContext(request)) import json from django.utils import simplejson from django.core import serializers @csrf_exempt def ajax_participacion(request): if request.is_ajax(): participacion_ = "" if request.method == 'GET': respuest = "este se envio via get" elif request.method == 'POST': id_participacion = request.POST['id_participacion'] tipo = cat_tipo_participacion.objects.all().get(id=id_participacion) data = serializers.serialize("json", cat_tipo_participacion.objects.all().filter(id=id_participacion), fields=('id', 'nombre')) return HttpResponse(data, mimetype="application/javascript") @csrf_exempt def ajax__roles_involucrados(request): if request.is_ajax(): if request.method == 'POST': inv = request.POST['inv'] tipo = tipo_actividad_involucrados.objects.filter(id_tipo_actividad=inv) lista = [] for i in tipo: lista.append(i.id_involucrado) p = serializers.serialize("json", lista) return HttpResponse(p, content_type='applicacion/json') @csrf_exempt def ajax__path(request): if request.is_ajax(): a = simplejson.dumps({'path': request.path }) return HttpResponse(a, content_type='applicacion/json') @csrf_exempt def ajax__pers(request): if request.is_ajax(): id = request.GET['id'] reg = registro_actividad.objects.get(id=id) regs = reg.participantes.all() lista = [] for r in regs: dic = {} dic['id'] = r.id dic['nombre'] = r.nombre dic['rol'] = 'Participante' lista.append(dic) regs = reg.patrocinadores.all() for r in regs: dic = {} dic['id'] = r.id dic['nombre'] = r.nombre dic['rol'] = 'Patrocinador' lista.append(dic) regs = reg.expositor.all() for r in regs: dic = {} dic['id'] = r.id dic['nombre'] = r.nombre dic['rol'] = 'Expositor' lista.append(dic) regs = reg.organizadores.all() for r in regs: dic = {} dic['id'] = r.id dic['nombre'] = r.nombre dic['rol'] = 'Organizador' lista.append(dic) a = simplejson.dumps(lista) return HttpResponse(a, content_type='applicacion/json') # def editarusuario(request, usuario_id): # instanciausuario = User.objects.get(pk=usuario_id) # if request.method == 'POST': # form = Permisos2Form(request.POST, instance=instanciausuario) # formcorreo = CorreoForm(request.POST) # if form.is_valid() and formcorreo.is_valid(): # instanciausuario.username = form.cleaned_data['username'] # instanciausuario.first_name = form.cleaned_data['first_name'] # instanciausuario.last_name = form.cleaned_data['last_name'] # instanciausuario.email = formcorreo.cleaned_data['correo'] # instanciausuario.set_password(request.POST['password1']) # instanciausuario.save() # # messages.success(request, 'Se actualizo exitosamente el registro') # return HttpResponseRedirect('/mostrarusuario') # else: # form = Permisos2Form(instance=instanciausuario) # formcorreo = CorreoForm() # formcorreo.fields['correo'].initial = instanciausuario.email # consultausuario = User.objects.exclude(pk=1) # return render_to_response('usuarioform.html', # {'form': form, 'formcorreo': formcorreo, 'operacion': 'Editar', 'datos': consultausuario, # 'user_menu': 'active', }, context_instance=RequestContext(request)) def editarusuario(request, usuario_id): instanciausuario = User.objects.get(pk=usuario_id) mun = cat_municipio.objects.all() if request.method == 'POST': form = Permisos2Form(request.POST, instance=instanciausuario) formcorreo = CorreoForm(request.POST) if form.is_valid() and formcorreo.is_valid(): instanciausuario.username = form.cleaned_data['username'] instanciausuario.first_name = form.cleaned_data['first_name'] instanciausuario.last_name = form.cleaned_data['last_name'] instanciausuario.email = formcorreo.cleaned_data['correo'] instanciausuario.set_password(request.POST['password1']) instanciausuario.save() messages.success(request, 'Se actualizo exitosamente el registro') return HttpResponseRedirect('/mostrarusuario') else: form = Permisos2Form(instance=instanciausuario) formcorreo = CorreoForm() formcorreo.fields['correo'].initial = instanciausuario.email consultausuario = User.objects.exclude(pk=1) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'formcorreo': formcorreo, 'operacion': 'Editar', 'datos': consultausuario, 'user_menu': 'active', 'lista_usuario': 'active', 'editar_lista_usuario': True }, context_instance=RequestContext(request)) def mostrarusuario(request): consultausuario = User.objects.exclude(pk=1) municipios = cat_municipio.objects.all() bscr = '' if 'bscr' in request.GET: bscr = request.GET.get('bscr') consultausuario = consultausuario.filter( Q(username__icontains=bscr) | Q(first_name__icontains=bscr) | Q(last_name__icontains=bscr) ) rpp = 10 # Show 10 contacts per page if 'rpp' in request.GET: rpp = request.GET.get('rpp') paginator = Paginator(consultausuario, rpp) page = request.GET.get('page') try: paginador = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. paginador = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. paginador = paginator.page(paginator.num_pages) diccionario = { 'municipios' : municipios, 'operacion': 'Mostrar Todos', 'datos': paginador, 'user_menu': 'active', 'rpp': rpp, 'bscr': bscr, 'lista_usuario':'active' } return render_to_response('usuariomostrar.html', diccionario, context_instance=RequestContext(request)) def editarresponsable(request, id_responsable): instanciaresponsable = cat_personas.objects.get(pk=id_responsable) if request.method == 'POST': form = EditarResponsableForm(request.POST) if form.is_valid(): instanciaresponsable.nombre = form.cleaned_data['nombre_responsable'] instanciaresponsable.telefono = form.cleaned_data['telefono_responsable'] instanciaresponsable.extencion = form.cleaned_data['extencion_responsable'] instanciaresponsable.celular = form.cleaned_data['celular'] instanciaresponsable.correo = form.cleaned_data['correo_responsable'] instanciaresponsable.save() messages.success(request, 'Se actualizo exitosamente el registro') return HttpResponseRedirect('/registro_de_actividad') else: messages.error(request, 'corrija los siguientes errores') else: form = EditarResponsableForm() form.fields['nombre_responsable'].initial = instanciaresponsable.nombre form.fields['telefono_responsable'].initial = instanciaresponsable.telefono form.fields['extencion_responsable'].initial = instanciaresponsable.extencion form.fields['celular'].initial = instanciaresponsable.celular form.fields['correo_responsable'].initial = instanciaresponsable.correo return render_to_response('editarresponsable.html', {'form': form, 'cat_municipio': 'active'}, context_instance=RequestContext(request)) class Reporte_lideresView(View, JasperMix): def get(self,request,*args,**kwargs): self.generateReport('/ccytet/reportes/reporte_organizadores_municipales',settings.MEDIA_ROOT+'/reporte_organizadores_municipales.pdf',{},'pdf') return HttpResponseRedirect('/media/reporte_organizadores_municipales'+'.pdf') class CertificadoView(View, JasperMix): def get(self,request, *args, **kwargs): id_personas = kwargs.get('id_personas') self.generateReport('/ccytet/reportes/reconocimiento',settings.MEDIA_ROOT+'/reconocimiento.pdf',{'id_personas': id_personas},'pdf') return HttpResponseRedirect('/media/reconocimiento'+'.pdf') class VideoView(View): def get(self, request): return render_to_response('video.html') def tutoriales(request): return render_to_response('tutoriales.html', RequestContext(request)) @login_required(login_url='/') def ListaBannerInicioView(request): banner = BannerInicio.objects.all() mun = cat_municipio.objects.all() return render_to_response('banner.html', {'request': request, 'municipios': mun, 'banner': banner, 'lista': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def EditarBannerInicioView(request, pk): mun = cat_municipio.objects.all() bannerImagen = BannerInicio.objects.get(pk=pk) if request.method == 'GET': form = BannerInicioForm(instance=bannerImagen) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'editar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = BannerInicioForm(request.POST, request.FILES, instance=bannerImagen) if form.is_valid(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'Se actualizo exitosamente el Banner correctamente') return HttpResponseRedirect('/update/banner_inicio/'+ pk) else: form = BannerInicioForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'editar': True, 'editar_inico': 'active', 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def ListaCatFechaView(request): fecha = cat_fechas.objects.filter(activo=True).order_by('id') mun = cat_municipio.objects.all() return render_to_response('banner.html', {'request': request, 'municipios': mun, 'fecha': fecha, 'lista_fecha': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def CatFechaCreateView(request): mun = cat_municipio.objects.all() if request.method == 'POST': form = CatFechaForm(request.POST) if form.is_valid(): fecha_re = cat_fechas.objects.filter(fecha=form.cleaned_data['fecha'], activo=True) if not fecha_re.exists(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'La fecha se creo éxitosamente') else: messages.warning(request, 'Esta fecha ya existe') return HttpResponseRedirect('/lista/cat/fecha/') else: form = CatFechaForm() messages.error(request, 'ERROR DATOS') else: form = CatFechaForm() return render_to_response('banner.html', {'form': form, 'agregar': True, 'municipios': mun, 'editar_inico': 'active'}, context_instance=RequestContext(request)) return render_to_response('banner.html', {'form': form, 'agregar': True, 'municipios': mun, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def CatFechaUpdateView(request, pk): mun = cat_municipio.objects.all() fecha = cat_fechas.objects.get(pk=pk) if request.method == 'GET': form = CatFechaForm(instance=fecha) return render_to_response('banner.html', {'form': form, 'editar_fecha': True, 'municipios': mun, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = CatFechaForm(request.POST, request.FILES, instance=fecha) if form.is_valid(): fecha_re = cat_fechas.objects.filter(fecha=form.cleaned_data['fecha'], activo=True).exclude(pk=fecha.pk) if not fecha_re.exists(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'Se actualizo exitosamente la fecha correctamente') else: messages.warning(request, 'Esta fecha ya existe') return HttpResponseRedirect('/lista/cat/fecha/') else: form = CatFechaForm() return render_to_response('banner.html', {'form': form, 'editar_fecha': True, 'municipios': mun, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def CatFechaDeleteView(request, pk): mun = cat_municipio.objects.all() fecha = cat_fechas.objects.get(pk=pk) if request.method == 'GET': form = CatFechaDeleteForm(instance=fecha) return render_to_response('banner.html', {'form': form, 'fecha': fecha, 'eliminar_fecha': True, 'municipios': mun, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = CatFechaDeleteForm(request.POST, request.FILES, instance=fecha) if form.is_valid(): guardar = form.save(commit=False) guardar.activo = False guardar.save() messages.success(request, 'Se elimino exitosamente la fecha.') return HttpResponseRedirect('/lista/cat/fecha/') else: form = CatFechaDeleteForm() return render_to_response('banner.html', {'form': form, 'fecha': fecha, 'eliminar_fecha': True, 'municipios': mun, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def ListaSitioInteresView(request): mun = cat_municipio.objects.all() sitio = SitiosDeInteresInicio.objects.filter(activo=True).order_by('id') return render_to_response('banner.html', {'request': request, 'municipios': mun, 'sitio': sitio, 'lista_sitio': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def SitioInteresCreateView(request): mun = cat_municipio.objects.all() if request.method == 'POST': form = SitioInteresForm(request.POST, request.FILES) if form.is_valid(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'El sitio se ha creado éxitosamente') return HttpResponseRedirect('/lista/sitio/interes/') else: form = SitioInteresForm() messages.error(request, 'ERROR DATOS') else: form = SitioInteresForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'agregar_sitio': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def SitioInteresUpdateView(request, pk): mun = cat_municipio.objects.all() sitio = SitiosDeInteresInicio.objects.get(pk=pk) if request.method == 'GET': form = SitioInteresForm(instance=sitio) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'editar_sitio': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = SitioInteresForm(request.POST, request.FILES, instance=sitio) if form.is_valid(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'El sitio se actualizo correctamente') return HttpResponseRedirect('/lista/sitio/interes/') else: form = SitioInteresForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'editar_sitio': True, 'editar_inico': 'active'}, context_instance=RequestContext(request))\ @login_required(login_url='/') def SitioInteresDeleteView(request, pk): mun = cat_municipio.objects.all() sitio = SitiosDeInteresInicio.objects.get(pk=pk) if request.method == 'GET': form = SitioInteresDeleteForm(instance=sitio) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'sitio': sitio, 'eliminar_sitio': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = SitioInteresDeleteForm(request.POST, request.FILES, instance=sitio) if form.is_valid(): guardar = form.save(commit=False) guardar.activo = False guardar.save() messages.success(request, 'El sitio se ha eliminado correctamente') return HttpResponseRedirect('/lista/sitio/interes/') else: form = SitioInteresDeleteForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'eliminar_sitio': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def LogotipoInicioView(request): mun = cat_municipio.objects.all() logo = LogotipoInicio.objects.all return render_to_response('banner.html', {'request': request, 'municipios': mun, 'logo': logo, 'logotipo': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def LogotipoUpdateView(request, pk): mun = cat_municipio.objects.all() logo = LogotipoInicio.objects.get(pk=pk) if request.method == 'GET': form = LogotipoInicioForm(instance=logo) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'logotipo_editar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = LogotipoInicioForm(request.POST, request.FILES, instance=logo) if form.is_valid(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'Se actualizo exitosamente el Banner correctamente') return HttpResponseRedirect('/lista/logotipo/inicio/') else: form = LogotipoInicioForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'logotipo_editar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def PublicacionInicioView(request): publicacion = PublicacionInicio.objects.filter(activo=True).order_by('id') mun = cat_municipio.objects.all() return render_to_response('banner.html', {'request': request, 'municipios': mun, 'publicacion': publicacion, 'publicacion_lista': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def PublicacionInicioCreateView(request): mun = cat_municipio.objects.all() if request.method == 'POST': form = PublicacionInicioForm(request.POST, request.FILES) if form.is_valid(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'El publicacion se creo éxitosamente') return HttpResponseRedirect('/lista/publicacion/inicio/') else: form = PublicacionInicioForm() messages.error(request, 'ERROR DATOS') else: form = PublicacionInicioForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'publicacion_agregar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def PublicacionInicioUpdateView(request, pk): mun = cat_municipio.objects.all() publicacion = PublicacionInicio.objects.get(pk=pk) if request.method == 'GET': form = PublicacionInicioForm(instance=publicacion) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'publicacion_editar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = PublicacionInicioForm(request.POST, request.FILES, instance=publicacion) if form.is_valid(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'Se actualizo exitosamente la publicacion de inicio correctamente') return HttpResponseRedirect('/lista/publicacion/inicio/') else: form = PublicacionInicioForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'publicacion_editar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def PublicacionInicioDeleteView(request, pk): mun = cat_municipio.objects.all() publicacion = PublicacionInicio.objects.get(pk=pk) if request.method == 'GET': form = PublicacionDeleteView(instance=publicacion) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'publicacion': publicacion, 'publicacion_eliminar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = PublicacionDeleteView(request.POST, request.FILES, instance=publicacion) if form.is_valid(): guardar = form.save(commit=False) guardar.activo = False guardar.save() messages.success(request, 'Se actualizo exitosamente la publicacion de inicio correctamente') return HttpResponseRedirect('/lista/publicacion/inicio/') else: form = PublicacionDeleteView() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'publicacion': publicacion, 'publicacion_eliminar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def ConvocatoriasInicioView(request): mun = cat_municipio.objects.all() con = convocatorias.objects.filter(activo=True).order_by('id') return render_to_response('banner.html', {'request': request, 'municipios': mun, 'con': con, 'convocatorias_list': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def ConvocatoriaCreateView(request): mun = cat_municipio.objects.all() if request.method == 'POST': form = ConvocatoriaForm(request.POST, request.FILES) if form.is_valid(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'La convocatoria se creo éxitosamente') return HttpResponseRedirect('/lista/convocatorias/inicio/') else: form = ConvocatoriaForm() messages.error(request, 'ERROR DATOS') else: form = ConvocatoriaForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'agregar_convocatoria': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'agregar_convocatoria': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def ConvocatoriaUpdateView(request, pk): mun = cat_municipio.objects.all() convocatoria = convocatorias.objects.get(pk=pk) if request.method == 'GET': form = ConvocatoriaForm(instance=convocatoria) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'convocatoria_editar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = ConvocatoriaForm(request.POST, request.FILES, instance=convocatoria) if form.is_valid(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'Se actualizo exitosamente la convocatoria correctamente') return HttpResponseRedirect('/lista/convocatorias/inicio/') else: form = ConvocatoriaForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'convocatoria_editar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def ConvocatoriaDeleteView(request, pk): mun = cat_municipio.objects.all() convocatoria = convocatorias.objects.get(pk=pk) if request.method == 'GET': form = ConvocatoriaDeleteForm(instance=convocatoria) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'convocatoria': convocatoria, 'convocatoria_eliminar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = ConvocatoriaDeleteForm(request.POST, request.FILES, instance=convocatoria) if form.is_valid(): guardar = form.save(commit=False) guardar.activo = False guardar.save() messages.success(request, 'Se actualizo exitosamente la convocatoria correctamente') return HttpResponseRedirect('/lista/convocatorias/inicio/') else: form = ConvocatoriaDeleteForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'convocatoria': convocatoria, 'convocatoria_eliminar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def ProgramaInicioView(request): mun = cat_municipio.objects.all() programa = ProgramaSedeEstatal.objects.filter(activo=True).order_by('id') return render_to_response('banner.html', {'request': request, 'municipios': mun, 'programa': programa, 'programa_list': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def ProgramaCreateView(request): mun = cat_municipio.objects.all() if request.method == 'POST': form = ProgramaForm(request.POST, request.FILES) if form.is_valid(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'El programa se creo éxitosamente') return HttpResponseRedirect('/lista/programas/inicio/') else: form = ProgramaForm() messages.error(request, 'ERROR DATOS') else: form = ProgramaForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'agregar_programa': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'agregar_programa': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def ProgramaUpdateView(request, pk): mun = cat_municipio.objects.all() prog = ProgramaSedeEstatal.objects.get(pk=pk) if request.method == 'GET': form = ProgramaForm(instance=prog) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'programa_editar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = ProgramaForm(request.POST, request.FILES, instance=prog) if form.is_valid(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'Se actualizo exitosamente el programa') return HttpResponseRedirect('/lista/programas/inicio/') else: form = ProgramaForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'programa_editar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def ProgramaDeleteView(request, pk): mun = cat_municipio.objects.all() prog = ProgramaSedeEstatal.objects.get(pk=pk) if request.method == 'GET': form = ProgramaDeleteForm(instance=prog) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'prog': prog, 'programa_eliminar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = ProgramaDeleteForm(request.POST, request.FILES, instance=prog) if form.is_valid(): guardar = form.save(commit=False) guardar.activo = False guardar.save() messages.success(request, 'Se elimino exitosamente el programa') return HttpResponseRedirect('/lista/programas/inicio/') else: form = ProgramaDeleteForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'prog': prog, 'programa_eliminar': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def GraficoInicioView(request): mun = cat_municipio.objects.all() grafico = graficos.objects.filter(activo=True).order_by('id') return render_to_response('banner.html', {'request': request, 'municipios': mun, 'grafico': grafico, 'grafico_list': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def GraficoCreateView(request): mun = cat_municipio.objects.all() if request.method == 'POST': form = GraficoForm(request.POST, request.FILES) if form.is_valid(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'El grafico se creo éxitosamente') return HttpResponseRedirect('/lista/graficos/inicio/') else: form = GraficoForm() messages.error(request, 'ERROR DATOS') else: form = GraficoForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'agregar_grafico': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'agregar_grafico': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def GraficoUpdateView(request, pk): grafico = graficos.objects.get(pk=pk) mun = cat_municipio.objects.all() if request.method == 'GET': form = GraficoForm(instance=grafico) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'editar_grafico': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = GraficoForm(request.POST, request.FILES, instance=grafico) if form.is_valid(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'El graficos actualizo exitosamente') return HttpResponseRedirect('/lista/graficos/inicio/') else: form = GraficoForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'editar_grafico': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def GraficoDeleteView(request, pk): mun = cat_municipio.objects.all() grafico = graficos.objects.get(pk=pk) if request.method == 'GET': form = GraficoDeleteForm(instance=grafico) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'grafico_in': grafico, 'eliminar_grafico': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = GraficoDeleteForm(request.POST, request.FILES, instance=grafico) if form.is_valid(): guardar = form.save(commit=False) guardar.activo = False guardar.save() messages.success(request, 'El graficos se elimino exitosamente') return HttpResponseRedirect('/lista/graficos/inicio/') else: form = GraficoDeleteForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'grafico_in': grafico, 'eliminar_grafico': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def ImagenReconocimientoListView(request): mun = cat_municipio.objects.all() imagenreconocimiento = ImagenReconocimiento.objects.filter(activo=True).order_by('id') return render_to_response('banner.html', {'request': request, 'municipios': mun, 'imagenreconocimiento': imagenreconocimiento, 'ima_recor_list': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def ImagenReconocimientoCreateView(request): mun = cat_municipio.objects.all() ima = ImagenReconocimiento.objects.filter(activo=True) if request.method == 'POST': form = ImagenReconocimientoForm(request.POST, request.FILES) if ima.exists(): messages.info(request, 'Ya existe una imagen debe borrar la existente') return HttpResponseRedirect('/lista/imagen/reconocimiento/inicio/') else: if form.is_valid(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'La imagen de reconocimiento se creo éxitosamente') return HttpResponseRedirect('/lista/imagen/reconocimiento/inicio/') else: form = ImagenReconocimientoForm() messages.error(request, 'ERROR DATOS') else: form = ImagenReconocimientoForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'agregar_imagen': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'agregar_imagen': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def ImagenReconocimientoUpdateView(request, pk): imag = ImagenReconocimiento.objects.get(pk=pk) mun = cat_municipio.objects.all() if request.method == 'GET': form = ImagenReconocimientoForm(instance=imag) return render_to_response('banner.html', {'form': form, 'municipios': mun, 'editar_imagen': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = ImagenReconocimientoForm(request.POST, request.FILES, instance=imag) if form.is_valid(): guardar = form.save(commit=False) guardar.save() messages.success(request, 'La imagen de reconocimiento se actualizo exitosamente') return HttpResponseRedirect('/lista/imagen/reconocimiento/inicio/') else: form = ImagenReconocimientoForm() return render_to_response('banner.html', {'form': form, 'municipios': mun, 'editar_imagen': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def ImagenReconocimientoDeleteView(request, pk): imag = ImagenReconocimiento.objects.get(pk=pk) mun = cat_municipio.objects.all() if request.method == 'GET': form = ImagenReconocimientoDeleteForm(instance=imag) return render_to_response('banner.html', {'form': form, 'imag':imag, 'municipios': mun, 'eliminar_imagen': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) elif request.method == 'POST': form = ImagenReconocimientoDeleteForm(request.POST, request.FILES, instance=imag) if form.is_valid(): guardar = form.save(commit=False) guardar.activo = False guardar.save() messages.success(request, 'La imagen de reconocimientos se elimino exitosamente') return HttpResponseRedirect('/lista/imagen/reconocimiento/inicio/') else: form = ImagenReconocimientoDeleteForm() return render_to_response('banner.html', {'form': form, 'imag':imag, 'municipios': mun, 'eliminar_imagen': True, 'editar_inico': 'active'}, context_instance=RequestContext(request)) @login_required(login_url='/') def ImagenRegistroActividadListView(request, pk, id_institucion): mun = cat_municipio.objects.all() imagenes = imagen_registro_actividad.objects.filter(registro_actividad_id=pk) return render_to_response('banner.html', {'request': request, 'municipios': mun, 'imagenes': imagenes, 'galeria_registro_activida': True, 'cat_municipio': 'active', 'pk_actividad': pk, 'id_institucion': id_institucion}, context_instance=RequestContext(request)) def normalizeChar(char): ''' @Funcion que normaliza un caracter para remover acentos :param char: caracter a normalizar :return: caracter permitido ''' decodified = unicodedata.decomposition(char) str_enie = '0303' if not str_enie in decodified: if decodified: try: idx = int(decodified.split()[0],16) except ValueError: return '-' return unichr(idx) return char def textNormalized(texto): ''' @Funcion que retorna un texto normalizado. Sin acentos. :param texto: Texto a normalizar :return: cadena normalizada ''' texto = ' '.join(texto.split()).replace(' ','') return ''.join([normalizeChar(c) for c in texto.upper()]) @login_required(login_url='/') def getImagesPull(request, pk, id_institucion): ''' @Funcion que descarga imagenes de actividades del servidor en un .zip ''' # Files (local path) to put in the .zip # FIXME: Change this (get paths from DB etc) try: object_institucion = institucion.objects.get(pk=id_institucion) object_actividad = registro_actividad.objects.get(pk=pk) list_img = imagen_registro_actividad.objects.filter(registro_actividad_id=pk).values_list('imagenes', flat=True) #TODO. lista de imagenes de la actividad filenames = list_img # Folder name in ZIP archive which contains the above files # E.g [thearchive.zip]/somefiles/file2.txt # FIXME: Set this to something better fh_actividad = object_actividad.fecha.fecha.strftime('%d%m%Y') + '_' + object_actividad.hora.strftime('%H%M') name_file = textNormalized(texto=object_institucion.siglas) + '_' + fh_actividad zip_subdir = name_file zip_filename = "%s.zip" % zip_subdir # Open StringIO to grab in-memory ZIP contents s = StringIO.StringIO() # The zip compressor zf = zipfile.ZipFile(s, "w") for fpath in filenames: fpath = settings.MEDIA_ROOT + '/' + fpath # fpath = request.META['HTTP_HOST'] + '/media/' + fpath # Calculate path for file in zip fdir, fname = os.path.split(fpath) zip_path = os.path.join(zip_subdir, fname) # Add file, at correct path zf.write(fpath, zip_path) # Must close zip for all contents to be written zf.close() # Grab ZIP file from in-memory, make response with correct MIME-type and correct content-disposition resp = HttpResponse(s.getvalue(), mimetype = "application/x-zip-compressed") resp['Content-Disposition'] = 'attachment; filename=%s' % zip_filename return resp except Exception as e: messages.info(request, 'NO SE LOGRO DESCARGAR NINGUNA IMAGEN') return HttpResponseRedirect('/lista/imagen/registro/actividades/'+str(pk)+'/'+str(id_institucion)+'/')