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 %} |
|||
|
|||
<fieldset> |
|||
<p align="justify"> |
|||
<p align="justify"> |
|||
{% if presenca_sessao %} |
|||
<strong>Lista de Presença na Sessão: </strong> |
|||
{% for p in presenca_sessao %} |
|||
{{p.nome_completo}} / {{ p|filiacao_data_filter:object.data_inicio }} |
|||
{% if not forloop.last %} ; {% endif %} |
|||
{{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 %} |
|||
{% endfor %} |
|||
{% endif %} |
|||
</p> |
|||
<p align="justify"> |
|||
{% if justificativa_ausencia %} |
|||
{% endif %} |
|||
</p> |
|||
<p align="justify"> |
|||
{% if justificativa_ausencia %} |
|||
<strong>Justificativas de Ausências na Sessão: </strong> |
|||
{% for j in justificativa_ausencia %} |
|||
{{j.parlamentar.nome_completo}} / {{ j.tipo_ausencia }} |
|||
{% if not forloop.last %} ; {% endif %} |
|||
{{j.parlamentar.nome_completo}} / {{ j.tipo_ausencia }} |
|||
{% if not forloop.last %} ; {% endif %} |
|||
{% endfor %} |
|||
{% endif %} |
|||
</p> |
|||
{% endif %} |
|||
</p> |
|||
</fieldset> |
|||
|
@ -1,33 +1,36 @@ |
|||
<fieldset> |
|||
<p align="justify"> |
|||
<strong>Matérias da Ordem do Dia: </strong> |
|||
{% for m in materias_ordem %} |
|||
<b>{{m.numero}} - {{m.titulo}}</b>, |
|||
{{m.ementa|safe}} |
|||
Autor{{ m.autor|length|pluralize:"es" }}: {{ m.autor|join:', ' }}, |
|||
{% if m.numero_protocolo %} |
|||
Número de Protocolo: {{ m.numero_protocolo }}, |
|||
{% endif %} |
|||
{% if m.numero_processo %} |
|||
Processo: {{ m.numero_processo }}, |
|||
{% endif %} |
|||
{%if m.turno %} |
|||
Turno: {{m.turno}}, |
|||
{%endif %} |
|||
{%if m.tipo_votacao %} |
|||
Tipo: {{m.tipo_votacao}}, |
|||
Sim: {{ m.voto_sim }}, |
|||
Não: {{ m.voto_nao }}, |
|||
Abstenções: {{m.voto_abstencoes}}, |
|||
{% endif %} |
|||
Resultado:</b> {{m.resultado}} |
|||
{% if m.resultado_observacao %} - {{m.resultado_observacao}} {% endif %} |
|||
{% if m.voto_nominal%} |
|||
<b>Votos Nominais :</b> |
|||
{% for voto in m.voto_nominal %} |
|||
{{voto.0}} - {{voto.1}} |
|||
{% if not forloop.last %} ; {% endif %} |
|||
<p align="justify"> |
|||
{% if materias_ordem %} |
|||
<strong>Matérias da Ordem do Dia: </strong> |
|||
{% for m in materias_ordem %} |
|||
<b>{{m.numero}} - {{m.titulo}}</b>, |
|||
{{m.ementa|safe}} |
|||
Autor{{ m.autor|length|pluralize:"es" }}: {{ m.autor|join:', ' }}, |
|||
{% if m.numero_protocolo %} |
|||
Número de Protocolo: {{ m.numero_protocolo }}, |
|||
{% endif %} |
|||
{% if m.numero_processo %} |
|||
Processo: {{ m.numero_processo }}, |
|||
{% endif %} |
|||
{% if m.turno %} |
|||
Turno: {{m.turno}}, |
|||
{% endif %} |
|||
{% if m.tipo_votacao %} |
|||
Tipo: {{m.tipo_votacao}}, |
|||
Sim: {{ m.voto_sim }}, |
|||
Não: {{ m.voto_nao }}, |
|||
Abstenções: {{m.voto_abstencoes}}, |
|||
{% endif %} |
|||
Resultado:</b> {{m.resultado}} |
|||
{% if m.resultado_observacao %} - {{m.resultado_observacao}} {% endif %} |
|||
{% if m.voto_nominal%} |
|||
<b>Votos Nominais :</b> |
|||
{% for voto in m.voto_nominal %} |
|||
{{voto.0}} - {{voto.1}} |
|||
{% if not forloop.last %} ; {% endif %} |
|||
{% endfor %} |
|||
{% endif %} |
|||
{% endfor %} |
|||
{% endif %} |
|||
{% endfor %} |
|||
{% endif %} |
|||
</p> |
|||
</fieldset> |
@ -1,13 +1,14 @@ |
|||
{% load common_tags %} |
|||
|
|||
<fieldset> |
|||
<p align="justify"> |
|||
{% if mesa %} |
|||
<p align="justify"> |
|||
{% if mesa %} |
|||
<strong>Mesa Diretora: </strong> |
|||
{% for m in mesa %} |
|||
{{m.cargo}}: |
|||
{{m.parlamentar.nome_completo}} / {{ m.parlamentar.filiacao_atual }} |
|||
{% if not forloop.last %} ; {% endif %} |
|||
{{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 %} |
|||
{% endfor %} |
|||
{% endif %} |
|||
{% endif %} |
|||
</p> |
|||
|
|||
</fieldset> |
|||
</fieldset> |
|||
|
@ -1,8 +1,8 @@ |
|||
<fieldset> |
|||
<p align="justify"> |
|||
{% if object.ocorrenciasessao.conteudo %} |
|||
<strong>Ocorrências da Sessão: </strong> |
|||
{{object.ocorrenciasessao.conteudo|striptags|safe}} |
|||
{% endif %} |
|||
<strong>Ocorrências da Sessão: </strong> |
|||
{{object.ocorrenciasessao.conteudo|striptags|safe}} |
|||
{% endif %} |
|||
</p> |
|||
</fieldset> |
|||
|
@ -1,13 +1,14 @@ |
|||
{% load common_tags %} |
|||
|
|||
<fieldset> |
|||
<p align="justify"> |
|||
<p align="justify"> |
|||
{% if oradores %} |
|||
<strong>Oradores do Expediente: </strong> |
|||
{% 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 not forloop.last %} ; {% endif %} |
|||
{% if not forloop.last %} ; {% endif %} |
|||
{% endfor %} |
|||
{% endif %} |
|||
</p> |
|||
</div> |
|||
</p> |
|||
</fieldset> |
|||
|
@ -1,9 +1,11 @@ |
|||
{% load common_tags %} |
|||
|
|||
<fieldset> |
|||
<legend>Mesa Diretora</legend> |
|||
<div class="row"> |
|||
{% for m in mesa %} |
|||
<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> |
|||
{% endfor %} |
|||
</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