mirror of https://github.com/interlegis/sapl.git
Marcio Mazza
6 years ago
96 changed files with 3195 additions and 822 deletions
@ -0,0 +1,20 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-15 13:50 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('base', '0032_merge_20190219_0941'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='appconfig', |
||||
|
name='sequencia_numeracao', |
||||
|
field=models.CharField(choices=[('A', 'Sequencial por ano para cada autor'), ('B', 'Sequencial por ano indepententemente do autor'), ('L', 'Sequencial por legislatura'), ('U', 'Sequencial único')], default='A', max_length=1, verbose_name='Sequência de numeração'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,29 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-17 12:41 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('base', '0033_auto_20190415_1050'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.RemoveField( |
||||
|
model_name='appconfig', |
||||
|
name='sequencia_numeracao', |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='appconfig', |
||||
|
name='sequencia_numeracao_proposicao', |
||||
|
field=models.CharField(choices=[('A', 'Sequencial por ano para cada autor'), ('B', 'Sequencial por ano indepententemente do autor'), ('L', 'Sequencial por legislatura'), ('U', 'Sequencial único')], default='A', max_length=1, verbose_name='Sequência de numeração de proposições'), |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='appconfig', |
||||
|
name='sequencia_numeracao_protocolo', |
||||
|
field=models.CharField(choices=[('A', 'Sequencial por ano para cada autor'), ('L', 'Sequencial por legislatura'), ('U', 'Sequencial único')], default='A', max_length=1, verbose_name='Sequência de numeração de protocolos'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,20 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-17 13:09 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('base', '0034_auto_20190417_0941'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='appconfig', |
||||
|
name='sequencia_numeracao_proposicao', |
||||
|
field=models.CharField(choices=[('A', 'Sequencial por ano para cada autor'), ('B', 'Sequencial por ano indepententemente do autor')], default='A', max_length=1, verbose_name='Sequência de numeração de proposições'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,20 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-17 17:32 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('base', '0035_auto_20190417_1009'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='appconfig', |
||||
|
name='sequencia_numeracao_protocolo', |
||||
|
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 de protocolos'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,27 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.9.13 on 2018-03-19 13:41 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
import django.db.models.deletion |
||||
|
|
||||
|
|
||||
|
def adjust_bug_auto_inserido(apps, schema_editor): |
||||
|
Dispositivo = apps.get_model('compilacao', 'Dispositivo') |
||||
|
|
||||
|
Dispositivo.objects.filter( |
||||
|
tipo_dispositivo__class_css__startswith='caput', |
||||
|
dispositivo_pai__tipo_dispositivo__class_css__startswith='artigo', |
||||
|
auto_inserido=False |
||||
|
).update(auto_inserido=True) |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('compilacao', '0011_tipotextoarticulado_rodape_global'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.RunPython(adjust_bug_auto_inserido), |
||||
|
] |
@ -0,0 +1,20 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-15 13:50 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('materia', '0044_auto_20190327_1409'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='tipomaterialegislativa', |
||||
|
name='sequencia_numeracao', |
||||
|
field=models.CharField(blank=True, choices=[('A', 'Sequencial por ano para cada autor'), ('B', 'Sequencial por ano indepententemente do autor'), ('L', 'Sequencial por legislatura'), ('U', 'Sequencial único')], max_length=1, verbose_name='Sequência de numeração'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,20 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-17 12:41 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('materia', '0045_auto_20190415_1050'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='tipomaterialegislativa', |
||||
|
name='sequencia_numeracao', |
||||
|
field=models.CharField(blank=True, choices=[('A', 'Sequencial por ano para cada autor'), ('L', 'Sequencial por legislatura'), ('U', 'Sequencial único')], max_length=1, verbose_name='Sequência de numeração'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,28 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-17 15:12 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.conf import settings |
||||
|
from django.db import migrations, models |
||||
|
import django.db.models.deletion |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||
|
('materia', '0045_auto_20190415_1050'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AddField( |
||||
|
model_name='tramitacao', |
||||
|
name='ip', |
||||
|
field=models.CharField(blank=True, default='', max_length=30, verbose_name='IP'), |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='tramitacao', |
||||
|
name='user', |
||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='Usuário'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,20 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-17 17:32 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('materia', '0046_auto_20190417_0941'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='tipomaterialegislativa', |
||||
|
name='sequencia_numeracao', |
||||
|
field=models.CharField(blank=True, choices=[('A', 'Sequencial por ano'), ('L', 'Sequencial por legislatura'), ('U', 'Sequencial único')], max_length=1, verbose_name='Sequência de numeração'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,16 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-26 11:28 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('materia', '0046_auto_20190417_1212'), |
||||
|
('materia', '0047_auto_20190417_1432'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
] |
@ -0,0 +1,19 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-25 12:17 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('norma', '0023_auto_20190219_1535'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterModelOptions( |
||||
|
name='normarelacionada', |
||||
|
options={'ordering': ('norma_principal__data', 'norma_relacionada__data'), 'verbose_name': 'Norma Relacionada', 'verbose_name_plural': 'Normas Relacionadas'}, |
||||
|
), |
||||
|
] |
@ -0,0 +1,37 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-30 11:28 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('parlamentares', '0025_auto_20180924_1724'), |
||||
|
('sessao', '0039_auto_20190430_0825') |
||||
|
] |
||||
|
|
||||
|
state_operations = [ |
||||
|
migrations.CreateModel( |
||||
|
name='Bloco', |
||||
|
fields=[ |
||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
|
('nome', models.CharField(max_length=80, verbose_name='Nome do Bloco')), |
||||
|
('data_criacao', models.DateField(null=True, verbose_name='Data Criação')), |
||||
|
('data_extincao', models.DateField(blank=True, null=True, verbose_name='Data Dissolução')), |
||||
|
('descricao', models.TextField(blank=True, verbose_name='Descrição')), |
||||
|
('partidos', models.ManyToManyField(blank=True, to='parlamentares.Partido', verbose_name='Partidos')), |
||||
|
], |
||||
|
options={ |
||||
|
'db_table': 'parlamentares_bloco', |
||||
|
'verbose_name': 'Bloco Parlamentar', |
||||
|
'verbose_name_plural': 'Blocos Parlamentares', |
||||
|
}, |
||||
|
bases=(models.Model,), |
||||
|
), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.SeparateDatabaseAndState(state_operations=state_operations) |
||||
|
] |
@ -0,0 +1,19 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-30 11:39 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('parlamentares', '0026_bloco'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterModelTable( |
||||
|
name='bloco', |
||||
|
table=None, |
||||
|
), |
||||
|
] |
@ -0,0 +1,35 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-03-14 18:32 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
import django.db.models.deletion |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('protocoloadm', '0017_merge_20190121_1552'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.CreateModel( |
||||
|
name='Anexado', |
||||
|
fields=[ |
||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
|
('data_anexacao', models.DateField(verbose_name='Data Anexação')), |
||||
|
('data_desanexacao', models.DateField(blank=True, null=True, verbose_name='Data Desanexação')), |
||||
|
('documento_anexado', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='documento_anexado_set', to='protocoloadm.DocumentoAdministrativo', verbose_name='Documento Anexado')), |
||||
|
('documento_principal', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='documento_principal_set', to='protocoloadm.DocumentoAdministrativo', verbose_name='Documento Principal')), |
||||
|
], |
||||
|
options={ |
||||
|
'verbose_name': 'Anexado', |
||||
|
'verbose_name_plural': 'Anexados', |
||||
|
}, |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='documentoadministrativo', |
||||
|
name='anexados', |
||||
|
field=models.ManyToManyField(blank=True, related_name='anexo_de', through='protocoloadm.Anexado', to='protocoloadm.DocumentoAdministrativo'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,28 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-26 11:33 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.conf import settings |
||||
|
from django.db import migrations, models |
||||
|
import django.db.models.deletion |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||
|
('protocoloadm', '0018_auto_20190314_1532'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AddField( |
||||
|
model_name='tramitacaoadministrativo', |
||||
|
name='ip', |
||||
|
field=models.CharField(blank=True, default='', max_length=30, verbose_name='IP'), |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='tramitacaoadministrativo', |
||||
|
name='user', |
||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='Usuário'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,25 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-29 11:28 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('protocoloadm', '0018_auto_20190314_1532'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AddField( |
||||
|
model_name='tramitacaoadministrativo', |
||||
|
name='urgente', |
||||
|
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Urgente ?'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='tramitacaoadministrativo', |
||||
|
name='texto', |
||||
|
field=models.TextField(verbose_name='Texto da Ação'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,21 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-29 12:15 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
import django.utils.timezone |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('protocoloadm', '0019_auto_20190429_0828'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AddField( |
||||
|
model_name='tramitacaoadministrativo', |
||||
|
name='timestamp', |
||||
|
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
|
), |
||||
|
] |
@ -0,0 +1,16 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-29 18:31 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('protocoloadm', '0020_tramitacaoadministrativo_timestamp'), |
||||
|
('protocoloadm', '0019_auto_20190426_0833'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
] |
@ -0,0 +1,21 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-12 14:06 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
import django.db.models.deletion |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('sessao', '0035_resumoordenacao_decimo_quarto'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='expedientesessao', |
||||
|
name='sessao_plenaria', |
||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='expedientesessao_set', to='sessao.SessaoPlenaria'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,33 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-15 16:24 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.conf import settings |
||||
|
from django.db import migrations, models |
||||
|
import django.db.models.deletion |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||
|
('sessao', '0036_auto_20190412_1106'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AddField( |
||||
|
model_name='registrovotacao', |
||||
|
name='data_hora', |
||||
|
field=models.DateTimeField(auto_now_add=True, null=True, verbose_name='Data/Hora'), |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='registrovotacao', |
||||
|
name='ip', |
||||
|
field=models.CharField(blank=True, default='', max_length=30, verbose_name='IP'), |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='registrovotacao', |
||||
|
name='user', |
||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), |
||||
|
), |
||||
|
] |
@ -0,0 +1,85 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-15 19:35 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('sessao', '0036_auto_20190412_1106'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='resumoordenacao', |
||||
|
name='decimo', |
||||
|
field=models.CharField(default='mat_o_d', max_length=50), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='resumoordenacao', |
||||
|
name='decimo_primeiro', |
||||
|
field=models.CharField(default='v_n_mat_o_d', max_length=50), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='resumoordenacao', |
||||
|
name='decimo_quarto', |
||||
|
field=models.CharField(default='ocorr_sessao', max_length=50), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='resumoordenacao', |
||||
|
name='decimo_segundo', |
||||
|
field=models.CharField(default='oradores_o_d', max_length=50), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='resumoordenacao', |
||||
|
name='decimo_terceiro', |
||||
|
field=models.CharField(default='oradores_expli', max_length=50), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='resumoordenacao', |
||||
|
name='nono', |
||||
|
field=models.CharField(default='lista_p_o_d', max_length=50), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='resumoordenacao', |
||||
|
name='oitavo', |
||||
|
field=models.CharField(default='oradores_exped', max_length=50), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='resumoordenacao', |
||||
|
name='primeiro', |
||||
|
field=models.CharField(default='id_basica', max_length=50), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='resumoordenacao', |
||||
|
name='quarto', |
||||
|
field=models.CharField(default='lista_p', max_length=50), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='resumoordenacao', |
||||
|
name='quinto', |
||||
|
field=models.CharField(default='exp', max_length=50), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='resumoordenacao', |
||||
|
name='segundo', |
||||
|
field=models.CharField(default='cont_mult', max_length=50), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='resumoordenacao', |
||||
|
name='setimo', |
||||
|
field=models.CharField(default='v_n_mat_exp', max_length=50), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='resumoordenacao', |
||||
|
name='sexto', |
||||
|
field=models.CharField(default='mat_exp', max_length=50), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='resumoordenacao', |
||||
|
name='terceiro', |
||||
|
field=models.CharField(default='mesa_d', max_length=50), |
||||
|
), |
||||
|
] |
@ -0,0 +1,16 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-15 21:00 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('sessao', '0037_auto_20190415_1635'), |
||||
|
('sessao', '0037_auto_20190415_1324'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
] |
@ -0,0 +1,22 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.20 on 2019-04-30 11:25 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('sessao', '0038_merge_20190415_1800'), |
||||
|
] |
||||
|
|
||||
|
database_operations = [migrations.AlterModelTable('Bloco', 'parlamentares_bloco')] |
||||
|
|
||||
|
state_operations = [migrations.DeleteModel('Bloco')] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.SeparateDatabaseAndState( |
||||
|
database_operations=database_operations, |
||||
|
state_operations=state_operations) |
||||
|
] |
@ -0,0 +1,38 @@ |
|||||
|
{% extends "crud/detail.html" %} |
||||
|
{% load i18n %} |
||||
|
|
||||
|
{% block detail_content %} |
||||
|
{{ block.super }} |
||||
|
{% if user.is_superuser %} |
||||
|
<div class="row"> |
||||
|
{% if tramitacao.user %} |
||||
|
<div class="col-sm-6"> |
||||
|
<div id="div_id_user" class="form-group"> |
||||
|
<p class="control-label">Usuário</p> |
||||
|
<div class="controls"> |
||||
|
<div class="form-control-static"> |
||||
|
<div class="dont-break-out"> |
||||
|
<a href="{% url 'sapl.base:user_edit' user.pk %}">{{tramitacao.user}}</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
{% endif %} |
||||
|
{% if tramitacao.ip %} |
||||
|
<div class="col-sm-6"> |
||||
|
<div id="div_ip_user" class="form-group"> |
||||
|
<p class="control-label">IP</p> |
||||
|
<div class="controls"> |
||||
|
<div class="form-control-static"> |
||||
|
<div class="dont-break-out"> |
||||
|
{{tramitacao.ip}} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
{% endif %} |
||||
|
</div> |
||||
|
{% endif %} |
||||
|
{% endblock detail_content %} |
@ -0,0 +1,13 @@ |
|||||
|
{% extends "crud/list.html" %} |
||||
|
{% load i18n %} |
||||
|
{% load common_tags %} |
||||
|
|
||||
|
{% block more_buttons %} |
||||
|
|
||||
|
{% if perms|get_add_perm:view %} |
||||
|
<a href="{% url 'sapl.protocoloadm:anexado_em_lote' root_pk %}" class="btn btn-outline-primary"> |
||||
|
{% trans "Adicionar Anexado em Lote" %} |
||||
|
</a> |
||||
|
{% endif %} |
||||
|
|
||||
|
{% endblock more_buttons %} |
@ -1,22 +1,22 @@ |
|||||
{% load common_tags %} |
{% load common_tags %} |
||||
|
|
||||
<fieldset> |
<fieldset> |
||||
<p align="justify"> |
<p align="justify"> |
||||
{% if presenca_sessao %} |
{% if presenca_sessao %} |
||||
<strong>Lista de Presença na Sessão: </strong> |
<strong>Lista de Presença na Sessão: </strong> |
||||
{% for p in presenca_sessao %} |
{% for p in presenca_sessao %} |
||||
{{p.nome_completo}} / {{ p|filiacao_data_filter:object.data_inicio }} |
{{p.nome_completo}} / {% if p|filiacao_data_filter:object.data_inicio %} {{ p|filiacao_data_filter:object.data_inicio }} {% else %} Sem partido {% endif %} |
||||
{% if not forloop.last %} ; {% endif %} |
{% if not forloop.last %} ; {% endif %} |
||||
{% endfor %} |
{% endfor %} |
||||
{% endif %} |
{% endif %} |
||||
</p> |
</p> |
||||
<p align="justify"> |
<p align="justify"> |
||||
{% if justificativa_ausencia %} |
{% if justificativa_ausencia %} |
||||
<strong>Justificativas de Ausências na Sessão: </strong> |
<strong>Justificativas de Ausências na Sessão: </strong> |
||||
{% for j in justificativa_ausencia %} |
{% for j in justificativa_ausencia %} |
||||
{{j.parlamentar.nome_completo}} / {{ j.tipo_ausencia }} |
{{j.parlamentar.nome_completo}} / {{ j.tipo_ausencia }} |
||||
{% if not forloop.last %} ; {% endif %} |
{% if not forloop.last %} ; {% endif %} |
||||
{% endfor %} |
{% endfor %} |
||||
{% endif %} |
{% endif %} |
||||
</p> |
</p> |
||||
</fieldset> |
</fieldset> |
||||
|
@ -1,33 +1,36 @@ |
|||||
<fieldset> |
<fieldset> |
||||
<p align="justify"> |
<p align="justify"> |
||||
<strong>Matérias da Ordem do Dia: </strong> |
{% if materias_ordem %} |
||||
{% for m in materias_ordem %} |
<strong>Matérias da Ordem do Dia: </strong> |
||||
<b>{{m.numero}} - {{m.titulo}}</b>, |
{% for m in materias_ordem %} |
||||
{{m.ementa|safe}} |
<b>{{m.numero}} - {{m.titulo}}</b>, |
||||
Autor{{ m.autor|length|pluralize:"es" }}: {{ m.autor|join:', ' }}, |
{{m.ementa|safe}} |
||||
{% if m.numero_protocolo %} |
Autor{{ m.autor|length|pluralize:"es" }}: {{ m.autor|join:', ' }}, |
||||
Número de Protocolo: {{ m.numero_protocolo }}, |
{% if m.numero_protocolo %} |
||||
{% endif %} |
Número de Protocolo: {{ m.numero_protocolo }}, |
||||
{% if m.numero_processo %} |
{% endif %} |
||||
Processo: {{ m.numero_processo }}, |
{% if m.numero_processo %} |
||||
{% endif %} |
Processo: {{ m.numero_processo }}, |
||||
{%if m.turno %} |
{% endif %} |
||||
Turno: {{m.turno}}, |
{% if m.turno %} |
||||
{%endif %} |
Turno: {{m.turno}}, |
||||
{%if m.tipo_votacao %} |
{% endif %} |
||||
Tipo: {{m.tipo_votacao}}, |
{% if m.tipo_votacao %} |
||||
Sim: {{ m.voto_sim }}, |
Tipo: {{m.tipo_votacao}}, |
||||
Não: {{ m.voto_nao }}, |
Sim: {{ m.voto_sim }}, |
||||
Abstenções: {{m.voto_abstencoes}}, |
Não: {{ m.voto_nao }}, |
||||
{% endif %} |
Abstenções: {{m.voto_abstencoes}}, |
||||
Resultado:</b> {{m.resultado}} |
{% endif %} |
||||
{% if m.resultado_observacao %} - {{m.resultado_observacao}} {% endif %} |
Resultado:</b> {{m.resultado}} |
||||
{% if m.voto_nominal%} |
{% if m.resultado_observacao %} - {{m.resultado_observacao}} {% endif %} |
||||
<b>Votos Nominais :</b> |
{% if m.voto_nominal%} |
||||
{% for voto in m.voto_nominal %} |
<b>Votos Nominais :</b> |
||||
{{voto.0}} - {{voto.1}} |
{% for voto in m.voto_nominal %} |
||||
{% if not forloop.last %} ; {% endif %} |
{{voto.0}} - {{voto.1}} |
||||
|
{% if not forloop.last %} ; {% endif %} |
||||
|
{% endfor %} |
||||
|
{% endif %} |
||||
{% endfor %} |
{% endfor %} |
||||
{% endif %} |
{% endif %} |
||||
{% endfor %} |
</p> |
||||
</fieldset> |
</fieldset> |
@ -1,13 +1,14 @@ |
|||||
|
{% load common_tags %} |
||||
|
|
||||
<fieldset> |
<fieldset> |
||||
<p align="justify"> |
<p align="justify"> |
||||
{% if mesa %} |
{% if mesa %} |
||||
<strong>Mesa Diretora: </strong> |
<strong>Mesa Diretora: </strong> |
||||
{% for m in mesa %} |
{% for m in mesa %} |
||||
{{m.cargo}}: |
{{m.cargo}}: |
||||
{{m.parlamentar.nome_completo}} / {{ m.parlamentar.filiacao_atual }} |
{{m.parlamentar.nome_completo}} / {% if m.parlamentar|filiacao_data_filter:object.data_inicio %} {{ m.parlamentar|filiacao_data_filter:object.data_inicio }} {% else %} Sem partido {% endif %} |
||||
{% if not forloop.last %} ; {% endif %} |
{% if not forloop.last %} ; {% endif %} |
||||
{% endfor %} |
{% endfor %} |
||||
{% endif %} |
{% endif %} |
||||
</p> |
</p> |
||||
|
</fieldset> |
||||
</fieldset> |
|
||||
|
@ -1,8 +1,8 @@ |
|||||
<fieldset> |
<fieldset> |
||||
<p align="justify"> |
<p align="justify"> |
||||
{% if object.ocorrenciasessao.conteudo %} |
{% if object.ocorrenciasessao.conteudo %} |
||||
<strong>Ocorrências da Sessão: </strong> |
<strong>Ocorrências da Sessão: </strong> |
||||
{{object.ocorrenciasessao.conteudo|striptags|safe}} |
{{object.ocorrenciasessao.conteudo|striptags|safe}} |
||||
{% endif %} |
{% endif %} |
||||
</p> |
</p> |
||||
</fieldset> |
</fieldset> |
||||
|
@ -1,13 +1,14 @@ |
|||||
|
{% load common_tags %} |
||||
|
|
||||
<fieldset> |
<fieldset> |
||||
<p align="justify"> |
<p align="justify"> |
||||
{% if oradores %} |
{% if oradores %} |
||||
<strong>Oradores do Expediente: </strong> |
<strong>Oradores do Expediente: </strong> |
||||
{% for o in oradores %} |
{% for o in oradores %} |
||||
<b>{{o.numero_ordem}}</b> - {{o.parlamentar.nome_completo}} / {{ o.parlamentar.filiacao_atual }} |
<b>{{o.numero_ordem}}</b> - {{o.parlamentar.nome_completo}} / {% if o.parlamentar|filiacao_data_filter:object.data_inicio %} {{ o.parlamentar|filiacao_data_filter:object.data_inicio }} {% else %} Sem partido {% endif %} |
||||
{% if o.observacao %} - {{o.observacao}} {% endif %} |
{% if o.observacao %} - {{o.observacao}} {% endif %} |
||||
{% if not forloop.last %} ; {% endif %} |
{% if not forloop.last %} ; {% endif %} |
||||
{% endfor %} |
{% endfor %} |
||||
{% endif %} |
{% endif %} |
||||
</p> |
</p> |
||||
</div> |
|
||||
</fieldset> |
</fieldset> |
||||
|
@ -1,9 +1,11 @@ |
|||||
|
{% load common_tags %} |
||||
|
|
||||
<fieldset> |
<fieldset> |
||||
<legend>Mesa Diretora</legend> |
<legend>Mesa Diretora</legend> |
||||
<div class="row"> |
<div class="row"> |
||||
{% for m in mesa %} |
{% for m in mesa %} |
||||
<div class="col-md-12"><b>{{m.cargo}}: |
<div class="col-md-12"><b>{{m.cargo}}: |
||||
</b>{{m.parlamentar.nome_parlamentar}} / {% if m.parlamentar.filiacao_atual %} {{ m.parlamentar.filiacao_atual }} {% else %} Sem partido {% endif %} |
</b>{{m.parlamentar.nome_parlamentar}} / {% if m.parlamentar|filiacao_data_filter:object.data_inicio %} {{ m.parlamentar|filiacao_data_filter:object.data_inicio }} {% else %} Sem partido {% endif %} |
||||
</div> |
</div> |
||||
{% endfor %} |
{% endfor %} |
||||
</div> |
</div> |
||||
|
@ -0,0 +1,27 @@ |
|||||
|
import requests |
||||
|
|
||||
|
branch_master = requests.get('https://api.github.com/repos/interlegis/sapl/commits?per_page=100&sha=master') |
||||
|
branch_master = branch_master.json() |
||||
|
|
||||
|
commits_master = [e['commit']['message'] for e in branch_master] |
||||
|
|
||||
|
branch_3_1_x = requests.get('https://api.github.com/repos/interlegis/sapl/commits?per_page=70&sha=3.1.x') |
||||
|
branch_3_1_x = branch_3_1_x.json() |
||||
|
|
||||
|
commits_3_1_x = [(e['commit']['message'], {'sha':e['sha'], 'data':e['commit']['author']['date']}) for e in branch_3_1_x] |
||||
|
|
||||
|
print("\nCommits que estão em 3.1.x, mas não em master:\n") |
||||
|
|
||||
|
# retira os \r para evitar bugs |
||||
|
commits_master = [commit.replace('\r', '') for commit in commits_master] |
||||
|
|
||||
|
for c, s in commits_3_1_x: |
||||
|
# retira os \r para evitar bugs |
||||
|
c = c.replace('\r', '') |
||||
|
if c not in commits_master: |
||||
|
print('---------------------------------------------------------------------') |
||||
|
print('Data: ' + s['data'][:10]) |
||||
|
print(s['sha'][:7] + '-> ' + c) |
||||
|
|
||||
|
print('---------------------------------------------------------------------') |
||||
|
|
@ -0,0 +1,105 @@ |
|||||
|
from django.db.models import Count |
||||
|
|
||||
|
from sapl.base.models import Autor |
||||
|
from sapl.comissoes.models import Participacao |
||||
|
from sapl.materia.models import Relatoria, UnidadeTramitacao, Autoria, Proposicao |
||||
|
from sapl.norma.models import AutoriaNorma |
||||
|
from sapl.parlamentares.models import Parlamentar, ComposicaoMesa, Dependente, Filiacao, Mandato, Frente, Votante |
||||
|
from sapl.protocoloadm.models import Protocolo, DocumentoAdministrativo |
||||
|
from sapl.sessao.models import IntegranteMesa, JustificativaAusencia, OradorExpediente, PresencaOrdemDia, \ |
||||
|
RetiradaPauta, SessaoPlenariaPresenca, VotoParlamentar, OradorOrdemDia |
||||
|
|
||||
|
|
||||
|
models = [ComposicaoMesa, Dependente, Filiacao, IntegranteMesa, JustificativaAusencia, Mandato, OradorOrdemDia, |
||||
|
OradorExpediente, Participacao, PresencaOrdemDia, Relatoria, RetiradaPauta, SessaoPlenariaPresenca, |
||||
|
UnidadeTramitacao, VotoParlamentar, Votante] |
||||
|
|
||||
|
# Tratar FRENTE pois ela é 1-to-many (campo parlamentares) com Parlamentar |
||||
|
|
||||
|
models_autor = [AutoriaNorma, Autoria, Proposicao, Protocolo, DocumentoAdministrativo] |
||||
|
|
||||
|
## Verificar se TipoAutor é sempre 1 para parlamentar e ContentType é sempre 26 para parlamentar. |
||||
|
TIPO_PARLAMENTAR = 1 |
||||
|
CONTENT_TYPE_PARLAMENTAR = 26 |
||||
|
|
||||
|
|
||||
|
def recupera_parlamentares(): |
||||
|
return [[parlamentar for parlamentar in Parlamentar.objects.filter(nome_parlamentar=nome_parlamentar).order_by('id')] |
||||
|
for nome_parlamentar in Parlamentar.objects.values_list('nome_parlamentar', flat=True) |
||||
|
.annotate(qntd=Count('nome_parlamentar')).filter(qntd__gt=1)] |
||||
|
|
||||
|
|
||||
|
def deduplica_parlamentares(parlamentares): |
||||
|
for parlamentar in parlamentares: |
||||
|
parlamentar_principal = parlamentar[0] |
||||
|
print('Corrigindo parlamentar {}'.format(parlamentar_principal)) |
||||
|
for clone in parlamentar[1:]: |
||||
|
if parlamentar_principal.biografia and clone.biografia: |
||||
|
parlamentar_principal.biografia += f'\n\n------------------------\n\n{clone.biografia}' |
||||
|
parlamentar_principal.save() |
||||
|
elif clone.biografia: |
||||
|
parlamentar_principal.biografia = clone.biografia |
||||
|
|
||||
|
autor_principal = Autor.objects.filter(tipo_id=TIPO_PARLAMENTAR, |
||||
|
content_type_id=CONTENT_TYPE_PARLAMENTAR, |
||||
|
object_id=parlamentar_principal.id) |
||||
|
|
||||
|
for a in Autor.objects.filter(tipo_id=TIPO_PARLAMENTAR, content_type_id=CONTENT_TYPE_PARLAMENTAR, object_id=clone.id): |
||||
|
print(a) |
||||
|
if not autor_principal: |
||||
|
print('Ajustando autor de %s' % parlamentar) |
||||
|
a.object_id = parlamentar_principal.id |
||||
|
a.save() |
||||
|
else: |
||||
|
print('Movendo referencias de autor') |
||||
|
for ma in models_autor: |
||||
|
for ra in ma.objects.filter(autor=a): |
||||
|
ra.autor = autor_principal[0] |
||||
|
ra.save() |
||||
|
a.delete() |
||||
|
|
||||
|
# Muda apontamento de models que referenciam parlamentar |
||||
|
for model in models: |
||||
|
for obj in model.objects.filter(parlamentar_id=clone.id): |
||||
|
obj.parlamentar = parlamentar_principal |
||||
|
obj.save() |
||||
|
|
||||
|
frentes = Frente.objects.filter(parlamentares=parlamentar_principal) |
||||
|
for frente in Frente.objects.select_related.filter(parlamentares=clone): |
||||
|
if frente not in frentes: |
||||
|
frente.parlamentares.add(parlamentar_principal) |
||||
|
|
||||
|
frente.parlamentares.remove(clone) |
||||
|
|
||||
|
clone.delete() |
||||
|
|
||||
|
|
||||
|
def estatisticas(parlamentares): |
||||
|
stats = [] |
||||
|
for ps in parlamentares: |
||||
|
for p in ps: |
||||
|
d = { |
||||
|
'id': p.id, |
||||
|
'nome': p.nome_parlamentar, |
||||
|
'stats': {m.__name__: m.objects.filter(parlamentar=p).count() for m in models} |
||||
|
} |
||||
|
for m in models_autor: |
||||
|
d['stats'].update({m.__name__:m.objects.filter(autor__object_id=p.id, |
||||
|
autor__content_type=CONTENT_TYPE_PARLAMENTAR, |
||||
|
autor__tipo_id=TIPO_PARLAMENTAR).count()}) |
||||
|
stats.append(d) |
||||
|
for s in stats: |
||||
|
print('---------------------------------------------------') |
||||
|
print(s['id'], s['nome']) |
||||
|
print(s['stats']) |
||||
|
|
||||
|
|
||||
|
def main(): |
||||
|
parlamentares = recupera_parlamentares() |
||||
|
estatisticas(parlamentares) |
||||
|
deduplica_parlamentares(parlamentares) |
||||
|
estatisticas(parlamentares) |
||||
|
|
||||
|
|
||||
|
if __name__ == '__main__': |
||||
|
main() |
@ -0,0 +1,84 @@ |
|||||
|
from django.core.exceptions import ObjectDoesNotExist |
||||
|
from django.db.models import Count |
||||
|
from sapl.base.models import Autor |
||||
|
from sapl.parlamentares.models import Parlamentar |
||||
|
|
||||
|
|
||||
|
def pega_autores(): |
||||
|
return [[autor for autor in Autor.objects.filter(nome=nome)] |
||||
|
for nome in Autor.objects.values_list('nome', flat=True).annotate(qntd=Count('nome')).filter(qntd__gt=1)] |
||||
|
|
||||
|
|
||||
|
def pega_parlamentares_autores(): |
||||
|
parlamentares = [[parlamentar for parlamentar in Parlamentar.objects.filter(nome_parlamentar=nome_parlamentar)] |
||||
|
for nome_parlamentar in Parlamentar.objects.values_list('nome_parlamentar', flat=True) |
||||
|
.annotate(qntd=Count('nome_parlamentar')).filter(qntd__gt=1)] |
||||
|
|
||||
|
parlamentares_autores = [] |
||||
|
|
||||
|
for parlamentar in parlamentares: |
||||
|
parlamentar_autor = [] |
||||
|
for clone in parlamentar[1:]: |
||||
|
try: |
||||
|
autor_principal = Autor.objects.get(parlamentar_set=parlamentar[0]) |
||||
|
except ObjectDoesNotExist: |
||||
|
try: |
||||
|
autor_clonado = Autor.objects.get(parlamentar_set=clone) |
||||
|
except ObjectDoesNotExist: |
||||
|
pass |
||||
|
else: |
||||
|
autor_clonado.object_id = parlamentar[0].id |
||||
|
autor_clonado.save() |
||||
|
parlamentares_autores.append(autor_clonado) |
||||
|
else: |
||||
|
if len(parlamentar_autor) == 0: |
||||
|
parlamentar_autor.append(autor_principal) |
||||
|
|
||||
|
try: |
||||
|
autor_clonado = Autor.objects.get(parlamentar_set=clone) |
||||
|
except ObjectDoesNotExist: |
||||
|
pass |
||||
|
else: |
||||
|
parlamentar_autor.append(autor_clonado) |
||||
|
parlamentares_autores.extend(parlamentar_autor) |
||||
|
|
||||
|
return parlamentares_autores |
||||
|
|
||||
|
|
||||
|
def transfere_valeres(autores): |
||||
|
for autor in autores: |
||||
|
for clone in autor[1:]: |
||||
|
for autoria in clone.autoria_set.all(): |
||||
|
autoria.autor_id = autor[0] |
||||
|
autoria.save() |
||||
|
|
||||
|
for proposicao in clone.proposicao_set.all(): |
||||
|
proposicao.autor_id = autor[0] |
||||
|
proposicao.save() |
||||
|
|
||||
|
for autorianorma in clone.autorianorma_set.all(): |
||||
|
autorianorma.autor_id = autor[0] |
||||
|
autorianorma.save() |
||||
|
|
||||
|
for documentoadministrativo in clone.documentoadministrativo_set.all(): |
||||
|
documentoadministrativo.autor_id = autor[0] |
||||
|
documentoadministrativo.save() |
||||
|
|
||||
|
for protocolo in clone.protocolo_set.all(): |
||||
|
protocolo.autor_id = autor[0] |
||||
|
protocolo.save() |
||||
|
|
||||
|
clone.delete() |
||||
|
|
||||
|
|
||||
|
def main(): |
||||
|
autores = pega_autores() |
||||
|
parlamentares_autores = pega_parlamentares_autores() |
||||
|
|
||||
|
autores.append(parlamentares_autores) |
||||
|
|
||||
|
transfere_valeres(autores) |
||||
|
|
||||
|
|
||||
|
if __name__ == '__main__': |
||||
|
main() |
@ -0,0 +1,13 @@ |
|||||
|
from sapl.materia.models import MateriaLegislativa |
||||
|
from sapl.protocoloadm.models import Protocolo |
||||
|
|
||||
|
|
||||
|
def main(): |
||||
|
for materia in MateriaLegislativa.objects.filter(numero_protocolo__isnull=False): |
||||
|
if not Protocolo.objects.filter(ano=materia.ano, numero=materia.numero_protocolo).exists(): |
||||
|
materia.numero_protocolo = None |
||||
|
materia.save() |
||||
|
|
||||
|
|
||||
|
if __name__ == '__main__': |
||||
|
main() |
Loading…
Reference in new issue