mirror of https://github.com/interlegis/sapl.git
Marcio Mazza
6 years ago
84 changed files with 3137 additions and 1084 deletions
@ -1,51 +1,113 @@ |
|||
#/bin/bash |
|||
|
|||
VERSION=`git describe --tags --abbrev=0` |
|||
LAST_DIGIT=`echo $VERSION | cut -f 3 -d '.'` |
|||
MAIN_REV=`echo $VERSION | cut -f 1,2 -d '.'` |
|||
## |
|||
## Versioning info: [major].[minor].[patch][-RC[num]], example: 3.1.159, 3.1.159-RC1 |
|||
## |
|||
|
|||
# TODO: verificar porque só pega versões superiores (3.1.200 ao invés de 3.1.200-RC9) |
|||
# VERSION=`git describe --tags --abbrev=0` |
|||
|
|||
VERSION_PATTERN='([0-9]+)\.([0-9]+)\.([0-9]+)(-RC[0-9]+)?' |
|||
|
|||
SED_AWKWARD_PATTERN="[0-9]+\.[0-9]+\.[0-9]+(-RC[0-9]+){0,1}" |
|||
|
|||
LATEST_VERSION=$(git tag | egrep $VERSION_PATTERN | sort --version-sort | tail -1) |
|||
MAJOR_VERSION=$(echo $LATEST_VERSION | cut -d"-" -f1) |
|||
IS_RC=$(echo $LATEST_VERSION | egrep '(-RC)') |
|||
MAJOR_TAG_CREATED=$(git tag | egrep $MAJOR_VERSION"$") |
|||
|
|||
if [ -n "$MAJOR_TAG_CREATED" ]; then |
|||
LATEST_VERSION=$MAJOR_VERSION |
|||
fi |
|||
|
|||
LAST_DIGIT=`echo $MAJOR_VERSION | cut -f 3 -d '.'` |
|||
MAIN_REV=`echo $MAJOR_VERSION | cut -f 1,2 -d '.'` |
|||
NEXT_NUMBER=$(($LAST_DIGIT + 1)) |
|||
NEXT_VERSION=$MAIN_REV'.'$NEXT_NUMBER |
|||
|
|||
FINAL_VERSION= |
|||
|
|||
function change_files { |
|||
|
|||
OLD_VERSION=$(grep -E 'interlegis/sapl:'$VERSION_PATTERN docker-compose.yml | cut -d':' -f3) |
|||
|
|||
function bump_version { |
|||
sed -e s/$VERSION/$NEXT_VERSION/g docker-compose.yml > tmp1 |
|||
echo "Atualizando de "$OLD_VERSION" para "$FINAL_VERSION |
|||
|
|||
sed -E s/$OLD_VERSION/$FINAL_VERSION/g docker-compose.yml > tmp1 |
|||
mv tmp1 docker-compose.yml |
|||
|
|||
sed -e s/$VERSION/$NEXT_VERSION/g setup.py > tmp2 |
|||
sed -E s/$OLD_VERSION/$FINAL_VERSION/g setup.py > tmp2 |
|||
mv tmp2 setup.py |
|||
|
|||
sed -e s/$VERSION/$NEXT_VERSION/g sapl/templates/base.html > tmp3 |
|||
sed -E s/$OLD_VERSION/$FINAL_VERSION/g sapl/templates/base.html > tmp3 |
|||
mv tmp3 sapl/templates/base.html |
|||
|
|||
sed -e s/$VERSION/$NEXT_VERSION/g sapl/settings.py > tmp4 |
|||
sed -E s/$OLD_VERSION/$FINAL_VERSION/g sapl/settings.py > tmp4 |
|||
mv tmp4 sapl/settings.py |
|||
} |
|||
|
|||
function set_major_version { |
|||
if [ -z "$IS_RC" ] || [ -n "$MAJOR_TAG_CREATED" ]; then |
|||
FINAL_VERSION=$NEXT_VERSION |
|||
else |
|||
FINAL_VERSION=$MAJOR_VERSION |
|||
fi |
|||
} |
|||
|
|||
function set_rc_version { |
|||
if [ -z "$IS_RC" ]; then |
|||
NEXT_RC_VERSION=$NEXT_VERSION"-RC0" |
|||
else |
|||
LAST_RC_DIGIT=$(echo $LATEST_VERSION | rev | cut -d"-" -f1 | rev | sed s/RC//) |
|||
NEXT_RC_NUMBER=$(($LAST_RC_DIGIT + 1)) |
|||
NEXT_RC_VERSION=$(echo $LATEST_VERSION | cut -d"-" -f1)'-RC'$NEXT_RC_NUMBER |
|||
fi |
|||
|
|||
FINAL_VERSION=$NEXT_RC_VERSION |
|||
} |
|||
|
|||
function commit_and_push { |
|||
echo "committing..." |
|||
git add docker-compose.yml setup.py sapl/settings.py sapl/templates/base.html |
|||
git commit -m "Release: $NEXT_VERSION" |
|||
git tag $NEXT_VERSION |
|||
git commit -m "Release: $FINAL_VERSION" |
|||
git tag $FINAL_VERSION |
|||
|
|||
echo "sending to github..." |
|||
git push origin $NEXT_VERSION |
|||
git push origin |
|||
git push origin $FINAL_VERSION |
|||
|
|||
echo "done." |
|||
} |
|||
|
|||
case "$1" in |
|||
--dry-run) |
|||
echo "Dry run" |
|||
bump_version |
|||
echo "done." |
|||
echo "Run git checkout -- docker-compose.yml setup.py to undo the files" |
|||
|
|||
exit 0 |
|||
;; |
|||
--publish) |
|||
echo "generating release" |
|||
bump_version |
|||
--latest) |
|||
echo $LATEST_VERSION |
|||
exit 0 |
|||
;; |
|||
--major) |
|||
set_major_version |
|||
echo "generating major release: "$FINAL_VERSION |
|||
# git tag $FINAL_VERSION |
|||
change_files |
|||
commit_and_push |
|||
exit 0 |
|||
;; |
|||
--rc) |
|||
set_rc_version |
|||
echo "generating release candidate: "$FINAL_VERSION |
|||
# git tag $FINAL_VERSION |
|||
change_files |
|||
commit_and_push |
|||
exit 0 |
|||
;; |
|||
--undo) |
|||
git tag -d $LATEST_VERSION |
|||
exit 0 |
|||
;; |
|||
--top) |
|||
git tag | sort --version-sort | tail "-$2" |
|||
exit 0 |
|||
;; |
|||
|
|||
esac |
|||
|
|||
|
@ -0,0 +1,25 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.11.20 on 2019-05-27 12:01 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('base', '0036_auto_20190417_1432'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AddField( |
|||
model_name='appconfig', |
|||
name='tramitacao_documento', |
|||
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=True, verbose_name='Tramitar documentos anexados junto com os documentos principais?'), |
|||
), |
|||
migrations.AddField( |
|||
model_name='appconfig', |
|||
name='tramitacao_materia', |
|||
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=True, verbose_name='Tramitar matérias anexadas junto com as matérias principais?'), |
|||
), |
|||
] |
@ -0,0 +1,29 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.11.20 on 2019-05-14 20:11 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('comissoes', '0019_auto_20181214_1023'), |
|||
('materia', '0048_merge_20190426_0828'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.CreateModel( |
|||
name='PautaReuniao', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('materia', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='materia_set', to='materia.MateriaLegislativa', verbose_name='Matéria')), |
|||
('reuniao', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reuniao_set', to='comissoes.Reuniao', verbose_name='Reunião')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Matéria da Pauta', |
|||
'verbose_name_plural': 'Matérias da Pauta', |
|||
}, |
|||
), |
|||
] |
@ -0,0 +1,28 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.11.20 on 2019-05-21 14:48 |
|||
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', '0049_pautareuniao'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AddField( |
|||
model_name='materialegislativa', |
|||
name='ip', |
|||
field=models.CharField(blank=True, default='', max_length=30, verbose_name='IP'), |
|||
), |
|||
migrations.AddField( |
|||
model_name='materialegislativa', |
|||
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,67 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.11.20 on 2019-05-17 18:31 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('parlamentares', '0028_auto_20190515_1744'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.RunSQL(""" |
|||
INSERT INTO django_content_type (app_label, model) |
|||
SELECT 'parlamentares', 'bloco' |
|||
WHERE NOT EXISTS (SELECT id |
|||
FROM django_content_type |
|||
WHERE app_label = 'parlamentares' AND model = 'bloco'); |
|||
"""), |
|||
migrations.RunSQL(""" |
|||
INSERT INTO base_tipoautor (descricao, content_type_id) |
|||
SELECT 'Bloco Parlamentar', (SELECT id |
|||
FROM django_content_type |
|||
WHERE app_label = 'parlamentares' AND model = 'bloco') |
|||
WHERE NOT EXISTS (SELECT id |
|||
FROM base_tipoautor |
|||
WHERE content_type_id = (SELECT id |
|||
FROM django_content_type |
|||
WHERE app_label = 'parlamentares' AND model = 'bloco')); |
|||
"""), |
|||
migrations.RunSQL(""" |
|||
UPDATE auth_permission |
|||
SET content_type_id = (SELECT id |
|||
FROM django_content_type |
|||
WHERE app_label = 'parlamentares' AND model = 'bloco') |
|||
WHERE content_type_id = (SELECT id |
|||
FROM django_content_type |
|||
WHERE app_label = 'sessao' AND model = 'bloco') |
|||
AND NOT EXISTS (SELECT id |
|||
FROM django_content_type |
|||
WHERE app_label = 'parlamentares' AND model = 'bloco'); |
|||
"""), |
|||
migrations.RunSQL(""" |
|||
UPDATE base_autor |
|||
SET tipo_id = (SELECT id |
|||
FROM base_tipoautor |
|||
WHERE content_type_id = (SELECT id |
|||
FROM django_content_type |
|||
WHERE app_label = 'parlamentares' AND model = 'bloco')), |
|||
content_type_id = (SELECT id |
|||
FROM django_content_type |
|||
WHERE app_label = 'parlamentares' AND model = 'bloco') |
|||
WHERE tipo_id = (SELECT id |
|||
FROM base_tipoautor |
|||
WHERE content_type_id = (SELECT id |
|||
FROM django_content_type |
|||
WHERE app_label = 'sessao' AND model = 'bloco')); |
|||
"""), |
|||
migrations.RunSQL(""" |
|||
DELETE FROM base_tipoautor |
|||
WHERE content_type_id = (SELECT id |
|||
FROM django_content_type |
|||
WHERE app_label = 'sessao' AND model = 'bloco'); |
|||
"""), |
|||
] |
@ -0,0 +1,23 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.11.20 on 2019-05-23 14:30 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
def unifica_opcaoes_ordenacao_resumo(apps, schema_editor): |
|||
ResumoOrdenacao = apps.get_model('sessao', 'ResumoOrdenacao') |
|||
ro = ResumoOrdenacao.objects.get_or_create()[0] |
|||
if 'oradores_o_d' not in ro.__dict__: |
|||
ro.decimo_quarto = 'oradores_o_d' |
|||
ro.save() |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
dependencies = [ |
|||
('sessao', '0039_auto_20190430_0825'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.RunPython(unifica_opcaoes_ordenacao_resumo) |
|||
] |
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@ -0,0 +1,48 @@ |
|||
{% extends "crud/list.html" %} |
|||
{% load i18n %} |
|||
{% load crispy_forms_tags %} |
|||
|
|||
{% block base_content %} |
|||
{% if not show_results %} |
|||
<br> |
|||
{% crispy filter.form %} |
|||
{% else %} |
|||
<div class="actions btn-group float-right" role="group"> |
|||
<a href="{% url 'sapl.base:historico_tramitacoes_adm' %}" class="btn btn-outline-primary">{% trans 'Fazer nova pesquisa' %}</a> |
|||
</div> |
|||
<br /><br /><br /><br /> |
|||
<b>PARÂMETROS DE PESQUISA:<br /></b> |
|||
 Período: {{ data_tramitacao }} <br /> |
|||
 Tipo de documento: {{ tipo }}<br /> |
|||
 Status atual: {{ tramitacaoadministrativo__status }}<br /> |
|||
 Local de origem: {{ tramitacaoadministrativo__unidade_tramitacao_local }}<br /> |
|||
 Local de destino: {{ tramitacaoadministrativo__unidade_tramitacao_destino }}<br /><br /><br /> |
|||
{% if object_list %} |
|||
{% if object_list|length == 1 %} |
|||
<tr><td><h3 style="text-align: left;">Foi encontrado 1 documento com esses parâmetros.</h3></td></tr><br><br> |
|||
{% else %} |
|||
<tr><td><h3 style="text-align: left;">Foram encontrados {{object_list|length}} documentos com esses parâmetros.</h3></td></tr><br><br> |
|||
{% endif %} |
|||
<table class="table table-bordered table-hover"> |
|||
<thead class="thead-default" > |
|||
<tr class="active"> |
|||
<th>Documento</th> |
|||
<th>Ementa</th> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
{% for documento in object_list %} |
|||
<tr> |
|||
<td><a href="{% url 'sapl.protocoloadm:tramitacaoadministrativo_list' documento.pk %}"> |
|||
{{documento.tipo.descricao}} - {{documento.tipo.sigla}} {{documento.numero}}/{{documento.ano}} |
|||
</a></td> |
|||
<td>{{documento.ementa}}<br>{{documento.observacao}}</td> |
|||
</tr> |
|||
{% endfor %} |
|||
</tbody> |
|||
</table> |
|||
{% else %} |
|||
<tr><td><h3 style="text-align: left;">Nenhum documento encontrado com esses parâmetros.</h3></td></tr><br><br> |
|||
{% endif %} |
|||
{% endif %} |
|||
{% endblock base_content %} |
@ -0,0 +1,68 @@ |
|||
{% 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 materias %} |
|||
{% if num_materias == 1 %} |
|||
<b>Há {{num_materias}} matéria disponível.</b> <br><br> |
|||
{% else %} |
|||
<b>Há {{num_materias}} matérias disponíveis.</b> <br><br> |
|||
{% endif %} |
|||
<form method="POST" enctype="multipart/form-data"> |
|||
{% csrf_token %} |
|||
<fieldset> |
|||
<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 onload="checks(materias_checked)"> |
|||
{% 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> |
|||
{% if opcao %} |
|||
<input type="submit" value="Salvar" class="btn btn-primary"S> |
|||
{% else %} |
|||
<input type="submit" value="Remover" class="btn btn-danger"S> |
|||
{% endif %} |
|||
</form> |
|||
{% else %} |
|||
<b>Não há matéria disponível.</b> <br><br> |
|||
{% 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,65 @@ |
|||
{% extends "crud/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.comissoes.add_reuniao %} |
|||
<div class="actions btn-group float-right" role="group"> |
|||
<a href="{% url 'sapl.comissoes:pauta_add' reuniao_pk %}" class="btn btn-outline-primary">{% trans 'Adicionar Matéria' %}</a> |
|||
<a href="{% url 'sapl.comissoes:pauta_remove' reuniao_pk %}" class="btn btn-outline-primary btn-outline-danger">{% trans 'Remover Matéria' %}</a> |
|||
</div> |
|||
{% endif %} |
|||
{% else %} |
|||
{% if perms.comissoes.add_reuniao %} |
|||
<a href="{% url 'sapl.comissoes:pauta_add' reuniao_pk %}" class="btn btn-outline-primary">{% trans 'Adicionar Matéria' %}</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.comissoes:documentoacessorio_detail' doc.pk %}">{{ doc.nome }}</a> |
|||
</td> |
|||
</tr> |
|||
{% endfor %} |
|||
</tbody> |
|||
</table> |
|||
{% if perms.comissoes.add_reuniao %} |
|||
<a href="{% url 'sapl.comissoes:documentoacessorio_create' reuniao_pk %}" class="btn btn-outline-primary float-right">{% trans 'Adicionar Documento' %}</a> |
|||
{% endif %} |
|||
{% else %} |
|||
{% if perms.comissoes.add_reuniao %} |
|||
<a href="{% url 'sapl.comissoes:documentoacessorio_create' reuniao_pk %}" class="btn btn-outline-primary">{% trans 'Adicionar Documento' %}</a> |
|||
{% endif %} |
|||
{% endif %} |
|||
<br /><br /> |
|||
{% endblock detail_content %} |
@ -0,0 +1,36 @@ |
|||
{% extends "crud/detail.html" %} |
|||
{% load i18n %} |
|||
|
|||
{% block detail_content %} |
|||
{{ block.super }} |
|||
{% if user.is_superuser %} |
|||
<div class="row"> |
|||
{% if materia.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' materia.user.pk %}">{{materia.user}}</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
{% endif %} |
|||
{% if materia.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">{{materia.ip}}</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
{% endif %} |
|||
</div> |
|||
{% endif %} |
|||
{% endblock detail_content %} |
@ -0,0 +1,5 @@ |
|||
{% load i18n common_tags %} |
|||
- title: {% trans 'Primeira Tramitação' %} |
|||
url: primeira_tramitacao_em_lote_docadm |
|||
- title: {% trans 'Tramitação em Lote' %} |
|||
url: tramitacao_em_lote_docadm |
@ -0,0 +1,46 @@ |
|||
{% extends "crud/detail.html" %} |
|||
{% load i18n crispy_forms_tags %} |
|||
{% block detail_content %} |
|||
|
|||
{% if not show_results %} |
|||
{% crispy filter.form %} |
|||
{% else %} |
|||
{% if object_list|length > 0 %} |
|||
{% if object_list|length == 1 %} |
|||
<h3 style="text-align: right;">{% trans 'Pesquisa concluída com sucesso! Foi encontrado 1 documento.'%}</h3> |
|||
{% else %} |
|||
<h3 style="text-align: right;">Foram encontrados {{object_list|length}} documentos.</h3> |
|||
{% endif %} |
|||
{% crispy form %} |
|||
{% else %} |
|||
<tr><td><h3 style="text-align: right;">Nenhum documento encontrado.</h3></td></tr> |
|||
{% endif %} |
|||
|
|||
{% endif%} |
|||
{% endblock detail_content %} |
|||
|
|||
{% block extra_js %} |
|||
<script language="JavaScript"> |
|||
function checkAll(elem) { |
|||
let checkboxes = document.getElementsByName('documentos'); |
|||
for (let i = 0; i < checkboxes.length; i++) { |
|||
if (checkboxes[i].type == 'checkbox') |
|||
checkboxes[i].checked = elem.checked; |
|||
} |
|||
} |
|||
|
|||
$(document).ready(function(){ |
|||
var primeira_tramitacao = {{primeira_tramitacao|yesno:"true,false"}} |
|||
|
|||
if (primeira_tramitacao == false){ |
|||
$('#id_unidade_tramitacao_local').prop('disabled', true); |
|||
} |
|||
|
|||
// Reabilita o campo, no momento do Submit, para que seu dado seja enviado |
|||
$('input[type=submit]').click(function() { |
|||
$('#id_unidade_tramitacao_local').attr('disabled', false); |
|||
$('#id_unidade_tramitacao_local').parents('form').submit(); |
|||
}); |
|||
}); |
|||
</script> |
|||
{% endblock %} |
@ -0,0 +1,85 @@ |
|||
{% load i18n %} |
|||
{% load common_tags %} |
|||
{% load static %} |
|||
|
|||
|
|||
<head> |
|||
<style> |
|||
@page{ |
|||
margin-top: 4.5cm; |
|||
size: A4 portrait; |
|||
|
|||
@bottom-right { |
|||
content: "Página" counter(page); |
|||
height: 3cm; |
|||
font-size: 8pt; |
|||
} |
|||
|
|||
@bottom-center { |
|||
border-top: 1px solid black; |
|||
font-size: 8pt; |
|||
height: 1cm; |
|||
content: "{{rodape|safe}}"; |
|||
font-style:italic; |
|||
} |
|||
@bottom-left { |
|||
content: "{{data}}"; |
|||
height: 3cm; |
|||
font-size: 8pt; |
|||
} |
|||
|
|||
@top-center { |
|||
content: string(title); |
|||
} |
|||
header { |
|||
width: 0; |
|||
height: 0; |
|||
visibility: hidden; |
|||
string-set: title content(); |
|||
} |
|||
} |
|||
</style> |
|||
<link rel="stylesheet" href="{% static '/sapl/css/relatorio.css'%}"> |
|||
</head> |
|||
|
|||
<body> |
|||
<h2>Documentos Administrativos</h2> |
|||
{% if documentoadministrativo_list|length %} |
|||
<h3>Número de documentos: {{numero_res}}</h3> |
|||
{% for d in documentoadministrativo_list %} |
|||
<div style="border-top: 1px solid black;margin-bottom:0.3cm"> |
|||
{% if request.user.is_anonymous and not d.restrito or not request.user.is_anonymous%} |
|||
<strong><a href="{% url 'sapl.protocoloadm:documentoadministrativo_detail' d.id %}">{{d.tipo.sigla}} {{d.numero}}/{{d.ano}} - {{d.tipo}}</strong></a></br> |
|||
<strong>Interessado:</strong> {{ d.interessado|default_if_none:"Não informado"}} |
|||
</br> |
|||
<strong>Assunto:</strong> <a>{{ d.assunto|safe}}</a> |
|||
</br> |
|||
{% if d.protocolo %} |
|||
<strong>Protocolo:</strong> <a href="{% url 'sapl.protocoloadm:protocolo_mostrar' d.protocolo.id %}">{{ d.protocolo}}</a></br> |
|||
{% endif %} |
|||
{% define d.tramitacaoadministrativo_set.last as tram %} |
|||
{% if tram.unidade_tramitacao_destino %} |
|||
<strong>Localização Atual:</strong> {{tram.unidade_tramitacao_destino}} |
|||
</br> |
|||
<strong>Status:</strong> {{tram.status}} |
|||
</br> |
|||
{% endif %} |
|||
{% define d.documentoacessorioadministrativo_set.all as acess %} |
|||
{% if d.documentoacessorioadministrativo_set.all.exists %} |
|||
<strong>Documentos Acessórios:</strong> |
|||
<a href="{% url 'sapl.protocoloadm:documentoacessorioadministrativo_list' d.id %}"> |
|||
{{ d.documentoacessorioadministrativo_set.all.count }} |
|||
</a> |
|||
</br> |
|||
{% endif %} |
|||
{% if d.tramitacao and mail_service_configured %} |
|||
<a href="{% url 'sapl.protocoloadm:acompanhar_documento' d.id %}">Acompanhar Documento</a> |
|||
{% endif %} |
|||
{% endif %} |
|||
</div> |
|||
|
|||
{% endfor %} |
|||
{% else %} |
|||
<h3>Nenhum documento encontrado com essas especificações</h3> |
|||
{% endif %} |
|||
</body> |
@ -1,35 +1,42 @@ |
|||
{% load common_tags %} |
|||
|
|||
{% if presenca_sessao or justificativa_ausencia %} |
|||
<fieldset> |
|||
{% if presenca_sessao %} |
|||
<legend>Lista de Presença na Sessão</legend> |
|||
<div class="row"> |
|||
{% for p in presenca_sessao %} |
|||
<div class="col-md-12">{{p.nome_parlamentar}} / {% if p|filiacao_data_filter:object.data_inicio %} {{ p|filiacao_data_filter:object.data_inicio }} {% else %} Sem partido {% endif %}</div> |
|||
{% endfor %} |
|||
</div> |
|||
<div class="row"> |
|||
{% for p in presenca_sessao %} |
|||
<div class="col-md-12">{{p.nome_parlamentar}} / {% if p|filiacao_data_filter:object.data_inicio %} {{ p|filiacao_data_filter:object.data_inicio }} {% else %} Sem partido {% endif %}</div> |
|||
{% endfor %} |
|||
</div> |
|||
</br></br></br> |
|||
<div class="row"> |
|||
{% endif %} |
|||
{% if justificativa_ausencia %} |
|||
<div class="row"> |
|||
<legend>Justificativas de Ausência na Sessão</legend> |
|||
<table class="table"> |
|||
<thead> |
|||
<tr> |
|||
<th>Parlamentar</th> |
|||
<th>Justificativa</th> |
|||
<th>Ausente em</th> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
{% for j in justificativa_ausencia %} |
|||
<tr> |
|||
<td> {{ j.parlamentar }} </td> |
|||
<td> {{ j.tipo_ausencia }} </td> |
|||
{% if j.ausencia == 1 %} |
|||
<td> Matéria </td> |
|||
{% else %} |
|||
<td> Sessão </td> |
|||
{% endif %} |
|||
{% endfor %} |
|||
</tbody> |
|||
</table> |
|||
</div> |
|||
<table class="table"> |
|||
<thead> |
|||
<tr> |
|||
<th>Parlamentar</th> |
|||
<th>Justificativa</th> |
|||
<th>Ausente em</th> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
{% for j in justificativa_ausencia %} |
|||
<tr> |
|||
<td> {{ j.parlamentar }} </td> |
|||
<td> {{ j.tipo_ausencia }} </td> |
|||
{% if j.ausencia == 1 %} |
|||
<td> Matéria </td> |
|||
{% else %} |
|||
<td> Sessão </td> |
|||
{% endif %} |
|||
{% endfor %} |
|||
</tbody> |
|||
</table> |
|||
</div> |
|||
{% endif %} |
|||
</fieldset> |
|||
<br /><br /><br /> |
|||
{% endif %} |
@ -1,6 +1,9 @@ |
|||
{% if object.ocorrenciasessao.conteudo %} |
|||
<fieldset> |
|||
<legend>Ocorrências da Sessão</legend> |
|||
<div style="border:0.5px solid #BAB4B1; border-radius: 10px; background-color: rgba(225, 225, 225, .8);"> |
|||
<p>{{object.ocorrenciasessao.conteudo|safe}}</p> |
|||
</div> |
|||
</fieldset> |
|||
</fieldset> |
|||
<br /><br /><br /> |
|||
{% endif %} |
@ -1,28 +1,31 @@ |
|||
{% if votos_nominais_materia_expediente %} |
|||
<fieldset> |
|||
<legend>Votações Nominais - Matérias do Expediente</legend> |
|||
</br> |
|||
<table class="table table-striped table-hover"> |
|||
<thead> |
|||
<legend>Votações Nominais - Matérias do Expediente</legend> |
|||
</br> |
|||
<table class="table table-striped table-hover"> |
|||
<thead> |
|||
<tr> |
|||
<th>Matéria</th> |
|||
<th>Votos</th> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
{% for m in votos_nominais_materia_expediente %} |
|||
<tr> |
|||
<th>Matéria</th> |
|||
<th>Votos</th> |
|||
<td>{{ m.titulo }}</td> |
|||
{% if m.votos %} |
|||
<td> |
|||
{% for v in m.votos %} |
|||
<li><b>{{v.parlamentar}}</b> - {{v.voto}}</li> |
|||
{% endfor %} |
|||
</td> |
|||
{% else %} |
|||
<td><b>Matéria não votada</b></td> |
|||
{% endif %} |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
{% for m in votos_nominais_materia_expediente %} |
|||
<tr> |
|||
<td>{{ m.titulo }}</td> |
|||
{% if m.votos %} |
|||
<td> |
|||
{% for v in m.votos %} |
|||
<li><b>{{v.parlamentar}}</b> - {{v.voto}}</li> |
|||
{% endfor %} |
|||
</td> |
|||
{% else %} |
|||
<td><b>Matéria não votada</b></td> |
|||
{% endif %} |
|||
</tr> |
|||
{% endfor %} |
|||
</tbody> |
|||
</table> |
|||
</fieldset> |
|||
{% endfor %} |
|||
</tbody> |
|||
</table> |
|||
</fieldset> |
|||
<br /><br /><br /> |
|||
{% endif %} |
@ -1,28 +1,31 @@ |
|||
{% if votos_nominais_materia_ordem_dia %} |
|||
<fieldset> |
|||
<legend>Votações Nominais - Matérias da Ordem do Dia</legend> |
|||
</br> |
|||
<table class="table table-striped table-hover"> |
|||
<thead> |
|||
<legend>Votações Nominais - Matérias da Ordem do Dia</legend> |
|||
</br> |
|||
<table class="table table-striped table-hover"> |
|||
<thead> |
|||
<tr> |
|||
<th>Matéria</th> |
|||
<th>Votos</th> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
{% for m in votos_nominais_materia_ordem_dia %} |
|||
<tr> |
|||
<th>Matéria</th> |
|||
<th>Votos</th> |
|||
<td>{{ m.titulo }}</td> |
|||
{% if m.votos %} |
|||
<td> |
|||
{% for v in m.votos %} |
|||
<li><b>{{v.parlamentar}}</b> - {{v.voto}}</li> |
|||
{% endfor %} |
|||
</td> |
|||
{% else %} |
|||
<td><b>Matéria não votada</b></td> |
|||
{% endif %} |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
{% for m in votos_nominais_materia_ordem_dia %} |
|||
<tr> |
|||
<td>{{ m.titulo }}</td> |
|||
{% if m.votos %} |
|||
<td> |
|||
{% for v in m.votos %} |
|||
<li><b>{{v.parlamentar}}</b> - {{v.voto}}</li> |
|||
{% endfor %} |
|||
</td> |
|||
{% else %} |
|||
<td><b>Matéria não votada</b></td> |
|||
{% endif %} |
|||
</tr> |
|||
{% endfor %} |
|||
</tbody> |
|||
</table> |
|||
</fieldset> |
|||
{% endfor %} |
|||
</tbody> |
|||
</table> |
|||
</fieldset> |
|||
<br /><br /><br /> |
|||
{% endif %} |
@ -0,0 +1,166 @@ |
|||
{% extends "crud/detail.html" %} |
|||
{% load i18n crispy_forms_tags %} |
|||
|
|||
{% block base_content %} |
|||
|
|||
{% if sessao_iniciada %} |
|||
<form method="POST" enctype="application/x-www-form-urlencoded" id="form" action="{% url 'sapl.sessao:votacaoblocosimb' pk %}"> |
|||
{% csrf_token %} |
|||
<br><br> |
|||
<table class="table table-striped table-bordered"> |
|||
<thead class="thead-default"> |
|||
<tr> |
|||
<td><h3>{% trans "Tipo de Votação" %}</h3></td> |
|||
</tr> |
|||
</thead> |
|||
<tr> |
|||
<td class="col-md-12"> |
|||
<fieldset id="tipo_votacao" name="tipo"> |
|||
<input type="radio" name="tipo_votacao" id="tipo_votacao_1" value="1" onchange="alteraTipoVotacao()" checked="checked"> <label for="tipo">Simbólica</label> |
|||
</br> |
|||
<input type="radio" name="tipo_votacao" id="tipo_votacao_2" value="2" onchange="alteraTipoVotacao()" > <label for="tipo">Nominal</label> |
|||
</br> |
|||
</fieldset> |
|||
</td> |
|||
</tr> |
|||
</table> |
|||
|
|||
<br> |
|||
|
|||
<h3 id='frase_selecione'>{% if expediente %} Selecione o(s) expediente(s) desejado(s). {% else %} Selecione a(s) ordem(s) do dia desejada(s). {% endif %}</h3> |
|||
|
|||
<table id='tab_mats' class="table table-striped table-bordered"> |
|||
<thead class="thead-default"> |
|||
<tr> |
|||
<td><h3> {% if expediente %} {% trans "Expediente" %} {% else %} {% trans "Ordem do Dia" %} {% endif %} </h3></td> |
|||
</tr> |
|||
</thead> |
|||
|
|||
<div class="checkbox" id="check_all"> |
|||
<label for="id_check_all"> |
|||
<input type="checkbox" id="id_check_all" onchange="checkAll(this)" /> Marcar/Desmarcar Todos |
|||
</label> |
|||
</div> |
|||
|
|||
{% for o in object_list %} |
|||
{% if o.tipo_votacao == 1 or o.tipo_votacao == 2 %} |
|||
<tr class="{% if o.tipo_votacao == 1 %}Simbolica{% else %}Nominal{% endif %}" {% if o.tipo_votacao == 2 %} style="display:none;" {% endif %}> |
|||
<td> |
|||
<input type="checkbox" name="marcadas_{{o.tipo_votacao}}" id="{{o.id}}" value="{{o.id}}" {% if check %} checked {% endif %}> |
|||
<strong><a href="{% url 'sapl.materia:materialegislativa_detail' o.materia.id %}">{{o.materia.tipo.sigla}} {{o.materia.numero}}/{{o.materia.ano}} - {{o.materia.tipo}}</strong></a></br> |
|||
{% if o.materia.numeracao_set.last %} |
|||
<strong>Processo:</strong> {{o.materia.numeracao_set.last}}</br> |
|||
{% endif %} |
|||
<strong>Autor:</strong> |
|||
{% for a in o.materia.autoria_set.all %} |
|||
{% if not forloop.first %} |
|||
, {{a.autor|default_if_none:""}} |
|||
{% else %} |
|||
{{a.autor|default_if_none:""}} |
|||
{% endif %} |
|||
{% endfor %} |
|||
</br> |
|||
{% if o.materia.numero_protocolo %} |
|||
<strong>Protocolo:</strong> {{o.materia.numero_protocolo}}</br> |
|||
{% endif %} |
|||
{% if o.materia.tramitacao_set.last %} |
|||
{% if o.materia.tramitacao_set.last.turno %} |
|||
<strong>Turno:</strong> |
|||
{% for t in turno_choices %} |
|||
{% if t.0 == o.materia.tramitacao_set.last.turno %} |
|||
{{ t.1 }} |
|||
{% endif %} |
|||
{% endfor %}</br> |
|||
{% endif %} |
|||
{% endif %} |
|||
<strong>Ementa:</strong> {{ o.materia.ementa|safe }}</br> |
|||
<p></p> |
|||
</td> |
|||
</tr> |
|||
{% endif %} |
|||
{% endfor %} |
|||
</table> |
|||
|
|||
|
|||
<table class="table table-striped table-bordered" style="display:none" id="nenhuma_mat"> |
|||
<tr> |
|||
<td> |
|||
<h3>{% if expediente %} Nenhuma matéria do expediente aberta. {% else %} Nenhuma matéria da ordem do dia aberta. {% endif %} </h3> |
|||
</td> |
|||
</tr> |
|||
</table> |
|||
{% if expediente %} |
|||
<a href="{% url 'sapl.sessao:expedientemateria_list' pk %}" class="btn btn-warning mb-3" id="but_cancel">Voltar</a> |
|||
<input type="hidden" id="origem" name="origem" value="expediente"> |
|||
{% else %} |
|||
<a href="{% url 'sapl.sessao:ordemdia_list' pk %}" class="btn btn-warning mb-3" id="but_cancel">Voltar</a> |
|||
<input type="hidden" id="origem" name="origem" value="ordem"> |
|||
{% endif %} |
|||
<input type="submit" value="Registrar votação" class="btn btn-primary mb-3 float-right" id="but_reg"> |
|||
</form> |
|||
{% endif %} |
|||
|
|||
{% endblock base_content %} |
|||
|
|||
{% block extra_js %} |
|||
<script> |
|||
$(document).ready(function(){ |
|||
checa_tipo_votacao(); |
|||
$('#tipo_votacao_1').prop('checked', true) |
|||
}); |
|||
|
|||
$(window).on('beforeunload', function () { |
|||
$("input[type=submit], input[type=button]").prop("disabled", "disabled"); |
|||
}); |
|||
</script> |
|||
|
|||
<script language="JavaScript"> |
|||
function checkAll(elem) { |
|||
let checkboxes = document.getElementsByName('marcadas_1'); |
|||
for (let i = 0; i < checkboxes.length; i++) { |
|||
if (checkboxes[i].type == 'checkbox') |
|||
checkboxes[i].checked = elem.checked; |
|||
} |
|||
|
|||
checkboxes = document.getElementsByName('marcadas_2'); |
|||
for (let i = 0; i < checkboxes.length; i++) { |
|||
if (checkboxes[i].type == 'checkbox') |
|||
checkboxes[i].checked = elem.checked; |
|||
} |
|||
} |
|||
|
|||
function alteraTipoVotacao() { |
|||
$(".Simbolica").toggle(); |
|||
$(".Nominal").toggle(); |
|||
|
|||
checa_tipo_votacao(); |
|||
} |
|||
|
|||
function checa_tipo_votacao(){ |
|||
tipo_votacao = document.querySelector('input[name="tipo_votacao"]:checked').value; |
|||
numero_marcadas = document.getElementsByName('marcadas_'+tipo_votacao).length; |
|||
|
|||
if(numero_marcadas == 0){ |
|||
document.getElementById('frase_selecione').style.display = 'none'; |
|||
document.getElementById('tab_mats').style.display = 'none'; |
|||
document.getElementById('check_all').style.display = 'none'; |
|||
document.getElementById('but_reg').style.display = 'none'; |
|||
document.getElementById('nenhuma_mat').style.display = ''; |
|||
} |
|||
else{ |
|||
document.getElementById('frase_selecione').style.display = ''; |
|||
document.getElementById('tab_mats').style.display = ''; |
|||
document.getElementById('check_all').style.display = ''; |
|||
document.getElementById('but_reg').style.display = ''; |
|||
document.getElementById('nenhuma_mat').style.display = 'none'; |
|||
} |
|||
|
|||
if(tipo_votacao == "1"){ |
|||
$('#form').attr("action", "{% url 'sapl.sessao:votacaoblocosimb' pk %}") |
|||
} |
|||
else{ |
|||
$('#form').attr("action", "{% url 'sapl.sessao:votacaobloconom' pk %}") |
|||
} |
|||
} |
|||
</script> |
|||
{% endblock extra_js%} |
@ -1,161 +0,0 @@ |
|||
{% extends "crud/detail.html" %} |
|||
{% load i18n crispy_forms_tags %} |
|||
|
|||
{% block base_content %} |
|||
|
|||
{% if sessao_iniciada %} |
|||
<form method="POST" enctype="application/x-www-form-urlencoded" id="form" action="{% url 'sapl.sessao:votacaoblocosimb' pk %}"> |
|||
{% csrf_token %} |
|||
<br><br> |
|||
<table class="table table-striped table-bordered"> |
|||
<thead class="thead-default"> |
|||
<tr> |
|||
<td><h3>{% trans "Tipo de Votação" %}</h3></td> |
|||
</tr> |
|||
</thead> |
|||
<tr> |
|||
<td class="col-md-12"> |
|||
<fieldset id="tipo_votacao" name="tipo"> |
|||
<input type="radio" name="tipo_votacao" id="tipo_votacao_1" value="1" onchange="alteraTipoVotacao()" checked="checked"> <label for="tipo">Simbólica</label> |
|||
</br> |
|||
<input type="radio" name="tipo_votacao" id="tipo_votacao_2" value="2" onchange="alteraTipoVotacao()" > <label for="tipo">Nominal</label> |
|||
</br> |
|||
</fieldset> |
|||
</td> |
|||
</tr> |
|||
</table> |
|||
|
|||
<br> |
|||
<h3 id='frase_selecione'>Selecione o(s) expediente(s) desejado(s).</h3> |
|||
<table id='tab_ordens' class="table table-striped table-bordered"> |
|||
<thead class="thead-default"> |
|||
<tr> |
|||
<td><h3>{% trans "Expediente" %}</h3></td> |
|||
</tr> |
|||
</thead> |
|||
|
|||
<div class="checkbox" id="check_all"> |
|||
<label for="id_check_all"> |
|||
<input type="checkbox" id="id_check_all" onchange="checkAll(this)" /> Marcar/Desmarcar Todos |
|||
</label> |
|||
</div> |
|||
|
|||
{% for o in expedientes %} |
|||
{% if o.tipo_votacao == 1 or o.tipo_votacao == 2 %} |
|||
<tr class="{% if o.tipo_votacao == 1 %}Simbolica{% else %}Nominal{% endif %}" {% if o.tipo_votacao == 2 %} style="display:none;" {% endif %}> |
|||
<td> |
|||
<input type="checkbox" name="marcadas_{{o.tipo_votacao}}" id="{{o.id}}" value="{{o.id}}" {% if check %} checked {% endif %}> |
|||
<strong><a href="{% url 'sapl.materia:materialegislativa_detail' o.id %}">{{o.materia.tipo.sigla}} {{o.materia.numero}}/{{o.materia.ano}} - {{o.materia.tipo}}</strong></a></br> |
|||
{% if o.materia.numeracao_set.last %} |
|||
<strong>Processo:</strong> {{o.materia.numeracao_set.last}}</br> |
|||
{% endif %} |
|||
<strong>Autor:</strong> |
|||
{% for a in o.materia.autoria_set.all %} |
|||
{% if not forloop.first %} |
|||
, {{a.autor|default_if_none:""}} |
|||
{% else %} |
|||
{{a.autor|default_if_none:""}} |
|||
{% endif %} |
|||
{% endfor %} |
|||
</br> |
|||
{% if o.materia.numero_protocolo %} |
|||
<strong>Protocolo:</strong> {{o.materia.numero_protocolo}}</br> |
|||
{% endif %} |
|||
{% if o.materia.tramitacao_set.last %} |
|||
{% if o.materia.tramitacao_set.last.turno %} |
|||
<strong>Turno:</strong> |
|||
{% for t in turno_choices %} |
|||
{% if t.0 == o.materia.tramitacao_set.last.turno %} |
|||
{{ t.1 }} |
|||
{% endif %} |
|||
{% endfor %}</br> |
|||
{% endif %} |
|||
{% endif %} |
|||
<strong>Ementa:</strong> {{ o.ementa|safe }}</br> |
|||
<p></p> |
|||
</td> |
|||
</tr> |
|||
{% endif %} |
|||
{% endfor %} |
|||
</table> |
|||
|
|||
<table class="table table-striped table-bordered" style="display:none" id="nenhum_exp"> |
|||
<tr> |
|||
<td> |
|||
<h3>Nenhuma matéria do expediente aberta.</h3> |
|||
</td> |
|||
</tr> |
|||
</table> |
|||
|
|||
<a href="{% url 'sapl.sessao:expedientemateria_list' pk %}" class="btn btn-warning mb-3" id="but_cancel">Voltar</a> |
|||
<input type="submit" value="Registrar votação" class="btn btn-primary mb-3 float-right" id="but_reg"> |
|||
|
|||
<input type="hidden" id="origem" name="origem" value="expediente"> |
|||
</form> |
|||
{% endif %} |
|||
|
|||
{% endblock base_content %} |
|||
|
|||
{% block extra_js %} |
|||
<script> |
|||
$(document).ready(function(){ |
|||
checa_tipo_votacao(); |
|||
$('#tipo_votacao_1').prop('checked', true) |
|||
}); |
|||
|
|||
$(window).on('beforeunload', function () { |
|||
$("input[type=submit], input[type=button]").prop("disabled", "disabled"); |
|||
}); |
|||
|
|||
</script> |
|||
|
|||
<script language="JavaScript"> |
|||
function checkAll(elem) { |
|||
let checkboxes = document.getElementsByName('marcadas_1'); |
|||
for (let i = 0; i < checkboxes.length; i++) { |
|||
if (checkboxes[i].type == 'checkbox') |
|||
checkboxes[i].checked = elem.checked; |
|||
} |
|||
|
|||
checkboxes = document.getElementsByName('marcadas_2'); |
|||
for (let i = 0; i < checkboxes.length; i++) { |
|||
if (checkboxes[i].type == 'checkbox') |
|||
checkboxes[i].checked = elem.checked; |
|||
} |
|||
} |
|||
|
|||
function alteraTipoVotacao() { |
|||
$(".Simbolica").toggle(); |
|||
$(".Nominal").toggle(); |
|||
|
|||
checa_tipo_votacao(); |
|||
} |
|||
|
|||
function checa_tipo_votacao(){ |
|||
tipo_votacao = document.querySelector('input[name="tipo_votacao"]:checked').value; |
|||
numero_ordens = document.getElementsByName('marcadas_'+tipo_votacao).length; |
|||
|
|||
if(numero_ordens == 0){ |
|||
document.getElementById('frase_selecione').style.display = 'none'; |
|||
document.getElementById('tab_ordens').style.display = 'none'; |
|||
document.getElementById('check_all').style.display = 'none'; |
|||
document.getElementById('but_reg').style.display = 'none'; |
|||
document.getElementById('nenhum_exp').style.display = ''; |
|||
} |
|||
else{ |
|||
document.getElementById('frase_selecione').style.display = ''; |
|||
document.getElementById('tab_ordens').style.display = ''; |
|||
document.getElementById('check_all').style.display = ''; |
|||
document.getElementById('but_reg').style.display = ''; |
|||
document.getElementById('nenhum_exp').style.display = 'none'; |
|||
} |
|||
|
|||
if(tipo_votacao == "1"){ |
|||
$('#form').attr("action", "{% url 'sapl.sessao:votacaoblocosimb' pk %}") |
|||
} |
|||
else{ |
|||
$('#form').attr("action", "{% url 'sapl.sessao:votacaobloconom' pk %}") |
|||
} |
|||
} |
|||
</script> |
|||
{% endblock extra_js%} |
@ -1,162 +0,0 @@ |
|||
{% extends "crud/detail.html" %} |
|||
{% load i18n crispy_forms_tags %} |
|||
|
|||
{% block base_content %} |
|||
|
|||
{% if sessao_iniciada %} |
|||
<form method="POST" enctype="application/x-www-form-urlencoded" id="form" action="{% url 'sapl.sessao:votacaoblocosimb' pk %}"> |
|||
{% csrf_token %} |
|||
<br><br> |
|||
<table class="table table-striped table-bordered"> |
|||
<thead class="thead-default"> |
|||
<tr> |
|||
<td><h3>{% trans "Tipo de Votação" %}</h3></td> |
|||
</tr> |
|||
</thead> |
|||
<tr> |
|||
<td class="col-md-12"> |
|||
<fieldset id="tipo_votacao" name="tipo"> |
|||
<input type="radio" name="tipo_votacao" id="tipo_votacao_1" value="1" onchange="alteraTipoVotacao()" checked="checked"> <label for="tipo">Simbólica</label> |
|||
</br> |
|||
<input type="radio" name="tipo_votacao" id="tipo_votacao_2" value="2" onchange="alteraTipoVotacao()" > <label for="tipo">Nominal</label> |
|||
</br> |
|||
</fieldset> |
|||
</td> |
|||
</tr> |
|||
</table> |
|||
|
|||
<br> |
|||
<h3 id='frase_selecione'>Selecione a(s) ordem(s) do dia desejada(s).</h3> |
|||
<table id='tab_ordens' class="table table-striped table-bordered"> |
|||
<thead class="thead-default"> |
|||
<tr> |
|||
<td><h3>{% trans "Ordem do dia" %}</h3></td> |
|||
</tr> |
|||
</thead> |
|||
|
|||
<div class="checkbox" id="check_all"> |
|||
<label for="id_check_all"> |
|||
<input type="checkbox" id="id_check_all" onchange="checkAll(this)" /> Marcar/Desmarcar Todos |
|||
</label> |
|||
</div> |
|||
|
|||
{% for o in ordem_dia %} |
|||
{% if o.tipo_votacao == 1 or o.tipo_votacao == 2 %} |
|||
<tr class="{% if o.tipo_votacao == 1 %}Simbolica{% else %}Nominal{% endif %}" {% if o.tipo_votacao == 2 %} style="display:none;" {% endif %}> |
|||
<td> |
|||
<input type="checkbox" name="marcadas_{{o.tipo_votacao}}" id="{{o.id}}" value="{{o.id}}" {% if check %} checked {% endif %}> |
|||
<strong><a href="{% url 'sapl.materia:materialegislativa_detail' o.id %}">{{o.materia.tipo.sigla}} {{o.materia.numero}}/{{o.materia.ano}} - {{o.materia.tipo}}</strong></a></br> |
|||
{% if o.materia.numeracao_set.last %} |
|||
<strong>Processo:</strong> {{o.materia.numeracao_set.last}}</br> |
|||
{% endif %} |
|||
<strong>Autor:</strong> |
|||
{% for a in o.materia.autoria_set.all %} |
|||
{% if not forloop.first %} |
|||
, {{a.autor|default_if_none:""}} |
|||
{% else %} |
|||
{{a.autor|default_if_none:""}} |
|||
{% endif %} |
|||
{% endfor %} |
|||
</br> |
|||
{% if o.materia.numero_protocolo %} |
|||
<strong>Protocolo:</strong> {{o.materia.numero_protocolo}}</br> |
|||
{% endif %} |
|||
{% if o.materia.tramitacao_set.last %} |
|||
{% if o.materia.tramitacao_set.last.turno %} |
|||
<strong>Turno:</strong> |
|||
{% for t in turno_choices %} |
|||
{% if t.0 == o.materia.tramitacao_set.last.turno %} |
|||
{{ t.1 }} |
|||
{% endif %} |
|||
{% endfor %}</br> |
|||
{% endif %} |
|||
{% endif %} |
|||
<strong>Ementa:</strong> {{ o.ementa|safe }}</br> |
|||
<p></p> |
|||
</td> |
|||
</tr> |
|||
{% endif %} |
|||
{% endfor %} |
|||
</table> |
|||
|
|||
<table class="table table-striped table-bordered" style="display:none" id="nenhuma_ordem"> |
|||
<tr> |
|||
<td> |
|||
<h3>Nenhuma ordem do dia aberta.</h3> |
|||
</td> |
|||
</tr> |
|||
</table> |
|||
|
|||
<a href="{% url 'sapl.sessao:ordemdia_list' pk %}" class="btn btn-warning mb-3" id="but_cancel">Voltar</a> |
|||
<input type="submit" value="Registrar votação" class="btn btn-primary mb-3 float-right" id="but_reg"> |
|||
|
|||
<input type="hidden" id="origem" name="origem" value="ordem"> |
|||
</form> |
|||
{% endif %} |
|||
|
|||
{% endblock base_content %} |
|||
|
|||
{% block extra_js %} |
|||
<script> |
|||
$(document).ready(function(){ |
|||
checa_tipo_votacao(); |
|||
$('#tipo_votacao_1').prop('checked', true) |
|||
}); |
|||
|
|||
$(window).on('beforeunload', function () { |
|||
$("input[type=submit], input[type=button]").prop("disabled", "disabled"); |
|||
}); |
|||
|
|||
</script> |
|||
|
|||
<script language="JavaScript"> |
|||
function checkAll(elem) { |
|||
let checkboxes = document.getElementsByName('marcadas_1'); |
|||
for (let i = 0; i < checkboxes.length; i++) { |
|||
if (checkboxes[i].type == 'checkbox') |
|||
checkboxes[i].checked = elem.checked; |
|||
} |
|||
|
|||
checkboxes = document.getElementsByName('marcadas_2'); |
|||
for (let i = 0; i < checkboxes.length; i++) { |
|||
if (checkboxes[i].type == 'checkbox') |
|||
checkboxes[i].checked = elem.checked; |
|||
} |
|||
} |
|||
|
|||
function alteraTipoVotacao() { |
|||
$(".Simbolica").toggle(); |
|||
$(".Nominal").toggle(); |
|||
|
|||
checa_tipo_votacao(); |
|||
} |
|||
|
|||
function checa_tipo_votacao(){ |
|||
tipo_votacao = document.querySelector('input[name="tipo_votacao"]:checked').value; |
|||
numero_ordens = document.getElementsByName('marcadas_'+tipo_votacao).length; |
|||
|
|||
if(numero_ordens == 0){ |
|||
document.getElementById('frase_selecione').style.display = 'none'; |
|||
document.getElementById('tab_ordens').style.display = 'none'; |
|||
document.getElementById('check_all').style.display = 'none'; |
|||
document.getElementById('but_reg').style.display = 'none'; |
|||
document.getElementById('nenhuma_ordem').style.display = ''; |
|||
} |
|||
else{ |
|||
document.getElementById('frase_selecione').style.display = ''; |
|||
document.getElementById('tab_ordens').style.display = ''; |
|||
document.getElementById('check_all').style.display = ''; |
|||
document.getElementById('but_reg').style.display = ''; |
|||
document.getElementById('nenhuma_ordem').style.display = 'none'; |
|||
} |
|||
|
|||
if(tipo_votacao == "1"){ |
|||
$('#form').attr("action", "{% url 'sapl.sessao:votacaoblocosimb' pk %}") |
|||
} |
|||
else{ |
|||
$('#form').attr("action", "{% url 'sapl.sessao:votacaobloconom' pk %}") |
|||
} |
|||
} |
|||
|
|||
</script> |
|||
{% endblock extra_js%} |
@ -1 +1 @@ |
|||
{"status":"done","publicPath":"/static/sapl/frontend/","chunks":{"chunk-vendors":[{"name":"css/chunk-vendors.3c9fe6b4.css","publicPath":"/static/sapl/frontend/css/chunk-vendors.3c9fe6b4.css","path":"../sapl/sapl/static/sapl/frontend/css/chunk-vendors.3c9fe6b4.css"},{"name":"js/chunk-vendors.0003dc37.js","publicPath":"/static/sapl/frontend/js/chunk-vendors.0003dc37.js","path":"../sapl/sapl/static/sapl/frontend/js/chunk-vendors.0003dc37.js"},{"name":"css/chunk-vendors.3c9fe6b4.css.map","publicPath":"/static/sapl/frontend/css/chunk-vendors.3c9fe6b4.css.map","path":"../sapl/sapl/static/sapl/frontend/css/chunk-vendors.3c9fe6b4.css.map"}],"compilacao":[{"name":"css/compilacao.1f5fb8cf.css","publicPath":"/static/sapl/frontend/css/compilacao.1f5fb8cf.css","path":"../sapl/sapl/static/sapl/frontend/css/compilacao.1f5fb8cf.css"},{"name":"js/compilacao.411d8643.js","publicPath":"/static/sapl/frontend/js/compilacao.411d8643.js","path":"../sapl/sapl/static/sapl/frontend/js/compilacao.411d8643.js"},{"name":"css/compilacao.1f5fb8cf.css.map","publicPath":"/static/sapl/frontend/css/compilacao.1f5fb8cf.css.map","path":"../sapl/sapl/static/sapl/frontend/css/compilacao.1f5fb8cf.css.map"}],"global":[{"name":"css/global.83a4a89d.css","publicPath":"/static/sapl/frontend/css/global.83a4a89d.css","path":"../sapl/sapl/static/sapl/frontend/css/global.83a4a89d.css"},{"name":"js/global.a87c35c2.js","publicPath":"/static/sapl/frontend/js/global.a87c35c2.js","path":"../sapl/sapl/static/sapl/frontend/js/global.a87c35c2.js"},{"name":"css/global.83a4a89d.css.map","publicPath":"/static/sapl/frontend/css/global.83a4a89d.css.map","path":"../sapl/sapl/static/sapl/frontend/css/global.83a4a89d.css.map"}],"painel":[{"name":"css/painel.baa845ab.css","publicPath":"/static/sapl/frontend/css/painel.baa845ab.css","path":"../sapl/sapl/static/sapl/frontend/css/painel.baa845ab.css"},{"name":"js/painel.de2ce2cd.js","publicPath":"/static/sapl/frontend/js/painel.de2ce2cd.js","path":"../sapl/sapl/static/sapl/frontend/js/painel.de2ce2cd.js"},{"name":"css/painel.baa845ab.css.map","publicPath":"/static/sapl/frontend/css/painel.baa845ab.css.map","path":"../sapl/sapl/static/sapl/frontend/css/painel.baa845ab.css.map"}]}} |
|||
{"status":"done","publicPath":"/static/sapl/frontend/","chunks":{"chunk-vendors":[{"name":"css/chunk-vendors.3c9fe6b4.css","publicPath":"/static/sapl/frontend/css/chunk-vendors.3c9fe6b4.css","path":"../sapl/sapl/static/sapl/frontend/css/chunk-vendors.3c9fe6b4.css"},{"name":"js/chunk-vendors.0003dc37.js","publicPath":"/static/sapl/frontend/js/chunk-vendors.0003dc37.js","path":"../sapl/sapl/static/sapl/frontend/js/chunk-vendors.0003dc37.js"},{"name":"css/chunk-vendors.3c9fe6b4.css.map","publicPath":"/static/sapl/frontend/css/chunk-vendors.3c9fe6b4.css.map","path":"../sapl/sapl/static/sapl/frontend/css/chunk-vendors.3c9fe6b4.css.map"}],"compilacao":[{"name":"css/compilacao.1f5fb8cf.css","publicPath":"/static/sapl/frontend/css/compilacao.1f5fb8cf.css","path":"../sapl/sapl/static/sapl/frontend/css/compilacao.1f5fb8cf.css"},{"name":"js/compilacao.7625546b.js","publicPath":"/static/sapl/frontend/js/compilacao.7625546b.js","path":"../sapl/sapl/static/sapl/frontend/js/compilacao.7625546b.js"},{"name":"css/compilacao.1f5fb8cf.css.map","publicPath":"/static/sapl/frontend/css/compilacao.1f5fb8cf.css.map","path":"../sapl/sapl/static/sapl/frontend/css/compilacao.1f5fb8cf.css.map"}],"global":[{"name":"css/global.d160bbe2.css","publicPath":"/static/sapl/frontend/css/global.d160bbe2.css","path":"../sapl/sapl/static/sapl/frontend/css/global.d160bbe2.css"},{"name":"js/global.522fd995.js","publicPath":"/static/sapl/frontend/js/global.522fd995.js","path":"../sapl/sapl/static/sapl/frontend/js/global.522fd995.js"},{"name":"css/global.d160bbe2.css.map","publicPath":"/static/sapl/frontend/css/global.d160bbe2.css.map","path":"../sapl/sapl/static/sapl/frontend/css/global.d160bbe2.css.map"}],"painel":[{"name":"css/painel.baa845ab.css","publicPath":"/static/sapl/frontend/css/painel.baa845ab.css","path":"../sapl/sapl/static/sapl/frontend/css/painel.baa845ab.css"},{"name":"js/painel.de2ce2cd.js","publicPath":"/static/sapl/frontend/js/painel.de2ce2cd.js","path":"../sapl/sapl/static/sapl/frontend/js/painel.de2ce2cd.js"},{"name":"css/painel.baa845ab.css.map","publicPath":"/static/sapl/frontend/css/painel.baa845ab.css.map","path":"../sapl/sapl/static/sapl/frontend/css/painel.baa845ab.css.map"}]}} |
Loading…
Reference in new issue