# 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 pyjasperclient import JasperClient #importacion del jasper client import datetime from datetime import date 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 import locale 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.latest('id') enlaces = SitiosDeInteresInicio.objects.all() programa_sede_estatal = ProgramaSedeEstatal.objects.latest('id') banner = BannerInicio.objects.latest('id') return TemplateResponse(request, 'dashboard_base.html', {'request': request, 'convoca': convoca, 'publicacion' : publicacion, 'enlaces' : enlaces, 'programa_sede_estatal' : programa_sede_estatal, '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.all() return render_to_response('convocatoria.html', {'request': request, 'convoca': convoca}, context_instance=RequestContext(request)) 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'] 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.all().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.success(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() p = institucion() p.nombre = nombre 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 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') # return HttpResponse(new_password) msj = str( 'Gracias por participar en la XXII Semana Nacional de Ciencia y Tecnología en Tabasco: \n\n' + 'Usuario: ' + str( username) + '\nContrasena: ' + str(password)) # return HttpResponse(msj) subject = request.POST.get('subject', 'Registro Institucional') message = request.POST.get('message', msj) # from_email = request.POST.get('from_email', 'jonatansimpleplan89@gmail.com') from_email = request.POST.get('from_email', 'c6486xh@gmail.com') var_email = str(correo_) if subject and message and from_email: try: pl = send_mail(subject, message, from_email, [var_email], fail_silently=True) print('pl', pl) except BadHeaderError: return HttpResponse('Invalid header found.') msj = 'Los datos se guardaron correctamente. Su usuario y contraseña fueron enviados a su correo' messages.success(request, msj) return HttpResponseRedirect(request.path) else: return HttpResponse('Make sure all fields are entered and valid.') 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.all().get(pk=id_municipio) instituciones = institucion.objects.all().filter(municipio=id_municipio) # return HttpResponse(instituciones) # institutos = return render_to_response('institucion.html', {'municipios': municipios, 'municipio': municipio, 'instituciones': instituciones, 'request': request}, context_instance=RequestContext(request)) @login_required(login_url='/') def reporte_actividades(request): municipios = cat_municipio.objects.all() tipos_actividades = cat_tipo_actividad.objects.all().order_by('id') lista_actividades = [] cantidad_global = 0 tipo_publico = cat_tipo_publico.objects.all().order_by('id') lista_publico_actividades = [] lista_publico_actividades_realizadas = [] for tipo_actividad in tipos_actividades: nombre_actividad = tipo_actividad.nombre total_actividades_programadas = registro_actividad.objects.all().filter(tipo_actividad=tipo_actividad).count() total_actividades_realizadas = registro_actividad.objects.all().filter(tipo_actividad=tipo_actividad,bandera=True).count() lista_actividades.append({nombre_actividad: [total_actividades_programadas, total_actividades_realizadas]}) # Codigo para el reporte de cada tipo de publico y cantidad actividad_registrada = registro_actividad.objects.all().filter(tipo_actividad = tipo_actividad) actividad_realizada = registro_actividad.objects.all().filter(tipo_actividad = tipo_actividad, bandera = True, generar_folio = True) lista_valores_publico = [] lista_valores_publico_final = [] for publico in tipo_publico: total_cantidad = 0 for actividad in actividad_registrada: total_publico = paso_tipo_publico.objects.all().filter(actividad=actividad, tipo_publico= publico).aggregate(Sum('cantidad')) if total_publico['cantidad__sum']: total_cantidad += total_publico['cantidad__sum'] total_cantidad_final = 0 for actividad in actividad_realizada: total_publico_final = Paso_Tipo_Publico_Final.objects.all().filter(actividad = actividad, tipo_publico = publico).aggregate(Sum('cantidad')) if total_publico_final['cantidad__sum']: #print total_publico_final['cantidad__sum'] total_cantidad_final += total_publico_final['cantidad__sum'] # Dejar este print por si se necesita depurar #print nombre_actividad + " " + publico.nombre + " " + str(total_cantidad) lista_valores_publico.append(total_cantidad) lista_valores_publico_final.append(total_cantidad_final) cantidad_global += total_cantidad lista_publico_actividades.append({nombre_actividad: lista_valores_publico}) lista_publico_actividades_realizadas.append({nombre_actividad: lista_valores_publico_final}) # 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.all().filter(pk=id_institucion) x = "" for p in instituciones_: x = p.usuario.id lista_actividad = registro_actividad.objects.all().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_, 'lista_actividad': lista_actividad, '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.all().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) if formulario.is_valid(): prueba = formulario.save(commit=False) prueba.responsable_actividad_id = request.user.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.all().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: formulario = RegistroActividad() return render_to_response('registro_actividad.html', {'municipios': municipios, '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, 'request': request}, 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.all().filter(usuario__in=[request.user.id]) lista_actividad = lista_actividad.filter(pk=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.all().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.all().get(pk=id_actividad) # responsable = d.responsable_actividad.id # pr = cat_personas.objects.all().get(pk=responsable) imgs = imagen_registro_actividad.objects.filter(registro_actividad=id_actividad) 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.all().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, # 'formulario_responsable': formulario_responsable, '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}, 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, '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.all().filter(usuario__in=[request.user.id]) for actividad in lista_actividad: imagenes_actividad = imagen_registro_actividad.objects.all().filter(registro_actividad=actividad.id) if imagenes_actividad: actividad.imagenes = True else: actividad.imagenes = False 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, '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.all().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.all().filter(registro_actividad=id_actividad) if imagenes_actividad: actividad_confirmada = registro_actividad.objects.all().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, 'request': request}) except institucion.DoesNotExist: return render_to_response('institucion.html') @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.all().filter(id=id_institucion) f = "" if request.method == 'GET': d = institucion.objects.all().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.all().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, 'formulario': formulario, 'nombre_institucion': nombre_institucion, 'request': request, 'parti': d.participacion}, context_instance=RequestContext(request)) @login_required(login_url='/') def agregar_expositor(request): municipios = cat_municipio.objects.all() nombre_institucion = institucion.objects.filter(usuario__pk=request.user.id) lista_actividad = registro_actividad.objects.filter(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}, 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) expositor_ = request.POST.get('nombre') consulta_expo = cat_personas.objects.filter(nombre=expositor_) var = 0 for ep in consulta_expo: var = ep.nombre if expositor_ == var: consulta = registro_actividad.objects.all().get(pk=id_actividad) consulta.expositor.add(ep) consulta.save() return HttpResponseRedirect('/registro_de_actividad/') else: expositor_ = request.POST.get('nombre') exp = cat_personas() exp.nombre = expositor_ exp.save() a = exp.id consulta = registro_actividad.objects.all().get(pk=id_actividad) actividad_id = consulta.id consulta.expositor.add(a) consulta.save() return HttpResponseRedirect('/registro_de_actividad/') else: formulario2 = RegistroExpositor() return render_to_response('add_expositor.html', {'municipios': municipios, 'request': request, 'formulario2': formulario2, 'lista_expositores': lista_expositores, 'request': request}, context_instance=RequestContext(request)) @login_required(login_url='/') def borrar_expositor(request, id_actividad, id_expositor): consul_expositor = registro_actividad.objects.all().get(id=id_actividad) consul_expositor.expositor.remove(id_expositor) return HttpResponseRedirect('/registro_de_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): 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) | 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}, context_instance=RequestContext(request)) from django.core.urlresolvers import reverse @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) participantes_ = request.POST.get('nombre') consulta_participantes = cat_personas.objects.filter(nombre=participantes_) if consulta_participantes: print('encontro la persona') else: print('no la encontro y retorna el message') msj = 'El nombre del participante no se encuentra registrado.' messages.error(request, msj) url = reverse('agregar-par', kwargs={'id_actividad': id_actividad}) return HttpResponseRedirect(url) var = 0 for ep in consulta_participantes: var = ep.nombre if participantes_ == var: consulta = registro_actividad.objects.all().get(pk=id_actividad) consulta.participantes.add(ep) consulta.save() return HttpResponseRedirect('/agregar_participantes/') else: if formulario2.is_valid(): # return HttpResponse(request.POST.get('nombre')) d = formulario2.save() a = d.id consulta = registro_actividad.objects.all().get(pk=id_actividad) actividad_id = consulta.id consulta.participantes.add(d) consulta.save() # reg_activ = registro_actividad(expositor=formulario2.instance.pk) # reg_activ.save() return HttpResponseRedirect('/agregar_participantes/') else: msj = 'Por favor, corrija el siguiente error.' messages.error(request, msj) else: formulario2 = RegistroParticipantes() return render_to_response('add_participantes.html', {'municipios': municipios, 'formulario2': formulario2, 'lista_expositores': lista_expositores, 'request': request}, context_instance=RequestContext(request)) @login_required(login_url='/') def borrar_participante(request, id_actividad, id_participante): consul_participante = registro_actividad.objects.all().get(id=id_actividad) consul_participante.participantes.remove(id_participante) return HttpResponseRedirect('/agregar_participantes/') @login_required(login_url='/') def agregar_organizadores(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) | 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}, 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) organizador_ = request.POST.get('nombre') consulta_organizador = cat_personas.objects.filter(nombre=organizador_) var = 0 for ep in consulta_organizador: var = ep.nombre if organizador_ == var: consulta = registro_actividad.objects.all().get(pk=id_actividad) consulta.organizadores.add(ep) consulta.save() # msj='Los datos se guardaron correctamente.' # messages.success(request, msj) return HttpResponseRedirect('/agregar_organizadores/') else: if formulario2.is_valid(): # return HttpResponse(request.POST.get('nombre')) d = formulario2.save() a = d.id consulta = registro_actividad.objects.all().get(pk=id_actividad) actividad_id = consulta.id consulta.organizadores.add(d) consulta.save() # reg_activ = registro_actividad(expositor=formulario2.instance.pk) # reg_activ.save() # msj='Los datos se guardaron correctamente.' # messages.success(request, msj) return HttpResponseRedirect('/agregar_organizadores/') else: msj = 'Por favor, corrija el siguiente error.' messages.error(request, msj) else: formulario2 = RegistroOrganizador() return render_to_response('add_organizadores.html', {'municipios': municipios, 'formulario2': formulario2, 'lista_expositores': lista_expositores, 'request': request}, context_instance=RequestContext(request)) @login_required(login_url='/') def borrar_organizador(request, id_actividad, id_organizador): consul_organizadores = registro_actividad.objects.all().get(id=id_actividad) consul_organizadores.organizadores.remove(id_organizador) return HttpResponseRedirect('/agregar_organizadores/') @login_required(login_url='/') def agregar_patrosinadores(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) | 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}, context_instance=RequestContext(request)) @login_required(login_url='/') def add_patrosinadores(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) patrosinador_ = request.POST.get('nombre') consulta_organizador = cat_personas.objects.filter(nombre=patrosinador_) var = 0 for ep in consulta_organizador: var = ep.nombre if patrosinador_ == var: consulta = registro_actividad.objects.all().get(pk=id_actividad) consulta.patrocinadores.add(ep) consulta.save() # msj='Los datos se guardaron correctamente.' # messages.success(request, msj) return HttpResponseRedirect('/agregar_patrosinadores/') else: if formulario2.is_valid(): # return HttpResponse(request.POST.get('nombre')) d = formulario2.save() a = d.id consulta = registro_actividad.objects.all().get(pk=id_actividad) actividad_id = consulta.id consulta.patrocinadores.add(d) consulta.save() # reg_activ = registro_actividad(expositor=formulario2.instance.pk) # reg_activ.save() # msj='Los datos se guardaron correctamente.' # messages.success(request, msj) return HttpResponseRedirect('/agregar_patrosinadores/') else: msj = 'Por favor, corrija el siguiente error.' messages.error(request, msj) else: formulario2 = RegistroPatrosinador() return render_to_response('add_patrosinador.html', {'municipios': municipios, 'formulario2': formulario2, 'lista_expositores': lista_expositores, 'request': request}, context_instance=RequestContext(request)) @login_required(login_url='/') def borrar_patrosinadores(request, id_actividad, id_patrosinador): consul_patrocinadores = registro_actividad.objects.all().get(id=id_actividad) consul_patrocinadores.patrocinadores.remove(id_patrosinador) return HttpResponseRedirect('/agregar_patrosinadores/') @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') from django.core.mail import send_mail, BadHeaderError def send_email(request): correo = request.POST.get('wizard[email]') consulta_user = User.objects.all().filter(email=correo) new_password = User.objects.make_random_password(length=10) idi = 0 name = "" password = "" email = "" for p in consulta_user: idi = p.id name = p.username password = p.password email = p.email # return HttpResponse(usuario) try: usuario = User.objects.all().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() # return HttpResponse(new_password) msj = str('Su nueva contrasena es: ' + new_password + '. Por su seguridad se recomienda cambiarla.') # return HttpResponse(msj) subject = request.POST.get('subject', 'Contraseña Nueva') message = request.POST.get('message', msj) from_email = request.POST.get('from_email', 'jonatansimpleplan89@gmail.com') var_email = str(email) if subject and message and from_email: try: send_mail(subject, message, from_email, [var_email]) except BadHeaderError: return HttpResponse('Invalid header found.') return HttpResponseRedirect('/index/') else: # In reality we'd use a form class # to get proper validation errors. return HttpResponse('Make sure all fields are entered and valid.') @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.all().get(usuario=user) municipio = mun_ins.municipio instituciones = institucion.objects.all().filter(municipio__nombre=municipio) bscr = '' if 'bscr' in request.GET: bscr = request.GET.get('bscr') instituciones = institucion.objects.all().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.all().get(pk=id_institucion) user = instituto.usuario municipio_ = instituto.municipio # ACTIVIDADES# lista_actividad = registro_actividad.objects.all().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 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, } 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, }, 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))