mirror of https://github.com/interlegis/sapl.git
Gustavo274
3 years ago
12 changed files with 1038 additions and 60 deletions
@ -0,0 +1,28 @@ |
|||
# Generated by Django 2.2.20 on 2021-08-17 23:29 |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('parlamentares', '0039_documentoacessorio_reuniao'), |
|||
('materia', '0079_auto_20210311_1711'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.CreateModel( |
|||
name='PautaReuniaoFrente', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('materia', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='materia.MateriaLegislativa', verbose_name='Matéria')), |
|||
('reuniao', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='parlamentares.Reuniao', verbose_name='Reunião')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Matéria da Pauta', |
|||
'verbose_name_plural': 'Matérias da Pauta', |
|||
'ordering': ('id',), |
|||
}, |
|||
), |
|||
] |
@ -0,0 +1,60 @@ |
|||
# Generated by Django 2.2.20 on 2021-08-17 23:26 |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
import sapl.parlamentares.models |
|||
import sapl.utils |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('parlamentares', '0038_sessao_legislativa_redundante'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.CreateModel( |
|||
name='Reuniao', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('numero', models.PositiveIntegerField(verbose_name='Número')), |
|||
('nome', models.CharField(max_length=150, verbose_name='Nome da Reunião')), |
|||
('tema', models.CharField(blank=True, max_length=150, verbose_name='Tema da Reunião')), |
|||
('data', models.DateField(verbose_name='Data')), |
|||
('hora_inicio', models.TimeField(null=True, verbose_name='Horário de Início (hh:mm)')), |
|||
('hora_fim', models.TimeField(blank=True, null=True, verbose_name='Horário de Término (hh:mm)')), |
|||
('local_reuniao', models.CharField(blank=True, max_length=100, verbose_name='Local da Reunião')), |
|||
('observacao', models.TextField(blank=True, verbose_name='Observação')), |
|||
('url_audio', models.URLField(blank=True, max_length=150, verbose_name='URL do Arquivo de Áudio (Formatos MP3 / AAC)')), |
|||
('url_video', models.URLField(blank=True, max_length=150, verbose_name='URL do Arquivo de Vídeo (Formatos MP4 / FLV / WebM)')), |
|||
('upload_pauta', models.FileField(blank=True, max_length=300, null=True, storage=sapl.utils.OverwriteStorage(), upload_to=sapl.parlamentares.models.pauta_upload_path, verbose_name='Pauta da Reunião')), |
|||
('upload_ata', models.FileField(blank=True, max_length=300, null=True, storage=sapl.utils.OverwriteStorage(), upload_to=sapl.parlamentares.models.ata_upload_path, verbose_name='Ata da Reunião')), |
|||
('upload_anexo', models.FileField(blank=True, max_length=300, null=True, storage=sapl.utils.OverwriteStorage(), upload_to=sapl.parlamentares.models.anexo_upload_path, verbose_name='Anexo da Reunião')), |
|||
('frente', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='parlamentares.Frente', verbose_name='Frente Parlamentar')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Reunião de Frente Parlamentar', |
|||
'verbose_name_plural': 'Reuniões de Frentes Parlamentares', |
|||
'ordering': ('numero', 'frente'), |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='DocumentoAcessorio', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('nome', models.CharField(max_length=50, verbose_name='Nome')), |
|||
('data', models.DateField(blank=True, default=None, null=True, verbose_name='Data')), |
|||
('autor', models.CharField(max_length=200, verbose_name='Autor')), |
|||
('ementa', models.TextField(blank=True, verbose_name='Ementa')), |
|||
('indexacao', models.TextField(blank=True)), |
|||
('arquivo', models.FileField(blank=True, max_length=300, null=True, storage=sapl.utils.OverwriteStorage(), upload_to=sapl.parlamentares.models.anexo_upload_path, verbose_name='Texto Integral')), |
|||
('data_ultima_atualizacao', models.DateTimeField(auto_now=True, null=True, verbose_name='Data')), |
|||
('reuniao', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='documentoacessorio_set', to='parlamentares.Reuniao')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Documento Acessório', |
|||
'verbose_name_plural': 'Documentos Acessórios', |
|||
'ordering': ('data', 'id'), |
|||
}, |
|||
), |
|||
] |
@ -0,0 +1,33 @@ |
|||
{% extends "crud/detail.html" %} |
|||
{% load i18n %} |
|||
{% load crispy_forms_tags %} |
|||
{% block actions %} {% endblock %} |
|||
|
|||
{% block title %} |
|||
<h1 class="page-header"> |
|||
Matérias em Tramitação <small>({{object}})</small> |
|||
</h1> |
|||
{% endblock %} |
|||
|
|||
{% block detail_content %} |
|||
<fieldset> |
|||
<legend>{{ frente }}</legend> |
|||
<b>Há {{ qtde }} matéria(s) em tramitação nesta unidade.</b> <br><br> |
|||
{% for materia_em_tramitacao in page_obj %} |
|||
<b><a href="{% url 'sapl.materia:materialegislativa_detail' materia_em_tramitacao.materia.id %}"> |
|||
{{ materia_em_tramitacao.materia.tipo.sigla }} {{ materia_em_tramitacao.materia.numero }} |
|||
{{ materia_em_tramitacao.materia.ano }} - {{ materia_em_tramitacao.materia.tipo }} |
|||
</b></a><br> |
|||
{{ materia_em_tramitacao.materia }}<br> |
|||
<b>Autor: </b>{{ materia_em_tramitacao.materia.autoria_set.first.autor.nome }}<br> |
|||
<b>Situação: </b>{{ materia_em_tramitacao.tramitacao.status.descricao }}<br> |
|||
<b>Data Fim Prazo da Última Tramitação: </b> |
|||
{% if materia_em_tramitacao.tramitacao.data_fim_prazo %} |
|||
{{ materia_em_tramitacao.tramitacao.data_fim_prazo }} |
|||
{% else %} |
|||
Não definida. |
|||
{% endif %}<br> |
|||
<br> |
|||
{% endfor %} |
|||
</fieldset> |
|||
{% endblock detail_content %} |
@ -0,0 +1,113 @@ |
|||
{% extends "crud/detail.html" %} |
|||
{% load i18n crispy_forms_tags %} |
|||
{% block actions %}{% endblock %} |
|||
|
|||
{% block title %} |
|||
<h1 class="page-header"> |
|||
{% if opcao %} |
|||
Adicionar Matérias à Pauta <small>(Reunião: {{ object }})</small> |
|||
{% else %} |
|||
Remover Matérias da Pauta <small>(Reunião: {{ object }})</small> |
|||
{% endif %} |
|||
</h1> |
|||
{% endblock %} |
|||
|
|||
{% block detail_content %} |
|||
{% if opcao %} |
|||
{% if not show_results %} |
|||
{% crispy filter.form %} |
|||
{% endif %} |
|||
|
|||
{% if show_results %} |
|||
{% if numero_resultados > 0 %} |
|||
{% if numero_resultados == 1 %} |
|||
<div style="text-align: right;"><b>Pesquisa concluída com sucesso! Foi encontrada 1 matéria disponível.</b></div><br> |
|||
{% else %} |
|||
<div style="text-align: right;"> |
|||
<b>Pesquisa concluída com sucesso! Foram encontradas {{ numero_resultados }} matérias disponíveis.</b> |
|||
</div> |
|||
<br> |
|||
{% endif %} |
|||
<form method="POST" enctype="multipart/form-data"> |
|||
{% csrf_token %} |
|||
<fieldset> |
|||
<legend>Matérias para Adicionar à Pauta</legend> |
|||
<table class="table table-striped table-hover"> |
|||
<div class="controls"> |
|||
<div class="checkbox"> |
|||
<label for="id_check_all"> |
|||
<input type="checkbox" id="id_check_all" onchange="checkAll(this)"/> Marcar/Desmarcar Todos |
|||
</label> |
|||
</div> |
|||
</div> |
|||
<thead><tr><th>Matéria</th></tr></thead> |
|||
<tbody> |
|||
{% for materia_t in object_list %} |
|||
<tr> |
|||
<td> |
|||
<input type="checkbox" name="materia_id" value="{{ materia_t.materia.id }}" {% if check %} checked {% endif %}/> |
|||
{{ materia_t.materia.tipo.sigla }} |
|||
{{ materia_t.materia.numero }}/{{ materia_t.materia.ano }} - {{ materia_t.materia.tipo.descricao }} |
|||
</td> |
|||
</tr> |
|||
{% endfor %} |
|||
</tbody> |
|||
</table> |
|||
</fieldset> |
|||
<input type="submit" value="Salvar" class="btn btn-primary"S> |
|||
</form> |
|||
{% else %} |
|||
<br><div style="text-align: center"><b>Nenhuma matéria disponível encontrada.</b></div> |
|||
{% endif %} |
|||
{% endif %} |
|||
{% else %} |
|||
{% if materias %} |
|||
{% if numero_materias == 1 %} |
|||
<div style="text-align: right;"><b>Há 1 matéria disponível.</b></div><br> |
|||
{% else %} |
|||
<div style="text-align: right;"><b>Há {{ numero_materias }} matérias disponíveis.</b></div><br> |
|||
{% endif %} |
|||
<form method="POST" enctype="multipart/form-data"> |
|||
{% csrf_token %} |
|||
<fieldset> |
|||
<legend>Matérias para Remover da Pauta</legend> |
|||
<table class="table table-striped table-hover"> |
|||
<div class="controls"> |
|||
<div class="checkbox"> |
|||
<label for="id_check_all"> |
|||
<input type="checkbox" id="id_check_all" onchange="checkAll(this)" /> Marcar/Desmarcar Todos |
|||
</label> |
|||
</div> |
|||
</div> |
|||
<thead><tr><th>Matéria</th></tr></thead> |
|||
<tbody> |
|||
{% for materia in materias %} |
|||
<tr> |
|||
<td> |
|||
<input type="checkbox" name="materia_id" value="{{ materia.id }}" {% if check %} checked {% endif %}/> |
|||
{{ materia.tipo.sigla }} {{ materia.numero }}/{{ materia.ano }} - {{ materia.tipo.descricao }} |
|||
</td> |
|||
</tr> |
|||
{% endfor %} |
|||
</tbody> |
|||
</table> |
|||
</fieldset> |
|||
<input type="submit" value="Remover" class="btn btn-danger"S> |
|||
</form> |
|||
{% else %} |
|||
<br><div style="text-align: center;"><b>Não há matéria disponível.</b></div> |
|||
{% endif %} |
|||
{% endif %} |
|||
{% endblock %} |
|||
|
|||
{% block extra_js %} |
|||
<script language="JavaScript"> |
|||
function checkAll(elem){ |
|||
let checkboxes = document.getElementsByName('materia_id'); |
|||
for(let i=0; i<checkboxes.length; i++){ |
|||
if(checkboxes[i].type == 'checkbox') |
|||
checkboxes[i].checked = elem.checked |
|||
} |
|||
} |
|||
</script> |
|||
{% endblock %} |
@ -0,0 +1,59 @@ |
|||
{% extends "crud/detail_detail.html" %} |
|||
{% load i18n %} |
|||
|
|||
{% block detail_content %} |
|||
{{ block.super }} |
|||
<h2 class="legend">Pauta</h2> |
|||
{% if mats %} |
|||
<p>Total de Registros: <b>{{ num_mats }}</b></p> |
|||
<table class="table table-striped table-hover"> |
|||
<thead><tr><th>Matéria</th></tr></thead> |
|||
<tbody> |
|||
{% for mat in mats %} |
|||
<tr><td><a href="{% url 'sapl.materia:materialegislativa_detail' mat.pk %}">{{mat}}</a></td></tr> |
|||
{% endfor %} |
|||
</tbody> |
|||
</table> |
|||
{% if perms.parlamentares.add_reuniao %} |
|||
<div class="actions btn-group float-right" role="group"> |
|||
<a href="{% url 'sapl.parlamentares:pauta_add' reuniao_pk %}" class="btn btn-outline-primary">{% trans 'Adicionar Matéria(s)' %}</a> |
|||
{% if num_mats == 1 %} |
|||
<a href="{% url 'sapl.parlamentares:pauta_remove' reuniao_pk %}" class="btn btn-outline-primary btn-outline-danger"> |
|||
{% trans 'Remover Matéria' %} |
|||
</a> |
|||
{% else %} |
|||
<a href="{% url 'sapl.parlamentares:pauta_remove' reuniao_pk %}" class="btn btn-outline-primary btn-outline-danger"> |
|||
{% trans 'Remover Matéria(s)' %} |
|||
</a> |
|||
{% endif %} |
|||
</div> |
|||
{% endif %} |
|||
{% else %} |
|||
{% if perms.parlamentares.add_reuniao %} |
|||
<a href="{% url 'sapl.parlamentares:pauta_add' reuniao_pk %}" class="btn btn-outline-primary">{% trans 'Adicionar Matéria(s)' %}</a> |
|||
{% endif %} |
|||
{% endif %} |
|||
<br /><br /> |
|||
<h2 class="legend">Documentos Acessórios</h2> |
|||
{% if docs %} |
|||
<p>Total de registros: <b>{{ num_docs }}</b></p> |
|||
<table class="table table-striped table-hover"> |
|||
<thead><tr><th>Documento Acessório</th></tr></thead> |
|||
<tbody> |
|||
{% for doc in docs %} |
|||
<tr><td><a href="{% url 'sapl.parlamentares:documentoacessorio_detail' doc.pk %}">{{ doc.nome }}</a></td></tr> |
|||
{% endfor %} |
|||
</tbody> |
|||
</table> |
|||
{% if perms.parlamentares.add_reuniao %} |
|||
<a href="{% url 'sapl.parlamentares:documentoacessorio_create' reuniao_pk %}" class="btn btn-outline-primary float-right"> |
|||
{% trans 'Adicionar Documento' %} |
|||
</a> |
|||
{% endif %} |
|||
{% else %} |
|||
{% if perms.parlamentares.add_reuniao %} |
|||
<a href="{% url 'sapl.parlamentares:documentoacessorio_create' reuniao_pk %}" class="btn btn-outline-primary">{% trans 'Adicionar Documento' %}</a> |
|||
{% endif %} |
|||
{% endif %} |
|||
<br /><br /> |
|||
{% endblock detail_content %} |
Loading…
Reference in new issue