mirror of https://github.com/interlegis/sapl.git
72 changed files with 1830 additions and 206 deletions
@ -0,0 +1,42 @@ |
|||
from django.db.models.signals import post_delete, post_save |
|||
from django.dispatch import receiver |
|||
|
|||
from sapl.materia.models import Tramitacao |
|||
from sapl.protocoloadm.models import TramitacaoAdministrativo |
|||
from sapl.base.signals import tramitacao_signal |
|||
from sapl.utils import get_base_url |
|||
|
|||
from sapl.base.email_utils import do_envia_email_tramitacao |
|||
|
|||
|
|||
@receiver(tramitacao_signal) |
|||
def handle_tramitacao_signal(sender, **kwargs): |
|||
tramitacao = kwargs.get("post") |
|||
request = kwargs.get("request") |
|||
if 'protocoloadm' in str(sender): |
|||
doc_mat = tramitacao.documento |
|||
tipo = "documento" |
|||
elif 'materia' in str(sender): |
|||
tipo = "materia" |
|||
doc_mat = tramitacao.materia |
|||
|
|||
do_envia_email_tramitacao( |
|||
get_base_url(request), |
|||
tipo, |
|||
doc_mat, |
|||
tramitacao.status, |
|||
tramitacao.unidade_tramitacao_destino) |
|||
|
|||
|
|||
@receiver(post_delete) |
|||
def status_tramitacao_materia(sender, instance, **kwargs): |
|||
if isinstance(sender, TramitacaoAdministrativo): |
|||
if instance.status.indicador == 'F': |
|||
materia = instance.materia |
|||
materia.em_tramitacao = True |
|||
materia.save() |
|||
elif isinstance(sender, TramitacaoAdministrativo): |
|||
if instance.status.indicador == 'F': |
|||
documento = instance.documento |
|||
documento.tramitacao = True |
|||
documento.save() |
|||
@ -1,12 +1,12 @@ |
|||
from django.core.management.base import BaseCommand |
|||
|
|||
from sapl.legacy.scripts.ressucita_dependencias import adiciona_ressucitar |
|||
from sapl.legacy.scripts.ressuscita_dependencias import adiciona_ressuscitar |
|||
|
|||
|
|||
class Command(BaseCommand): |
|||
|
|||
help = 'Ressucita dependências apagadas ' \ |
|||
help = 'Ressuscita dependências apagadas ' \ |
|||
'que são necessárias para migrar outros registros' |
|||
|
|||
def handle(self, *args, **options): |
|||
adiciona_ressucitar() |
|||
adiciona_ressuscitar() |
|||
@ -0,0 +1,21 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2018-10-22 20:43 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('materia', '0031_auto_20180924_1724'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='autoria', |
|||
name='autor', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='base.Autor', verbose_name='Autor'), |
|||
), |
|||
] |
|||
@ -1,29 +0,0 @@ |
|||
from django.db.models.signals import post_delete, post_save |
|||
from django.dispatch import receiver |
|||
|
|||
from sapl.materia.models import Tramitacao |
|||
from sapl.materia.signals import tramitacao_signal |
|||
from sapl.utils import get_base_url |
|||
|
|||
from .email_utils import do_envia_email_tramitacao |
|||
|
|||
|
|||
@receiver(tramitacao_signal) |
|||
def handle_tramitacao_signal(sender, **kwargs): |
|||
tramitacao = kwargs.get("post") |
|||
request = kwargs.get("request") |
|||
materia = tramitacao.materia |
|||
|
|||
do_envia_email_tramitacao( |
|||
get_base_url(request), |
|||
materia, |
|||
tramitacao.status, |
|||
tramitacao.unidade_tramitacao_destino) |
|||
|
|||
|
|||
@receiver(post_delete, sender=Tramitacao) |
|||
def status_tramitacao_materia(sender, instance, **kwargs): |
|||
if instance.status.indicador == 'F': |
|||
materia = instance.materia |
|||
materia.em_tramitacao = True |
|||
materia.save() |
|||
@ -0,0 +1,40 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2018-10-08 19:55 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('base', '0021_appconfig_esfera_federacao'), |
|||
('norma', '0013_anexonormajuridica_assunto_anexo'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.CreateModel( |
|||
name='AutoriaNorma', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('primeiro_autor', models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Primeiro Autor')), |
|||
('autor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='base.Autor', verbose_name='Autor')), |
|||
('norma', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='norma.NormaJuridica', verbose_name='Matéria Legislativa')), |
|||
], |
|||
options={ |
|||
'ordering': ('-primeiro_autor', 'autor__nome'), |
|||
'verbose_name': 'Autoria', |
|||
'verbose_name_plural': 'Autorias', |
|||
}, |
|||
), |
|||
migrations.AddField( |
|||
model_name='normajuridica', |
|||
name='autores', |
|||
field=models.ManyToManyField(through='norma.AutoriaNorma', to='base.Autor'), |
|||
), |
|||
migrations.AlterUniqueTogether( |
|||
name='autorianorma', |
|||
unique_together=set([('autor', 'norma')]), |
|||
), |
|||
] |
|||
@ -0,0 +1,32 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2018-09-27 15:24 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('protocoloadm', '0007_auto_20180924_1724'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.CreateModel( |
|||
name='AcompanhamentoDocumento', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('usuario', models.CharField(max_length=50)), |
|||
('email', models.EmailField(max_length=100, verbose_name='E-mail')), |
|||
('data_cadastro', models.DateField(auto_now_add=True)), |
|||
('hash', models.CharField(max_length=8)), |
|||
('confirmado', models.BooleanField(default=False)), |
|||
('documento', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='protocoloadm.DocumentoAdministrativo')), |
|||
], |
|||
options={ |
|||
'verbose_name_plural': 'Acompanhamentos de Documento', |
|||
'verbose_name': 'Acompanhamento de Documento', |
|||
}, |
|||
), |
|||
] |
|||
@ -0,0 +1,20 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2018-10-09 20:41 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('protocoloadm', '0007_auto_20180924_1724'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='protocolo', |
|||
name='interessado', |
|||
field=models.CharField(blank=True, max_length=200, verbose_name='Interessado'), |
|||
), |
|||
] |
|||
@ -0,0 +1,16 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2018-10-10 11:10 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('protocoloadm', '0008_acompanhamentodocumento'), |
|||
('protocoloadm', '0008_auto_20181009_1741'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
|||
@ -0,0 +1,65 @@ |
|||
from django.core import mail |
|||
|
|||
from sapl.base.email_utils import enviar_emails, load_email_templates |
|||
|
|||
|
|||
def test_email_template_loading(): |
|||
expected = "<html><body>Hello Django</body></html>" |
|||
emails = load_email_templates(['email/test_tramitacao.html'], |
|||
context={"name": "Django"}) |
|||
|
|||
# strip \n and \r to compare with expected |
|||
actual = emails[0].replace('\n', '').replace('\r', '') |
|||
|
|||
assert actual == expected |
|||
|
|||
|
|||
def test_html_email_body_with_materia(): |
|||
templates = load_email_templates(['email/tramitacao.txt', |
|||
'email/tramitacao.html'], |
|||
{"image": 'img/logo.png', |
|||
"casa_legislativa": |
|||
"Assembléia Parlamentar", |
|||
"data_registro": "25/02/2016", |
|||
"cod_materia": "1", |
|||
"descricao_materia": "Assunto de teste", |
|||
"data": "25/02/2016", |
|||
"status": "Arquivado", |
|||
"texto_acao": "Deliberado", |
|||
"hash_txt": "abc01f", |
|||
"materia_id": "794", |
|||
"base_url": "http://localhost:8000", |
|||
"materia_url": |
|||
"/docadm/764/acompanhar-documento", |
|||
"excluir_url": |
|||
"/docadm/764/acompanhar-excluir"}) |
|||
|
|||
assert len(templates) == 2 |
|||
|
|||
|
|||
def test_enviar_email_distintos(): |
|||
NUM_MESSAGES = 10 |
|||
messages = [{'recipient': 'user-' + str(i) + '@test.com', |
|||
'subject': 'subject: ' + str(i), |
|||
'txt_message': 'txt: ' + str(i), |
|||
'html_message': '<html></html>', |
|||
} for i in range(NUM_MESSAGES)] |
|||
|
|||
recipients = [m['recipient'] for m in messages] |
|||
|
|||
enviar_emails('test@sapl.com', recipients, messages) |
|||
assert len(mail.outbox) == NUM_MESSAGES |
|||
|
|||
|
|||
def test_enviar_same_email(): |
|||
NUM_MESSAGES = 10 |
|||
messages = [{'recipient': 'user-' + str(i) + '@test.com', |
|||
'subject': 'subject: ' + str(i), |
|||
'txt_message': 'txt: ' + str(i), |
|||
'html_message': '<html></html>', |
|||
} for i in range(NUM_MESSAGES)] |
|||
|
|||
recipients = [m['recipient'] for m in messages] |
|||
|
|||
enviar_emails('test@sapl.com', recipients, [messages[0]]) |
|||
assert len(mail.outbox) == 1 |
|||
@ -0,0 +1,28 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.7 on 2018-09-18 13:44 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('sessao', '0023_auto_20180914_1315'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.CreateModel( |
|||
name='OcorrenciaSessao', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('conteudo', models.TextField(blank=True, verbose_name='Ocorrências da Sessão Plenária')), |
|||
('sessao_plenaria', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='sessao.SessaoPlenaria')), |
|||
], |
|||
options={ |
|||
'verbose_name_plural': 'Ocorrências da Sessão Plenaria', |
|||
'verbose_name': 'Ocorrência da Sessão Plenaria', |
|||
}, |
|||
), |
|||
] |
|||
@ -0,0 +1,21 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2018-09-19 14:16 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('sessao', '0024_ocorrenciasessao'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='ocorrenciasessao', |
|||
name='sessao_plenaria', |
|||
field=models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='sessao.SessaoPlenaria'), |
|||
), |
|||
] |
|||
@ -0,0 +1,66 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2018-10-16 22:44 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('sessao', '0025_auto_20180919_1116'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='expedientesessao', |
|||
name='sessao_plenaria', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sessao.SessaoPlenaria'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='integrantemesa', |
|||
name='sessao_plenaria', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sessao.SessaoPlenaria'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='orador', |
|||
name='sessao_plenaria', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sessao.SessaoPlenaria'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='oradorexpediente', |
|||
name='sessao_plenaria', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sessao.SessaoPlenaria'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='presencaordemdia', |
|||
name='sessao_plenaria', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sessao.SessaoPlenaria'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='registrovotacao', |
|||
name='expediente', |
|||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='sessao.ExpedienteMateria'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='registrovotacao', |
|||
name='materia', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='materia.MateriaLegislativa'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='registrovotacao', |
|||
name='ordem', |
|||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='sessao.OrdemDia'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='sessaoplenaria', |
|||
name='sessao_legislativa', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='parlamentares.SessaoLegislativa', verbose_name='Sessão Legislativa'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='sessaoplenariapresenca', |
|||
name='sessao_plenaria', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sessao.SessaoPlenaria'), |
|||
), |
|||
] |
|||
@ -0,0 +1,171 @@ |
|||
{% load i18n staticfiles sass_tags menus %} |
|||
{% load common_tags %} |
|||
<!DOCTYPE html> |
|||
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]--> |
|||
<!--[if gt IE 8]><!--> |
|||
<html class="no-js" lang="pt-br"> |
|||
<!--<![endif]--> |
|||
|
|||
<head> |
|||
<meta charset="utf-8"> |
|||
<title>{% block head_title %}{% trans 'SAPL - Sistema de Apoio ao Processo Legislativo' %}{% endblock %}</title> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|||
{% block head_content %} |
|||
<link rel="icon" href="{% static 'img/favicon.ico' %}" type="image/png" > |
|||
|
|||
{# Styles #} |
|||
<link rel="stylesheet" href="{% static 'components-font-awesome/css/font-awesome.css' %}"> |
|||
<link rel="stylesheet" href="{% sass_src 'bootstrap-sass/assets/stylesheets/_bootstrap.scss' %}" type="text/css"> |
|||
<link rel="stylesheet" href="{% static 'drunken-parrot-flat-ui/css/drunken-parrot.css' %}"> |
|||
<link rel="stylesheet" href="{% sass_src 'styles/app.scss' %}" type="text/css"> |
|||
|
|||
<link rel="stylesheet" href="{% static 'jquery-ui/themes/cupertino/jquery-ui.min.css' %}"> |
|||
<script type="text/javascript" src="{% static 'jquery/dist/jquery.min.js' %}"></script> |
|||
|
|||
{# Scripts #} |
|||
{# modernizr must be in head (see http://modernizr.com/docs/#installing) #} |
|||
{% endblock %} |
|||
</head> |
|||
|
|||
<body> |
|||
<div class="page fadein"> |
|||
|
|||
{% if not request|has_iframe %} |
|||
{% block navigation %} |
|||
<nav class="navbar navbar-inverse navbar-static-top"> |
|||
<div class="container"> |
|||
<div class="navbar-header"> |
|||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> |
|||
<span class="sr-only">Toggle navigation</span> |
|||
<span class="icon-bar"></span> |
|||
<span class="icon-bar"></span> |
|||
<span class="icon-bar"></span> |
|||
</button> |
|||
</div> |
|||
<div id="navbar" class="navbar-collapse collapse"> |
|||
|
|||
</div><!--/.nav-collapse --> |
|||
</div> |
|||
</nav> |
|||
{% endblock navigation %} |
|||
|
|||
{# Header #} |
|||
{% block main_header %} |
|||
<header class="masthead"> |
|||
<div class="container"> |
|||
<div class="navbar-header"> |
|||
<a class="navbar-brand" href="/"> |
|||
<img src="{% if logotipo %}{{ MEDIA_URL }}{{ logotipo }}{% else %}{% static 'img/logo.png' %}{% endif %}" |
|||
alt="Logo" class="img-responsive visible-md-inline-block visible-lg-inline-block" > |
|||
<span class="vcenter"> |
|||
{# XXX Make better use of translation tags in html blocks ie. actually use the proper blocktrans tag efficiently #} |
|||
|
|||
<br/><small>{% trans 'Sistema de Apoio ao Processo Legislativo' %}</small> |
|||
</span> |
|||
</a> |
|||
</div> |
|||
<div class="hidden-print"> |
|||
{% block sections_nav %} {% subnav %} {% endblock sections_nav %} |
|||
</div> |
|||
</div> |
|||
</header> |
|||
{% endblock main_header %} |
|||
{% else %} |
|||
<div class="btn-cancel-iframe"> |
|||
<a href="?iframe=0" target="_blank"><i class="fa fa-2x fa-arrows-alt"></i></a> |
|||
</div> |
|||
<header class="masthead"> |
|||
<div class="container"> |
|||
<div class="hidden-print"> |
|||
{% subnav %} |
|||
</div> |
|||
</div> |
|||
</header> |
|||
{% endif %} |
|||
<div class="container"> |
|||
<span class="text-center"> |
|||
<br/><h1><big>{% trans 'Página não encontrada! Erro 404' %}</big></h1> |
|||
</span> |
|||
</div> |
|||
{% block base_content %} |
|||
{% endblock %} |
|||
{% if not request|has_iframe %} |
|||
{% block footer_container %} |
|||
<footer id="footer" class="footer page__row hidden-print"> |
|||
<div class="container"> |
|||
|
|||
<div class="row"> |
|||
<div class="col-md-4"> |
|||
|
|||
<a class="footer__logo" href="#"> |
|||
<a href="http://www.interlegis.leg.br/"> |
|||
<img src="{% static 'img/logo_interlegis.png' %}" alt="{% trans 'Logo do Interlegis' %} "> |
|||
</a> |
|||
</a> |
|||
<p> |
|||
<small> |
|||
Desenvolvido pelo <a href="http://www.interlegis.leg.br/">Interlegis</a> em software livre e aberto. |
|||
</small> |
|||
</p> |
|||
</div> |
|||
<div class="col-md-4"> |
|||
<a class="footer__logo" href="#"> |
|||
<img src="{% static 'img/logo_cc.png' %}" alt="{% trans 'Logo do Creative Commons BY SA' %}"> |
|||
</a> |
|||
<p> |
|||
<small> |
|||
Conteúdo e dados sob licença <a href="https://creativecommons.org">Creative Commons</a> 4.0 <a href="https://creativecommons.org/licenses/by/4.0/">Atribuir Fonte - Compartilhar Igual</a> |
|||
</small> |
|||
</p> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</footer> |
|||
</div> |
|||
{% endblock footer_container %} |
|||
{% endif %} |
|||
|
|||
{% block foot_js %} |
|||
<!-- Bootstrap core JavaScript ================================================== --> |
|||
<!-- Placed at the end of the document so the pages load faster --> |
|||
<script type="text/javascript" src="{% static 'bootstrap-sass/assets/javascripts/bootstrap.min.js' %}"></script> |
|||
|
|||
<script type="text/javascript" src="{% static 'jquery-ui/jquery-ui.min.js' %}"></script> |
|||
<script type="text/javascript" src="{% static 'jquery-ui/ui/i18n/datepicker-pt-BR.js' %}"></script> |
|||
|
|||
<script type="text/javascript" src="{% static 'js/jquery.runner.js' %}"></script> |
|||
<script type="text/javascript" src="{% static 'jquery-mask-plugin/dist/jquery.mask.js' %}"></script> |
|||
|
|||
<script src="{% static 'tinymce/tinymce.min.js' %}"></script> |
|||
<script type="text/javascript" src="{% static 'jsdiff/diff.min.js' %}"></script> |
|||
|
|||
<script type="text/javascript" src="{% static 'drunken-parrot-flat-ui/js/checkbox.js' %}"></script> |
|||
<script type="text/javascript" src="{% static 'drunken-parrot-flat-ui/js/radio.js' %}"></script> |
|||
|
|||
<script type="text/javascript" src="{% static 'js/app.js' %}"></script> |
|||
|
|||
<script type="text/javascript" src="{% static 'jquery-query-object/jquery.query-object.js' %}"></script> |
|||
|
|||
{% block extra_js %}{% endblock %} |
|||
|
|||
<script type="text/javascript" > |
|||
|
|||
|
|||
function inIframe () { |
|||
try { |
|||
return window.self !== window.top; |
|||
} catch (e) { |
|||
return true; |
|||
} |
|||
} |
|||
$(document).ready(function(){ |
|||
let iframe_set_backend = {{ request|has_iframe|lower }} |
|||
if (iframe_set_backend && !inIframe() ) { |
|||
location.href = location.origin + '?iframe=0' |
|||
} |
|||
}); |
|||
</script> |
|||
|
|||
{% endblock foot_js %} |
|||
</body> |
|||
</html> |
|||
@ -0,0 +1,135 @@ |
|||
{% load i18n staticfiles sass_tags menus %} |
|||
{% load common_tags %} |
|||
<!DOCTYPE html> |
|||
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]--> |
|||
<!--[if gt IE 8]><!--> |
|||
<html class="no-js" lang="pt-br"> |
|||
<!--<![endif]--> |
|||
|
|||
<head> |
|||
<meta charset="utf-8"> |
|||
<title>{% block head_title %}{% trans 'SAPL - Sistema de Apoio ao Processo Legislativo' %}{% endblock %}</title> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|||
{% block head_content %} |
|||
<link rel="icon" href="{% static 'img/favicon.ico' %}" type="image/png" > |
|||
|
|||
{# Styles #} |
|||
<link rel="stylesheet" href="{% static 'components-font-awesome/css/font-awesome.css' %}"> |
|||
<link rel="stylesheet" href="{% sass_src 'bootstrap-sass/assets/stylesheets/_bootstrap.scss' %}" type="text/css"> |
|||
<link rel="stylesheet" href="{% static 'drunken-parrot-flat-ui/css/drunken-parrot.css' %}"> |
|||
<link rel="stylesheet" href="{% sass_src 'styles/app.scss' %}" type="text/css"> |
|||
|
|||
<link rel="stylesheet" href="{% static 'jquery-ui/themes/cupertino/jquery-ui.min.css' %}"> |
|||
<script type="text/javascript" src="{% static 'jquery/dist/jquery.min.js' %}"></script> |
|||
|
|||
{# Scripts #} |
|||
{# modernizr must be in head (see http://modernizr.com/docs/#installing) #} |
|||
{% endblock %} |
|||
</head> |
|||
|
|||
<body> |
|||
<div class="page fadein"> |
|||
|
|||
{% block navigation %} |
|||
<nav class="navbar navbar-inverse navbar-static-top"> |
|||
<div class="container"> |
|||
<div class="navbar-header"> |
|||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> |
|||
<span class="sr-only">Toggle navigation</span> |
|||
<span class="icon-bar"></span> |
|||
<span class="icon-bar"></span> |
|||
<span class="icon-bar"></span> |
|||
</button> |
|||
</div> |
|||
<div id="navbar" class="navbar-collapse collapse"> |
|||
|
|||
</div><!--/.nav-collapse --> |
|||
</div> |
|||
</nav> |
|||
{% endblock navigation %} |
|||
|
|||
{# Header #} |
|||
{% block main_header %} |
|||
<header class="masthead"> |
|||
<div class="container"> |
|||
<div class="navbar-header"> |
|||
<a class="navbar-brand" href="/"> |
|||
<span class="text-center"> |
|||
<br/><small>{% trans 'Sistema de Apoio ao Processo Legislativo' %}</small> |
|||
</span> |
|||
</a> |
|||
</div> |
|||
<div class="hidden-print"> |
|||
{% block sections_nav %} {% subnav %} {% endblock sections_nav %} |
|||
</div> |
|||
</div> |
|||
</header> |
|||
{% endblock main_header %} |
|||
|
|||
<div class="container"> |
|||
<span class="text-center"> |
|||
<br/><h1><big>{% trans 'Ocorreu um erro inesperado! Erro 500' %}</big></h1> |
|||
</span> |
|||
</div> |
|||
{% block base_content %} |
|||
{% endblock %} |
|||
{% block footer_container %} |
|||
<footer id="footer" class="footer page__row hidden-print"> |
|||
<div class="container"> |
|||
|
|||
<div class="row"> |
|||
<div class="col-md-4"> |
|||
|
|||
<a class="footer__logo" href="#"> |
|||
<a href="http://www.interlegis.leg.br/"> |
|||
<img src="{% static 'img/logo_interlegis.png' %}" alt="{% trans 'Logo do Interlegis' %} "> |
|||
</a> |
|||
</a> |
|||
<p> |
|||
<small> |
|||
Desenvolvido pelo <a href="http://www.interlegis.leg.br/">Interlegis</a> em software livre e aberto. |
|||
</small> |
|||
</p> |
|||
</div> |
|||
<div class="col-md-4"> |
|||
<a class="footer__logo" href="#"> |
|||
<img src="{% static 'img/logo_cc.png' %}" alt="{% trans 'Logo do Creative Commons BY SA' %}"> |
|||
</a> |
|||
<p> |
|||
<small> |
|||
Conteúdo e dados sob licença <a href="https://creativecommons.org">Creative Commons</a> 4.0 <a href="https://creativecommons.org/licenses/by/4.0/">Atribuir Fonte - Compartilhar Igual</a> |
|||
</small> |
|||
</p> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</footer> |
|||
</div> |
|||
{% endblock footer_container %} |
|||
|
|||
{% block foot_js %} |
|||
<!-- Bootstrap core JavaScript ================================================== --> |
|||
<!-- Placed at the end of the document so the pages load faster --> |
|||
<script type="text/javascript" src="{% static 'bootstrap-sass/assets/javascripts/bootstrap.min.js' %}"></script> |
|||
|
|||
<script type="text/javascript" src="{% static 'jquery-ui/jquery-ui.min.js' %}"></script> |
|||
<script type="text/javascript" src="{% static 'jquery-ui/ui/i18n/datepicker-pt-BR.js' %}"></script> |
|||
|
|||
<script type="text/javascript" src="{% static 'js/jquery.runner.js' %}"></script> |
|||
<script type="text/javascript" src="{% static 'jquery-mask-plugin/dist/jquery.mask.js' %}"></script> |
|||
|
|||
<script src="{% static 'tinymce/tinymce.min.js' %}"></script> |
|||
<script type="text/javascript" src="{% static 'jsdiff/diff.min.js' %}"></script> |
|||
|
|||
<script type="text/javascript" src="{% static 'drunken-parrot-flat-ui/js/checkbox.js' %}"></script> |
|||
<script type="text/javascript" src="{% static 'drunken-parrot-flat-ui/js/radio.js' %}"></script> |
|||
|
|||
<script type="text/javascript" src="{% static 'js/app.js' %}"></script> |
|||
|
|||
<script type="text/javascript" src="{% static 'jquery-query-object/jquery.query-object.js' %}"></script> |
|||
|
|||
{% block extra_js %}{% endblock %} |
|||
|
|||
{% endblock foot_js %} |
|||
</body> |
|||
</html> |
|||
@ -0,0 +1,10 @@ |
|||
{% load i18n compilacao_filters %} |
|||
|
|||
{% for message in messages %} |
|||
<div class="alert alert-{% if message.tags == 'error' %}danger{% else %}{{ message.tags }}{% endif %} alert-dismissible fade in" role="alert"> |
|||
<button type="button" class="close" data-dismiss="alert" aria-label="Close"> |
|||
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span> |
|||
</button> |
|||
{{ message|safe }} |
|||
</div> |
|||
{% endfor %} |
|||
@ -0,0 +1,25 @@ |
|||
{% load i18n %} |
|||
{% load static %} |
|||
<html><head></head><body bgcolor='#ffffff'> |
|||
|
|||
<h2 align='center'><b>{{casa_legislativa}}</b> |
|||
<br/> |
|||
Sistema de Apoio ao Processo Legislativo |
|||
</h2> |
|||
|
|||
<p>Registramos seu pedido para acompanhamento por e-mail do documento administrativo identificado a seguir:</p> |
|||
<a href="{{base_url}}{{documento_url}}">{{documento}}<b> - {{descricao_documento}}</b></a><br/> |
|||
{{assunto}}<br/> |
|||
</h4> |
|||
<p></p> |
|||
<p>Para garantia de sua privacidade, solicitamos que ative o recebimento das futuras mensagens clicando no link:</p> |
|||
|
|||
<h4> |
|||
<a href="{{base_url}}{{confirmacao_url}}?hash_txt={{hash_txt}}">{{base_url}}{{confirmacao_url}}?hash_txt={{hash_txt}}</a> |
|||
</h4> |
|||
<br/> |
|||
<hr> |
|||
<p>Caso não tenha realizado o cadastramento em nosso sistema, favor desconsiderar a presente mensagem<br/> |
|||
Esta é uma mensagem automática. Por favor, não responda.</p> |
|||
</body> |
|||
</html> |
|||
@ -0,0 +1,16 @@ |
|||
{{casa_legislativa}} |
|||
|
|||
Sistema de Apoio ao Processo Legislativo |
|||
|
|||
>Registramos seu pedido para acompanhamento por e-mail do documento administrativo identificado a seguir: |
|||
|
|||
{{base_url}}{{documento_url}} - {{documento}} - {{descricao_documento}} |
|||
|
|||
{{assunto}} |
|||
|
|||
Para garantia de sua privacidade, solicitamos que ative o recebimento das futuras mensagens acessando no link: |
|||
|
|||
{{base_url}}{{url_confirmar}}?hash_txt={{hash_txt}} |
|||
|
|||
Caso não tenha realizado o cadastramento em nosso sistema, favor desconsiderar a presente mensagem |
|||
Esta é uma mensagem automática. Por favor, não responda. |
|||
@ -0,0 +1,47 @@ |
|||
{% extends "crud/form.html" %} |
|||
{% load i18n %} |
|||
{% load crispy_forms_tags %} |
|||
{% load common_tags %} |
|||
|
|||
{% block extra_js %} |
|||
<script language="Javascript"> |
|||
|
|||
function compare(a, b) { |
|||
if (a.text < b.text) |
|||
return -1; |
|||
if (a.text > b.text) |
|||
return 1; |
|||
return 0; |
|||
} |
|||
|
|||
$(document).ready(function() { |
|||
$("#id_tipo_autor").change(function() { |
|||
var tipo_selecionado = $("#id_tipo_autor").val(); |
|||
var autor_selecionado = $("#id_autor").val(); |
|||
$("#id_autor option").remove() |
|||
if (tipo_selecionado !== undefined && tipo_selecionado !== null) { |
|||
var json_data = { |
|||
tipo : tipo_selecionado, |
|||
data_relativa : $("#id_data_relativa").val() |
|||
} |
|||
$.getJSON("/api/autor/possiveis", json_data, function(data){ |
|||
if (data) { |
|||
var results = data.sort(compare); |
|||
if (results.length > 1) { |
|||
$("#id_autor").append("<option>-----</option>"); |
|||
} |
|||
$.each(results, function(idx, obj) { |
|||
$("#id_autor") |
|||
.append($("<option></option>") |
|||
.attr("value", obj.value) |
|||
.text(obj.text)); |
|||
}); |
|||
$("#id_autor").val(autor_selecionado); |
|||
} |
|||
}); |
|||
} |
|||
}); |
|||
$("#id_tipo_autor").trigger('change'); |
|||
}); |
|||
</script> |
|||
{% endblock %} |
|||
@ -0,0 +1,21 @@ |
|||
{% extends "crud/detail.html" %} |
|||
{% load i18n %} |
|||
{% load crispy_forms_tags %} |
|||
{% block actions %} {% endblock %} |
|||
{% block detail_content %} |
|||
|
|||
<h1>Acompanhamento de Documento</h1> |
|||
<hr> |
|||
<div class="row"> |
|||
<div class="col-md-4"><b>Tipo:</b> {{documento.tipo.sigla}} - {{documento.tipo.descricao}}</div> |
|||
<div class="col-md-4"><b>Número:</b> {{documento.numero}}</div> |
|||
<div class="col-md-4"><b>Ano:</b> {{documento.ano}}</div> |
|||
|
|||
</div> |
|||
<div class="row"> |
|||
<div class="col-md-12"><b>Assunto:</b> {{documento.assunto|safe}}</div> |
|||
</div> |
|||
|
|||
{% if error %} <h5 align="center"><font color="#FF0000">{{ error }}</font></h5> {% endif %} |
|||
{% crispy form %} |
|||
{% endblock %} |
|||
@ -0,0 +1,6 @@ |
|||
<fieldset> |
|||
<p align="justify"> |
|||
<strong>Ocorrências da Sessão: </strong> |
|||
{{object.ocorrenciasessao.conteudo|striptags|safe}} |
|||
</p> |
|||
</fieldset> |
|||
@ -0,0 +1,6 @@ |
|||
<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> |
|||
@ -0,0 +1,32 @@ |
|||
{% extends "crud/detail.html" %} |
|||
{% load i18n %} |
|||
{% load crispy_forms_tags %} |
|||
{% load common_tags %} |
|||
|
|||
{% block actions %}{% endblock %} |
|||
|
|||
{% block title %}<font size="6" face="SourceSansProSemiBold" color="#364347" >Ocorrências da Sessão </font> <b><small><font face="SourceSansProSemiBold" size="5" color="#93a4aa"> ({{ object }}) </font> </small></b>{% endblock %} |
|||
|
|||
{% block detail_content %} |
|||
{% if perms|get_add_perm:view %} |
|||
<form method="post" accept-charset="ISO-8859-1"> |
|||
{% csrf_token %} |
|||
<fieldset class="form-group"> |
|||
<textarea rows="5" cols="50" name="conteudo" id="conteudo">{{object.ocorrenciasessao.conteudo}}</textarea> |
|||
</fieldset> |
|||
<input type="submit" name="save" value="Salvar" class="btn btn-primary"/> |
|||
<input type="submit" name="delete" value="Apagar" class="btn btn-danger" /> |
|||
</form> |
|||
{% else %} |
|||
{{object.ocorrenciasessao.conteudo|safe}} |
|||
{% endif %} |
|||
{% endblock detail_content %} |
|||
|
|||
<!-- Texto RICO --> |
|||
{% block extra_js %} |
|||
{% if perms|get_add_perm:view %} |
|||
<script language="JavaScript"> |
|||
initTinymce(null); |
|||
</script> |
|||
{% endif %} |
|||
{% endblock %} |
|||
Loading…
Reference in new issue