Conjunto de mudanças 4690 no repositório publico


Ignorar:
Timestamp:
22/10/2010 15:56:13 (11 anos atrás)
Autor:
starlone
Mensagem:

Adicionando tabs na pagina de convenio para organizar geração de relatorios. Trocando os nomes de geração de relatorio para exportar para PDF. Acrescentando novo relatorio - resumo de informações do projeto interlegis por região

Localização:
SIGI/trunk/sigi
Arquivos:
1 adicionado
5 editados

Legenda:

Não Modificado
Adicionado
Removido
  • SIGI/trunk/sigi/apps/convenios/admin.py

    r4687 r4690  
    6666        return response       
    6767       
    68     relatorio.short_description = 'Gerar relatorio dos convenios selecionados'
     68    relatorio.short_description = u'Exportar convênios selecionados para PDF'
    6969   
    7070
  • SIGI/trunk/sigi/apps/convenios/reports.py

    r4614 r4690  
    55from geraldo import Report, ReportBand, ObjectValue, DetailBand, Label, \
    66                    landscape,SystemField, BAND_WIDTH,ReportGroup, \
    7                     FIELD_ACTION_SUM, FIELD_ACTION_COUNT
     7                    FIELD_ACTION_SUM, FIELD_ACTION_COUNT, FIELD_ACTION_AVG
    88from geraldo.graphics import Image
    99
     
    2727class SemEquipamentosReport(object):
    2828    pass
     29
    2930class ConvenioReport(ReportDefault):
    30     title = u'Relatório de Convênios'   
     31    title = u'Relatório de Convênios'
    3132
    3233    class band_page_header(ReportDefault.band_page_header):
     
    152153    ]
    153154
    154 
     155float_duas_casas = lambda instance: '%.2f' %  (instance)
    155156class ConvenioReportRegiao(ReportDefault):
    156157    title = u'Relatório de Convênios por Região'
     
    158159    class band_page_header(ReportDefault.band_page_header):
    159160       label_top = ReportDefault.band_page_header.label_top
     161       label_left = [0.5,6,8,10,12,14]
     162       map(lambda x:x-0.4,label_left)
    160163       
    161164       elements = list(ReportDefault.band_page_header.elements)
    162165
    163166       elements += [
    164             Label(
    165                 text="Região", left=0*cm,
    166                 top=label_top,
    167             ),
    168             Label(
    169                 text="Casas", left=3*cm,
    170                 top=label_top,
    171             ),
    172             Label(
    173                 text="Conveniadas", left=5*cm,
    174                 top=label_top,
    175             ),           
    176             Label(
    177                 text="%", left=7*cm,
    178                 top=label_top
    179             ),
    180             Label(
    181                 text="Não Conveniadas", left=9*cm,
    182                 top=label_top,
    183             ),
     167            Label(text="UF", left=label_left[0]*cm,top=label_top,),
     168            Label(text="Total", left=label_left[1]*cm,top=label_top,),
     169            Label(text="Aderidas", left=label_left[2]*cm,top=label_top,),
     170            Label(text="%", left=label_left[3]*cm,top=label_top),
     171            Label(text="Ñ Aderidas", left=label_left[4]*cm,top=label_top,),
     172            Label(text="%", left=label_left[5]*cm,top=label_top),
    184173        ]
    185174    class band_detail(ReportDefault.band_detail):
     175        label_left = [0.5,6,8,10,12,14]
     176        display_inline = True
     177        float_duas_casas = lambda instance: '%.2f' %  (instance.porc_casas_aderidas)
     178        default_style = {'fontName': 'Helvetica', 'fontSize': 11}
     179
    186180        elements=[
    187             ObjectValue(attribute_name='regiao', left=0*cm, ),
    188             ObjectValue(attribute_name='casas', left=3*cm,),
    189             ObjectValue(attribute_name='casas_conveniadas', left=5*cm),
    190             ObjectValue(attribute_name='porc_casas_conveniadas', left=7*cm),
    191         ]
    192         border = {'bottom': True}
    193 
    194     class band_summary(ReportBand):
     181            ObjectValue(attribute_name='estado', left=label_left[0]*cm, ),
     182            ObjectValue(attribute_name='quant_casas', left=label_left[1]*cm,),
     183            ObjectValue(attribute_name='quant_casas_aderidas', left=label_left[2]*cm),
     184            ObjectValue(attribute_name='porc_casas_aderidas', left=label_left[3]*cm),
     185            ObjectValue(attribute_name='quant_casas_nao_aderidas', left=label_left[4]*cm),
     186            ObjectValue(attribute_name='porc_casas_nao_aderidas', left=label_left[5]*cm,),
     187        ]       
     188
     189    class band_summary(ReportBand):       
     190        label_left = [0.5,6,8,10,12,14]       
    195191        elements = [
    196             Label(text="Total", top=0.1*cm, left=0),
    197             ObjectValue(attribute_name='casas', action=FIELD_ACTION_SUM, left=3*cm, top=0.1*cm),
    198             ObjectValue(attribute_name='casas_conveniadas', left=6*cm, action=FIELD_ACTION_SUM),
     192            Label(text="Total", top=0.1*cm, left=label_left[0]*cm),
     193            ObjectValue(attribute_name='quant_casas', action=FIELD_ACTION_SUM, left=label_left[1]*cm, ),
     194            ObjectValue(attribute_name='quant_casas_aderidas', action=FIELD_ACTION_SUM, left=label_left[2]*cm),           
     195#            ObjectValue(attribute_name='porc_casas_aderidas', action=FIELD_ACTION_AVG, left=label_left[3]*cm,
     196#                #get_value= lambda instance : lambda instance: '%.2f' %  (instance.porc_casas_aderidas),
     197#            ),
     198            ObjectValue(attribute_name='quant_casas_nao_aderidas', action=FIELD_ACTION_SUM, left=label_left[4]*cm),
     199#            ObjectValue(attribute_name='porc_casas_nao_aderidas', left=label_left[5]*cm,
     200#               get_value=lambda x: teste(),
     201#            ),
    199202                    ]
    200203        borders = {'top':True}
    201         #child_bands = [
    202         #    ReportBand(
    203         #        height = 0.6*cm,
    204         #        elements = [
    205         #            Label(text="Total",),
    206         #            ObjectValue(attribute_name='casas', action=FIELD_ACTION_COUNT,)
    207         #            ]
    208         #        ),
    209         #    ]
     204       
     205
     206       
     207
     208       
    210209class ConvenioPorCMReport(ConvenioReport):
    211210    title = u'Relatório de Convênios por Câmera Municipal'
  • SIGI/trunk/sigi/apps/convenios/templates/convenios/change_list.html

    r4555 r4690  
    22{% load i18n reporting_tags  %}
    33
     4{% block extrastyle %} 
     5  {{ block.super }}
     6  {% include "jquery/tabs_style.html" %}
     7 
     8{% endblock %}
     9
    410{% block object-tools %}
    511  {% if has_add_permission %}
    6     <ul class="object-tools">
    7       <li><a href="reports_por_cm/{{ query_str }}">Relatórios por Câmara Municipal</a></li>
    8       <li><a href="reports_por_al/{{ query_str }}">Relatórios por Assembléia Legislativa</a></li>
    9       <li><a href="reportsRegiao/">Sumário Região</a></li>
    10       <li>
    11         <a href="add/{% if is_popup %}?_popup=1{% endif %}" class="addlink">
    12           {% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}
    13         </a>
    14       </li>
    15     </ul>
     12 
     13    <div id="tabs">
     14       
     15        <ul>
     16            <!--<li><a href="#tabs-0"> </a></li>-->
     17            <li><a href="#tabs-1">Exportar</a></li>
     18            <li><a href="#tabs-2">Resumo por Região</a></li>
     19            <li>
     20                <a style="display: none" href="#tabs-0" /><a href="add/{% if is_popup %}?_popup=1{% endif %}" class="addlink">
     21                    {% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}
     22                </a>
     23            </li>
     24        </ul>
     25<!--        <div id="tabs-0">
     26
     27        </div>-->
     28        <div id="tabs-1">
     29            <p>Escolha uma das opções abaixo para exportar todos os convênios listados.
     30               Caso queira selecionar convênios especificos, utilize a opção "exportar
     31               convênios selecionados" na caixa "Ação".</p>
     32            <div class="tabs-conteudo">
     33                <div>               
     34                    <ul>
     35                        <li><a href="reports_por_cm/{{ query_str }}">Exportar para PDF por Câmara Municipal</a></li>
     36                        <li><a href="reports_por_al/{{ query_str }}">Exportar para PDF por Assembléia Legislativa</a></li>
     37                    </ul>               
     38                </div>
     39            </div>
     40        </div>
     41        <div id="tabs-2">
     42            <p>Escolha uma das opções abaixo para obter um resumo de informações do Projeto Interlegis por região.
     43            Outros projetos como PPM e PML não serão incluidos. </p>
     44            <ul class="tabs-conteudo">
     45                <li><a href="reportsRegiao/CO">Centro Oeste</a></li>
     46                <li><a href="reportsRegiao/NE">Nordeste</a></li>
     47                <li><a href="reportsRegiao/NO">Norte</a></li>
     48                <li><a href="reportsRegiao/SD">Sudeste</a></li>
     49                <li><a href="reportsRegiao/SL">Sul</a></li>
     50            </ul>
     51        </div> 
     52    </div>
     53 
     54    <!--<ul class="object-tools">
     55       
     56        <li>
     57            <a href="add/{% if is_popup %}?_popup=1{% endif %}" class="addlink">
     58                {% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}
     59            </a>
     60        </li>
     61    </ul>  -->
    1662  {% endif %}
    1763{% endblock %}
  • SIGI/trunk/sigi/apps/convenios/views.py

    r4581 r4690  
    11from django.http import HttpResponse, HttpResponseRedirect
     2from django.shortcuts import render_to_response, get_list_or_404
    23from geraldo.generators import PDFGenerator
    34from sigi.apps.convenios.models import Convenio
     
    78                                        ConvenioReportRegiao
    89from sigi.apps.casas.models import CasaLegislativa
     10from sigi.apps.contatos.models import UnidadeFederativa
     11
     12import ho.pisa as pisa
     13from django.template import Context, loader
     14
     15import datetime
     16
     17
    918
    1019
     
    5564    return response
    5665
    57 class Relatorios(object):
    58     def __init__(self, regiao, casas, casas_conveniadas):
     66class RelatorioRegiao(object):
     67    def __init__(self, estado, casas, casas_aderidas, casas_equipadas,casas_nao_equipadas):
     68        self.estado = estado
     69        self.quant_casas = casas
     70        self.quant_casas_aderidas = casas_aderidas
     71        self.quant_casas_nao_aderidas = (casas - casas_aderidas)
     72        self.quant_casas_equipadas = casas_equipadas
     73        self.quant_casas_nao_equipadas = casas_nao_equipadas
     74        if(casas!=0):
     75            self.porc_casas_aderidas = "%.2f" % (float(casas_aderidas)*100/float(casas))
     76            self.porc_casas_nao_aderidas = "%.2f" % (float(self.quant_casas_nao_aderidas)*100/float(casas))           
     77        else:
     78            self.porc_casas_aderidas = 0
     79            self.porc_casas_nao_aderidas = 0
     80
     81        if(casas_aderidas!=0):
     82            self.porc_casas_equipadas = "%.2f" % (float(casas_equipadas)*100/float(casas_aderidas))
     83            self.porc_casas_nao_equipadas = "%.2f" % (float(self.quant_casas_nao_equipadas)*100/float(casas_aderidas))
     84        else:
     85            self.porc_casas_equipadas = 0
     86            self.porc_casas_nao_equipadas = 0
     87
     88class RelatorioRegiaoTotal:
     89    def __init__(self,regiao,total,total_casas_aderidas,total_casas_equipadas,total_casas_nao_equipadas):
    5990        self.regiao = regiao
    60         self.quant_casas = casas
    61         self.quant_casas_conveniadas = casas_conveniadas
    62         if(casas_conveniadas!=0):
    63             self.porc_casas_conveniadas = float(casas_conveniadas)/float(casas)*100
     91        self.total = total
     92        self.total_casas_aderidas = total_casas_aderidas
     93        self.total_casas_nao_aderidas = (total - total_casas_aderidas)
     94        self.total_casas_equipadas = total_casas_equipadas
     95        self.total_casas_nao_equipadas = total_casas_nao_equipadas
     96
     97        if(total!=0):
     98            self.porc_casas_aderidas = "%.2f" % (float(self.total_casas_aderidas)*100/float(total))
     99            self.porc_casas_nao_aderidas = "%.2f" % (float(self.total_casas_nao_aderidas)*100/float(total))           
    64100        else:
    65             self.porc_casas_conveniadas = 0
     101            self.porc_casas_aderidas = 0
     102            self.porc_casas_nao_aderidas = 0
    66103
    67 def reportRegiao(request):
     104        if(total_casas_aderidas!=0):
     105            self.porc_casas_equipadas = "%.2f" % (float(self.total_casas_equipadas)*100/float(total_casas_aderidas))
     106            self.porc_casas_nao_equipadas = "%.2f" % (float(total_casas_nao_equipadas)*100/float(total_casas_aderidas))
     107        else:
     108            self.porc_casas_equipadas = 0
     109            self.porc_casas_nao_equipadas = 0
    68110
    69     REGIAO_CHOICES = (
    70         ('SL', 'Sul'),
    71         ('SD', 'Sudeste'),
    72         ('CO', 'Centro-Oeste'),
    73         ('NE', 'Nordeste'),
    74         ('NO', 'Norte'),
    75     )   
     111def report_regiao(request,regiao='NE'):
     112
     113    REGIAO_CHOICES = {
     114        'SL': 'Sul',
     115        'SD': 'Sudeste',
     116        'CO': 'Centro-Oeste',
     117        'NE': 'Nordeste',
     118        'NO': 'Norte',
     119    }
     120
     121    get_list_or_404(UnidadeFederativa,regiao=regiao)
     122
     123    # Contando casas por estado
     124    estados = get_list_or_404(UnidadeFederativa,regiao=regiao)
     125
     126    lista = []
     127    for estado in estados:
     128
     129        casas = CasaLegislativa.objects.filter(municipio__uf=estado)
     130        casas_aderidas = casas.exclude(convenio=None).distinct()
     131        casas_equipadas = casas_aderidas.exclude(convenio__data_termo_aceite=None).distinct()
     132        casas_nao_equipadas = casas_aderidas.filter(convenio__data_termo_aceite=None).distinct()
     133
     134        lista.append(
     135            RelatorioRegiao(
     136                estado.sigla,casas.count(),
     137                casas_aderidas.count(),
     138                casas_equipadas.count(),
     139                casas_nao_equipadas.count()
     140            )
     141        )
     142
     143    # Total de casas na regiao
     144    casas = CasaLegislativa.objects.filter(municipio__uf__regiao=regiao)
     145    casas_aderidas = casas.exclude(convenio=None).distinct()
     146    casas_equipadas = casas_aderidas.exclude(convenio__data_termo_aceite=None).distinct()
     147    casas_nao_equipadas = casas_aderidas.filter(convenio__data_termo_aceite=None).distinct()
     148    sumario_regiao = RelatorioRegiaoTotal(
     149        REGIAO_CHOICES[regiao],
     150        casas.count(),
     151        casas_aderidas.count(),
     152        casas_equipadas.count(),
     153        casas_nao_equipadas.count(),
     154    )
     155
     156#    response = HttpResponse(mimetype='application/pdf')
     157#    relatorio  = ConvenioReportRegiao(queryset=lista)
     158#    relatorio.generate_by(PDFGenerator, filename=response)
    76159   
    77     convenios = Convenio.object.all()
    78    
    79     regioes = []
    80     conveniosCO.filter(municipio__uf__regiao='CO')
    81     conveniosNO.filter(municipio__uf__regiao='NO')
    82     conveniosNE.filter(municipio__uf__regiao='NE')
    83     conveniosSD.filter(municipio__uf__regiao='SD')
    84     conveniosSL.filter(municipio__uf__regiao='SL')
    85    
    86     for regiao in REGIAO_CHOICES:
     160    data = datetime.datetime.now().strftime('%d/%m/%Y')
     161    hora = datetime.datetime.now().strftime('%H:%M')   
     162    pisa.showLogging()
     163    response = HttpResponse(mimetype='application/pdf')
     164    response['Content-Disposition'] = 'attachment; filename=RelatorioRegiao_' + regiao + '.pdf'
     165    t = loader.get_template('convenios/relatorio_por_regiao.html')
     166    c = Context({'lista': lista,'sumario_regiao':sumario_regiao,'data':data,'hora':hora})
     167    pdf = pisa.CreatePDF(t.render(c),response)
     168    if not pdf.err:
     169        pisa.startViewer(response)
    87170
    88         casasSD = CasaLegislativa.objects.filter(municipio__uf__regiao=regiao[0])
    89         casasConvSD = CasaLegislativa.objects.filter(convenio__casa_legislativa__municipio__uf__regiao=regiao[0]).distinct()
    90 
    91         relatorio.append(Relatorios(casa[1], casasSD.count(),
    92                                 casasConvSD.count()))
    93    
    94     response = HttpResponse(mimetype='application/pdf')
    95     relatorio  = ConvenioReportRegiao(queryset=relatorio)
    96     relatorio.generate_by(PDFGenerator, filename=response)
    97171    return response
    98172     
  • SIGI/trunk/sigi/urls.py

    r4581 r4690  
    2828    (r'^convenios/convenio/reports_por_al/',
    2929     'sigi.apps.convenios.views.report_por_al'),
    30     (r'^convenios/convenio/reportsRegiao/',
    31      'sigi.apps.convenios.views.reportRegiao'),
     30    (r'^convenios/convenio/reportsRegiao/(?P<regiao>\w+)',
     31     'sigi.apps.convenios.views.report_regiao'),
    3232    # automatic interface based on admin
    3333    (r'^(.*)', sites.default.root),
Note: Veja TracChangeset para ajuda no uso do visualizador de conjunto de mudanças.
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.