Browse Source

Acrescentando auto_expand_height ao ReportDefault

diagnosticos
Starlone (Estagiario) 15 years ago
parent
commit
1dd520fdd3
  1. 2
      sigi/apps/casas/admin.py
  2. 123
      sigi/apps/casas/reports.py
  3. 6
      sigi/apps/convenios/models.py
  4. 60
      sigi/apps/convenios/reports.py
  5. 32
      sigi/apps/convenios/views.py
  6. 1
      sigi/apps/relatorios/reports.py
  7. 8
      sigi/context_processors.py
  8. 2
      sigi/settings.py
  9. 3
      sigi/urls.py

2
sigi/apps/casas/admin.py

@ -32,7 +32,7 @@ class CasaLegislativaAdmin(admin.ModelAdmin):
list_display = ('nome','municipio','parlamentar','logradouro') list_display = ('nome','municipio','parlamentar','logradouro')
list_display_links = ('nome',) list_display_links = ('nome',)
list_filter = ('tipo', 'municipio') list_filter = ('tipo', 'municipio')
ordering = ('municipio__uf','nome') ordering = ('nome','municipio__uf')
fieldsets = ( fieldsets = (
(None, { (None, {
'fields': ('nome', 'sigla', 'tipo', 'cnpj', 'observacoes', 'fields': ('nome', 'sigla', 'tipo', 'cnpj', 'observacoes',

123
sigi/apps/casas/reports.py

@ -1,8 +1,9 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from reportlab.lib.pagesizes import A4 from reportlab.lib.pagesizes import A4
from reportlab.lib.units import cm from reportlab.lib.units import cm
from reportlab.lib.enums import TA_CENTER, TA_RIGHT
from geraldo import Report, DetailBand, Label, ObjectValue, ManyElements, \ from geraldo import Report, DetailBand, Label, ObjectValue, ManyElements, \
ReportGroup, ReportBand, landscape ReportGroup, ReportBand, landscape, SubReport, BAND_WIDTH
from sigi.apps.relatorios.reports import ReportDefault from sigi.apps.relatorios.reports import ReportDefault
@ -299,6 +300,7 @@ class InfoCasaLegislativa(ReportDefault):
0,2.8, #Logradouro 0,2.8, #Logradouro
0,1.6, #Bairro 0,1.6, #Bairro
0,1.3, #CEP 0,1.3, #CEP
0,2.7, #Presidente
] ]
posicao_top = [ posicao_top = [
0.5, #Regiao 0.5, #Regiao
@ -308,13 +310,14 @@ class InfoCasaLegislativa(ReportDefault):
2.1, #Logradouro 2.1, #Logradouro
2.9, #Bairro 2.9, #Bairro
3.7, #CEP 3.7, #CEP
4.5, #Presidente
] ]
height=30*cm
display_inline = True display_inline = True
REGIAO_CHOICES = {'SL': 'Sul','SD': 'Sudeste','CO': 'Centro-Oeste','NE': 'Nordeste','NO': 'Norte',}
default_style = {'fontName': 'Helvetica', 'fontSize':14} default_style = {'fontName': 'Helvetica', 'fontSize':14}
elements = [ elements = [
# Linha 1 # Linha 1
@ -396,6 +399,118 @@ class InfoCasaLegislativa(ReportDefault):
left=posicao_left[13]*cm, left=posicao_left[13]*cm,
top=posicao_top[6]*cm, top=posicao_top[6]*cm,
), ),
Label(
text="Presidente: ",
left=posicao_left[14]*cm,
top=posicao_top[7]*cm,
),
ObjectValue(
attribute_name='parlamentar',
left=posicao_left[15]*cm,
top=posicao_top[7]*cm,
width=20*cm,
),
]
label_top = 1.5*cm
label_left = [0,1.5,4,8,10.5,13,15.5,18]
subreports = [
SubReport(
queryset_string = '%(object)s.convenio_set.all()',
band_header = ReportBand(
default_style = {'fontName': 'Helvetica', 'fontSize':11},
height=2*cm,
elements=[
Label(
text="Convênio(s)",
style = {'fontSize':14,'alignment': TA_CENTER},
width=BAND_WIDTH,
top=1*cm,
),
Label(
text="Projeto",
left=label_left[0]*cm,
top=label_top
),
Label(
text="Nº Convenio",
left=label_left[1]*cm,
top=label_top
),
Label(
text="Nº Processo SF",
left=label_left[2]*cm,
top=label_top
),
Label(
text="Adesão",
left=label_left[3]*cm,
top=label_top
),
Label(
text="Convênio",
left=label_left[4]*cm,
top=label_top
),
Label(
text="Equipada",
left=label_left[5]*cm,
top=label_top
),
Label(
text="Data D.O.",
left=label_left[6]*cm,
top=label_top
),
],
borders = {'bottom': True}
),
band_detail = ReportBand(
default_style = {'fontName': 'Helvetica', 'fontSize':11},
height=0.5*cm,
elements=[
ObjectValue(
attribute_name='projeto.sigla',
left=label_left[0]*cm
),
ObjectValue(
attribute_name='num_convenio',
left=label_left[1]*cm
),
ObjectValue(
attribute_name='num_processo_sf',
left=label_left[2]*cm
),
ObjectValue(
attribute_name='data_adesao',
left=label_left[3]*cm,
get_value=lambda instance:
instance.data_adesao.strftime('%d/%m/%Y') if instance.data_adesao != None else '-'
),
ObjectValue(
attribute_name='data_retorno_assinatura',
left=label_left[4]*cm,
get_value=lambda instance:
instance.data_retorno_assinatura.strftime('%d/%m/%Y') if instance.data_retorno_assinatura != None else '-'
),
ObjectValue(
attribute_name='data_termo_aceite',
left=label_left[5]*cm,
get_value=lambda instance:
instance.data_termo_aceite.strftime('%d/%m/%Y') if instance.data_termo_aceite != None else '-'
),
ObjectValue(
attribute_name='data_pub_diario',
left=label_left[6]*cm,
get_value=lambda instance:
instance.data_pub_diario.strftime('%d/%m/%Y') if instance.data_pub_diario != None else '-'
),
],
#borders={'left': True, 'right': True},
),
band_footer = ReportBand(
#height=0.5*cm,
),
)
]
]

6
sigi/apps/convenios/models.py

@ -18,6 +18,9 @@ class Convenio(models.Model):
) )
casa_legislativa.convenio_uf_filter = True casa_legislativa.convenio_uf_filter = True
casa_legislativa.convenio_cl_tipo_filter = True casa_legislativa.convenio_cl_tipo_filter = True
projeto = models.ForeignKey(
Projeto
)
num_processo_sf = models.CharField( num_processo_sf = models.CharField(
'número do processo SF', 'número do processo SF',
max_length=11, max_length=11,
@ -34,9 +37,6 @@ class Convenio(models.Model):
null=True, null=True,
blank=True, blank=True,
) )
projeto = models.ForeignKey(
Projeto
)
data_retorno_assinatura = models.DateField( data_retorno_assinatura = models.DateField(
'Conveniadas', 'Conveniadas',
null=True, null=True,

60
sigi/apps/convenios/reports.py

@ -145,31 +145,42 @@ class ConvenioReport(ReportDefault):
] ]
class ConvenioReportRegiao(Report): class ConvenioReportRegiao(ReportDefault):
title = u'Relatório dos Convênios por Região' title = u'Relatório de Convênios por Região'
author = u'Interlegis'
class band_page_header(ReportBand): class band_page_header(ReportDefault.band_page_header):
elements = [ label_top = ReportDefault.band_page_header.label_top
elements = list(ReportDefault.band_page_header.elements)
elements += [
Label( Label(
text="Região", left=0*cm text="Região", left=0*cm,
top=label_top,
), ),
Label( Label(
text="Quantidade Casas", left=3*cm, text="Casas", left=3*cm,
top=label_top,
), ),
Label( Label(
text="Quantidade Casas Conveniadas", left=6*cm text="Conveniadas", left=5*cm,
top=label_top,
), ),
Label( Label(
text="Porcentagem Casas Conveniadas", left=15*cm text="%", left=7*cm,
top=label_top
),
Label(
text="Não Conveniadas", left=9*cm,
top=label_top,
), ),
] ]
class band_detail(DetailBand): class band_detail(ReportDefault.band_detail):
height = 0.5*cm
elements=[ elements=[
ObjectValue(attribute_name='regiao', left=0*cm, ), ObjectValue(attribute_name='regiao', left=0*cm, ),
ObjectValue(attribute_name='casas', left=3*cm,), ObjectValue(attribute_name='casas', left=3*cm,),
ObjectValue(attribute_name='casas_conveniadas', left=6*cm), ObjectValue(attribute_name='casas_conveniadas', left=5*cm),
ObjectValue(attribute_name='porc_casas_conveniadas', left=15*cm), ObjectValue(attribute_name='porc_casas_conveniadas', left=7*cm),
] ]
border = {'bottom': True} border = {'bottom': True}
@ -180,12 +191,17 @@ class ConvenioReportRegiao(Report):
ObjectValue(attribute_name='casas_conveniadas', left=6*cm, action=FIELD_ACTION_SUM), ObjectValue(attribute_name='casas_conveniadas', left=6*cm, action=FIELD_ACTION_SUM),
] ]
borders = {'top':True} borders = {'top':True}
child_bands = [ #child_bands = [
ReportBand( # ReportBand(
height = 0.6*cm, # height = 0.6*cm,
elements = [ # elements = [
Label(text="Total",), # Label(text="Total",),
ObjectValue(attribute_name='casas', action=FIELD_ACTION_COUNT,) # ObjectValue(attribute_name='casas', action=FIELD_ACTION_COUNT,)
] # ]
), # ),
] # ]
class ConvenioPorCMReport(ConvenioReport):
title = u'Relatório de Convênios por Câmera Municipal'
class ConvenioPorALReport(ConvenioReport):
title = u'Relatório de Convênios por Assembléia Legislativa'

32
sigi/apps/convenios/views.py

@ -1,7 +1,10 @@
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, HttpResponseRedirect
from geraldo.generators import PDFGenerator from geraldo.generators import PDFGenerator
from sigi.apps.convenios.models import Convenio from sigi.apps.convenios.models import Convenio
from sigi.apps.convenios.reports import ConvenioReport, ConvenioReportRegiao from sigi.apps.convenios.reports import ConvenioReport, \
ConvenioPorCMReport, \
ConvenioPorALReport, \
ConvenioReportRegiao
from sigi.apps.casas.models import CasaLegislativa from sigi.apps.casas.models import CasaLegislativa
@ -24,7 +27,7 @@ def report_por_cm(request, id=None):
if not qs: if not qs:
return HttpResponseRedirect('../') return HttpResponseRedirect('../')
response = HttpResponse(mimetype='application/pdf') response = HttpResponse(mimetype='application/pdf')
report = ConvenioReport(queryset=qs) report = ConvenioPorCMReport(queryset=qs)
report.generate_by(PDFGenerator, filename=response) report.generate_by(PDFGenerator, filename=response)
return response return response
@ -47,21 +50,22 @@ def report_por_al(request, id=None):
if not qs: if not qs:
return HttpResponseRedirect('../') return HttpResponseRedirect('../')
response = HttpResponse(mimetype='application/pdf') response = HttpResponse(mimetype='application/pdf')
report = ConvenioReport(queryset=qs) report = ConvenioPorALReport(queryset=qs)
report.generate_by(PDFGenerator, filename=response) report.generate_by(PDFGenerator, filename=response)
return response return response
class Relatorios(object): class Relatorios(object):
def __init__(self, regiao, casas, casas_conveniadas): def __init__(self, regiao, casas, casas_conveniadas):
self.regiao = regiao self.regiao = regiao
self.casas = casas self.quant_casas = casas
self.casas_conveniadas = casas_conveniadas self.quant_casas_conveniadas = casas_conveniadas
if(casas_conveniadas!=0): if(casas_conveniadas!=0):
self.porc_casas_conveniadas = float(casas_conveniadas)/float(casas)*100 self.porc_casas_conveniadas = float(casas_conveniadas)/float(casas)*100
else: else:
self.porc_casas_conveniadas = 0 self.porc_casas_conveniadas = 0
def reportRegiao(request): def reportRegiao(request):
REGIAO_CHOICES = ( REGIAO_CHOICES = (
('SL', 'Sul'), ('SL', 'Sul'),
('SD', 'Sudeste'), ('SD', 'Sudeste'),
@ -69,10 +73,20 @@ def reportRegiao(request):
('NE', 'Nordeste'), ('NE', 'Nordeste'),
('NO', 'Norte'), ('NO', 'Norte'),
) )
relatorio = []
for casa in REGIAO_CHOICES: convenios = Convenio.object.all()
casasSD = CasaLegislativa.objects.filter(municipio__uf__regiao=casa[0])
casasConvSD = CasaLegislativa.objects.filter(convenio__casa_legislativa__municipio__uf__regiao=casa[0]).distinct() regioes = []
conveniosCO.filter(municipio__uf__regiao='CO')
conveniosNO.filter(municipio__uf__regiao='NO')
conveniosNE.filter(municipio__uf__regiao='NE')
conveniosSD.filter(municipio__uf__regiao='SD')
conveniosSL.filter(municipio__uf__regiao='SL')
for regiao in REGIAO_CHOICES:
casasSD = CasaLegislativa.objects.filter(municipio__uf__regiao=regiao[0])
casasConvSD = CasaLegislativa.objects.filter(convenio__casa_legislativa__municipio__uf__regiao=regiao[0]).distinct()
relatorio.append(Relatorios(casa[1], casasSD.count(), relatorio.append(Relatorios(casa[1], casasSD.count(),
casasConvSD.count())) casasConvSD.count()))

1
sigi/apps/relatorios/reports.py

@ -60,3 +60,4 @@ class ReportDefault(Report):
class band_detail(DetailBand): class band_detail(DetailBand):
height = 0.5*cm height = 0.5*cm
default_style = {'fontName': 'Helvetica', 'fontSize': 8} default_style = {'fontName': 'Helvetica', 'fontSize': 8}
auto_expand_height = True

8
sigi/context_processors.py

@ -40,8 +40,8 @@ def charts_data(request):
num_casas_conveniadas_regiao = [] num_casas_conveniadas_regiao = []
for regiao in REGIAO_CHOICES: for regiao in REGIAO_CHOICES:
num_casas_conveniadas_regiao.append( num_casas_conveniadas_regiao.append(
CasaLegislativa.objects.filter( casas.filter(
convenio__casa_legislativa__municipio__uf__regiao=regiao municipio__uf__regiao=regiao
).exclude( ).exclude(
convenio__data_retorno_assinatura=None convenio__data_retorno_assinatura=None
).distinct().count() ).distinct().count()
@ -60,8 +60,8 @@ def charts_data(request):
if num_regiao_maior<i: if num_regiao_maior<i:
num_regiao_maior = i num_regiao_maior = i
equip_n_recebidos = CasaLegislativa.objects.filter(convenio__data_termo_aceite=None).count() equip_n_recebidos = CasaLegislativa.objects.exclude(convenio=None).filter(convenio__data_termo_aceite=None).distinct().count()
equip_recebidos = CasaLegislativa.objects.exclude(convenio__data_termo_aceite=None).count() equip_recebidos = CasaLegislativa.objects.exclude(convenio=None).exclude(convenio__data_termo_aceite=None).distinct().count()
#equip_n_recebidos = convenios.filter(data_termo_aceite=None).count() #equip_n_recebidos = convenios.filter(data_termo_aceite=None).count()
#equip_recebidos = convenios.exclude(data_termo_aceite=None).count() #equip_recebidos = convenios.exclude(data_termo_aceite=None).count()

2
sigi/settings.py

@ -31,7 +31,7 @@ DATABASE_PASSWORD = 'interlegis'
DATABASE_HOST = 'banco' DATABASE_HOST = 'banco'
DATABASE_PORT = '5432' DATABASE_PORT = '5432'
TIME_ZONE = 'America/Sao_Paulo' TIME_ZONE = 'Brazil/East'
LANGUAGE_CODE = 'pt-br' LANGUAGE_CODE = 'pt-br'
SITE_ID = 1 SITE_ID = 1

3
sigi/urls.py

@ -8,6 +8,9 @@ import sigi.admin.filterspecs
urlpatterns = patterns( urlpatterns = patterns(
'', '',
# Informacoes de uma casa legislativa
(r'^casas/casalegislativa/(?P<id>\w+)/casa_info/',
'sigi.apps.casas.views.casa_info'),
# reports labels # reports labels
(r'^casas/casalegislativa/labels/', (r'^casas/casalegislativa/labels/',
'sigi.apps.casas.views.labels_report'), 'sigi.apps.casas.views.labels_report'),

Loading…
Cancel
Save