Browse Source

Acrescentando abas com jquery em casas legislativa. Acrescentando opção de gerar etiquetas com e sem presidente.

diagnosticos
Starlone (Estagiario) 14 years ago
parent
commit
2857e37701
  1. 16
      sigi/apps/casas/admin.py
  2. 41
      sigi/apps/casas/reports.py
  3. 62
      sigi/apps/casas/templates/casas/change_list.html
  4. 22
      sigi/apps/casas/views.py
  5. 17
      sigi/apps/convenios/templates/convenios/change_list.html

16
sigi/apps/casas/admin.py

@ -8,7 +8,7 @@ from sigi.apps.convenios.models import Projeto, Convenio, EquipamentoPrevisto, A
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, HttpResponseRedirect
from sigi.apps.casas.reports import CasasLegislativasLabels, CasasLegislativasReport from sigi.apps.casas.reports import CasasLegislativasLabels, CasasLegislativasReport
from geraldo.generators import PDFGenerator from geraldo.generators import PDFGenerator
from sigi.apps.casas.views import casa_info, labels_report from sigi.apps.casas.views import casa_info, labels_report, export_csv, labels_report_sem_presidente
from sigi.apps.utils import queryset_ascii from sigi.apps.utils import queryset_ascii
class ContatosInline(generic.GenericTabularInline): class ContatosInline(generic.GenericTabularInline):
@ -29,7 +29,7 @@ class CasaLegislativaAdmin(admin.ModelAdmin):
form = CasaLegislativaForm form = CasaLegislativaForm
change_form_template = 'casas/change_form.html' change_form_template = 'casas/change_form.html'
change_list_template = 'casas/change_list.html' change_list_template = 'casas/change_list.html'
actions = ['etiqueta','relatorio','relatorio_completo'] actions = ['etiqueta','relatorio','relatorio_csv','relatorio_completo','etiqueta_sem_presidente']
inlines = (TelefonesInline, ContatosInline, ConveniosInline) inlines = (TelefonesInline, ContatosInline, ConveniosInline)
list_display = ('nome','municipio','presidente','logradouro') list_display = ('nome','municipio','presidente','logradouro')
list_display_links = ('nome',) list_display_links = ('nome',)
@ -65,18 +65,28 @@ class CasaLegislativaAdmin(admin.ModelAdmin):
return labels_report(request,queryset=queryset) return labels_report(request,queryset=queryset)
etiqueta.short_description = "Gerar etiqueta(s) da(s) casa(s) selecionada(s)" etiqueta.short_description = "Gerar etiqueta(s) da(s) casa(s) selecionada(s)"
def etiqueta_sem_presidente(modelAdmin,request,queryset):
response = HttpResponse(mimetype='application/pdf')
return labels_report_sem_presidente(request,queryset=queryset)
etiqueta_sem_presidente.short_description = "Gerar etiqueta(s) sem presidente da(s) casa(s) selecionada(s)"
def relatorio(modelAdmin,request,queryset): def relatorio(modelAdmin,request,queryset):
response = HttpResponse(mimetype='application/pdf') response = HttpResponse(mimetype='application/pdf')
report = CasasLegislativasReport(queryset=queryset) report = CasasLegislativasReport(queryset=queryset)
report.generate_by(PDFGenerator, filename=response) report.generate_by(PDFGenerator, filename=response)
return response return response
relatorio.short_description = u"Gerar relatório resumido da(s) casa(s) selecionada(s)" relatorio.short_description = u"Exportar a(s) casa(s) selecionada(s) para PDF"
def relatorio_completo(modelAdmin,request,queryset): def relatorio_completo(modelAdmin,request,queryset):
response = HttpResponse(mimetype='application/pdf') response = HttpResponse(mimetype='application/pdf')
return casa_info(request,queryset=queryset) return casa_info(request,queryset=queryset)
relatorio_completo.short_description = u"Gerar relatório completo da(s) casa(s) selecionada(s)" relatorio_completo.short_description = u"Gerar relatório completo da(s) casa(s) selecionada(s)"
def relatorio_csv(modelAdmin,request,queryset):
response = HttpResponse(mimetype='text/csv')
return export_csv(request)
relatorio_csv.short_description = u"Exportar casa(s) selecionada(s) para CSV"
def get_actions(self, request): def get_actions(self, request):
actions = super(CasaLegislativaAdmin, self).get_actions(request) actions = super(CasaLegislativaAdmin, self).get_actions(request)
del actions['delete_selected'] del actions['delete_selected']

41
sigi/apps/casas/reports.py

@ -70,7 +70,45 @@ class CasasLegislativasLabels(Report):
default_style = {'fontName': 'Helvetica', 'fontSize': 11} default_style = {'fontName': 'Helvetica', 'fontSize': 11}
elements = [
Label(
text='A Sua Excelência o(a) Senhor(a)',
top=1*cm, left=0.5*cm, width=9.4*cm,
),
ObjectValue(
attribute_name='presidente',
top=1.5*cm, left=0.5*cm, width=9.4*cm,
),
ObjectValue(
attribute_name='tipo',
top=2*cm, left=0.5*cm, width=9.4*cm,
get_value=lambda instance:
"Presidente da " + instance.tipo.nome +" " +instance.nome.split()[2]
),
ObjectValue(
attribute_name='nome',
top=2.5*cm, left=0.5*cm, width=9.4*cm,
get_value=lambda instance:
instance.municipio.uf.nome
if instance.tipo.nome == u'Assembléia Legislativa'
else instance.municipio.nome
),
ManyElements(
ObjectValue,
count=4,
attribute_name=('logradouro','bairro','municipio','cep'),
start_top=3*cm, height=0.5*cm, left=0.5*cm, width=9.4*cm,
),
]
class CasasLegislativasLabelsSemPresidente(CasasLegislativasLabels):
class band_detail(CasasLegislativasLabels.band_detail):
elements = [ elements = [
Label( Label(
text='A Sua Excelência o(a) Senhor(a)', text='A Sua Excelência o(a) Senhor(a)',
@ -80,7 +118,7 @@ class CasasLegislativasLabels(Report):
attribute_name='tipo', attribute_name='tipo',
top=1.5*cm, left=0.5*cm, width=9.4*cm, top=1.5*cm, left=0.5*cm, width=9.4*cm,
get_value=lambda instance: get_value=lambda instance:
"Presidente da " + instance.tipo.nome + " de " "Presidente da " + instance.tipo.nome +" " +instance.nome.split()[2]
), ),
ObjectValue( ObjectValue(
attribute_name='nome', attribute_name='nome',
@ -100,6 +138,7 @@ class CasasLegislativasLabels(Report):
] ]
class CasasLegislativasReport(ReportDefault): class CasasLegislativasReport(ReportDefault):
title = u'Relatório de Casas Legislativas' title = u'Relatório de Casas Legislativas'
height = 80*cm height = 80*cm

62
sigi/apps/casas/templates/casas/change_list.html

@ -1,9 +1,67 @@
{% extends "admin/change_list.html" %} {% extends "admin/change_list.html" %}
{% load adminmedia admin_list i18n reporting_tags %} {% load adminmedia admin_list i18n reporting_tags %}
{% block extrastyle %}
{{ block.super }}
{% include "jquery/tabs_style.html" %}
{% endblock %}
{% block object-tools %} {% block object-tools %}
{% if has_add_permission %} {% if has_add_permission %}
<ul class="object-tools">
<div id="tabs">
<ul>
<li><a href="#tabs-1">Exportar para PDF</a></li>
<li><a href="#tabs-2">Exportar para CSV</a></li>
<li><a href="#tabs-3">Etiqueta</a></li>
<li>
<a style="display: none" href="#tabs-0" />
<a href="add/{% if is_popup %}?_popup=1{% endif %}" class="addlink">
{% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}
</a>
</li>
</ul>
<div id="tabs-1">
<p>Escolha uma das opções abaixo para exportar todas as casas legislátivas listadas.
Caso queira selecionar casas específicas, utilize a opção "exportar
casa(s) selecionada(s)" na caixa "Ação".</p>
<div class="tabs-conteudo">
<ul>
<li><a href="reports/{{query_str}}">Exportar todas as casas listadas</a> </li>
<li>
<a href="casas_sem_convenio_report/{{query_str}}">
Exportar apenas casas listadas sem convênio
</a>
</li>
</ul>
</div>
</div>
<div id="tabs-2">
<div class="tabs-conteudo">
<p>
As opções abaixo exportam todas as casas listadas para um arquivo CSV que
pode ser aberto por programas de planilha eletrônica (Excel, Calc).
Para exportar casas específicas utilize a opção "Exportar casa(s) selecionada(s)
para CSV"
</p>
<ul>
<li><a href="csv/{{query_str}}">Exportar casas listas para CSV</a> </li>
</ul>
</div>
</div>
<div id="tabs-3">
<p>Escolha uma das opções abaixo para gerar etiquetas de todas as casas listadas.
Caso queira gerar de casas especificas, utilize a opção "gerar etiquetas
das casas selecionadas" disponivel na caixa "Ação". </p>
<ul class="tabs-conteudo">
<li><a href="labels/{{ query_str }}">Gerar etiquetas com nome do presidente</a></li>
<li><a href="labels_sem_presidente/{{ query_str }}">Gerar etiquetas sem nome do presidente</a></li>
</ul>
</div>
</div>
<!--<ul class="object-tools">
<li><a href="reports/{{query_str}}">Relatório</a> </li> <li><a href="reports/{{query_str}}">Relatório</a> </li>
<li><a href="csv/{{query_str}}">Exportar CSV</a> </li> <li><a href="csv/{{query_str}}">Exportar CSV</a> </li>
<li><a href="casas_sem_convenio_report/{{query_str}}">Casas sem convênio</a> </li> <li><a href="casas_sem_convenio_report/{{query_str}}">Casas sem convênio</a> </li>
@ -13,6 +71,6 @@
{% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %} {% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}
</a> </a>
</li> </li>
</ul> </ul>-->
{% endif %} {% endif %}
{% endblock %} {% endblock %}

22
sigi/apps/casas/views.py

@ -4,6 +4,7 @@ from geraldo.generators import PDFGenerator
from sigi.apps.casas.models import CasaLegislativa from sigi.apps.casas.models import CasaLegislativa
from sigi.apps.casas.reports import CasasLegislativasLabels from sigi.apps.casas.reports import CasasLegislativasLabels
from sigi.apps.casas.reports import CasasLegislativasLabelsSemPresidente
from sigi.apps.casas.reports import CasasLegislativasReport from sigi.apps.casas.reports import CasasLegislativasReport
from sigi.apps.casas.reports import CasasSemConvenioReport from sigi.apps.casas.reports import CasasSemConvenioReport
from sigi.apps.casas.reports import InfoCasaLegislativa from sigi.apps.casas.reports import InfoCasaLegislativa
@ -31,6 +32,27 @@ def labels_report(request, id=None,queryset=None):
return response return response
def labels_report_sem_presidente(request, id=None,queryset=None):
""" TODO: adicionar suporte para resultado de pesquisa do admin.
"""
if queryset:
qs = queryset
else:
qs = CasaLegislativa.objects.all()
if id:
qs = qs.filter(pk=id)
elif request.GET:
kwargs = {}
for k, v in request.GET.iteritems():
kwargs[str(k)] = v
qs = qs.filter(**kwargs)
response = HttpResponse(mimetype='application/pdf')
report = CasasLegislativasLabelsSemPresidente(queryset=qs)
report.generate_by(PDFGenerator, filename=response)
return response
def report(request, id=None): def report(request, id=None):
qs = CasaLegislativa.objects.all().order_by('municipio__uf','nome') qs = CasaLegislativa.objects.all().order_by('municipio__uf','nome')

17
sigi/apps/convenios/templates/convenios/change_list.html

@ -13,29 +13,24 @@
<div id="tabs"> <div id="tabs">
<ul> <ul>
<!--<li><a href="#tabs-0"> </a></li>-->
<li><a href="#tabs-1">Exportar</a></li> <li><a href="#tabs-1">Exportar</a></li>
<li><a href="#tabs-2">Resumo por Região</a></li> <li><a href="#tabs-2">Resumo por Região</a></li>
<li> <li>
<a style="display: none" href="#tabs-0" /><a href="add/{% if is_popup %}?_popup=1{% endif %}" class="addlink"> <a style="display: none" href="#tabs-0" />
<a href="add/{% if is_popup %}?_popup=1{% endif %}" class="addlink">
{% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %} {% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}
</a> </a>
</li> </li>
</ul> </ul>
<!-- <div id="tabs-0">
</div>-->
<div id="tabs-1"> <div id="tabs-1">
<p>Escolha uma das opções abaixo para exportar todos os convênios listados. <p>Escolha uma das opções abaixo para exportar todos os convênios listados.
Caso queira selecionar convênios especificos, utilize a opção "exportar Caso queira selecionar convênios especificos, utilize a opção "exportar
convênios selecionados" na caixa "Ação".</p> convênios selecionados" na caixa "Ação".</p>
<div class="tabs-conteudo"> <div class="tabs-conteudo">
<div> <ul>
<ul> <li><a href="reports_por_cm/{{ query_str }}">Exportar para PDF por Câmara Municipal</a></li>
<li><a href="reports_por_cm/{{ query_str }}">Exportar para PDF por Câmara Municipal</a></li> <li><a href="reports_por_al/{{ query_str }}">Exportar para PDF por Assembléia Legislativa</a></li>
<li><a href="reports_por_al/{{ query_str }}">Exportar para PDF por Assembléia Legislativa</a></li> </ul>
</ul>
</div>
</div> </div>
</div> </div>
<div id="tabs-2"> <div id="tabs-2">

Loading…
Cancel
Save