mickymiseck

compatriota -view

Feb 3rd, 2013
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.03 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from django.shortcuts import render, redirect
  3. from django.contrib.auth.decorators import login_required
  4. from django.db.models import Q
  5. from ciudadano.models import Citizen
  6. from base.forms import BaseForm
  7. from base.models import Base
  8. from forms import AffiliateForm
  9. from models import Affiliate, AffiliateView
  10. from ubigeo.forms import UbigeoSelect
  11. from ciudadano.forms import CitizenForm
  12. from ciudadano.models import Citizen
  13. from historial.models import Record
  14. from django.core import serializers
  15. from django.http import HttpResponse
  16. from django.utils import simplejson
  17. from ubigeo.models import Ubigeo
  18. from log.models import Log
  19. from pyExcelerator import *
  20. import datetime
  21. import bcrypt
  22.  
  23. @login_required(login_url='/profile/login/')
  24. def afiliar(request):
  25.     affiliateform = AffiliateForm()
  26.     citizenform = CitizenForm()
  27.     baseform = BaseForm()
  28.     if request.method == 'POST':
  29.         ciudadano = Citizen.objects.get(number_document = request.POST['number_document'])
  30.         obj, created =  Affiliate.objects.get_or_create(citizen = ciudadano, base = Base.objects.get(pk = request.POST['base']))
  31.         citizenform = CitizenForm(request.POST, instance=ciudadano)
  32.         affiliateform = AffiliateForm(request.POST,request.FILES,instance=obj)
  33.         if affiliateform.is_valid() and citizenform.is_valid():
  34.             affiliateform.save()
  35.             log = u'%s%s%s%s' % (request.user.id, 'Insert' if created else 'Update','Compatriota',datetime.datetime.today())
  36.             Log.objects.create(
  37.                                 perfil=request.user.get_profile(),
  38.                                 acction= 'Insert' if created else 'Update',
  39.                                 app='Compatriota',
  40.                                 fecha=datetime.datetime.today(),
  41.                                 checksum=bcrypt.hashpw(log, bcrypt.gensalt())).save()
  42.             profesion, created = Record.objects.get_or_create(affiliate=affiliateform.instance,category=4)
  43.             profesion.description=request.POST['profesion']
  44.             profesion.save()
  45.             ocupacion, created = Record.objects.get_or_create(affiliate=affiliateform.instance,category=5)
  46.             ocupacion.description=request.POST['ocupacion']
  47.             ocupacion.save()
  48.             return redirect("/compatriota/afiliar/")
  49.         print affiliateform.errors
  50.     if 'dni' in request.GET:
  51.         ciudadano = Citizen.objects.get(number_document = request.GET['dni'])
  52.         afiliado = Affiliate.objects.get(citizen = ciudadano)
  53.         affiliateform = AffiliateForm(instance = afiliado)
  54.         citizenform = CitizenForm(instance = ciudadano)
  55.         profesion = Record.objects.get(affiliate=afiliado,category=4)
  56.         ocupacion = Record.objects.get(affiliate=afiliado,category=5)
  57.         return render(request,
  58.             'afiliado/afiliado-editar.html',
  59.             {'affiliateform' : affiliateform, 'citizenform' : citizenform,'auth':request.user,'ciudadano':ciudadano,'afiliado':afiliado,'profesion':profesion,'ocupacion':ocupacion,})
  60.     return render(request,
  61.         'afiliado/afiliado.html',
  62.         {'affiliateform' : affiliateform, 'citizenform' : citizenform,'auth':request.user,})
  63.  
  64. @login_required(login_url='/profile/login/')
  65. def buscar(request):
  66.     ubigeo = UbigeoSelect()
  67.     return render(request,
  68.         'afiliado/buscar.html',
  69.         {'ubigeo' : ubigeo,'auth':request.user,})
  70.  
  71. @login_required(login_url='/profile/login/')
  72. def listar(request):
  73.     return render(request,
  74.         'afiliado/lista-afiliados.html',
  75.         {'auth':request.user,})
  76.  
  77. @login_required(login_url='/profile/login/')
  78. def listar_compas(request):
  79.     if request.method == 'GET':
  80.         affiliate = get_compatriotas(request)
  81.         print affiliate
  82.         request.session['COMPATRIOTAS'] = affiliate
  83.         return render(request,
  84.         'afiliado/lista-afiliados.html',
  85.         {'affiliate':affiliate,'auth':request.user,})
  86.  
  87. def get_compatriotas(request):
  88.     if 'dni' in request.GET:
  89.             affiliate = AffiliateView.objects.filter(number_document_citizen = request.GET['dni'])
  90.     elif 'nombre' in request.GET or 'apellido' in request.GET:
  91.         if 'nombre' in request.GET and 'apellido' in request.GET:
  92.             affiliate = AffiliateView.objects.filter((Q(paternal_surname_citizen__icontains = request.GET['apellido']) | Q(mother_surname_citizen__icontains = request.GET['apellido'])), Q(name_citizen__icontains = request.GET['nombre']))
  93.         elif 'nombre' in request.GET:
  94.             affiliate = AffiliateView.objects.filter(name_citizen__icontains = request.GET['nombre'])
  95.         elif 'apellido' in request.GET:
  96.             affiliate = AffiliateView.objects.filter((Q(paternal_surname_citizen__icontains = request.GET['apellido']) | Q(mother_surname_citizen__icontains = request.GET['apellido'])))
  97.     elif 'txt_base' in request.GET or 'base' in request.GET:
  98.         if request.GET['base'] != '' :
  99.             affiliate = AffiliateView.objects.filter(id_base = request.GET['base'])
  100.         elif request.GET['txt_base'] != '':
  101.             affiliate = AffiliateView.objects.filter(name_base__icontains = request.GET['txt_base'])
  102.     else:
  103.         affiliate = None
  104.         if 'ubigeo_2' in request.GET or 'ubigeo_1' in request.GET or 'ubigeo_0' in request.GET:
  105.             if 'ubigeo_2' in request.GET:
  106.                 affiliate =  AffiliateView.objects.filter(ubigeo_distrito = request.GET['ubigeo_2']) if affiliate is None else affiliate.filter(ubigeo_distrito = request.GET['ubigeo_2'])
  107.             elif 'ubigeo_1' in request.GET:
  108.                 affiliate =  AffiliateView.objects.filter(ubigeo_provincia = request.GET['ubigeo_1']) if affiliate is None else affiliate.filter(ubigeo_provincia = request.GET['ubigeo_1'])
  109.             elif 'ubigeo_0' in request.GET:
  110.                 affiliate =  AffiliateView.objects.filter(ubigeo_region = request.GET['ubigeo_0']) if affiliate is None else affiliate.filter(ubigeo_region = request.GET['ubigeo_0'])
  111.         if 'inicio' in request.GET or 'fin' in request.GET:
  112.             if request.GET['inicio'] != "":
  113.                 inicio = int(request.GET['inicio'])
  114.             if request.GET['fin'] != "":
  115.                 fin = int(request.GET['fin'])
  116.             if request.GET['inicio'] != "" and request.GET['fin'] != "":
  117.                 affiliate = AffiliateView.objects.filter(years__range = (inicio, fin)) if affiliate is None else affiliate.filter(years__range = (inicio, fin))
  118.             elif request.GET['inicio'] != "":
  119.                 affiliate = AffiliateView.objects.filter(years = inicio) if affiliate is None else affiliate.filter(years = inicio)
  120.             elif request.GET['fin'] != "":
  121.                 affiliate =  AffiliateView.objects.filter(years = fin) if affiliate is None else affiliate.filter(years = fin)
  122.         if 'profesion' in request.GET:
  123.             affiliate =  AffiliateView.objects.filter((Q(historial_profesion__icontains = request.GET['profesion'])|Q(historial_ocupacion__icontains = request.GET['profesion']))) if affiliate is None else affiliate.filter((Q(historial_profesion__icontains = request.GET['profesion'])|Q(historial_ocupacion__icontains = request.GET['profesion'])))
  124.         if 'tipo' in request.GET:
  125.             affiliate =  AffiliateView.objects.filter(kind_affiliate__icontains = request.GET['tipo']) if affiliate is None else affiliate.filter(kind_affiliate__icontains = request.GET['tipo'])
  126.         if 'estado' in request.GET:
  127.             affiliate =  AffiliateView.objects.filter(state_affiliate__icontains = request.GET['estado']) if affiliate is None else affiliate.filter(state_affiliate__icontains = request.GET['estado'])
  128.     return affiliate
  129.  
  130. def publico_buscar(request,dni):
  131.     afiliado = Affiliate.objects.get(citizen = Citizen.objects.get(number_document=dni))
  132.     compatriota = {'dni':afiliado.citizen.number_document,'nombre':afiliado.citizen.name,
  133.                    'paterno':afiliado.citizen.paternal_surname,'materno':afiliado.citizen.mother_surname,'fecha':afiliado.date_enrollment.__str__()}
  134.     return HttpResponse(simplejson.dumps(compatriota),mimetype='application/json')
  135.  
  136. def publico(request):
  137.     citizenform = CitizenForm()
  138.     return render(request,
  139.         'afiliado/publico.html',
  140.         {'citizenform' : citizenform,})
  141.  
  142. def get_calc(request):
  143.     encabezado = ['D.N.I.','Apellido paterno','Apellido materno','Nombres','Base','Región','Provincia','Distrito','Profesión','Edad','Tipo','Estado','Fecha de afiliación']
  144.     wb = Workbook()
  145.     ws0 = wb.add_sheet('0')
  146.     compatriotas = request.session['COMPATRIOTAS']
  147.     for y in range(13):
  148.         ws0.write(0,y,encabezado[y])
  149.     for x in range(len(compatriotas)):
  150.         for y in range(13):
  151.             d = compatriotas[x].get_distrito()
  152.             if y == 0:
  153.                 ws0.write(x+1,y,compatriotas[x].number_document_citizen)
  154.             elif y == 1:
  155.                 ws0.write(x+1,y,compatriotas[x].paternal_surname_citizen)
  156.             elif y == 2:
  157.                 ws0.write(x+1,y,compatriotas[x].mother_surname_citizen)
  158.             elif y == 3:
  159.                 ws0.write(x+1,y,compatriotas[x].name_citizen)
  160.             elif y == 4:
  161.                 ws0.write(x+1,y,compatriotas[x].name_base)
  162.             elif y == 5:
  163.                 ws0.write(x+1,y,d.parent.parent.name)
  164.             elif y == 6:
  165.                 ws0.write(x+1,y,d.parent.name)
  166.             elif y == 7:
  167.                 ws0.write(x+1,y,d.name)
  168.             elif y == 8:
  169.                 ws0.write(x+1,y,compatriotas[x].historial_profesion)
  170.             elif y == 9:
  171.                 ws0.write(x+1,y,compatriotas[x].years)
  172.             elif y == 10:
  173.                 ws0.write(x+1,y,compatriotas[x].get_tipo())
  174.             elif y == 11:
  175.                 ws0.write(x+1,y,compatriotas[x].get_estado())
  176.             elif y == 12:
  177.                 ws0.write(x+1,y,compatriotas[x].date_enrollment.strftime("%d/%m/%Y"))
  178.     wb.save('compatriotas.xls')
  179.     try:
  180.         del request.session['COMPATRIOTAS']
  181.     except KeyError:
  182.         pass
  183.     return HttpResponse(open('compatriotas.xls','r').read(),
  184.         mimetype='application/ms-excel')
Advertisement
Add Comment
Please, Sign In to add comment