Browse Source

Altera TipoCasaLegislativa para TipoOrgao

pull/32/head
Sesostris Vieira 4 years ago
parent
commit
05d3cc8816
  1. 14
      etc/migracao/migra.py
  2. 4
      sigi/apps/casas/admin.py
  3. 4
      sigi/apps/casas/models.py
  4. 84
      sigi/apps/casas/views.py

14
etc/migracao/migra.py

@ -60,7 +60,7 @@ def migra_assembleias(filename):
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True) reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True)
header = reader.next() header = reader.next()
tipo_casa = TipoCasaLegislativa.objects.filter(sigla='AL').get() tipo_casa = TipoOrgao.objects.filter(sigla='AL').get()
for line in reader: for line in reader:
uf = UnidadeFederativa.objects.get(sigla=line[UF_COL]) uf = UnidadeFederativa.objects.get(sigla=line[UF_COL])
@ -85,7 +85,7 @@ def migra_assembleias(filename):
telefone=line[FONE_1_COL] telefone=line[FONE_1_COL]
) )
if line[UF_COL] == 'DF': if line[UF_COL] == 'DF':
casa.tipo = TipoCasaLegislativa.objects.filter(sigla='CT').get() casa.tipo = TipoOrgao.objects.filter(sigla='CT').get()
casa.save() casa.save()
if line[FONE_2_COL]: if line[FONE_2_COL]:
@ -141,7 +141,7 @@ def migra_casas(filename):
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True) reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True)
header = reader.next() header = reader.next()
tipo_casa = TipoCasaLegislativa.objects.filter(sigla='CM').get() tipo_casa = TipoOrgao.objects.filter(sigla='CM').get()
linenum = 1 linenum = 1
for line in reader: for line in reader:
@ -368,7 +368,7 @@ def migra_convenios_assembleias(filename):
reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True) reader = csv.reader(open(filename, 'r'), delimiter='|', skipinitialspace=True)
header = reader.next() header = reader.next()
linenum = 1 linenum = 1
tipo_casa = TipoCasaLegislativa.objects.filter(sigla='AL').get() tipo_casa = TipoOrgao.objects.filter(sigla='AL').get()
for line in reader: for line in reader:
linenum += 1 linenum += 1
@ -417,11 +417,11 @@ def popula():
projeto3 = Projeto(sigla='PML', nome='Projeto Modernização Legislativo') projeto3 = Projeto(sigla='PML', nome='Projeto Modernização Legislativo')
projeto3.save() projeto3.save()
tipo1 = TipoCasaLegislativa(sigla='CM', nome='Câmara Municipal') tipo1 = TipoOrgao(sigla='CM', nome='Câmara Municipal')
tipo1.save() tipo1.save()
tipo2 = TipoCasaLegislativa(sigla='AL', nome='Assembléia Legislativa') tipo2 = TipoOrgao(sigla='AL', nome='Assembléia Legislativa')
tipo2.save() tipo2.save()
tipo3 = TipoCasaLegislativa(sigla='CT', nome='Câmara Distrital') tipo3 = TipoOrgao(sigla='CT', nome='Câmara Distrital')
tipo3.save() tipo3.save()

4
sigi/apps/casas/admin.py

@ -9,7 +9,7 @@ from django.utils.translation import ugettext as _
from image_cropping import ImageCroppingMixin from image_cropping import ImageCroppingMixin
from sigi.apps.casas.forms import CasaLegislativaForm from sigi.apps.casas.forms import CasaLegislativaForm
from sigi.apps.casas.models import CasaLegislativa, Presidente, Funcionario, TipoCasaLegislativa from sigi.apps.casas.models import CasaLegislativa, Presidente, Funcionario, TipoOrgao
from sigi.apps.casas.views import report_complete, labels_report, export_csv, \ from sigi.apps.casas.views import report_complete, labels_report, export_csv, \
labels_report_sem_presidente, report, \ labels_report_sem_presidente, report, \
adicionar_casas_carrinho adicionar_casas_carrinho
@ -433,4 +433,4 @@ class CasaLegislativaAdmin(ImageCroppingMixin, BaseModelAdmin):
admin.site.register(CasaLegislativa, CasaLegislativaAdmin) admin.site.register(CasaLegislativa, CasaLegislativaAdmin)
admin.site.register(TipoCasaLegislativa) admin.site.register(TipoOrgao)

4
sigi/apps/casas/models.py

@ -13,7 +13,7 @@ from sigi.apps.servidores.models import Servidor
from sigi.apps.utils import SearchField from sigi.apps.utils import SearchField
class TipoCasaLegislativa(models.Model): class TipoOrgao(models.Model):
""" Modelo para representar o tipo da Casa Legislativa """ Modelo para representar o tipo da Casa Legislativa
@ -49,7 +49,7 @@ class CasaLegislativa(models.Model):
# Guarda um campo para ser usado em buscas em caixa baixa e sem acento # Guarda um campo para ser usado em buscas em caixa baixa e sem acento
search_text = SearchField(field_names=['nome']) search_text = SearchField(field_names=['nome'])
# search_text.projeto_filter = True # search_text.projeto_filter = True
tipo = models.ForeignKey(TipoCasaLegislativa, verbose_name=_(u"Tipo")) tipo = models.ForeignKey(TipoOrgao, verbose_name=_(u"Tipo"))
cnpj = models.CharField(_(u"CNPJ"), max_length=32, blank=True) cnpj = models.CharField(_(u"CNPJ"), max_length=32, blank=True)
observacoes = models.TextField(_(u'observações'), blank=True) observacoes = models.TextField(_(u'observações'), blank=True)
horario_funcionamento = models.CharField( horario_funcionamento = models.CharField(

84
sigi/apps/casas/views.py

@ -11,7 +11,7 @@ from django.shortcuts import render, get_object_or_404
from django.utils.translation import ugettext as _, ungettext from django.utils.translation import ugettext as _, ungettext
from sigi.apps.casas.forms import PortfolioForm from sigi.apps.casas.forms import PortfolioForm
from sigi.apps.casas.models import CasaLegislativa, TipoCasaLegislativa from sigi.apps.casas.models import CasaLegislativa, TipoOrgao
from sigi.apps.casas.reports import (CasasLegislativasLabels, from sigi.apps.casas.reports import (CasasLegislativasLabels,
CasasLegislativasLabelsSemPresidente) CasasLegislativasLabelsSemPresidente)
from sigi.apps.contatos.models import UnidadeFederativa, Mesorregiao, Microrregiao from sigi.apps.contatos.models import UnidadeFederativa, Mesorregiao, Microrregiao
@ -49,18 +49,18 @@ def get_for_qs(get, qs):
for k, v in get.iteritems(): for k, v in get.iteritems():
if str(k) not in ('page', 'pop', 'q', '_popup', 'o', 'ot'): if str(k) not in ('page', 'pop', 'q', '_popup', 'o', 'ot'):
kwargs[str(k)] = v kwargs[str(k)] = v
if 'convenio' in kwargs: if 'convenio' in kwargs:
if kwargs['convenio'] == 'SC': if kwargs['convenio'] == 'SC':
qs = qs.filter(convenio=None) qs = qs.filter(convenio=None)
elif kwargs['convenio'] == 'CC': elif kwargs['convenio'] == 'CC':
qs = qs.exclude(convenio=None) qs = qs.exclude(convenio=None)
else: else:
qs = qs.filter(convenio__projeto_id=kwargs['convenio']) qs = qs.filter(convenio__projeto_id=kwargs['convenio'])
qs = qs.distinct('municipio__uf__nome', 'nome') qs = qs.distinct('municipio__uf__nome', 'nome')
del(kwargs['convenio']) del(kwargs['convenio'])
if 'servico' in kwargs: if 'servico' in kwargs:
if kwargs['servico'] == 'SS': if kwargs['servico'] == 'SS':
qs = qs.filter(servico=None) qs = qs.filter(servico=None)
@ -79,9 +79,9 @@ def get_for_qs(get, qs):
qs = qs.filter(servico__tipo_servico_id=kwargs['servico']) qs = qs.filter(servico__tipo_servico_id=kwargs['servico'])
qs = qs.distinct('municipio__uf__nome', 'nome') qs = qs.distinct('municipio__uf__nome', 'nome')
del(kwargs['servico']) del(kwargs['servico'])
qs = qs.filter(**kwargs) qs = qs.filter(**kwargs)
if 'o' in get: if 'o' in get:
qs = query_ordena(qs, get['o']) qs = query_ordena(qs, get['o'])
@ -291,10 +291,10 @@ def report(request, id=None, tipo=None):
if not qs: if not qs:
return HttpResponseRedirect('../') return HttpResponseRedirect('../')
qs = qs.order_by('municipio__uf', 'nome') qs = qs.order_by('municipio__uf', 'nome')
context = {'casas': qs, 'title': _(u"Relação de Casas Legislativas")} context = {'casas': qs, 'title': _(u"Relação de Casas Legislativas")}
return render_to_pdf('casas/report_pdf.html', context) return render_to_pdf('casas/report_pdf.html', context)
@ -308,7 +308,7 @@ def report_complete(request, id=None):
if not qs: if not qs:
return HttpResponseRedirect('../') return HttpResponseRedirect('../')
return render_to_pdf('casas/report_complete_pdf.html', {'casas': qs}) return render_to_pdf('casas/report_complete_pdf.html', {'casas': qs})
@ -323,7 +323,7 @@ def casas_sem_convenio_report(request):
qs = qs.order_by('municipio__uf', 'nome') qs = qs.order_by('municipio__uf', 'nome')
context = {'casas': qs, 'title': _(u"Casas sem convênio")} context = {'casas': qs, 'title': _(u"Casas sem convênio")}
return render_to_pdf('casas/report_pdf.html', context) return render_to_pdf('casas/report_pdf.html', context)
@ -426,21 +426,21 @@ def portfolio(request):
uf_id = request.GET.get('uf', None) uf_id = request.GET.get('uf', None)
meso_id = request.GET.get('meso', None) meso_id = request.GET.get('meso', None)
micro_id = request.GET.get('micro', None) micro_id = request.GET.get('micro', None)
data = {} data = {}
data['errors'] = [] data['errors'] = []
data['messages'] = [] data['messages'] = []
data['regioes'] = UnidadeFederativa.REGIAO_CHOICES data['regioes'] = UnidadeFederativa.REGIAO_CHOICES
data['tipos_casas'] = TipoCasaLegislativa.objects.all() data['tipos_casas'] = TipoOrgao.objects.all()
casas = None casas = None
gerente = None gerente = None
if tipo: if tipo:
data['tipo'] = tipo data['tipo'] = tipo
if micro_id: if micro_id:
microrregiao = get_object_or_404(Microrregiao, pk=micro_id) microrregiao = get_object_or_404(Microrregiao, pk=micro_id)
mesorregiao = microrregiao.mesorregiao mesorregiao = microrregiao.mesorregiao
uf = mesorregiao.uf uf = mesorregiao.uf
data['regiao'] = uf.regiao data['regiao'] = uf.regiao
data['uf_id'] = uf.pk data['uf_id'] = uf.pk
@ -489,25 +489,25 @@ def portfolio(request):
data['ufs'] = UnidadeFederativa.objects.filter(regiao=regiao) data['ufs'] = UnidadeFederativa.objects.filter(regiao=regiao)
data['form'] = PortfolioForm( data['form'] = PortfolioForm(
_(u'Atribuir casas da região {name} para').format( _(u'Atribuir casas da região {name} para').format(
name=[x[1] for x in UnidadeFederativa.REGIAO_CHOICES if name=[x[1] for x in UnidadeFederativa.REGIAO_CHOICES if
x[0] == regiao][0])) x[0] == regiao][0]))
data['querystring'] = 'regiao={0}'.format(regiao) data['querystring'] = 'regiao={0}'.format(regiao)
casas = CasaLegislativa.objects.filter(municipio__uf__regiao=regiao) casas = CasaLegislativa.objects.filter(municipio__uf__regiao=regiao)
if casas: if casas:
casas = casas.order_by('municipio__uf', casas = casas.order_by('municipio__uf',
'municipio__microrregiao__mesorregiao', 'municipio__microrregiao__mesorregiao',
'municipio__microrregiao', 'municipio') 'municipio__microrregiao', 'municipio')
casas.prefetch_related('municipio', 'municipio__uf', casas.prefetch_related('municipio', 'municipio__uf',
'municipio__microrregiao', 'municipio__microrregiao',
'municipio__microrregiao__mesorregiao', 'municipio__microrregiao__mesorregiao',
'gerentes_interlegis') 'gerentes_interlegis')
if tipo: if tipo:
casas = casas.filter(tipo__sigla=tipo) casas = casas.filter(tipo__sigla=tipo)
data['querystring'] += "&tipo={0}".format(tipo) data['querystring'] += "&tipo={0}".format(tipo)
if request.method == 'POST': if request.method == 'POST':
form = PortfolioForm(data=request.POST) form = PortfolioForm(data=request.POST)
if form.is_valid(): if form.is_valid():
@ -515,7 +515,7 @@ def portfolio(request):
acao = form.cleaned_data['acao'] acao = form.cleaned_data['acao']
count = casas.count() count = casas.count()
if acao == 'ADD': if acao == 'ADD':
gerente.casas_que_gerencia.add(*casas) gerente.casas_que_gerencia.add(*casas)
data['messages'].append(ungettext( data['messages'].append(ungettext(
@ -534,14 +534,14 @@ def portfolio(request):
data['errors'].append(_(u"Ação não definida")) data['errors'].append(_(u"Ação não definida"))
else: else:
data['errors'].append(_(u"Dados inválidos")) data['errors'].append(_(u"Dados inválidos"))
paginator = Paginator(casas, 30) paginator = Paginator(casas, 30)
try: try:
pagina = paginator.page(page) pagina = paginator.page(page)
except (EmptyPage, InvalidPage): except (EmptyPage, InvalidPage):
pagina = paginator.page(paginator.num_pages) pagina = paginator.page(paginator.num_pages)
data['page_obj'] = pagina data['page_obj'] = pagina
return render(request, 'casas/portfolio.html', data) return render(request, 'casas/portfolio.html', data)
@ -552,13 +552,13 @@ def resumo_carteira(casas):
sem_produto = regioes.copy() sem_produto = regioes.copy()
tipos_servico = TipoServico.objects.all() tipos_servico = TipoServico.objects.all()
dados = {ts.id: regioes.copy() for ts in tipos_servico} dados = {ts.id: regioes.copy() for ts in tipos_servico}
for r in casas.values('municipio__uf__regiao').annotate(quantidade=Count('id')).order_by(): for r in casas.values('municipio__uf__regiao').annotate(quantidade=Count('id')).order_by():
regiao = r['municipio__uf__regiao'] regiao = r['municipio__uf__regiao']
quantidade = r['quantidade'] quantidade = r['quantidade']
total[regiao] = quantidade total[regiao] = quantidade
total['total'] += quantidade total['total'] += quantidade
for r in casas.values('municipio__uf__regiao', 'servico__tipo_servico__id').annotate(quantidade=Count('id')).order_by(): for r in casas.values('municipio__uf__regiao', 'servico__tipo_servico__id').annotate(quantidade=Count('id')).order_by():
regiao = r['municipio__uf__regiao'] regiao = r['municipio__uf__regiao']
servico = r['servico__tipo_servico__id'] servico = r['servico__tipo_servico__id']
@ -567,16 +567,16 @@ def resumo_carteira(casas):
sem_produto[regiao] = quantidade sem_produto[regiao] = quantidade
sem_produto['total'] += quantidade sem_produto['total'] += quantidade
else: else:
dados[servico][regiao] = quantidade dados[servico][regiao] = quantidade
dados[servico]['total'] += quantidade dados[servico]['total'] += quantidade
dados_ocorrencia = { dados_ocorrencia = {
'registradas': regioes.copy(), 'registradas': regioes.copy(),
'pendentes': regioes.copy(), 'pendentes': regioes.copy(),
'sem': regioes.copy(), 'sem': regioes.copy(),
'media': regioes.copy(), 'media': regioes.copy(),
} }
for r in casas.values('ocorrencia__status', 'municipio__uf__regiao').annotate(quantidade=Count('id')).order_by(): for r in casas.values('ocorrencia__status', 'municipio__uf__regiao').annotate(quantidade=Count('id')).order_by():
status = r['ocorrencia__status'] status = r['ocorrencia__status']
regiao = r['municipio__uf__regiao'] regiao = r['municipio__uf__regiao']
@ -590,13 +590,13 @@ def resumo_carteira(casas):
if status in [Ocorrencia.STATUS_ABERTO, Ocorrencia.STATUS_REABERTO]: if status in [Ocorrencia.STATUS_ABERTO, Ocorrencia.STATUS_REABERTO]:
dados_ocorrencia['pendentes'][regiao] += quantidade dados_ocorrencia['pendentes'][regiao] += quantidade
dados_ocorrencia['pendentes']['total'] += quantidade dados_ocorrencia['pendentes']['total'] += quantidade
for r in regioes: for r in regioes:
if (total[r] - dados_ocorrencia['sem'][r]) == 0: if (total[r] - dados_ocorrencia['sem'][r]) == 0:
dados_ocorrencia['media'][r] = 0 dados_ocorrencia['media'][r] = 0
else: else:
dados_ocorrencia['media'][r] = (1.0 * dados_ocorrencia['registradas'][r] / (total[r] - dados_ocorrencia['sem'][r])) dados_ocorrencia['media'][r] = (1.0 * dados_ocorrencia['registradas'][r] / (total[r] - dados_ocorrencia['sem'][r]))
resumo = [[_(u"Item"), _(u"Total nacional")] + [r[1] for r in UnidadeFederativa.REGIAO_CHOICES]] resumo = [[_(u"Item"), _(u"Total nacional")] + [r[1] for r in UnidadeFederativa.REGIAO_CHOICES]]
resumo.append([_(u"Casas em sua carteira"), total['total']] + [total[r[0]] for r in UnidadeFederativa.REGIAO_CHOICES]) resumo.append([_(u"Casas em sua carteira"), total['total']] + [total[r[0]] for r in UnidadeFederativa.REGIAO_CHOICES])
resumo.append({'subtitle': _(u"Uso dos produtos Interlegis")}) resumo.append({'subtitle': _(u"Uso dos produtos Interlegis")})
@ -619,7 +619,7 @@ def casas_carteira(request, casas, context):
micro_id = request.GET.get('micro', None) micro_id = request.GET.get('micro', None)
servicos = request.GET.getlist('servico') servicos = request.GET.getlist('servico')
tipos_servico = context['servicos'] tipos_servico = context['servicos']
context['qs_regiao'] = '' context['qs_regiao'] = ''
if micro_id is not None: if micro_id is not None:
@ -644,12 +644,12 @@ def casas_carteira(request, casas, context):
context['regiao'] = sigla_regiao context['regiao'] = sigla_regiao
context['qs_regiao'] = 'r=%s' % sigla_regiao context['qs_regiao'] = 'r=%s' % sigla_regiao
casas = casas.filter(municipio__uf__regiao=sigla_regiao) casas = casas.filter(municipio__uf__regiao=sigla_regiao)
if 'regiao' in context: if 'regiao' in context:
context['ufs'] = UnidadeFederativa.objects.filter(regiao=context['regiao']) context['ufs'] = UnidadeFederativa.objects.filter(regiao=context['regiao'])
todos_servicos = ['_none_'] + [s.sigla for s in tipos_servico] todos_servicos = ['_none_'] + [s.sigla for s in tipos_servico]
if not servicos or set(servicos) == set(todos_servicos): if not servicos or set(servicos) == set(todos_servicos):
servicos = todos_servicos servicos = todos_servicos
context['qs_servico'] = '' context['qs_servico'] = ''
@ -660,9 +660,9 @@ def casas_carteira(request, casas, context):
casas = casas.filter(servico__tipo_servico__sigla__in=servicos) casas = casas.filter(servico__tipo_servico__sigla__in=servicos)
casas = casas.distinct('nome', 'municipio__uf') casas = casas.distinct('nome', 'municipio__uf')
context['qs_servico'] = "&".join(['servico=%s' % s for s in servicos]) context['qs_servico'] = "&".join(['servico=%s' % s for s in servicos])
context['servicos_check'] = servicos context['servicos_check'] = servicos
casas = casas.select_related('municipio', 'municipio__uf', 'municipio__microrregiao', 'municipio__microrregiao__mesorregiao').prefetch_related('servico_set') casas = casas.select_related('municipio', 'municipio__uf', 'municipio__microrregiao', 'municipio__microrregiao__mesorregiao').prefetch_related('servico_set')
return casas, context return casas, context
@ -675,7 +675,7 @@ def painel_relacionamento(request):
seletor = request.GET.get('s', None) seletor = request.GET.get('s', None)
servidor = request.GET.get('servidor', None) servidor = request.GET.get('servidor', None)
fmt = request.GET.get('f', 'html') fmt = request.GET.get('f', 'html')
if servidor is None: if servidor is None:
gerente = request.user.servidor gerente = request.user.servidor
elif servidor == '_all': elif servidor == '_all':
@ -689,7 +689,7 @@ def painel_relacionamento(request):
if gerente is None or not casas.exists(): if gerente is None or not casas.exists():
casas = CasaLegislativa.objects.exclude(gerentes_interlegis=None) casas = CasaLegislativa.objects.exclude(gerentes_interlegis=None)
gerente = None gerente = None
tipos_servico = TipoServico.objects.all() tipos_servico = TipoServico.objects.all()
regioes = UnidadeFederativa.REGIAO_CHOICES regioes = UnidadeFederativa.REGIAO_CHOICES
@ -702,11 +702,11 @@ def painel_relacionamento(request):
'gerente': gerente, 'gerente': gerente,
'qs_servidor': ('servidor=%s' % gerente.pk) if gerente else '', 'qs_servidor': ('servidor=%s' % gerente.pk) if gerente else '',
} }
if snippet != 'lista': if snippet != 'lista':
context['resumo'] = resumo_carteira(casas) context['resumo'] = resumo_carteira(casas)
if snippet != 'resumo': if snippet != 'resumo':
casas, context = casas_carteira(request, casas, context) casas, context = casas_carteira(request, casas, context)
paginator = Paginator(casas, 30) paginator = Paginator(casas, 30)
try: try:
@ -743,5 +743,5 @@ def painel_relacionamento(request):
return render(request, 'casas/lista_casas_carteira_snippet.html', context) return render(request, 'casas/lista_casas_carteira_snippet.html', context)
if snippet == 'resumo': if snippet == 'resumo':
return render(request, 'casas/resumo_carteira_snippet.html', context) return render(request, 'casas/resumo_carteira_snippet.html', context)
return render(request, 'casas/painel.html', context) return render(request, 'casas/painel.html', context)

Loading…
Cancel
Save