mirror of https://github.com/interlegis/sapl.git
Marcio Mazza
7 years ago
162 changed files with 5881 additions and 3190 deletions
@ -0,0 +1,26 @@ |
|||
#!/bin/bash |
|||
|
|||
# TODO: Após migrar para Django 1.10 usar |
|||
# |
|||
# ./manage.py makemigrations --check --dry-run |
|||
# |
|||
# ATENÇÃO: a chamada atual termina com exit 1 se NÃO HÁ migração a ser aplicada |
|||
# ou seja, termina com "erro" se está tudo bem! |
|||
# A chamada do django 1.10 INVERTE ISSO. |
|||
# |
|||
# https://docs.djangoproject.com/en/1.10/ref/django-admin/#cmdoption-makemigrations-check |
|||
|
|||
python manage.py makemigrations --dry-run --exit |
|||
|
|||
MIGRATIONS=$? |
|||
|
|||
NC='\033[0m' |
|||
|
|||
if [ $MIGRATIONS -eq 0 ]; then |
|||
RED='\033[0;31m' |
|||
echo |
|||
echo -e "${RED}ALGUMAS ALTERAÇÕES EXIGEM MIGRAÇÃO.${NC}" |
|||
echo -e "${RED}RODE 'python manage.py makemigrations' ANTES DE SUBMETER SEU CÓDIGO...${NC}" |
|||
echo |
|||
exit 1 |
|||
fi |
@ -0,0 +1,20 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2017-08-14 14:09 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('base', '0007_auto_20170808_0850'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='appconfig', |
|||
name='sequencia_numeracao', |
|||
field=models.CharField(choices=[('A', 'Sequencial por ano'), ('L', 'Sequencial por legislatura'), ('U', 'Sequencial único')], default='A', max_length=1, verbose_name='Sequência de numeração'), |
|||
), |
|||
] |
@ -0,0 +1,20 @@ |
|||
from django.utils.translation import ugettext_lazy as _ |
|||
|
|||
from sapl.base.forms import CasaLegislativaForm |
|||
|
|||
|
|||
def test_valida_campos_obrigatorios_casa_legislativa_form(): |
|||
form = CasaLegislativaForm(data={}) |
|||
|
|||
assert not form.is_valid() |
|||
|
|||
errors = form.errors |
|||
|
|||
assert errors['nome'] == [_('Este campo é obrigatório.')] |
|||
assert errors['sigla'] == [_('Este campo é obrigatório.')] |
|||
assert errors['endereco'] == [_('Este campo é obrigatório.')] |
|||
assert errors['cep'] == [_('Este campo é obrigatório.')] |
|||
assert errors['municipio'] == [_('Este campo é obrigatório.')] |
|||
assert errors['uf'] == [_('Este campo é obrigatório.')] |
|||
|
|||
assert len(errors) == 6 |
@ -0,0 +1,21 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2017-08-25 11:08 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('compilacao', '0001_initial'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='tipotextoarticulado', |
|||
name='content_type', |
|||
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.SET_NULL, to='contenttypes.ContentType', verbose_name='Modelo Integrado'), |
|||
), |
|||
] |
@ -0,0 +1,33 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2017-08-25 11:36 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('compilacao', '0002_auto_20170825_1108'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='tipotextoarticulado', |
|||
name='content_type', |
|||
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='contenttypes.ContentType', verbose_name='Modelo Integrado'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='tipotextoarticulado', |
|||
name='participacao_social', |
|||
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Participação Social'), |
|||
preserve_default=False, |
|||
), |
|||
migrations.AlterField( |
|||
model_name='tipotextoarticulado', |
|||
name='publicacao_func', |
|||
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Histórico de Publicação'), |
|||
preserve_default=False, |
|||
), |
|||
] |
@ -0,0 +1,76 @@ |
|||
import pytest |
|||
from django.utils.translation import ugettext as _ |
|||
from model_mommy import mommy |
|||
|
|||
from sapl.compilacao import forms |
|||
from sapl.compilacao.models import PerfilEstruturalTextoArticulado, TipoNota |
|||
from sapl.compilacao.views import choice_models_in_extenal_views |
|||
|
|||
|
|||
def test_valida_campos_obrigatorios_tipo_texto_articulado_form(): |
|||
form = forms.TipoTaForm(data={}) |
|||
|
|||
assert not form.is_valid() |
|||
|
|||
errors = form.errors |
|||
|
|||
assert errors['sigla'] == [_('Este campo é obrigatório.')] |
|||
assert errors['descricao'] == [_('Este campo é obrigatório.')] |
|||
assert errors['participacao_social'] == [_('Este campo é obrigatório.')] |
|||
assert errors['publicacao_func'] == [_('Este campo é obrigatório.')] |
|||
|
|||
assert len(errors) == 4 |
|||
|
|||
|
|||
_content_types = choice_models_in_extenal_views() |
|||
|
|||
|
|||
@pytest.mark.parametrize('content_type', _content_types) |
|||
@pytest.mark.django_db(transaction=False) |
|||
def test_tipo_texto_articulado_form_valid(content_type): |
|||
perfil = mommy.make(PerfilEstruturalTextoArticulado) |
|||
|
|||
form = forms.TipoTaForm(data={'sigla': 'si', |
|||
'descricao': 'teste', |
|||
'content_type': content_type[0], |
|||
'participacao_social': True, |
|||
'publicacao_func': True, |
|||
'perfis': [perfil.pk, ] |
|||
}) |
|||
|
|||
assert form.is_valid(), form.errors |
|||
|
|||
|
|||
def test_valida_campos_obrigatorios_nota_form(): |
|||
form = forms.NotaForm(data={}) |
|||
|
|||
assert not form.is_valid() |
|||
|
|||
errors = form.errors |
|||
|
|||
assert errors['texto'] == [_('Este campo é obrigatório')] |
|||
assert errors['publicidade'] == [_('Este campo é obrigatório.')] |
|||
assert errors['tipo'] == [_('Este campo é obrigatório.')] |
|||
assert errors['publicacao'] == [_('Este campo é obrigatório')] |
|||
assert errors['efetividade'] == [_('Este campo é obrigatório')] |
|||
assert errors['dispositivo'] == [_('Este campo é obrigatório.')] |
|||
|
|||
assert len(errors) == 6 |
|||
|
|||
|
|||
@pytest.mark.django_db(transaction=False) |
|||
def test_nota_form_invalido(): |
|||
tipo = mommy.make(TipoNota) |
|||
|
|||
form = forms.NotaForm(data={'titulo': 'titulo', |
|||
'texto': 'teste', |
|||
'url_externa': 'www.test.com', |
|||
'publicidade': 'publicidade', |
|||
'tipo': str(tipo.pk), |
|||
'publicacao': '10/05/2017', |
|||
'efetividade': '10/05/2017', |
|||
'dispositivo': 'dispositivo', |
|||
'pk': 'pk' |
|||
}) |
|||
|
|||
assert not form.is_valid() |
@ -0,0 +1,43 @@ |
|||
from datetime import date |
|||
from functools import wraps |
|||
|
|||
from django.utils.translation import ugettext_lazy as _ |
|||
|
|||
|
|||
def vigencia_atual(decorated_method): |
|||
""" |
|||
concatena a string ' (Atual)' caso a model instancia estiver |
|||
em vigência na data atual do servidor |
|||
|
|||
Premissas: |
|||
* A classe precisa conter os atributos 'data_inicio' e 'data_fim'. |
|||
* 'data_inicio' e 'data_fim' precisam ser do tipo models.DateField |
|||
""" |
|||
@wraps(decorated_method) |
|||
def display_atual(self): |
|||
string_displayed = decorated_method(self) |
|||
|
|||
if hasattr(self, 'data_inicio') and hasattr(self, 'data_fim'): |
|||
today = date.today() |
|||
e_atual = self.data_inicio <= today <= self.data_fim |
|||
string_displayed = "{} {}".format( |
|||
string_displayed, "(Atual)" if e_atual else "") |
|||
else: |
|||
instancia_sem_atributo = "{} [{}, {}].".format( |
|||
'Instância não possui os atributos', |
|||
'data_inicio', |
|||
'data_fim') |
|||
|
|||
mensagem_decorator = "Decorator @{} foi desabilitado.".format( |
|||
vigencia_atual.__name__() |
|||
) |
|||
print(_('{} {}'.format( |
|||
_(instancia_sem_atributo), |
|||
_(mensagem_decorator) |
|||
) |
|||
) |
|||
) |
|||
|
|||
return string_displayed |
|||
|
|||
return display_atual |
@ -0,0 +1,361 @@ |
|||
[{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 1, |
|||
"fields": { |
|||
"sigla": "ADIAVOTAC", |
|||
"indicador": "R", |
|||
"descricao": "Adiada discussão e votação." |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 2, |
|||
"fields": { |
|||
"sigla": "AGAUTOGR", |
|||
"indicador": "R", |
|||
"descricao": "Aguardando assinatura do autógrafo" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 3, |
|||
"fields": { |
|||
"sigla": "AGMENSVET", |
|||
"indicador": "R", |
|||
"descricao": "Aguardando assinatura da mensagem sobre o veto" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 4, |
|||
"fields": { |
|||
"sigla": "AGORDIA", |
|||
"indicador": "R", |
|||
"descricao": "Aguardando a inclusão na ordem do dia" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 5, |
|||
"fields": { |
|||
"sigla": "AGPARECER", |
|||
"indicador": "R", |
|||
"descricao": "Aguardando emissão de parecer da comissão" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 6, |
|||
"fields": { |
|||
"sigla": "AGPROMLEI", |
|||
"indicador": "F", |
|||
"descricao": "Aguardando promulgação da lei" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 7, |
|||
"fields": { |
|||
"sigla": "AGPROMNOR", |
|||
"indicador": "F", |
|||
"descricao": "Aguardando promulgação da norma jurídica" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 8, |
|||
"fields": { |
|||
"sigla": "AGPROMVET", |
|||
"indicador": "R", |
|||
"descricao": "Aguardando promulgação de lei com veto rejeitado" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 9, |
|||
"fields": { |
|||
"sigla": "AGSANCAO", |
|||
"indicador": "F", |
|||
"descricao": "Aguardando sanção governamental" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 10, |
|||
"fields": { |
|||
"sigla": "ANEXADA", |
|||
"indicador": "R", |
|||
"descricao": "Proposição anexada à outra análoga ou conexa mais antiga" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 11, |
|||
"fields": { |
|||
"sigla": "APRESENT", |
|||
"indicador": "R", |
|||
"descricao": "Proposição apresentada em Plenário" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 12, |
|||
"fields": { |
|||
"sigla": "APROV1TUR", |
|||
"indicador": "R", |
|||
"descricao": "Proposição aprovada em 1º turno" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 13, |
|||
"fields": { |
|||
"sigla": "APROVADA", |
|||
"indicador": "F", |
|||
"descricao": "Proposição aprovada" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 14, |
|||
"fields": { |
|||
"sigla": "ARQUIVADA", |
|||
"indicador": "F", |
|||
"descricao": "Proposição arquivada" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 15, |
|||
"fields": { |
|||
"sigla": "AUTUAPAUTA", |
|||
"indicador": "R", |
|||
"descricao": "Proposição autuada e cumprindo prazo de pauta" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 16, |
|||
"fields": { |
|||
"sigla": "DESARQUIV", |
|||
"indicador": "R", |
|||
"descricao": "Proposição desarquivada pelo Autor" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 17, |
|||
"fields": { |
|||
"sigla": "DISTRCOMIS", |
|||
"indicador": "R", |
|||
"descricao": "Proposição distribuída às comissões" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 18, |
|||
"fields": { |
|||
"sigla": "INCLORDIA", |
|||
"indicador": "R", |
|||
"descricao": "Proposição inclusa na Ordem do Dia" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 19, |
|||
"fields": { |
|||
"sigla": "LEIPROMUL", |
|||
"indicador": "F", |
|||
"descricao": "Proposição transformada em lei por promulgação" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 20, |
|||
"fields": { |
|||
"sigla": "LEIVETPAR", |
|||
"indicador": "R", |
|||
"descricao": "Transformada em lei com veto parcial" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 21, |
|||
"fields": { |
|||
"sigla": "MANUTVETO", |
|||
"indicador": "R", |
|||
"descricao": "Parecer pela manutenção do veto" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 22, |
|||
"fields": { |
|||
"sigla": "NORMPROMUL", |
|||
"indicador": "F", |
|||
"descricao": "Norma promulgada" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 23, |
|||
"fields": { |
|||
"sigla": "PARECCONTR", |
|||
"indicador": "R", |
|||
"descricao": "Parecer contrário da comissão de mérito" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 24, |
|||
"fields": { |
|||
"sigla": "PARECERFAV", |
|||
"indicador": "R", |
|||
"descricao": "Parecer favorável da comissão" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 25, |
|||
"fields": { |
|||
"sigla": "PARECPLEN", |
|||
"indicador": "F", |
|||
"descricao": "Parecer em Plenário pelas comissões pertinentes" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 26, |
|||
"fields": { |
|||
"sigla": "PAREUCONJ", |
|||
"indicador": "R", |
|||
"descricao": "Parecer em reunião conjunta das Comissões pertinentes" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 27, |
|||
"fields": { |
|||
"sigla": "PREJUD", |
|||
"indicador": "F", |
|||
"descricao": "Proposição prejudicada" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 28, |
|||
"fields": { |
|||
"sigla": "PROMULVETO", |
|||
"indicador": "F", |
|||
"descricao": "Veto total ou parcial promulgado" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 29, |
|||
"fields": { |
|||
"sigla": "REJEITADA", |
|||
"indicador": "F", |
|||
"descricao": "Proposição rejeitada pelo Plenário" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 30, |
|||
"fields": { |
|||
"sigla": "REJEIVETO", |
|||
"indicador": "R", |
|||
"descricao": "Parecer pela rejeição do veto" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 31, |
|||
"fields": { |
|||
"sigla": "RETAUTOR", |
|||
"indicador": "F", |
|||
"descricao": "Proposição retirada pelo autor" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 32, |
|||
"fields": { |
|||
"sigla": "RETORDIA", |
|||
"indicador": "R", |
|||
"descricao": "Proposição retirada da Ordem do Dia" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 33, |
|||
"fields": { |
|||
"sigla": "TRANSFLEI", |
|||
"indicador": "F", |
|||
"descricao": "Proposição transformada em lei" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 34, |
|||
"fields": { |
|||
"sigla": "VETODISTR", |
|||
"indicador": "R", |
|||
"descricao": "Veto distribuído para emissão de parecer" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 35, |
|||
"fields": { |
|||
"sigla": "VETOLIDO", |
|||
"indicador": "R", |
|||
"descricao": "Veto sobre a proposição lido em sessão plenária" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 36, |
|||
"fields": { |
|||
"sigla": "VETOMANT", |
|||
"indicador": "F", |
|||
"descricao": "Veto sobre a proposição mantido" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 37, |
|||
"fields": { |
|||
"sigla": "VETOORDIA", |
|||
"indicador": "F", |
|||
"descricao": "Veto incluso na ordem do dia" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 38, |
|||
"fields": { |
|||
"sigla": "VETOPAUTA", |
|||
"indicador": "F", |
|||
"descricao": "Veto autuado e incluso em pauta" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 39, |
|||
"fields": { |
|||
"sigla": "VETOREJEI", |
|||
"indicador": "F", |
|||
"descricao": "Veto sobre a proposição rejeitado" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "materia.StatusTramitacao", |
|||
"pk": 40, |
|||
"fields": { |
|||
"sigla": "VETOTOTAL", |
|||
"indicador": "R", |
|||
"descricao": "Proposição com veto tota" |
|||
} |
|||
} |
|||
] |
@ -0,0 +1,19 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.3 on 2017-08-29 13:21 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('materia', '0011_auto_20170808_1034'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='materialegislativa', |
|||
options={'permissions': (('can_access_impressos', 'Can access impressos'),), 'verbose_name': 'Matéria Legislativa', 'verbose_name_plural': 'Matérias Legislativas'}, |
|||
), |
|||
] |
@ -0,0 +1,44 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from __future__ import unicode_literals |
|||
from django.db import migrations |
|||
import json |
|||
import os |
|||
|
|||
|
|||
from django.core.management import call_command |
|||
|
|||
|
|||
|
|||
def gera_status_tramitacao(apps, schema_editor): |
|||
StatusTramitacao = apps.get_model("materia", "StatusTramitacao") |
|||
db_alias = schema_editor.connection.alias |
|||
status_tramitacoes = StatusTramitacao.objects.all().exists() |
|||
|
|||
if status_tramitacoes: |
|||
# Caso haja algum StatusTramitacao cadastrado na base de dados, |
|||
# a migração não deve ser carregada para evitar duplicações de dados. |
|||
print("Carga de {} não efetuada. Já Existem {} cadastrados...".format( |
|||
StatusTramitacao._meta.verbose_name, |
|||
StatusTramitacao._meta.verbose_name_plural |
|||
) |
|||
) |
|||
else: |
|||
fixture_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../fixtures')) |
|||
# pega status_tramitacoes listados em fixtures/pre_popula_status_tramitacao.json |
|||
fixture_filename = 'pre_popula_status_tramitacao.json' |
|||
fixture_file = os.path.join(fixture_dir, fixture_filename) |
|||
call_command('loaddata', fixture_file) |
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
# A dependencia real desse script é o arquivo 0001_initial.py, mas |
|||
# isso gera um erro (Conflicting migrations detected; multiple leaf |
|||
# nodes in the migration graph). para não ocasionar problemas de migração, |
|||
# vamos manter a ordem padrão do django. |
|||
('materia', '0012_auto_20170829_1321'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.RunPython(gera_status_tramitacao), |
|||
] |
@ -0,0 +1,19 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.7 on 2017-09-05 08:18 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('materia', '0013_adiciona_status_tramitacao'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='unidadetramitacao', |
|||
options={'ordering': ['orgao', 'comissao', 'parlamentar'], 'verbose_name': 'Unidade de Tramitação', 'verbose_name_plural': 'Unidades de Tramitação'}, |
|||
), |
|||
] |
@ -0,0 +1,37 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2017-09-08 10:24 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations |
|||
|
|||
from sapl.materia.models import TipoProposicao |
|||
|
|||
|
|||
class AlterUniqueTogetherFixConstraintInexistente( |
|||
migrations.AlterUniqueTogether): |
|||
|
|||
def database_forwards(self, |
|||
app_label, schema_editor, from_state, to_state): |
|||
constraint_names = schema_editor._constraint_names( |
|||
TipoProposicao, ['content_type_id', 'object_id'], unique=True) |
|||
if constraint_names: |
|||
# por alguma razão a constraint não existe em alguns bancos |
|||
# se ela existir continua a exetução normal |
|||
super(AlterUniqueTogetherFixConstraintInexistente, |
|||
self).database_forwards( |
|||
app_label, schema_editor, from_state, to_state |
|||
) |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('materia', '0014_auto_20170905_0818'), |
|||
] |
|||
|
|||
operations = [ |
|||
AlterUniqueTogetherFixConstraintInexistente( |
|||
name='tipoproposicao', |
|||
unique_together=set([]), |
|||
), |
|||
] |
@ -0,0 +1,16 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2017-09-08 11:57 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('materia', '0015_auto_20170908_1024'), |
|||
('materia', '0013_auto_20170816_1136'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -1,8 +1,3 @@ |
|||
from django.db.models.signals import post_delete, post_save |
|||
|
|||
import django.dispatch |
|||
|
|||
from .models import DocumentoAcessorio, MateriaLegislativa |
|||
|
|||
|
|||
tramitacao_signal = django.dispatch.Signal(providing_args=['post', 'request']) |
|||
|
@ -0,0 +1,24 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.7 on 2017-09-04 17:08 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('norma', '0006_normajuridica_data_ultima_atualizacao'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='assuntonorma', |
|||
options={'ordering': ['assunto'], 'verbose_name': 'Assunto de Norma Jurídica', 'verbose_name_plural': 'Assuntos de Normas Jurídicas'}, |
|||
), |
|||
migrations.AlterField( |
|||
model_name='normajuridica', |
|||
name='esfera_federacao', |
|||
field=models.CharField(choices=[('M', 'Municipal'), ('E', 'Estadual'), ('F', 'Federal')], max_length=1, verbose_name='Esfera Federação'), |
|||
), |
|||
] |
@ -1,3 +0,0 @@ |
|||
from django.db.models.signals import post_delete, post_save |
|||
|
|||
from .models import NormaJuridica |
@ -0,0 +1,37 @@ |
|||
[ |
|||
{ |
|||
"model": "parlamentares.CargoMesa", |
|||
"pk": 1, |
|||
"fields": { |
|||
"descricao": "Presidente", |
|||
"unico": true |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.CargoMesa", |
|||
"pk": 2, |
|||
"fields": { |
|||
"descricao": "Vice-Presidente", |
|||
"unico": true |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.CargoMesa", |
|||
"pk": 3, |
|||
"fields": { |
|||
"descricao": "Primeiro-Secretário", |
|||
"unico": true |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.CargoMesa", |
|||
"pk": 4, |
|||
"fields": { |
|||
"descricao": "Segundo-Secretário", |
|||
"unico": true |
|||
} |
|||
} |
|||
] |
|||
|
|||
|
|||
|
@ -0,0 +1,282 @@ |
|||
[ |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 1, |
|||
"fields": { |
|||
"sigla": "PMDB", |
|||
"nome": "PARTIDO DO MOVIMENTO DEMOCRÁTICO BRASILEIRO" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 2, |
|||
"fields": { |
|||
"sigla": "PTB", |
|||
"nome": "PARTIDO TRABALHISTA BRASILEIRO" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 3, |
|||
"fields": { |
|||
"sigla": "PDT", |
|||
"nome": "PARTIDO DEMOCRÁTICO TRABALHISTA" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 4, |
|||
"fields": { |
|||
"sigla": "PT", |
|||
"nome": "PARTIDO DOS TRABALHADORES" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 5, |
|||
"fields": { |
|||
"sigla": "DEM", |
|||
"nome": "DEMOCRATAS" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 6, |
|||
"fields": { |
|||
"sigla": "PCdoB", |
|||
"nome": "PARTIDO COMUNISTA DO BRASIL" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 7, |
|||
"fields": { |
|||
"sigla": "PSB", |
|||
"nome": "PARTIDO SOCIALISTA BRASILEIRO" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 8, |
|||
"fields": { |
|||
"sigla": "PSDB", |
|||
"nome": "PARTIDO DA SOCIAL DEMOCRACIA BRASILEIRA" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 9, |
|||
"fields": { |
|||
"sigla": "PTC", |
|||
"nome": "PARTIDO TRABALHISTA CRISTÃO" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 10, |
|||
"fields": { |
|||
"sigla": "PSC", |
|||
"nome": "PARTIDO SOCIAL CRISTÃO" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 11, |
|||
"fields": { |
|||
"sigla": "PMN", |
|||
"nome": "PARTIDO DA MOBILIZAÇÃO NACIONAL" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 12, |
|||
"fields": { |
|||
"sigla": "PRP", |
|||
"nome": "PARTIDO REPUBLICANO PROGRESSISTA" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 13, |
|||
"fields": { |
|||
"sigla": "PPS", |
|||
"nome": "PARTIDO POPULAR SOCIALISTA" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 14, |
|||
"fields": { |
|||
"sigla": "PV", |
|||
"nome": "PARTIDO VERDE" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 15, |
|||
"fields": { |
|||
"sigla": "PTdoB", |
|||
"nome": "PARTIDO TRABALHISTA DO BRASIL" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 16, |
|||
"fields": { |
|||
"sigla": "PP", |
|||
"nome": "PARTIDO PROGRESSISTA" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 17, |
|||
"fields": { |
|||
"sigla": "PSTU", |
|||
"nome": "PARTIDO SOCIALISTA DOS TRABALHADORES UNIFICADO" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 18, |
|||
"fields": { |
|||
"sigla": "PCB", |
|||
"nome": "PARTIDO COMUNISTA BRASILEIRO" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 19, |
|||
"fields": { |
|||
"sigla": "PRTB", |
|||
"nome": "PARTIDO RENOVADOR TRABALHISTA BRASILEIRO" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 20, |
|||
"fields": { |
|||
"sigla": "PHS", |
|||
"nome": "PARTIDO HUMANISTA DA SOLIDARIEDADE" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 21, |
|||
"fields": { |
|||
"sigla": "PSDC", |
|||
"nome": "PARTIDO SOCIAL DEMOCRATA CRISTÃO" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 22, |
|||
"fields": { |
|||
"sigla": "PCO", |
|||
"nome": "PARTIDO DA CAUSA OPERÁRIA" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 23, |
|||
"fields": { |
|||
"sigla": "PODE", |
|||
"nome": "PODEMOS" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 24, |
|||
"fields": { |
|||
"sigla": "PSL", |
|||
"nome": "PARTIDO SOCIAL LIBERAL" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 25, |
|||
"fields": { |
|||
"sigla": "PRB", |
|||
"nome": "PARTIDO REPUBLICANO BRASILEIRO" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 26, |
|||
"fields": { |
|||
"sigla": "PSOL", |
|||
"nome": "PARTIDO SOCIALISMO E LIBERDADE" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 27, |
|||
"fields": { |
|||
"sigla": "PR", |
|||
"nome": "PARTIDO DA REPÚBLICA" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 28, |
|||
"fields": { |
|||
"sigla": "PSD", |
|||
"nome": "PARTIDO SOCIAL DEMOCRÁTICO" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 29, |
|||
"fields": { |
|||
"sigla": "PPL", |
|||
"nome": "PARTIDO PÁTRIA LIVRE" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 30, |
|||
"fields": { |
|||
"sigla": "PEN", |
|||
"nome": "PARTIDO ECOLÓGICO NACIONAL" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 31, |
|||
"fields": { |
|||
"sigla": "PROS", |
|||
"nome": "PARTIDO REPUBLICANO DA ORDEM SOCIAL" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 32, |
|||
"fields": { |
|||
"sigla": "SD", |
|||
"nome": "SOLIDARIEDADE" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 33, |
|||
"fields": { |
|||
"sigla": "NOVO", |
|||
"nome": "PARTIDO NOVO" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 34, |
|||
"fields": { |
|||
"sigla": "REDE", |
|||
"nome": "REDE SUSTENTABILIDADE" |
|||
} |
|||
}, |
|||
{ |
|||
"model": "parlamentares.Partido", |
|||
"pk": 35, |
|||
"fields": { |
|||
"sigla": "PMB", |
|||
"nome": "PARTIDO DA MULHER BRASILEIRA" |
|||
} |
|||
} |
|||
] |
@ -0,0 +1,19 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.11 on 2017-08-14 16:15 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('parlamentares', '0004_auto_20170711_1305'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='frente', |
|||
options={'verbose_name': 'Frente Parlamentar', 'verbose_name_plural': 'Frentes Parlamentares'}, |
|||
), |
|||
] |
@ -0,0 +1,19 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2017-08-31 14:00 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('parlamentares', '0005_auto_20170814_1615'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='votante', |
|||
options={'permissions': (('can_vote', 'Can Vote'),), 'verbose_name': 'Usuário Votante', 'verbose_name_plural': 'Usuários Votantes'}, |
|||
), |
|||
] |
@ -0,0 +1,40 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from __future__ import unicode_literals |
|||
from django.db import migrations |
|||
import json |
|||
import os |
|||
|
|||
|
|||
from django.core.management import call_command |
|||
|
|||
|
|||
|
|||
def gera_partidos_tse(apps, schema_editor): |
|||
Partido = apps.get_model("parlamentares", "Partido") |
|||
db_alias = schema_editor.connection.alias |
|||
partidos = Partido.objects.all().exists() |
|||
|
|||
if partidos: |
|||
# Caso haja algum partido cadastrado na base de dados, |
|||
# a migração não deve ser carregada para evitar duplicações de dados. |
|||
print("Carga de Partido não efetuada. Já Existem partidos cadastrados...") |
|||
else: |
|||
fixture_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../fixtures')) |
|||
# pega partidos listados em fixtures/pre_popula_partidos.json |
|||
fixture_filename = 'pre_popula_partidos.json' |
|||
fixture_file = os.path.join(fixture_dir, fixture_filename) |
|||
call_command('loaddata', fixture_file) |
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
# A dependencia real desse script é o arquivo 0001_initial.py, mas |
|||
# isso gera um erro (Conflicting migrations detected; multiple leaf |
|||
# nodes in the migration graph). para não ocasionar problemas de migração, |
|||
# vamos manter a ordem padrão do django. |
|||
('parlamentares', '0006_auto_20170831_1400'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.RunPython(gera_partidos_tse), |
|||
] |
@ -0,0 +1,41 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from __future__ import unicode_literals |
|||
from django.db import migrations |
|||
import json |
|||
import os |
|||
|
|||
|
|||
from django.core.management import call_command |
|||
|
|||
|
|||
|
|||
def gera_cargos_mesa(apps, schema_editor): |
|||
CargoMesa = apps.get_model("parlamentares", "CargoMesa") |
|||
db_alias = schema_editor.connection.alias |
|||
cargos_mesa = CargoMesa.objects.all().exists() |
|||
|
|||
if cargos_mesa: |
|||
# Caso haja algum CargoMesa cadastrado na base de dados, |
|||
# a migração não deve ser carregada para evitar duplicações de dados. |
|||
print("Carga de {} não efetuada. Já Existem {} cadastrados...".format( |
|||
CargoMesa._meta.verbose_name, CargoMesa._meta.verbose_name_plural)) |
|||
else: |
|||
fixture_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../fixtures')) |
|||
# pega partidos listados em fixtures/pre_popula_partidos.json |
|||
fixture_filename = 'pre_popula_cargosmesa.json' |
|||
fixture_file = os.path.join(fixture_dir, fixture_filename) |
|||
call_command('loaddata', fixture_file) |
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
# A dependencia real desse script é o arquivo 0001_initial.py, mas |
|||
# isso gera um erro (Conflicting migrations detected; multiple leaf |
|||
# nodes in the migration graph). para não ocasionar problemas de migração, |
|||
# vamos manter a ordem padrão do django. |
|||
('parlamentares', '0007_adiciona_partidos'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.RunPython(gera_cargos_mesa), |
|||
] |
@ -0,0 +1,27 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2017-09-05 16:17 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('parlamentares', '0008_adiciona_cargos_mesa'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='situacaomilitar', |
|||
options={'ordering': ['descricao'], 'verbose_name': 'Tipo Situação Militar', 'verbose_name_plural': 'Tipos Situações Militares'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='tipoafastamento', |
|||
options={'ordering': ['descricao'], 'verbose_name': 'Tipo de Afastamento', 'verbose_name_plural': 'Tipos de Afastamento'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='tipodependente', |
|||
options={'ordering': ['descricao'], 'verbose_name': 'Tipo de Dependente', 'verbose_name_plural': 'Tipos de Dependente'}, |
|||
), |
|||
] |
@ -0,0 +1,25 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.11 on 2017-08-10 10:33 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('sessao', '0009_auto_20170619_1441'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AddField( |
|||
model_name='registrovotacao', |
|||
name='data_hora_atualizacao', |
|||
field=models.DateTimeField(auto_now=True, null=True, verbose_name='Data'), |
|||
), |
|||
migrations.AddField( |
|||
model_name='registrovotacao', |
|||
name='data_hora_criacao', |
|||
field=models.DateTimeField(auto_now_add=True, null=True, verbose_name='Data Criação'), |
|||
), |
|||
] |
@ -0,0 +1,25 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2017-08-14 18:04 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('sessao', '0009_auto_20170619_1441'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AddField( |
|||
model_name='tiporesultadovotacao', |
|||
name='natureza', |
|||
field=models.CharField(choices=[('A', 'Aprovado'), ('R', 'Rejeitado')], max_length=100, null=True, verbose_name='Natureza do Tipo'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='tiporesultadovotacao', |
|||
name='nome', |
|||
field=models.CharField(max_length=100, verbose_name='Nome do Tipo'), |
|||
), |
|||
] |
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue