diff --git a/sigi/apps/casas/admin.py b/sigi/apps/casas/admin.py
index 1279809..9145e9b 100644
--- a/sigi/apps/casas/admin.py
+++ b/sigi/apps/casas/admin.py
@@ -1,16 +1,17 @@
# -*- coding: utf-8 -*-
from django.contrib import admin
from django.contrib.contenttypes import generic
-from sigi.apps.casas.forms import CasaLegislativaForm
-from sigi.apps.casas.models import CasaLegislativa
-from sigi.apps.contatos.models import Contato, Telefone
-from sigi.apps.convenios.models import Projeto, Convenio, EquipamentoPrevisto, Anexo
+from apps.casas.forms import CasaLegislativaForm
+from apps.casas.models import CasaLegislativa
+from apps.contatos.models import Contato, Telefone
+from apps.convenios.models import Projeto, Convenio, EquipamentoPrevisto, Anexo
from django.http import HttpResponse, HttpResponseRedirect
-from sigi.apps.casas.reports import CasasLegislativasLabels, CasasLegislativasReport
+from apps.casas.reports import CasasLegislativasLabels, CasasLegislativasReport
from geraldo.generators import PDFGenerator
-from sigi.apps.casas.views import casa_info, labels_report, export_csv, \
- labels_report_sem_presidente, report
-from sigi.apps.utils import queryset_ascii
+from apps.casas.views import report_complete, labels_report, export_csv, \
+ labels_report_sem_presidente, report, \
+ adicionar_casas_carrinho
+from apps.utils import queryset_ascii
class ContatosInline(generic.GenericTabularInline):
model = Contato
@@ -30,7 +31,7 @@ class CasaLegislativaAdmin(admin.ModelAdmin):
form = CasaLegislativaForm
change_form_template = 'casas/change_form.html'
change_list_template = 'casas/change_list.html'
- actions = ['etiqueta','relatorio','relatorio_csv','relatorio_completo','etiqueta_sem_presidente', 'adicionar_casas', 'teste']
+ actions = ['adicionar_casas',]
inlines = (TelefonesInline, ContatosInline, ConveniosInline)
list_display = ('nome','municipio','presidente','logradouro')
list_display_links = ('nome',)
@@ -61,41 +62,42 @@ class CasaLegislativaAdmin(admin.ModelAdmin):
extra_context={'query_str': '?' + request.META['QUERY_STRING']}
)
- def etiqueta(modelAdmin,request,queryset):
+ def etiqueta(self,request,queryset):
return labels_report(request,queryset=queryset)
etiqueta.short_description = "Gerar etiqueta(s) da(s) casa(s) selecionada(s)"
- def etiqueta_sem_presidente(modelAdmin,request,queryset):
+ def etiqueta_sem_presidente(self,request,queryset):
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(self,request,queryset):
return report(request,queryset=queryset)
relatorio.short_description = u"Exportar a(s) casa(s) selecionada(s) para PDF"
- def relatorio_completo(modelAdmin,request,queryset):
- return casa_info(request,queryset=queryset)
+ def relatorio_completo(self,request,queryset):
+ return report_complete(request,queryset=queryset)
relatorio_completo.short_description = u"Gerar relatório completo da(s) casa(s) selecionada(s)"
- def relatorio_csv(modelAdmin,request,queryset):
+ def relatorio_csv(self,request,queryset):
return export_csv(request)
relatorio_csv.short_description = u"Exportar casa(s) selecionada(s) para CSV"
- def adicionar_casas(modelAdmin, request, queryset):
- if request.method == 'POST':
- ids_selecionados = request.POST.getlist('_selected_action')
- print "Selecionados atual :",
- print ids_selecionados
- if request.session.has_key('ids_selecionados_etiqueta') == False:
- request.session['ids_selecionados_etiqueta'] = ids_selecionados
- else:
- lista = request.session['ids_selecionados_etiqueta']
- print "Selecionados anteriormente :",
- print lista
- lista.extend(ids_selecionados)
- print "Todos selecionados :",
- print lista
- request.session['ids_selecionados_etiqueta'] = lista
+ def adicionar_casas(self, request, queryset):
+ if request.session.has_key('carrinho_casas'):
+ q1 = len(request.session['carrinho_casas'])
+ else:
+ q1 = 0
+ response = adicionar_casas_carrinho(request,queryset=queryset)
+ q2 = len(request.session['carrinho_casas'])
+ quant = q2 - q1
+ if quant:
+ self.message_user(request,str(q2-q1)+" Casas Legislativas adicionadas no carrinho" )
+ else:
+ self.message_user(request,"As Casas Legislativas selecionadas já foram adicionadas anteriormente" )
+ return HttpResponseRedirect('.')
+
+ adicionar_casas.short_description = u"Armazenar casas no carrinho para exportar"
+
def get_actions(self, request):
actions = super(CasaLegislativaAdmin, self).get_actions(request)
diff --git a/sigi/apps/casas/reports.py b/sigi/apps/casas/reports.py
index b727e85..e2627d5 100644
--- a/sigi/apps/casas/reports.py
+++ b/sigi/apps/casas/reports.py
@@ -3,7 +3,7 @@ from reportlab.lib.pagesizes import A4
from reportlab.lib.units import cm
from reportlab.lib.enums import TA_CENTER, TA_RIGHT
from geraldo import Report, DetailBand, Label, ObjectValue, ManyElements, \
- ReportGroup, ReportBand, landscape, SubReport, BAND_WIDTH
+ ReportGroup, ReportBand, landscape, SubReport, BAND_WIDTH,SystemField
from sigi.apps.relatorios.reports import ReportDefault
@@ -220,6 +220,15 @@ class CasasSemConvenioReport(CasasLegislativasReport):
class InfoCasaLegislativa(ReportDefault):
title = u'Casa legislativa'
+ class band_summary(ReportBand):
+ pass
+ class band_page_footer(ReportBand):
+ height = 1*cm
+
+ elements = [
+ SystemField(expression=u'%(now:%d/%m/%Y)s às %(now:%H:%M)s', top=0.3*cm),
+ ]
+
class band_detail(ReportDefault.band_detail):
posicao_left = [
@@ -403,7 +412,7 @@ class InfoCasaLegislativa(ReportDefault):
),
ObjectValue(attribute_name='nota',left=tel_left[2]*cm),
],
- borders = {'all':True},
+ #borders = {'all':True},
),
),
#Contatos
@@ -433,7 +442,7 @@ class InfoCasaLegislativa(ReportDefault):
ObjectValue(attribute_name='nota',left=cont_left[1]*cm),
ObjectValue(attribute_name='email',left=cont_left[2]*cm),
],
- borders = {'all':True},
+ #borders = {'all':True},
),
),
#Convenios
@@ -483,7 +492,7 @@ class InfoCasaLegislativa(ReportDefault):
instance.data_pub_diario.strftime('%d/%m/%Y') if instance.data_pub_diario != None else '-'
),
],
- borders = {'all':True},
+ #borders = {'all':True},
),
)
]
diff --git a/sigi/apps/casas/templates/casas/carrinho.html b/sigi/apps/casas/templates/casas/carrinho.html
new file mode 100644
index 0000000..e606365
--- /dev/null
+++ b/sigi/apps/casas/templates/casas/carrinho.html
@@ -0,0 +1,158 @@
+{% extends "admin/carrinho.html" %}
+{% load adminmedia admin_list i18n %}
+{% block extrastyle %}
+ {{ block.super }}
+ {% include "admin/tabs_style.html" %}
+
+
+{% endblock %}
+
+{% block title %}Casas legislativas no Carrinho | SIGI{% endblock %}
+{% block content_title %}
Casas Legislativas no Carrinho
{% endblock %}
+
+{% block mensagem%}
+
+ {%if carIsEmpty%}
+ - O carrinho está vazio, sendo assim todas as casas entram na lista para exportação de acordo com os filtros aplicados.
+ {%else%}
+ - {{paginas.paginator.count}} Casas Legislativas no carrinho.
+ {%endif%}
+
+{% endblock %}
+
+{% block action %}/casas/casalegislativa/carrinho/deleta_itens_carrinho{% endblock %}
+
+{% block tabela %}
+
+{% endblock %}
+
+{% block botoes %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/sigi/apps/casas/templates/casas/change_form.html b/sigi/apps/casas/templates/casas/change_form.html
index aff4757..b59cb99 100644
--- a/sigi/apps/casas/templates/casas/change_form.html
+++ b/sigi/apps/casas/templates/casas/change_form.html
@@ -4,7 +4,7 @@
{% block object-tools %}
{% if change %}{% if not is_popup %}
+
{% endblock %}
diff --git a/sigi/apps/casas/views.py b/sigi/apps/casas/views.py
index 92e1e24..0d0db98 100644
--- a/sigi/apps/casas/views.py
+++ b/sigi/apps/casas/views.py
@@ -1,15 +1,21 @@
# -*- coding: utf-8 -*-
from django.http import HttpResponse, HttpResponseRedirect
+from django.shortcuts import render_to_response
from geraldo.generators import PDFGenerator
-from sigi.apps.casas.models import CasaLegislativa
+from apps.casas.models import CasaLegislativa
-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 CasasSemConvenioReport
-from sigi.apps.casas.reports import InfoCasaLegislativa
+from apps.casas.reports import CasasLegislativasLabels
+from apps.casas.reports import CasasLegislativasLabelsSemPresidente
+from apps.casas.reports import CasasLegislativasReport
+from apps.casas.reports import CasasSemConvenioReport
+from apps.casas.reports import InfoCasaLegislativa
+
+from django.core.paginator import Paginator, InvalidPage, EmptyPage
+
+from django.conf import settings
import csv
+from bzrlib.switch import switch
def query_ordena(qs,o,ot):
list_display = ('nome','municipio','presidente','logradouro')
@@ -22,93 +28,186 @@ def query_ordena(qs,o,ot):
return qs
def get_for_qs(get,qs):
+ """
+ Verifica atributos do GET e retorna queryset correspondente
+ """
kwargs = {}
for k,v in get.iteritems():
- if not k == 'o':
- if k == "ot":
- qs = query_ordena(qs,get["o"],get["ot"])
- else:
- kwargs[str(k)] = v
- qs = qs.filter(**kwargs)
+ if not (k == 'page' or k == 'pop' or k == 'q'):
+ if not k == 'o':
+ if k == "ot":
+ qs = query_ordena(qs,get["o"],get["ot"])
+ else:
+ kwargs[str(k)] = v
+ qs = qs.filter(**kwargs)
return qs
-
-def labels_report(request, id=None,queryset=None):
- """ TODO: adicionar suporte para resultado de pesquisa do admin.
+def carrinhoOrGet_for_qs(request):
+ """
+ Verifica se existe casas na sessão se não verifica get e retorna qs correspondente.
"""
- if request.session.has_key('ids_selecionados_etiqueta') == True:
- ids = request.session['ids_selecionados_etiqueta']
- del request.session['ids_selecionados_etiqueta']
-# request.session.modified = True
- print "Impressao",
- print ids
- qs = CasaLegislativa.objects.filter(pk__in=ids)
- elif queryset:
- qs = queryset
+ if request.session.has_key('carrinho_casas'):
+ ids = request.session['carrinho_casas']
+ qs = CasaLegislativa.objects.filter(pk__in=ids)
else:
- qs = CasaLegislativa.objects.all()
- if id:
- qs = qs.filter(pk=id)
- elif request.GET:
+ qs = CasaLegislativa.objects.all()
+ if request.GET:
qs = get_for_qs(request.GET,qs)
+ return qs
+
+def adicionar_casas_carrinho(request,queryset=None,id=None):
+ if request.method == 'POST':
+ ids_selecionados = request.POST.getlist('_selected_action')
+ if not request.session.has_key('carrinho_casas'):
+ request.session['carrinho_casas'] = ids_selecionados
+ else:
+ lista = request.session['carrinho_casas']
+ # Verifica se id já não está adicionado
+ for id in ids_selecionados:
+ if not id in lista:
+ lista.append(id)
+ request.session['carrinho_casas'] = lista
+
+
+
+def visualizar_carrinho(request):
+
+ qs = carrinhoOrGet_for_qs(request)
+
+ paginator = Paginator(qs, 100)
+
+ # Make sure page request is an int. If not, deliver first page.
+ # Esteja certo de que o `page request` é um inteiro. Se não, mostre a primeira página.
+ try:
+ page = int(request.GET.get('page', '1'))
+ except ValueError:
+ page = 1
+
+ # Se o page request (9999) está fora da lista, mostre a última página.
+ try:
+ paginas = paginator.page(page)
+ except (EmptyPage, InvalidPage):
+ paginas = paginator.page(paginator.num_pages)
+
+ carrinhoIsEmpty = not(request.session.has_key('carrinho_casas'))
+
+ return render_to_response(
+ 'casas/carrinho.html',
+ {
+ "ADMIN_MEDIA_PREFIX":settings.ADMIN_MEDIA_PREFIX,
+ 'MEDIA_URL':settings.MEDIA_URL,
+ 'carIsEmpty':carrinhoIsEmpty,
+ 'paginas':paginas,
+ 'query_str':'?'+request.META['QUERY_STRING']
+ }
+ )
+
+def excluir_carrinho(request):
+ if request.session.has_key('carrinho_casas'):
+ del request.session['carrinho_casas']
+ return HttpResponseRedirect('.')
+
+def deleta_itens_carrinho(request):
+ if request.method == 'POST':
+ ids_selecionados = request.POST.getlist('_selected_action')
+ if request.session.has_key('carrinho_casas'):
+ lista = request.session['carrinho_casas']
+ for item in ids_selecionados:
+ lista.remove(item)
+ if lista:
+ request.session['carrinho_casas'] = lista
+ else:
+ del lista;
+ del request.session['carrinho_casas']
+
+ return HttpResponseRedirect('.')
+
+
+
+
+def labels_report(request, id=None, tipo=None):
+ """ TODO: adicionar suporte para resultado de pesquisa do admin.
+ """
+
+ if request.POST:
+ if request.POST.has_key('tipo_etiqueta'):
+ tipo = request.POST['tipo_etiqueta']
+
+ if tipo =='sem_presidente':
+ return labels_report_sem_presidente(request, id)
+
+ if id:
+ qs = CasaLegislativa.objects.filter(pk=id)
+ else:
+ qs = carrinhoOrGet_for_qs(request)
+
+ if not qs:
+ return HttpResponseRedirect('../')
response = HttpResponse(mimetype='application/pdf')
+ response['Content-Disposition'] = 'attachment; filename=casas.pdf'
report = CasasLegislativasLabels(queryset=qs)
report.generate_by(PDFGenerator, filename=response)
return response
-def labels_report_sem_presidente(request, id=None,queryset=None):
+def labels_report_sem_presidente(request, id=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:
- qs = get_for_qs(request.GET,qs)
+
+ if id:
+ qs = CasaLegislativa.objects.filter(pk=id)
+ else:
+ qs = carrinhoOrGet_for_qs(request)
+
+ if not qs:
+ return HttpResponseRedirect('../')
response = HttpResponse(mimetype='application/pdf')
+ response['Content-Disposition'] = 'attachment; filename=casas.pdf'
report = CasasLegislativasLabelsSemPresidente(queryset=qs)
report.generate_by(PDFGenerator, filename=response)
return response
-def report(request, id=None,queryset=None):
- if queryset:
- qs = queryset
- else:
- qs = CasaLegislativa.objects.all()
- if id:
- qs = qs.filter(pk=id)
- elif request.GET:
- qs = get_for_qs(request.GET,qs)
+def report(request, id=None,tipo=None):
+
+ if request.POST:
+ if request.POST.has_key('tipo_relatorio'):
+ tipo = request.POST['tipo_relatorio']
+
+ if tipo =='completo':
+ return report_complete(request, id)
+
+
+ if id:
+ qs = CasaLegislativa.objects.filter(pk=id)
+ else:
+ qs = carrinhoOrGet_for_qs(request)
- if not qs:
- return HttpResponseRedirect('../')
+ if not qs:
+ return HttpResponseRedirect('../')
#qs.order_by('municipio__uf','nome')
response = HttpResponse(mimetype='application/pdf')
+ response['Content-Disposition'] = 'attachment; filename=casas.pdf'
report = CasasLegislativasReport(queryset=qs)
report.generate_by(PDFGenerator, filename=response)
return response
-def casa_info(request,id=None,queryset=None):
- if queryset:
- qs = queryset
- else:
- qs = CasaLegislativa.objects.all()
- if id:
- qs = qs.filter(pk=id)
- elif request.GET:
- qs = get_for_qs(request.GET,qs)
+def report_complete(request,id=None):
+
+ if id:
+ qs = CasaLegislativa.objects.filter(pk=id)
+ else:
+ qs = carrinhoOrGet_for_qs(request)
+
if not qs:
return HttpResponseRedirect('../')
response = HttpResponse(mimetype='application/pdf')
+ response['Content-Disposition'] = 'attachment; filename=casas.pdf'
# Gera um relatorio para cada casa e concatena os relatorios
cont = 0
@@ -154,8 +253,39 @@ def export_csv(request):
response['Content-Disposition'] = 'attachment; filename=casas.csv'
csv_writer = csv.writer(response)
- casas = CasaLegislativa.objects.all()
+ casas = carrinhoOrGet_for_qs(request)
+ if not casas:
+ return HttpResponseRedirect('../')
+
+ if request.POST:
+ atributos = request.POST.getlist("itens_csv_selected")
+ map(unicode,atributos)
+ csv_writer.writerow(atributos)
+
for casa in casas:
- csv_writer.writerow([casa.nome.encode("utf-8"), casa.municipio.uf.sigla.encode("utf-8")])
+ lista = []
+ for atributo in atributos:
+ if u"CNPJ" == atributo:
+ lista.append(casa.cnpj.encode("utf-8"))
+ elif u"Código IBGE" == atributo:
+ lista.append(str(casa.municipio.codigo_ibge).encode("utf-8"))
+ elif u"Nome" == atributo:
+ lista.append(casa.nome.encode("utf-8"))
+ elif u"Município" == atributo:
+ lista.append(str(casa.municipio).encode("utf-8"))
+ elif u"Presidente" == atributo:
+ lista.append(casa.presidente.encode("utf-8"))
+ elif u"Logradouro" == atributo:
+ lista.append(casa.logradouro.encode("utf-8"))
+ elif u"Bairro" == atributo:
+ lista.append(casa.bairro.encode("utf-8"))
+ elif u"CEP" == atributo:
+ lista.append(casa.cep.encode("utf-8"))
+ elif u"Telefone" == atributo:
+ lista.append(casa.telefone.encode("utf-8"))
+ else:
+ pass
+
+ csv_writer.writerow(lista)
return response
diff --git a/sigi/apps/convenios/admin.py b/sigi/apps/convenios/admin.py
index b3909e4..3f968ae 100644
--- a/sigi/apps/convenios/admin.py
+++ b/sigi/apps/convenios/admin.py
@@ -1,13 +1,15 @@
# -*- coding: utf-8 -*-
from django.contrib import admin
-from sigi.apps.convenios.models import Projeto, Convenio, EquipamentoPrevisto, Anexo
-from sigi.apps.casas.models import CasaLegislativa
-from sigi.apps.servicos.models import Servico
+from apps.convenios.models import Projeto, Convenio, EquipamentoPrevisto, Anexo
+from apps.casas.models import CasaLegislativa
+from apps.servicos.models import Servico
from django.http import HttpResponse, HttpResponseRedirect
-from sigi.apps.convenios.reports import ConvenioReport
-from sigi.apps.utils import queryset_ascii
+from apps.convenios.reports import ConvenioReport
+from apps.utils import queryset_ascii
from geraldo.generators import PDFGenerator
+from apps.convenios.views import adicionar_convenios_carrinho
+
class AnexosInline(admin.TabularInline):
model = Anexo
extra = 2
@@ -38,7 +40,7 @@ class ConvenioAdmin(admin.ModelAdmin):
'data_devolucao_via', 'data_postagem_correio')}
),
)
- actions = ['delete_selected', 'relatorio']
+ actions = ['adicionar_convenios']
inlines = (AnexosInline, EquipamentoPrevistoInline)
list_display = ('num_convenio', 'casa_legislativa',
'data_adesao','data_retorno_assinatura','data_termo_aceite',
@@ -47,7 +49,7 @@ class ConvenioAdmin(admin.ModelAdmin):
list_display_links = ('num_convenio','casa_legislativa',)
list_filter = ('projeto','casa_legislativa','conveniada', 'equipada')
#date_hierarchy = 'data_adesao'
- ordering = ('casa_legislativa__municipio__uf','casa_legislativa','-id',)
+ ordering = ('casa_legislativa__tipo__sigla','casa_legislativa__municipio__uf','casa_legislativa')
raw_id_fields = ('casa_legislativa',)
queryset = queryset_ascii
search_fields = ('id', 'search_text',#'casa_legislativa__nome',
@@ -58,15 +60,34 @@ class ConvenioAdmin(admin.ModelAdmin):
request,
extra_context={'query_str': '?' + request.META['QUERY_STRING']}
)
- def relatorio(modeladmin, request, queryset):
+ def relatorio(self, request, queryset):
#queryset.order_by('casa_legislativa__municipio__uf')
response = HttpResponse(mimetype='application/pdf')
report = ConvenioReport(queryset=queryset)
report.generate_by(PDFGenerator, filename=response)
- return response
-
+ return response
relatorio.short_description = u'Exportar convênios selecionados para PDF'
+ def adicionar_convenios(self, request, queryset):
+ if request.session.has_key('carrinho_convenios'):
+ q1 = len(request.session['carrinho_convenios'])
+ else:
+ q1 = 0
+ adicionar_convenios_carrinho(request,queryset=queryset)
+ q2 = len(request.session['carrinho_convenios'])
+ quant = q2 - q1
+ if quant:
+ self.message_user(request,str(q2-q1)+" Convênios adicionados no carrinho" )
+ else:
+ self.message_user(request,"Os Convênios selecionados já foram adicionadas anteriormente" )
+ return HttpResponseRedirect('.')
+ adicionar_convenios.short_description = u"Armazenar convênios no carrinho para exportar"
+
+ def get_actions(self, request):
+ actions = super(ConvenioAdmin, self).get_actions(request)
+ del actions['delete_selected']
+ return actions
+
class EquipamentoPrevistoAdmin(admin.ModelAdmin):
list_display = ('convenio', 'equipamento', 'quantidade')
diff --git a/sigi/apps/convenios/templates/convenios/carrinho.html b/sigi/apps/convenios/templates/convenios/carrinho.html
new file mode 100644
index 0000000..22d00c6
--- /dev/null
+++ b/sigi/apps/convenios/templates/convenios/carrinho.html
@@ -0,0 +1,98 @@
+{% extends "admin/carrinho.html" %}
+{% load adminmedia admin_list i18n %}
+{% block extrastyle %}
+ {{ block.super }}
+ {% include "admin/tabs_style.html" %}
+{% endblock %}
+
+{% block title %}Convênios no Carrinho | SIGI{% endblock %}
+{% block content_title %}Convênios no Carrinho
{% endblock %}
+
+{% block mensagem%}
+
+ {%if carIsEmpty%}
+ - O carrinho está vazio, sendo assim todos os convênios entram na lista para exportação de acordo com os filtros aplicados.
+ {%else%}
+ - {{paginas.paginator.count}} Convênios no carrinho.
+ {%endif%}
+
+{% endblock %}
+
+{% block action %}/convenios/convenio/carrinho/deleta_itens_carrinho{% endblock %}
+
+{% block tabela %}
+
+{% endblock %}
+
+{% block botoes %}
+
+ {% endblock %}
\ No newline at end of file
diff --git a/sigi/apps/convenios/templates/convenios/change_list.html b/sigi/apps/convenios/templates/convenios/change_list.html
index c29fb10..eea3b0c 100644
--- a/sigi/apps/convenios/templates/convenios/change_list.html
+++ b/sigi/apps/convenios/templates/convenios/change_list.html
@@ -3,65 +3,21 @@
{% block extrastyle %}
{{ block.super }}
- {% include "jquery/tabs_style.html" %}
+ {% include "admin/tabs_style.html" %}
{% endblock %}
{% block object-tools %}
- {% if has_add_permission %}
+ {% if has_add_permission %}
-
-
-
-
-
Escolha uma das opções abaixo para exportar todos os convênios listados.
- Caso queira selecionar convênios especificos, utilize a opção "exportar
- convênios selecionados" na caixa "Ação".
-
-
-
-
Escolha uma das opções abaixo para obter um resumo de informações do Projeto Interlegis por região.
- Outros projetos como PPM e PML não serão incluidos.
-
-
-
-
-
+
+
{% endif %}
{% endblock %}
diff --git a/sigi/apps/convenios/templates/convenios/relatorio_por_regiao.html b/sigi/apps/convenios/templates/convenios/tabela_regiao.html
similarity index 58%
rename from sigi/apps/convenios/templates/convenios/relatorio_por_regiao.html
rename to sigi/apps/convenios/templates/convenios/tabela_regiao.html
index d5a6247..1f11bf4 100644
--- a/sigi/apps/convenios/templates/convenios/relatorio_por_regiao.html
+++ b/sigi/apps/convenios/templates/convenios/tabela_regiao.html
@@ -52,11 +52,12 @@
padding-top: 0.15cm;
}
#footerContent #esquerda{
- text-align: left;
+ text-align: left;
}
#footerContent #direita{
text-align: right;
- }
+ background-image: url("/media/images/logo-senado.png");
+ }
.tabela {
padding-top: 0.1cm;
padding-left: 0.1cm;
@@ -79,12 +80,8 @@
.tabela .sumario{
font-weight: bold;
background-color: #CFCFCF;
- }
- .tabela .aderidas{
- /*background-color: #E8E8E8;*/
- border: blue solid;
- }
- .tabela .estado{
+ }
+ .tabela .cabecalho_esquerda{
background-color: #E8E8E8;
font-weight: bold;
}
@@ -102,53 +99,33 @@
|
- Resumo por Região
+ {{tabela.regiao}}
- {{sumario_regiao.regiao}}
+ {{tabela.projeto}} - {{tabela.regiao}}
- UF |
- Total |
- Não Aderidas |
- % |
- Aderidas |
- % |
- Não Equipadas |
- % |
- Equipadas |
- % |
+ {%for item in tabela.cabecalho%}
+ {{item}} |
+ {%endfor%}
- {%for r in lista%}
-
- {{r.estado}} |
- {{r.quant_casas}} |
- {{r.quant_casas_nao_aderidas}} |
- {{r.porc_casas_nao_aderidas}} |
- {{r.quant_casas_aderidas}} |
- {{r.porc_casas_aderidas}} |
- {{r.quant_casas_nao_equipadas}} |
- {{r.porc_casas_nao_equipadas}} |
- {{r.quant_casas_equipadas}} |
- {{r.porc_casas_equipadas}} |
-
-
- {%endfor%}
-
- Total |
- {{sumario_regiao.total}} |
- {{sumario_regiao.total_casas_nao_aderidas}} |
- {{sumario_regiao.porc_casas_nao_aderidas}} |
- {{sumario_regiao.total_casas_aderidas}} |
- {{sumario_regiao.porc_casas_aderidas}} |
- {{sumario_regiao.total_casas_nao_equipadas }} |
- {{sumario_regiao.porc_casas_nao_equipadas }} |
- {{sumario_regiao.total_casas_equipadas }} |
- {{sumario_regiao.porc_casas_equipadas }} |
-
+ {% for linha in tabela.linhas %}
+
+ {{linha.estado}} |
+ {% for item in linha.lista %}
+ {{item}} |
+ {% endfor %}
+
+ {% endfor %}
+
+ Total |
+ {% for item in tabela.sumario %}
+ {{item}} |
+ {% endfor %}
+
diff --git a/sigi/apps/convenios/views.py b/sigi/apps/convenios/views.py
index 3e35d2b..67e957a 100644
--- a/sigi/apps/convenios/views.py
+++ b/sigi/apps/convenios/views.py
@@ -1,19 +1,23 @@
+#-*- coding:utf-8 -*-
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response, get_list_or_404
from geraldo.generators import PDFGenerator
-from sigi.apps.convenios.models import Convenio
-from sigi.apps.convenios.reports import ConvenioReport, \
- ConvenioPorCMReport, \
- ConvenioPorALReport, \
- ConvenioReportRegiao, \
- ConvenioReportSemAceiteAL, \
- ConvenioReportSemAceiteCM
-from sigi.apps.casas.models import CasaLegislativa
-from sigi.apps.contatos.models import UnidadeFederativa
+from apps.convenios.models import Convenio
+from apps.convenios.reports import ConvenioReport \
+ ,ConvenioPorCMReport \
+ ,ConvenioPorALReport \
+ ,ConvenioReportSemAceiteAL \
+ ,ConvenioReportSemAceiteCM
+from apps.casas.models import CasaLegislativa
+from apps.contatos.models import UnidadeFederativa
import ho.pisa as pisa
from django.template import Context, loader
+from django.core.paginator import Paginator, InvalidPage, EmptyPage
+
+from django.conf import settings
+
import datetime
def query_ordena(qs,o,ot):
@@ -33,120 +37,147 @@ def get_for_qs(get,qs):
kwargs = {}
ids = 0
for k,v in get.iteritems():
- if not k == 'o':
- if k == "ot":
- qs = query_ordena(qs,get["o"],get["ot"])
- else:
- kwargs[str(k)] = v
- if(str(k)=='ids'):
- ids = 1
- break
- qs = qs.filter(**kwargs)
+ if not (k == 'page' or k == 'pop' or k == 'q'):
+ if not k == 'o':
+ if k == "ot":
+ qs = query_ordena(qs,get["o"],get["ot"])
+ else:
+ kwargs[str(k)] = v
+ if(str(k)=='ids'):
+ ids = 1
+ break
+ qs = qs.filter(**kwargs)
if ids:
query = 'id IN ('+ kwargs['ids'].__str__()+')'
qs = Convenio.objects.extra(where=[query])
return qs
-def report_por_cm(request, id=None):
- qs = Convenio.objects.filter(casa_legislativa__tipo__sigla='CM').order_by('casa_legislativa__municipio__uf','casa_legislativa')
- if id:
- qs = qs.filter(pk=id)
- elif request.GET: #Se tiver algum parametro de pesquisa
- qs = get_for_qs(request.GET,qs)
- if not qs:
- return HttpResponseRedirect('../')
- response = HttpResponse(mimetype='application/pdf')
- report = ConvenioPorCMReport(queryset=qs)
- report.generate_by(PDFGenerator, filename=response)
- return response
+def carrinhoOrGet_for_qs(request):
+ """
+ Verifica se existe convênios na sessão se não verifica get e retorna qs correspondente.
+ """
+ if request.session.has_key('carrinho_convenios'):
+ ids = request.session['carrinho_convenios']
+ qs = Convenio.objects.filter(pk__in=ids)
+ else:
+ qs = Convenio.objects.all()
+ if request.GET:
+ qs = qs.order_by("casa_legislativa__municipio__uf","casa_legislativa__municipio")
+ qs = get_for_qs(request.GET,qs)
+ return qs
-def report_por_al(request, id=None):
- qs = Convenio.objects.filter(casa_legislativa__tipo__sigla='AL').order_by('casa_legislativa__municipio__uf','casa_legislativa')
- if id:
- qs = qs.filter(pk=id)
- elif request.GET: #Se tiver algum parametro de pesquisa
- qs = get_for_qs(request.GET,qs)
- if not qs:
- return HttpResponseRedirect('../')
- response = HttpResponse(mimetype='application/pdf')
- report = ConvenioPorALReport(queryset=qs)
- report.generate_by(PDFGenerator, filename=response)
- return response
+def adicionar_convenios_carrinho(request,queryset=None,id=None):
+ if request.method == 'POST':
+ ids_selecionados = request.POST.getlist('_selected_action')
+ if not request.session.has_key('carrinho_convenios'):
+ request.session['carrinho_convenios'] = ids_selecionados
+ else:
+ lista = request.session['carrinho_convenios']
+ # Verifica se id já não está adicionado
+ for id in ids_selecionados:
+ if not id in lista:
+ lista.append(id)
+ request.session['carrinho_convenios'] = lista
+
+def excluir_carrinho(request):
+ if request.session.has_key('carrinho_convenios'):
+ del request.session['carrinho_convenios']
+ return HttpResponseRedirect('.')
-def report_semaceite_por_cm(request, id=None):
- qs = Convenio.objects.filter(casa_legislativa__tipo__sigla='CM').order_by('casa_legislativa__municipio__uf','casa_legislativa')
- if id:
- qs = qs.filter(pk=id)
- elif request.GET: #Se tiver algum parametro de pesquisa
- qs = get_for_qs(request.GET,qs)
- if not qs:
- return HttpResponseRedirect('../')
- response = HttpResponse(mimetype='application/pdf')
- report = ConvenioReportSemAceiteCM(queryset=qs)
- report.generate_by(PDFGenerator, filename=response)
- return response
+def deleta_itens_carrinho(request):
+ if request.method == 'POST':
+ ids_selecionados = request.POST.getlist('_selected_action')
+ if request.session.has_key('carrinho_convenios'):
+ lista = request.session['carrinho_convenios']
+ for item in ids_selecionados:
+ lista.remove(item)
+ if lista:
+ request.session['carrinho_convenios'] = lista
+ else:
+ del lista;
+ del request.session['carrinho_convenios']
+
+ return HttpResponseRedirect('.')
-def report_semaceite_por_al(request, id=None):
- qs = Convenio.objects.filter(casa_legislativa__tipo__sigla='AL').order_by('casa_legislativa__municipio__uf','casa_legislativa')
+def visualizar_carrinho(request):
+
+ qs = carrinhoOrGet_for_qs(request)
+
+ paginator = Paginator(qs, 100)
+
+ # Make sure page request is an int. If not, deliver first page.
+ # Esteja certo de que o `page request` é um inteiro. Se não, mostre a primeira página.
+ try:
+ page = int(request.GET.get('page', '1'))
+ except ValueError:
+ page = 1
+
+ # Se o page request (9999) está fora da lista, mostre a última página.
+ try:
+ paginas = paginator.page(page)
+ except (EmptyPage, InvalidPage):
+ paginas = paginator.page(paginator.num_pages)
+
+ carrinhoIsEmpty = not(request.session.has_key('carrinho_convenios'))
+
+ return render_to_response(
+ 'convenios/carrinho.html',
+ {
+ "ADMIN_MEDIA_PREFIX":settings.ADMIN_MEDIA_PREFIX,
+ 'MEDIA_URL':settings.MEDIA_URL,
+ 'carIsEmpty':carrinhoIsEmpty,
+ 'paginas':paginas,
+ 'query_str':'?'+request.META['QUERY_STRING']
+ }
+ )
+
+def report(request, id=None):
+
if id:
- qs = qs.filter(pk=id)
- elif request.GET: #Se tiver algum parametro de pesquisa
- qs = get_for_qs(request.GET,qs)
+ qs = Convenio.objects.filter(pk=id)
+ else:
+ qs = carrinhoOrGet_for_qs(request)
+
if not qs:
- return HttpResponseRedirect('../')
- response = HttpResponse(mimetype='application/pdf')
- report = ConvenioReportSemAceiteAL(queryset=qs)
- report.generate_by(PDFGenerator, filename=response)
- return response
+ return HttpResponseRedirect('../')
-
-class RelatorioRegiao(object):
- def __init__(self, estado, casas, casas_aderidas, casas_equipadas,casas_nao_equipadas):
- self.estado = estado
- self.quant_casas = casas
- self.quant_casas_aderidas = casas_aderidas
- self.quant_casas_nao_aderidas = (casas - casas_aderidas)
- self.quant_casas_equipadas = casas_equipadas
- self.quant_casas_nao_equipadas = casas_nao_equipadas
- if(casas!=0):
- self.porc_casas_aderidas = "%.2f" % (float(casas_aderidas)*100/float(casas))
- self.porc_casas_nao_aderidas = "%.2f" % (float(self.quant_casas_nao_aderidas)*100/float(casas))
- else:
- self.porc_casas_aderidas = 0
- self.porc_casas_nao_aderidas = 0
-
- if(casas_aderidas!=0):
- self.porc_casas_equipadas = "%.2f" % (float(casas_equipadas)*100/float(casas_aderidas))
- self.porc_casas_nao_equipadas = "%.2f" % (float(self.quant_casas_nao_equipadas)*100/float(casas_aderidas))
- else:
- self.porc_casas_equipadas = 0
- self.porc_casas_nao_equipadas = 0
-
-class RelatorioRegiaoTotal:
- def __init__(self,regiao,total,total_casas_aderidas,total_casas_equipadas,total_casas_nao_equipadas):
- self.regiao = regiao
- self.total = total
- self.total_casas_aderidas = total_casas_aderidas
- self.total_casas_nao_aderidas = (total - total_casas_aderidas)
- self.total_casas_equipadas = total_casas_equipadas
- self.total_casas_nao_equipadas = total_casas_nao_equipadas
-
- if(total!=0):
- self.porc_casas_aderidas = "%.2f" % (float(self.total_casas_aderidas)*100/float(total))
- self.porc_casas_nao_aderidas = "%.2f" % (float(self.total_casas_nao_aderidas)*100/float(total))
- else:
- self.porc_casas_aderidas = 0
- self.porc_casas_nao_aderidas = 0
-
- if(total_casas_aderidas!=0):
- self.porc_casas_equipadas = "%.2f" % (float(self.total_casas_equipadas)*100/float(total_casas_aderidas))
- self.porc_casas_nao_equipadas = "%.2f" % (float(total_casas_nao_equipadas)*100/float(total_casas_aderidas))
+ tipo = ''
+ data_aceite_has = ''
+ report = None
+ if request.POST:
+ if request.POST.has_key('filtro_casa'):
+ tipo = request.POST['filtro_casa']
+ if request.POST.has_key('data_aceite'):
+ data_aceite_has = request.POST['data_aceite']
+ # Verifica filtro se é por Assembleia
+ if tipo == 'al':
+ qs = qs.filter(casa_legislativa__tipo__sigla='AL')
+ # Verifica se é com data de aceite
+ if data_aceite_has == 'nao':
+ report = ConvenioReportSemAceiteAL(queryset=qs)
+ else:
+ report = ConvenioPorALReport(queryset=qs)
else:
- self.porc_casas_equipadas = 0
- self.porc_casas_nao_equipadas = 0
+ qs = qs.filter(casa_legislativa__tipo__sigla='CM')
+ if data_aceite_has == 'nao':
+ report = ConvenioReportSemAceiteCM(queryset=qs)
+ else:
+ report = ConvenioPorCMReport(queryset=qs)
+
+
+ response = HttpResponse(mimetype='application/pdf')
+ if report:
+ report.generate_by(PDFGenerator, filename=response)
+ else:
+ return HttpResponseRedirect('../')
+ return response
def report_regiao(request,regiao='NE'):
+
+ if request.POST:
+ if request.POST.has_key('regiao'):
+ regiao = request.POST['regiao']
REGIAO_CHOICES = {
'SL': 'Sul',
@@ -154,54 +185,108 @@ def report_regiao(request,regiao='NE'):
'CO': 'Centro-Oeste',
'NE': 'Nordeste',
'NO': 'Norte',
- }
+ }
+
+ camaras = CasaLegislativa.objects.filter(tipo__sigla='CM')
+ convenios = Convenio.objects.filter(casa_legislativa__tipo__sigla='CM',projeto__sigla='PI')
+
+ camaras_sem_processo = camaras.exclude(convenio__projeto__sigla='PI')
+
+ convenios_assinados = convenios.exclude(data_retorno_assinatura=None)
+ convenios_em_andamento = convenios.filter(data_retorno_assinatura=None)
- get_list_or_404(UnidadeFederativa,regiao=regiao)
+ convenios_sem_adesao = convenios.filter(data_adesao=None)
+ convenios_com_adesao = convenios.exclude(data_adesao=None)
+ convenios_com_aceite = convenios.exclude(data_termo_aceite=None)
+
# Contando casas por estado
estados = get_list_or_404(UnidadeFederativa,regiao=regiao)
-
+
+ class LinhaEstado():
+ pass
+
lista = []
+
for estado in estados:
-
- casas = CasaLegislativa.objects.filter(municipio__uf=estado)
- casas_aderidas = casas.exclude(convenio=None).distinct()
- casas_equipadas = casas_aderidas.exclude(convenio__data_termo_aceite=None).distinct()
- casas_nao_equipadas = casas_aderidas.filter(convenio__data_termo_aceite=None).distinct()
-
- lista.append(
- RelatorioRegiao(
- estado.sigla,casas.count(),
- casas_aderidas.count(),
- casas_equipadas.count(),
- casas_nao_equipadas.count()
- )
+ linha = LinhaEstado()
+ conv_sem_adesao_est = convenios_sem_adesao.filter(casa_legislativa__municipio__uf=estado)
+ conv_com_adesao_est = convenios_com_adesao.filter(casa_legislativa__municipio__uf=estado)
+ conv_assinados_est = convenios_assinados.filter(casa_legislativa__municipio__uf=estado)
+ conv_em_andamento_est = convenios_em_andamento.filter(casa_legislativa__municipio__uf=estado)
+ conv_equipadas_est = convenios_com_aceite.filter(casa_legislativa__municipio__uf=estado)
+
+ camaras_est = camaras.filter(municipio__uf=estado,tipo__sigla='CM').count()
+ camaras_sem_processo_est = camaras_sem_processo.filter(municipio__uf=estado).count()
+ camaras_nao_aderidas_est = camaras.filter(convenio__in=conv_sem_adesao_est).count()
+ camaras_aderidas_est = camaras.filter(convenio__in=conv_com_adesao_est).count()
+ camaras_convenios_assinados_est = camaras.filter(convenio__in=conv_assinados_est).count()
+ camaras_convenios_em_andamento_est = camaras.filter(convenio__in=conv_em_andamento_est).count()
+ camaras_equipadas_est = camaras.filter(convenio__in=conv_equipadas_est).count()
+
+ linha.lista = (
+ camaras_est,
+ camaras_sem_processo_est,
+ camaras_nao_aderidas_est,
+ camaras_aderidas_est,
+ camaras_convenios_assinados_est,
+ camaras_convenios_em_andamento_est,
+ camaras_equipadas_est,
)
-
- # Total de casas na regiao
- casas = CasaLegislativa.objects.filter(municipio__uf__regiao=regiao)
- casas_aderidas = casas.exclude(convenio=None).distinct()
- casas_equipadas = casas_aderidas.exclude(convenio__data_termo_aceite=None).distinct()
- casas_nao_equipadas = casas_aderidas.filter(convenio__data_termo_aceite=None).distinct()
- sumario_regiao = RelatorioRegiaoTotal(
- REGIAO_CHOICES[regiao],
- casas.count(),
- casas_aderidas.count(),
- casas_equipadas.count(),
- casas_nao_equipadas.count(),
- )
-
-# response = HttpResponse(mimetype='application/pdf')
-# relatorio = ConvenioReportRegiao(queryset=lista)
-# relatorio.generate_by(PDFGenerator, filename=response)
+
+ linha.estado = estado.sigla
+
+ lista.append(linha)
+ # Total
+ total_cm = camaras.filter(municipio__uf__regiao=regiao,tipo__sigla='CM').count()
+ total_sem_processo = camaras_sem_processo.filter(municipio__uf__regiao=regiao).count()
+ total_sem_adesao = camaras.filter(convenio__in=convenios_sem_adesao,municipio__uf__regiao=regiao).count()
+ total_com_adesao = camaras.filter(convenio__in=convenios_com_adesao,municipio__uf__regiao=regiao).count()
+ total_conv_assin = camaras.filter(convenio__in=convenios_assinados,municipio__uf__regiao=regiao).count()
+ total_conv_andam = camaras.filter(convenio__in=convenios_em_andamento,municipio__uf__regiao=regiao).count()
+ total_equipadas = camaras.filter(convenio__in=convenios_com_aceite,municipio__uf__regiao=regiao).count()
+
+ sumario = [
+ total_cm,
+ total_sem_processo,
+ total_sem_adesao,
+ total_com_adesao,
+ total_conv_assin,
+ total_conv_andam,
+ total_equipadas,
+ ]
+
+
+
+
+ cabecalho_topo = (
+ u'UF',
+ u'Câmaras municipais',
+ u'Sem processo',
+ u'Sem adesão',
+ u'Com adesão',
+ u'Convênios assinados',
+ u'Convênios andamento',
+ u'Equipadas'
+ )
+
+ projeto = "Projeto Interlegis"
+
+ tabela = {
+ "regiao":REGIAO_CHOICES[regiao],
+ "linhas":lista,
+ "cabecalho":cabecalho_topo,
+ "sumario":sumario,
+ "projeto":projeto,
+ }
data = datetime.datetime.now().strftime('%d/%m/%Y')
hora = datetime.datetime.now().strftime('%H:%M')
pisa.showLogging()
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename=RelatorioRegiao_' + regiao + '.pdf'
- t = loader.get_template('convenios/relatorio_por_regiao.html')
- c = Context({'lista': lista,'sumario_regiao':sumario_regiao,'data':data,'hora':hora})
+ t = loader.get_template('convenios/tabela_regiao.html')
+ c = Context({'tabela':tabela,'data':data,'hora':hora})
pdf = pisa.CreatePDF(t.render(c),response)
if not pdf.err:
pisa.startViewer(response)
diff --git a/sigi/templates/admin/carrinho.html b/sigi/templates/admin/carrinho.html
new file mode 100644
index 0000000..38ca4c7
--- /dev/null
+++ b/sigi/templates/admin/carrinho.html
@@ -0,0 +1,109 @@
+{% extends "admin/change_list.html" %}
+{% load adminmedia admin_list i18n %}
+{% block extrastyle %}
+ {{ block.super }}
+
+
+{% endblock %}
+
+
+{% block branding %} {% endblock %}
+{% block userlinks %} {% endblock %}
+{% block nav-global %} {% endblock %}
+
+{% block title %}Carrinho | SIGI{% endblock %}
+{% block content_title %}Carrinho
{% endblock %}
+
+{% block content %}
+
+
+
+ {% block mensagem %}
+
+ {%if carIsEmpty%}
+ - O carrinho está vazio
+ {%else%}
+ - {{paginas.paginator.count}} Itens no carrinho.
+ {%endif%}
+
+ {% endblock %}
+
+
+
+
+
+ {% block botoes %}{% endblock %}
+
+
+
+
+{% endblock %}
+
+{% block footer %}{% endblock %}
+
diff --git a/sigi/templates/jquery/tabs_style.html b/sigi/templates/admin/tabs_style.html
similarity index 52%
rename from sigi/templates/jquery/tabs_style.html
rename to sigi/templates/admin/tabs_style.html
index 8ce3817..61bbcb1 100644
--- a/sigi/templates/jquery/tabs_style.html
+++ b/sigi/templates/admin/tabs_style.html
@@ -7,27 +7,25 @@
+
+
-
+
-
-
+
+
+
diff --git a/sigi/templates/snippets/modules/charts-convenios.html b/sigi/templates/snippets/modules/charts-convenios.html
index b54853f..145276f 100644
--- a/sigi/templates/snippets/modules/charts-convenios.html
+++ b/sigi/templates/snippets/modules/charts-convenios.html
@@ -58,6 +58,26 @@
+
+
Resumo de informações
+
Resumo de informações por região
+
+
+ Resumo de informações de Câmaras Municipais por região levando em conta
+ apenas o Projeto Interlegis. Demais projetos como PPM e PML não estão inclusos.
+
+
+
+
+
+
+
Convênios
Processos de convênios por projeto
diff --git a/sigi/urls.py b/sigi/urls.py
index 095364c..3916f43 100644
--- a/sigi/urls.py
+++ b/sigi/urls.py
@@ -1,16 +1,19 @@
+#-*- coding:utf-8 -*-
from django.conf import settings
from django.conf.urls.defaults import *
-from sigi import sites
+import sites
# register admin filters
-import sigi.admin.filterspecs
+import admin.filterspecs
urlpatterns = patterns(
'',
# Informacoes de uma casa legislativa
- (r'^casas/casalegislativa/(?P\w+)/casa_info/',
- 'sigi.apps.casas.views.casa_info'),
+ (r'^casas/casalegislativa/(?P\w+)/report_complete/',
+ 'sigi.apps.casas.views.report_complete'),
+ (r'^casas/casalegislativa/report_complete/',
+ 'sigi.apps.casas.views.report_complete'),
# reports labels
(r'^casas/casalegislativa/labels/',
'sigi.apps.casas.views.labels_report'),
@@ -21,24 +24,35 @@ urlpatterns = patterns(
'sigi.apps.casas.views.labels_report_sem_presidente'),
(r'^casas/casalegislativa/(?P\w+)/labels_sem_presidente/',
'sigi.apps.casas.views.labels_report_sem_presidente'),
- # reports
+ # reports casa
(r'^casas/casalegislativa/reports/',
- 'sigi.apps.casas.views.report'),
- (r'^casas/casalegislativa/csv/',
- 'sigi.apps.casas.views.export_csv'),
+ 'sigi.apps.casas.views.report'),
(r'^casas/casalegislativa/casas_sem_convenio_report/',
'sigi.apps.casas.views.casas_sem_convenio_report'),
- (r'^convenios/convenio/reports_por_cm/',
- 'sigi.apps.convenios.views.report_por_cm'),
- (r'^convenios/convenio/reports_por_al/',
- 'sigi.apps.convenios.views.report_por_al'),
- (r'^convenios/convenio/reportsRegiao/(?P\w+)',
- 'sigi.apps.convenios.views.report_regiao'),
- #reports sem data de aceite
- (r'^convenios/convenio/report_semaceite_por_cm/',
- 'sigi.apps.convenios.views.report_semaceite_por_cm'),
- (r'^convenios/convenio/report_semaceite_por_al/',
- 'sigi.apps.convenios.views.report_semaceite_por_al'),
+ # reports convenios
+ (r'^convenios/convenio/reports/',
+ 'sigi.apps.convenios.views.report'),
+ #Carrinho Casa
+ (r'^casas/casalegislativa/carrinho/deleta_itens_carrinho',
+ 'sigi.apps.casas.views.deleta_itens_carrinho'),
+ (r'^casas/casalegislativa/carrinho/excluir_carrinho',
+ 'sigi.apps.casas.views.excluir_carrinho'),
+ (r'^casas/casalegislativa/carrinho/',
+ 'sigi.apps.casas.views.visualizar_carrinho'),
+ #Carrinho Convenio
+ (r'^convenios/convenio/carrinho/deleta_itens_carrinho',
+ 'sigi.apps.convenios.views.deleta_itens_carrinho'),
+ (r'^convenios/convenio/carrinho/excluir_carrinho',
+ 'sigi.apps.convenios.views.excluir_carrinho'),
+ (r'^convenios/convenio/carrinho/',
+ 'sigi.apps.convenios.views.visualizar_carrinho'),
+ #CSV Casa
+ (r'^casas/casalegislativa/csv/',
+ 'sigi.apps.casas.views.export_csv'),
+ # Resumo por região PDF
+ (r'^reportsRegiao/(?P\w+)',
+ 'sigi.apps.convenios.views.report_regiao'),
+
# automatic interface based on admin
(r'^(.*)', sites.default.root),
)