diff --git a/sapl/base/models.py b/sapl/base/models.py index 15e14e39c..0bf792ae4 100644 --- a/sapl/base/models.py +++ b/sapl/base/models.py @@ -1,18 +1,13 @@ +import reversion from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.db import models from django.db.models.signals import post_migrate from django.db.utils import DEFAULT_DB_ALIAS 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')), ('R', _('Restritivo'))) @@ -36,7 +31,7 @@ class CasaLegislativa(models.Model): cep = models.CharField(max_length=100, verbose_name=_('CEP')) municipio = models.CharField(max_length=100, verbose_name=_('Município')) uf = models.CharField(max_length=100, - choices=UF, + choices=LISTA_DE_UFS, verbose_name=_('UF')) telefone = models.CharField( max_length=100, blank=True, verbose_name=_('Telefone')) diff --git a/sapl/legacy/migration.py b/sapl/legacy/migration.py index a3562783a..0a5bd0ea6 100644 --- a/sapl/legacy/migration.py +++ b/sapl/legacy/migration.py @@ -789,6 +789,13 @@ def adjust_parlamentar(new, old): if value is None: warn('nulo convertido para falso') 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): diff --git a/sapl/parlamentares/legacy.yaml b/sapl/parlamentares/legacy.yaml index a4c6b9d12..acaca47de 100644 --- a/sapl/parlamentares/legacy.yaml +++ b/sapl/parlamentares/legacy.yaml @@ -28,11 +28,6 @@ ComposicaoColigacao: coligacao: cod_coligacao partido: cod_partido -Municipio (Localidade): - nome: nom_localidade - regiao: sgl_regiao - uf: sgl_uf - NivelInstrucao: descricao: des_nivel_instrucao @@ -52,7 +47,6 @@ Parlamentar: fax: num_fax_parlamentar fax_residencia: num_fax_resid locais_atuacao: des_local_atuacao - municipio_residencia: cod_localidade_resid nivel_instrucao: cod_nivel_instrucao nome_completo: nom_completo nome_parlamentar: nom_parlamentar diff --git a/sapl/parlamentares/migrations/0014_auto_20180131_1014.py b/sapl/parlamentares/migrations/0014_auto_20180131_1014.py new file mode 100644 index 000000000..e6ed4ea6c --- /dev/null +++ b/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), + ] diff --git a/sapl/parlamentares/migrations/0015_auto_20180131_1629.py b/sapl/parlamentares/migrations/0015_auto_20180131_1629.py new file mode 100644 index 000000000..334e88edf --- /dev/null +++ b/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', + ), + ] diff --git a/sapl/parlamentares/models.py b/sapl/parlamentares/models.py index 2be2b79c7..d58102e87 100644 --- a/sapl/parlamentares/models.py +++ b/sapl/parlamentares/models.py @@ -7,7 +7,7 @@ from model_utils import Choices from sapl.base.models import Autor 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, intervalos_tem_intersecao, 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() class NivelInstrucao(models.Model): descricao = models.CharField( @@ -256,9 +227,10 @@ class Parlamentar(models.Model): max_length=100, blank=True, verbose_name=_('Endereço Residencial')) - municipio_residencia = models.ForeignKey( - Municipio, blank=True, null=True, - on_delete=models.PROTECT, verbose_name=_('Município')) + municipio_residencia = models.CharField( + max_length=50, blank=True, verbose_name=_('Município')) + uf_residencia = models.CharField( + max_length=2, blank=True, choices=LISTA_DE_UFS, verbose_name=_('UF')) cep_residencia = models.CharField( max_length=9, blank=True, verbose_name=_('CEP')) telefone_residencia = models.CharField( diff --git a/sapl/parlamentares/urls.py b/sapl/parlamentares/urls.py index 552257c61..e383421c4 100644 --- a/sapl/parlamentares/urls.py +++ b/sapl/parlamentares/urls.py @@ -17,7 +17,7 @@ from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud, frente_atualiza_lista_parlamentares, insere_parlamentar_composicao, parlamentares_frente_selected, - remove_parlamentar_composicao, MunicipioCrud) + remove_parlamentar_composicao) from .apps import AppConfig @@ -60,7 +60,6 @@ urlpatterns = [ url(r'^sistema/parlamentar/tipo-militar/', include(TipoMilitarCrud.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/', include(SessaoLegislativaCrud.get_urls())), diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index 90c3e72d6..3e79770a3 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -31,7 +31,7 @@ from .forms import (FiliacaoForm, LegislaturaForm, MandatoForm, from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa, Dependente, Filiacao, Frente, Legislatura, Mandato, NivelInstrucao, Parlamentar, Partido, SessaoLegislativa, - SituacaoMilitar, TipoAfastamento, TipoDependente, Votante, Municipio) + SituacaoMilitar, TipoAfastamento, TipoDependente, Votante) CargoMesaCrud = CrudAux.build(CargoMesa, 'cargo_mesa') PartidoCrud = CrudAux.build(Partido, 'partidos') @@ -40,7 +40,6 @@ TipoDependenteCrud = CrudAux.build(TipoDependente, 'tipo_dependente') NivelInstrucaoCrud = CrudAux.build(NivelInstrucao, 'nivel_instrucao') TipoAfastamentoCrud = CrudAux.build(TipoAfastamento, 'tipo_afastamento') TipoMilitarCrud = CrudAux.build(SituacaoMilitar, 'tipo_situa_militar') -MunicipioCrud = CrudAux.build(Municipio, 'municipio') DependenteCrud = MasterDetailCrud.build( Dependente, 'parlamentar', 'dependente') @@ -85,7 +84,6 @@ class FrenteList(MasterDetailCrud): @classmethod def url_name(cls, suffix): return '%s_parlamentar_%s' % (cls.model._meta.model_name, suffix) - class RelatoriaParlamentarCrud(CrudBaseForListAndDetailExternalAppView): @@ -668,7 +666,8 @@ class MesaDiretoraView(FormView): year = timezone.now().year 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 [] @@ -691,13 +690,13 @@ class MesaDiretoraView(FormView): return self.render_to_response( {'legislaturas': Legislatura.objects.all( ).order_by('-numero'), - 'legislatura_selecionada': legislatura, - 'sessoes': sessoes, - 'sessao_selecionada': sessao_atual, - 'composicao_mesa': mesa, - 'parlamentares': parlamentares_vagos, - 'cargos_vagos': cargos_vagos - }) + 'legislatura_selecionada': legislatura, + 'sessoes': sessoes, + 'sessao_selecionada': sessao_atual, + 'composicao_mesa': mesa, + 'parlamentares': parlamentares_vagos, + 'cargos_vagos': cargos_vagos + }) def altera_field_mesa(request): diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 07c2164ea..f4807c846 100644 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -19,7 +19,7 @@ from sapl.sessao.models import (ExpedienteMateria, ExpedienteSessao, OrdemDia, PresencaOrdemDia, SessaoPlenaria, SessaoPlenariaPresenca) 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, 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_protocolo_gerar, pdf_sessao_plenaria_gerar) -uf_dic = dict(UF) - def get_kwargs_params(request, fields): kwargs = {} @@ -46,8 +44,9 @@ def get_cabecalho(casa): cabecalho = {} cabecalho["nom_casa"] = casa.nome + uf_dict = dict(LISTA_DE_UFS) # FIXME i18n - cabecalho["nom_estado"] = "Estado de " + uf_dic[casa.uf.upper()] + cabecalho["nom_estado"] = "Estado de " + uf_dict[casa.uf.upper()] return cabecalho @@ -745,11 +744,11 @@ def get_turno(dic, materia, sessao_data_inicio): data_tramitacao__lte=sessao_data_inicio, ).exclude(turno__exact='' ).select_related( - 'materia', - 'status', - 'materia__tipo').order_by( - '-data_tramitacao' - ).first() + 'materia', + 'status', + 'materia__tipo').order_by( + '-data_tramitacao' + ).first() if tramitacao is not None: for t in Tramitacao.TURNO_CHOICES: if t[0] == tramitacao.turno: @@ -792,15 +791,11 @@ def relatorio_sessao_plenaria(request, pk): lst_votacao, lst_oradores) = get_sessao_plenaria(sessao, casa) - for idx in range(len(lst_expedientes)): txt_expedientes = lst_expedientes[idx]['txt_expediente'] txt_expedientes = TrocaTag(txt_expedientes, '