Browse Source

Merge branch '143-remover-municipios'

Fix #143
pull/1689/head
Marcio Mazza 7 years ago
parent
commit
69b49a96fd
  1. 13
      sapl/base/models.py
  2. 7
      sapl/legacy/migration.py
  3. 6
      sapl/parlamentares/legacy.yaml
  4. 46
      sapl/parlamentares/migrations/0014_auto_20180131_1014.py
  5. 22
      sapl/parlamentares/migrations/0015_auto_20180131_1629.py
  6. 38
      sapl/parlamentares/models.py
  7. 3
      sapl/parlamentares/urls.py
  8. 21
      sapl/parlamentares/views.py
  9. 22
      sapl/relatorios/views.py
  10. 1
      sapl/rules/map_rules.py
  11. 2
      sapl/templates/parlamentares/layouts.yaml
  12. 3
      sapl/utils.py

13
sapl/base/models.py

@ -1,18 +1,13 @@
import reversion
from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.db import models from django.db import models
from django.db.models.signals import post_migrate from django.db.models.signals import post_migrate
from django.db.utils import DEFAULT_DB_ALIAS from django.db.utils import DEFAULT_DB_ALIAS
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
import reversion
from sapl.utils import (
UF,
YES_NO_CHOICES,
get_settings_auth_user_model,
models_with_gr_for_model
)
from sapl.utils import (LISTA_DE_UFS, YES_NO_CHOICES,
get_settings_auth_user_model, models_with_gr_for_model)
TIPO_DOCUMENTO_ADMINISTRATIVO = (('O', _('Ostensivo')), TIPO_DOCUMENTO_ADMINISTRATIVO = (('O', _('Ostensivo')),
('R', _('Restritivo'))) ('R', _('Restritivo')))
@ -36,7 +31,7 @@ class CasaLegislativa(models.Model):
cep = models.CharField(max_length=100, verbose_name=_('CEP')) cep = models.CharField(max_length=100, verbose_name=_('CEP'))
municipio = models.CharField(max_length=100, verbose_name=_('Município')) municipio = models.CharField(max_length=100, verbose_name=_('Município'))
uf = models.CharField(max_length=100, uf = models.CharField(max_length=100,
choices=UF, choices=LISTA_DE_UFS,
verbose_name=_('UF')) verbose_name=_('UF'))
telefone = models.CharField( telefone = models.CharField(
max_length=100, blank=True, verbose_name=_('Telefone')) max_length=100, blank=True, verbose_name=_('Telefone'))

7
sapl/legacy/migration.py

@ -789,6 +789,13 @@ def adjust_parlamentar(new, old):
if value is None: if value is None:
warn('nulo convertido para falso') warn('nulo convertido para falso')
new.unidade_deliberativa = False new.unidade_deliberativa = False
# migra município de residência
if old.cod_localidade_resid:
municipio_uf = list(exec_legado('''
select nom_localidade, sgl_uf from localidade
where cod_localidade = {}'''.format(old.cod_localidade_resid)))
if municipio_uf:
new.municipio_residencia, new.uf_residencia = municipio_uf[0]
def adjust_participacao(new, old): def adjust_participacao(new, old):

6
sapl/parlamentares/legacy.yaml

@ -28,11 +28,6 @@ ComposicaoColigacao:
coligacao: cod_coligacao coligacao: cod_coligacao
partido: cod_partido partido: cod_partido
Municipio (Localidade):
nome: nom_localidade
regiao: sgl_regiao
uf: sgl_uf
NivelInstrucao: NivelInstrucao:
descricao: des_nivel_instrucao descricao: des_nivel_instrucao
@ -52,7 +47,6 @@ Parlamentar:
fax: num_fax_parlamentar fax: num_fax_parlamentar
fax_residencia: num_fax_resid fax_residencia: num_fax_resid
locais_atuacao: des_local_atuacao locais_atuacao: des_local_atuacao
municipio_residencia: cod_localidade_resid
nivel_instrucao: cod_nivel_instrucao nivel_instrucao: cod_nivel_instrucao
nome_completo: nom_completo nome_completo: nom_completo
nome_parlamentar: nom_parlamentar nome_parlamentar: nom_parlamentar

46
sapl/parlamentares/migrations/0014_auto_20180131_1014.py

@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.13 on 2018-01-31 12:14
from __future__ import unicode_literals
from django.db import migrations, models
from sapl.utils import LISTA_DE_UFS
def migrate_municipio_e_uf_como_charfields(apps, schema_editor):
Parlamentar = apps.get_model('parlamentares', 'Parlamentar')
for parlamentar in Parlamentar.objects.all():
municipio = parlamentar.municipio_residencia_old
if municipio:
parlamentar.municipio_residencia = municipio.nome
parlamentar.uf_residencia = municipio.uf
parlamentar.save()
class Migration(migrations.Migration):
dependencies = [
('parlamentares', '0013_auto_20180130_1425'),
]
operations = [
migrations.RenameField(
model_name='parlamentar',
old_name='municipio_residencia',
new_name='municipio_residencia_old',
),
migrations.AddField(
model_name='parlamentar',
name='municipio_residencia',
field=models.CharField(blank=True, max_length=50,
verbose_name='Município'),
),
migrations.AddField(
model_name='parlamentar',
name='uf_residencia',
field=models.CharField(blank=True, choices=LISTA_DE_UFS,
max_length=2, verbose_name='UF'),
),
migrations.RunPython(migrate_municipio_e_uf_como_charfields),
]

22
sapl/parlamentares/migrations/0015_auto_20180131_1629.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.13 on 2018-01-31 18:29
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('parlamentares', '0014_auto_20180131_1014'),
]
operations = [
migrations.RemoveField(
model_name='parlamentar',
name='municipio_residencia_old',
),
migrations.DeleteModel(
name='Municipio',
),
]

38
sapl/parlamentares/models.py

@ -7,7 +7,7 @@ from model_utils import Choices
from sapl.base.models import Autor from sapl.base.models import Autor
from sapl.decorators import vigencia_atual from sapl.decorators import vigencia_atual
from sapl.utils import (INDICADOR_AFASTAMENTO, UF, YES_NO_CHOICES, from sapl.utils import (INDICADOR_AFASTAMENTO, LISTA_DE_UFS, YES_NO_CHOICES,
SaplGenericRelation, get_settings_auth_user_model, SaplGenericRelation, get_settings_auth_user_model,
intervalos_tem_intersecao, intervalos_tem_intersecao,
restringe_tipos_de_arquivo_img, texto_upload_path) restringe_tipos_de_arquivo_img, texto_upload_path)
@ -140,35 +140,6 @@ class ComposicaoColigacao(models.Model):
} }
@reversion.register()
class Municipio(models.Model): # Localidade
# TODO filter on migration leaving only cities
REGIAO_CHOICES = (
('CO', 'Centro-Oeste'),
('NE', 'Nordeste'),
('NO', 'Norte'),
('SE', 'Sudeste'), # TODO convert on migrate SD => SE
('SL', 'Sul'),
('EX', 'Exterior'),
)
nome = models.CharField(max_length=50, blank=True)
uf = models.CharField(
max_length=2, blank=True, choices=UF)
regiao = models.CharField(
max_length=2, blank=True, choices=REGIAO_CHOICES)
class Meta:
verbose_name = _('Município')
verbose_name_plural = _('Municípios')
def __str__(self):
return _('%(nome)s - %(uf)s (%(regiao)s)') % {
'nome': self.nome, 'uf': self.uf, 'regiao': self.regiao
}
@reversion.register() @reversion.register()
class NivelInstrucao(models.Model): class NivelInstrucao(models.Model):
descricao = models.CharField( descricao = models.CharField(
@ -256,9 +227,10 @@ class Parlamentar(models.Model):
max_length=100, max_length=100,
blank=True, blank=True,
verbose_name=_('Endereço Residencial')) verbose_name=_('Endereço Residencial'))
municipio_residencia = models.ForeignKey( municipio_residencia = models.CharField(
Municipio, blank=True, null=True, max_length=50, blank=True, verbose_name=_('Município'))
on_delete=models.PROTECT, verbose_name=_('Município')) uf_residencia = models.CharField(
max_length=2, blank=True, choices=LISTA_DE_UFS, verbose_name=_('UF'))
cep_residencia = models.CharField( cep_residencia = models.CharField(
max_length=9, blank=True, verbose_name=_('CEP')) max_length=9, blank=True, verbose_name=_('CEP'))
telefone_residencia = models.CharField( telefone_residencia = models.CharField(

3
sapl/parlamentares/urls.py

@ -17,7 +17,7 @@ from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud,
frente_atualiza_lista_parlamentares, frente_atualiza_lista_parlamentares,
insere_parlamentar_composicao, insere_parlamentar_composicao,
parlamentares_frente_selected, parlamentares_frente_selected,
remove_parlamentar_composicao, MunicipioCrud) remove_parlamentar_composicao)
from .apps import AppConfig from .apps import AppConfig
@ -60,7 +60,6 @@ urlpatterns = [
url(r'^sistema/parlamentar/tipo-militar/', url(r'^sistema/parlamentar/tipo-militar/',
include(TipoMilitarCrud.get_urls())), include(TipoMilitarCrud.get_urls())),
url(r'^sistema/parlamentar/partido/', include(PartidoCrud.get_urls())), url(r'^sistema/parlamentar/partido/', include(PartidoCrud.get_urls())),
url(r'^sistema/parlamentar/municipio/', include(MunicipioCrud.get_urls())),
url(r'^sistema/mesa-diretora/sessao-legislativa/', url(r'^sistema/mesa-diretora/sessao-legislativa/',
include(SessaoLegislativaCrud.get_urls())), include(SessaoLegislativaCrud.get_urls())),

21
sapl/parlamentares/views.py

@ -31,7 +31,7 @@ from .forms import (FiliacaoForm, LegislaturaForm, MandatoForm,
from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa, from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa,
Dependente, Filiacao, Frente, Legislatura, Mandato, Dependente, Filiacao, Frente, Legislatura, Mandato,
NivelInstrucao, Parlamentar, Partido, SessaoLegislativa, NivelInstrucao, Parlamentar, Partido, SessaoLegislativa,
SituacaoMilitar, TipoAfastamento, TipoDependente, Votante, Municipio) SituacaoMilitar, TipoAfastamento, TipoDependente, Votante)
CargoMesaCrud = CrudAux.build(CargoMesa, 'cargo_mesa') CargoMesaCrud = CrudAux.build(CargoMesa, 'cargo_mesa')
PartidoCrud = CrudAux.build(Partido, 'partidos') PartidoCrud = CrudAux.build(Partido, 'partidos')
@ -40,7 +40,6 @@ TipoDependenteCrud = CrudAux.build(TipoDependente, 'tipo_dependente')
NivelInstrucaoCrud = CrudAux.build(NivelInstrucao, 'nivel_instrucao') NivelInstrucaoCrud = CrudAux.build(NivelInstrucao, 'nivel_instrucao')
TipoAfastamentoCrud = CrudAux.build(TipoAfastamento, 'tipo_afastamento') TipoAfastamentoCrud = CrudAux.build(TipoAfastamento, 'tipo_afastamento')
TipoMilitarCrud = CrudAux.build(SituacaoMilitar, 'tipo_situa_militar') TipoMilitarCrud = CrudAux.build(SituacaoMilitar, 'tipo_situa_militar')
MunicipioCrud = CrudAux.build(Municipio, 'municipio')
DependenteCrud = MasterDetailCrud.build( DependenteCrud = MasterDetailCrud.build(
Dependente, 'parlamentar', 'dependente') Dependente, 'parlamentar', 'dependente')
@ -85,7 +84,6 @@ class FrenteList(MasterDetailCrud):
@classmethod @classmethod
def url_name(cls, suffix): def url_name(cls, suffix):
return '%s_parlamentar_%s' % (cls.model._meta.model_name, suffix) return '%s_parlamentar_%s' % (cls.model._meta.model_name, suffix)
class RelatoriaParlamentarCrud(CrudBaseForListAndDetailExternalAppView): class RelatoriaParlamentarCrud(CrudBaseForListAndDetailExternalAppView):
@ -668,7 +666,8 @@ class MesaDiretoraView(FormView):
year = timezone.now().year year = timezone.now().year
month = timezone.now().month month = timezone.now().month
sessao_atual = sessoes.filter(data_inicio__year__lte=year).exclude(data_inicio__gt=timezone.now()).order_by('-data_inicio').first() sessao_atual = sessoes.filter(data_inicio__year__lte=year).exclude(
data_inicio__gt=timezone.now()).order_by('-data_inicio').first()
mesa = sessao_atual.composicaomesa_set.all() if sessao_atual else [] mesa = sessao_atual.composicaomesa_set.all() if sessao_atual else []
@ -691,13 +690,13 @@ class MesaDiretoraView(FormView):
return self.render_to_response( return self.render_to_response(
{'legislaturas': Legislatura.objects.all( {'legislaturas': Legislatura.objects.all(
).order_by('-numero'), ).order_by('-numero'),
'legislatura_selecionada': legislatura, 'legislatura_selecionada': legislatura,
'sessoes': sessoes, 'sessoes': sessoes,
'sessao_selecionada': sessao_atual, 'sessao_selecionada': sessao_atual,
'composicao_mesa': mesa, 'composicao_mesa': mesa,
'parlamentares': parlamentares_vagos, 'parlamentares': parlamentares_vagos,
'cargos_vagos': cargos_vagos 'cargos_vagos': cargos_vagos
}) })
def altera_field_mesa(request): def altera_field_mesa(request):

22
sapl/relatorios/views.py

@ -19,7 +19,7 @@ from sapl.sessao.models import (ExpedienteMateria, ExpedienteSessao,
OrdemDia, PresencaOrdemDia, SessaoPlenaria, OrdemDia, PresencaOrdemDia, SessaoPlenaria,
SessaoPlenariaPresenca) SessaoPlenariaPresenca)
from sapl.settings import STATIC_ROOT from sapl.settings import STATIC_ROOT
from sapl.utils import UF, filiacao_data, TrocaTag, ExtraiTag from sapl.utils import LISTA_DE_UFS, ExtraiTag, TrocaTag, filiacao_data
from .templates import (pdf_capa_processo_gerar, from .templates import (pdf_capa_processo_gerar,
pdf_documento_administrativo_gerar, pdf_espelho_gerar, pdf_documento_administrativo_gerar, pdf_espelho_gerar,
@ -27,8 +27,6 @@ from .templates import (pdf_capa_processo_gerar,
pdf_ordem_dia_gerar, pdf_pauta_sessao_gerar, pdf_ordem_dia_gerar, pdf_pauta_sessao_gerar,
pdf_protocolo_gerar, pdf_sessao_plenaria_gerar) pdf_protocolo_gerar, pdf_sessao_plenaria_gerar)
uf_dic = dict(UF)
def get_kwargs_params(request, fields): def get_kwargs_params(request, fields):
kwargs = {} kwargs = {}
@ -46,8 +44,9 @@ def get_cabecalho(casa):
cabecalho = {} cabecalho = {}
cabecalho["nom_casa"] = casa.nome cabecalho["nom_casa"] = casa.nome
uf_dict = dict(LISTA_DE_UFS)
# FIXME i18n # FIXME i18n
cabecalho["nom_estado"] = "Estado de " + uf_dic[casa.uf.upper()] cabecalho["nom_estado"] = "Estado de " + uf_dict[casa.uf.upper()]
return cabecalho return cabecalho
@ -745,11 +744,11 @@ def get_turno(dic, materia, sessao_data_inicio):
data_tramitacao__lte=sessao_data_inicio, data_tramitacao__lte=sessao_data_inicio,
).exclude(turno__exact='' ).exclude(turno__exact=''
).select_related( ).select_related(
'materia', 'materia',
'status', 'status',
'materia__tipo').order_by( 'materia__tipo').order_by(
'-data_tramitacao' '-data_tramitacao'
).first() ).first()
if tramitacao is not None: if tramitacao is not None:
for t in Tramitacao.TURNO_CHOICES: for t in Tramitacao.TURNO_CHOICES:
if t[0] == tramitacao.turno: if t[0] == tramitacao.turno:
@ -792,15 +791,11 @@ def relatorio_sessao_plenaria(request, pk):
lst_votacao, lst_votacao,
lst_oradores) = get_sessao_plenaria(sessao, casa) lst_oradores) = get_sessao_plenaria(sessao, casa)
for idx in range(len(lst_expedientes)): for idx in range(len(lst_expedientes)):
txt_expedientes = lst_expedientes[idx]['txt_expediente'] txt_expedientes = lst_expedientes[idx]['txt_expediente']
txt_expedientes = TrocaTag(txt_expedientes, '<table', 'table>', 6, 6, 'expedientes') txt_expedientes = TrocaTag(txt_expedientes, '<table', 'table>', 6, 6, 'expedientes')
lst_expedientes[idx]['txt_expediente'] = txt_expedientes lst_expedientes[idx]['txt_expediente'] = txt_expedientes
pdf = pdf_sessao_plenaria_gerar.principal( pdf = pdf_sessao_plenaria_gerar.principal(
cabecalho, cabecalho,
rodape, rodape,
@ -1076,7 +1071,6 @@ def get_pauta_sessao(sessao, casa):
dic_expediente_materia["des_turno"] = turno dic_expediente_materia["des_turno"] = turno
dic_expediente_materia["des_situacao"] = tramitacao dic_expediente_materia["des_situacao"] = tramitacao
lst_expediente_materia.append(dic_expediente_materia) lst_expediente_materia.append(dic_expediente_materia)
lst_votacao = [] lst_votacao = []

1
sapl/rules/map_rules.py

@ -232,7 +232,6 @@ rules_group_geral = {
(parlamentares.Coligacao, __base__), (parlamentares.Coligacao, __base__),
(parlamentares.ComposicaoColigacao, __base__), (parlamentares.ComposicaoColigacao, __base__),
(parlamentares.Partido, __base__), (parlamentares.Partido, __base__),
(parlamentares.Municipio, __base__),
(parlamentares.NivelInstrucao, __base__), (parlamentares.NivelInstrucao, __base__),
(parlamentares.SituacaoMilitar, __base__), (parlamentares.SituacaoMilitar, __base__),
(parlamentares.Parlamentar, __base__), (parlamentares.Parlamentar, __base__),

2
sapl/templates/parlamentares/layouts.yaml

@ -39,7 +39,7 @@ Parlamentar:
- email - email
- numero_gab_parlamentar telefone fax - numero_gab_parlamentar telefone fax
- endereco_residencia cep_residencia - endereco_residencia cep_residencia
- municipio_residencia - municipio_residencia uf_residencia
- telefone_residencia fax_residencia - telefone_residencia fax_residencia
- locais_atuacao - locais_atuacao
- fotografia - fotografia

3
sapl/utils.py

@ -272,7 +272,7 @@ def listify(function):
return list(function(*args, **kwargs)) return list(function(*args, **kwargs))
return f return f
UF = [ LISTA_DE_UFS = [
('AC', 'Acre'), ('AC', 'Acre'),
('AL', 'Alagoas'), ('AL', 'Alagoas'),
('AP', 'Amapá'), ('AP', 'Amapá'),
@ -675,6 +675,7 @@ def get_mime_type_from_file_extension(filename):
mime = "application/%s" % (ext,) mime = "application/%s" % (ext,)
return mime return mime
def ExtraiTag(texto, posicao): def ExtraiTag(texto, posicao):
for i in range(posicao, len(texto)): for i in range(posicao, len(texto)):
if (texto[i] == '>'): if (texto[i] == '>'):

Loading…
Cancel
Save