mirror of https://github.com/interlegis/sapl.git
Browse Source
* cria model VinculoDocAdminMateria * impl display em detailview de matéria e documentos * add unique_together a VinculoDocAdminMateria * impl crud de vinculodocadminmateria * impl vinculo em lote de docadm com matériaspull/3588/head
LeandroJataí
2 years ago
committed by
GitHub
15 changed files with 590 additions and 24 deletions
@ -0,0 +1,35 @@ |
|||
# Generated by Django 2.2.28 on 2022-08-05 01:39 |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('materia', '0081_auto_20220321_0934'), |
|||
('protocoloadm', '0040_auto_20220321_0934'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.CreateModel( |
|||
name='VinculoDocAdminMateria', |
|||
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', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='materialegislativa_vinculada_set', to='protocoloadm.DocumentoAdministrativo', verbose_name='Documento Administrativo')), |
|||
('materia', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='documentoadministrativo_vinculado_set', to='materia.MateriaLegislativa', verbose_name='Matéria Legislativa')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Vinculo entre Documento Administrativo e Matéria Legislativa', |
|||
'verbose_name_plural': 'Vinculos entre Documento Administrativo e Matéria Legislativa', |
|||
'ordering': ('id',), |
|||
}, |
|||
), |
|||
migrations.AddField( |
|||
model_name='documentoadministrativo', |
|||
name='materiasvinculadas', |
|||
field=models.ManyToManyField(blank=True, related_name='docadmsvinculados', through='protocoloadm.VinculoDocAdminMateria', to='materia.MateriaLegislativa'), |
|||
), |
|||
] |
@ -0,0 +1,23 @@ |
|||
# Generated by Django 2.2.28 on 2022-08-05 15:36 |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('materia', '0081_auto_20220321_0934'), |
|||
('protocoloadm', '0041_auto_20220804_2239'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='documentoadministrativo', |
|||
name='materiasvinculadas', |
|||
field=models.ManyToManyField(blank=True, related_name='docadmvinculados', through='protocoloadm.VinculoDocAdminMateria', to='materia.MateriaLegislativa'), |
|||
), |
|||
migrations.AlterUniqueTogether( |
|||
name='vinculodocadminmateria', |
|||
unique_together={('documento', 'materia')}, |
|||
), |
|||
] |
@ -0,0 +1,74 @@ |
|||
{% extends "crud/detail.html" %} |
|||
{% load i18n crispy_forms_tags %} |
|||
{% block actions %}{% endblock %} |
|||
|
|||
{% block detail_content %} |
|||
{% if not show_results %} |
|||
{% crispy filter.form %} |
|||
{% endif %} |
|||
{% if show_results %} |
|||
{% if numero_res > 0 %} |
|||
{% if numero_res == 1 %} |
|||
<h3 style="text-align: right;">{% trans 'Pesquisa concluída com sucesso! Foi encontrada 1 matéria.'%}</h3> |
|||
{% else %} |
|||
<h3 style="text-align: right;">Foram encontradas {{ numero_res }} matérias.</h3> |
|||
{% endif %} |
|||
<form method="POST" enctype="multipart/form-data"> |
|||
{% csrf_token %} |
|||
<fieldset> |
|||
<div class="row"> |
|||
<div class="col-md-4"> |
|||
<div class="form-group"> |
|||
<label>Data Anexação*</label><input type="text" name="data_anexacao" class="form-control dateinput" required="True"> |
|||
</div> |
|||
</div> |
|||
<div class="col-md-4"> |
|||
<div class="form-group"> |
|||
<label>Data Desanexação</label><input type="text" name="data_desanexacao" class="form-control dateinput"> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</fieldset> |
|||
<br /> |
|||
<fieldset> |
|||
<legend>Matérias para Vincular em Lote</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 object_list %} |
|||
<tr> |
|||
<td class="p-0"> |
|||
<label for="mat_{{materia.id}}" class="d-flex w-100 p-3"> |
|||
<input type="checkbox" id="mat_{{materia.id}}" name="materia_id" value="{{materia.id}}" {% if check %} checked {% endif %}/> |
|||
{{materia.tipo.sigla}} {{materia.numero}}/{{materia.ano}} - {{materia.tipo.descricao}} |
|||
</label> |
|||
</td> |
|||
</tr> |
|||
{% endfor %} |
|||
</tbody> |
|||
</table> |
|||
</fieldset> |
|||
<input type="submit" value="Salvar" class="btn btn-primary"S> |
|||
</form> |
|||
{% else %} |
|||
<tr><td><h3 style="text-align: right;">Nenhuma matéria encontrada.</h3></td></tr> |
|||
{% endif %} |
|||
{% endif %} |
|||
{% endblock detail_content %} |
|||
|
|||
{% 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,38 @@ |
|||
{% extends "crud/form.html" %} |
|||
{% load i18n %} |
|||
|
|||
{% block extra_js %} |
|||
<script language="Javascript"> |
|||
// document.getElementById("id_observacao").readOnly = true; |
|||
|
|||
function recuperar_materia() { |
|||
var tipo_materia = $("#id_tipo").val() |
|||
var numero_materia = $("#id_numero").val() |
|||
var ano_materia = $("#id_ano").val() |
|||
|
|||
if (tipo_materia && numero_materia && ano_materia){ |
|||
$.get("/sessao/recuperar-materia", |
|||
{ tipo_materia: tipo_materia, numero_materia: numero_materia, ano_materia: ano_materia }, |
|||
function(data, status) { |
|||
if ($(".ementa-materia").length === 0){ |
|||
$("#div_id_tipo").closest('.row').after($('<div class="row"/>').append($('<div class="col-12"/>').append( |
|||
$('<div class="alert alert-info ementa-materia"/>').html(data.ementa) |
|||
))) |
|||
} |
|||
else { |
|||
$('.ementa-materia').html(data.ementa) |
|||
} |
|||
}); |
|||
} |
|||
} |
|||
var fields = ["#id_tipo", "#id_numero", "#id_ano"]; |
|||
for (i = 0; i < fields.length; i++){ |
|||
$(fields[i]).change(function() { |
|||
recuperar_materia(); |
|||
}); |
|||
} |
|||
recuperar_materia(); |
|||
$(document).ready( function() { |
|||
}); |
|||
</script> |
|||
{% endblock %} |
@ -0,0 +1,14 @@ |
|||
{% extends "crud/list.html" %} |
|||
{% load i18n %} |
|||
{% load common_tags %} |
|||
|
|||
|
|||
{% block more_buttons %} |
|||
|
|||
{% if perms|get_add_perm:view %} |
|||
<a href="{% url 'sapl.protocoloadm:vinculodocadminmateria_em_lote' root_pk %}" class="btn btn-outline-primary"> |
|||
{% trans "Adicionar Vínculos em Lote" %} |
|||
</a> |
|||
{% endif %} |
|||
|
|||
{% endblock more_buttons %} |
Loading…
Reference in new issue