mirror of https://github.com/interlegis/sapl.git
92 changed files with 2519 additions and 954 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() |
|||
@ -0,0 +1,25 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.10.8 on 2018-09-24 20:24 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('comissoes', '0017_auto_20180717_0827'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='cargocomissao', |
|||
name='unico', |
|||
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=True, verbose_name='Único'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='comissao', |
|||
name='unidade_deliberativa', |
|||
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Unidade Deliberativa'), |
|||
), |
|||
] |
|||
@ -0,0 +1,20 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.10.8 on 2018-09-24 20:24 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('compilacao', '0007_auto_20180911_1600'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='tipodispositivo', |
|||
name='contagem_continua', |
|||
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Contagem contínua'), |
|||
), |
|||
] |
|||
@ -0,0 +1,20 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2018-09-26 13:15 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('compilacao', '0008_auto_20180924_1724'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='tipodispositivo', |
|||
name='class_css', |
|||
field=models.CharField(blank=True, max_length=256, verbose_name='Classe CSS'), |
|||
), |
|||
] |
|||
@ -0,0 +1,20 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.9.13 on 2018-10-04 22:39 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('compilacao', '0009_auto_20180926_1015'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='textoarticulado', |
|||
name='numero', |
|||
field=models.CharField(max_length=8, verbose_name='Número'), |
|||
), |
|||
] |
|||
@ -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,3 @@ |
|||
[flake8] |
|||
ignore = E501 |
|||
|
|||
@ -0,0 +1,25 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.10.8 on 2018-09-24 20:24 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('materia', '0030_tramitacao_timestamp'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='orgao', |
|||
name='unidade_deliberativa', |
|||
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Unidade Deliberativa'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='tramitacao', |
|||
name='urgente', |
|||
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Urgente ?'), |
|||
), |
|||
] |
|||
@ -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,20 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.10.8 on 2018-09-24 20:24 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('parlamentares', '0024_auto_20180814_1237'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='cargomesa', |
|||
name='unico', |
|||
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=True, verbose_name='Cargo Único'), |
|||
), |
|||
] |
|||
@ -0,0 +1,25 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.10.8 on 2018-09-24 20:24 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('protocoloadm', '0006_documentoadministrativo_restrito'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='documentoadministrativo', |
|||
name='tramitacao', |
|||
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Em Tramitação?'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='protocolo', |
|||
name='anulado', |
|||
field=models.BooleanField(default=False), |
|||
), |
|||
] |
|||
@ -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,188 @@ |
|||
|
|||
.container-home { |
|||
position: relative; |
|||
padding: 2em 1.5em 1.5em 1.5em; |
|||
max-width: 1000px; |
|||
margin: 0 auto; |
|||
a:hover { |
|||
color: #444; |
|||
-webkit-transition: 0.3s ease-in; |
|||
-moz-transition: 0.3s ease-in; |
|||
-o-transition: 0.3s ease-in |
|||
} |
|||
|
|||
#homeIndex { |
|||
text-align: center; |
|||
} |
|||
|
|||
.homeBanner span { |
|||
color: white; |
|||
font-size: 32px; |
|||
font-weight: 600; |
|||
display: inline-block; |
|||
vertical-align: middle; |
|||
padding: 2px 45px 4px; |
|||
border: 2px solid; |
|||
} |
|||
|
|||
.homeBanner::after { |
|||
display: inline-block; |
|||
vertical-align: middle; |
|||
height: 100%; |
|||
} |
|||
|
|||
.homeBlock { |
|||
display: inline-block; |
|||
position: relative; |
|||
background-color: #F3F3F3; |
|||
width: 190px; |
|||
height: 260px; |
|||
margin: 3px; |
|||
text-align: center; |
|||
font-size: 0; |
|||
overflow: hidden; |
|||
} |
|||
|
|||
.homeBlock > a { |
|||
display: block; |
|||
position: absolute; |
|||
width: 100%; |
|||
height: 100%; |
|||
top: 0; |
|||
left: 0; |
|||
} |
|||
|
|||
.homeBlock::after { |
|||
content: ''; |
|||
display: inline-block; |
|||
vertical-align: middle; |
|||
height: 100%; |
|||
overflow: visible; |
|||
clear: none; |
|||
visibility: initial; |
|||
} |
|||
|
|||
.homeContent { |
|||
position: relative; |
|||
padding: 10px; |
|||
text-align: justify; |
|||
font-size: 14px; |
|||
color: #FFF; |
|||
opacity: 0; |
|||
transition: opacity 0.5s ease; |
|||
display: inline-block; |
|||
vertical-align: middle; |
|||
} |
|||
|
|||
.homeContent p { |
|||
display: block; |
|||
line-height: 13px; |
|||
font-size: 80%; |
|||
color: white; |
|||
} |
|||
|
|||
.homeIcon { |
|||
position: relative; |
|||
display: inline-block; |
|||
width: 105px; |
|||
height: 105px; |
|||
border-radius: 50%; |
|||
background: #364347; |
|||
z-index: 1; |
|||
} |
|||
|
|||
.homeIcon::before { |
|||
content: ''; |
|||
position: absolute; |
|||
width: 100%; |
|||
height: 100%; |
|||
border-radius: 50%; |
|||
background: #364347; |
|||
top: 0; |
|||
left: 0; |
|||
transform: scale(0.95); |
|||
transition: transform 0.6s ease; |
|||
} |
|||
|
|||
.homeIcon img { |
|||
position: absolute; |
|||
margin: auto; |
|||
top: 0; |
|||
bottom: 0; |
|||
right: 0; |
|||
left: 0; |
|||
transition: opacity 0.4s 0.4s ease; |
|||
} |
|||
|
|||
.homeFront { |
|||
position: absolute; |
|||
top: 46%; |
|||
width: 100%; |
|||
font-size: 0; |
|||
transform: translateY(-60%); |
|||
|
|||
} |
|||
|
|||
.homeFront h2 { |
|||
position: absolute; |
|||
margin-top: 18px; |
|||
font-size: 22px; |
|||
font-weight: 700; |
|||
color: #595959 !important; |
|||
width: 100%; |
|||
padding: 0 6%; |
|||
z-index: 0; |
|||
} |
|||
|
|||
.homeTitle { |
|||
display: block; |
|||
height: 32px; |
|||
text-align: center; |
|||
width: 100%; |
|||
opacity: 0; |
|||
transition: opacity 0.4s ease; |
|||
} |
|||
|
|||
.homeTitle::before { |
|||
content: ''; |
|||
display: inline-block; |
|||
vertical-align: middle; |
|||
height: 100%; |
|||
} |
|||
|
|||
.homeTitle h2 { |
|||
display: inline-block; |
|||
vertical-align: middle; |
|||
max-width: 110px; |
|||
font-size: 14px; |
|||
color: white !important; |
|||
line-height: 1em; |
|||
} |
|||
|
|||
.homeTitle img { |
|||
display: inline-block; |
|||
vertical-align: middle; |
|||
height: 30px; |
|||
margin-right: 5px; |
|||
} |
|||
|
|||
.homeBlock:hover .homeIcon::before { |
|||
transform: scale(3.6) translateY(7px); |
|||
} |
|||
|
|||
.homeBlock:hover .homeContent{ |
|||
opacity: 1; |
|||
transition-delay: 0.2s; |
|||
} |
|||
|
|||
.homeBlock:hover .homeIcon img { |
|||
opacity: 0; |
|||
transition-duration: 0.2s; |
|||
transition-delay: 0s; |
|||
} |
|||
|
|||
.homeBlock:hover .homeTitle { |
|||
opacity: 1; |
|||
} |
|||
|
|||
} |
|||
@ -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,86 @@ |
|||
{% load i18n %} |
|||
{% load compilacao_filters %} |
|||
{% load common_tags %} |
|||
{% load staticfiles %} |
|||
{% load sass_tags %} |
|||
|
|||
{% block head_content %} |
|||
<link rel="stylesheet" href="{% sass_src 'styles/compilacao.scss' %}" type="text/css"> |
|||
{% endblock %} |
|||
|
|||
<div class="cp"> |
|||
|
|||
{% if object_list %} |
|||
<div class="clearfix"> |
|||
<div class="actions btn-group pull-right" role="group"> |
|||
<a class="btn btn-default" id="btn_font_menos" title="Diminuir tamanho da letra">a</a> |
|||
<a class="btn btn-default" id="btn_font_mais" title="Aumentar tamanho da Letra">A</a> |
|||
</div> |
|||
</div> |
|||
{% endif %} |
|||
|
|||
{% for key, values in view.get_vigencias.items %} |
|||
{% if forloop.first %} |
|||
<ul class="nav nav-pills cp-vigencias"> |
|||
{% for dispositivo in values %} |
|||
<li class="{% if view.inicio_vigencia == dispositivo.inicio_vigencia %}active{%endif%}"> |
|||
<a href="{% url 'sapl.compilacao:ta_vigencia' dispositivo.ta_id dispositivo|get_sign_vigencia %}" title="{% trans 'Vigência entre'%} {{dispositivo.inicio_vigencia}} {% trans 'e'%} {{dispositivo.fim_vigencia}}">{% trans 'Texto Original'%}</a> |
|||
</li> |
|||
{% endfor %} |
|||
{% elif forloop.last %} |
|||
{% for dispositivo in values %} |
|||
<li class="{% if not view.inicio_vigencia%}active{% endif %}"> |
|||
<a href="{% url 'sapl.compilacao:ta_text' dispositivo.ta_id %}" title="{% trans 'Compilação atual'%}.
{% trans 'Vigência a partir de'%} {{dispositivo.inicio_vigencia}}
{% if dispositivo.ta_publicado_id in ta_pub_list %}{{ ta_pub_list|lookup:dispositivo.ta_publicado_id }}{%else%}{%if dispositivo.ta_publicado %}{{dispositivo.ta_publicado}}{%else%}{{dispositivo.ta}}{%endif%}{%endif%}">{% trans 'Texto Atual'%}</a> |
|||
</li> |
|||
{% if forloop.parentloop.last %} |
|||
</ul> |
|||
<span class="vigencia-active"> |
|||
|
|||
{% if view.inicio_vigencia and view.fim_vigencia %} |
|||
{% blocktrans with inicio_vigencia=view.inicio_vigencia fim_vigencia=view.fim_vigencia%} |
|||
Vigência entre <b>{{inicio_vigencia}}</b> e <b>{{fim_vigencia}}</b>. |
|||
{% endblocktrans%} |
|||
{% else%} |
|||
{% blocktrans with inicio_vigencia=dispositivo.inicio_vigencia%} |
|||
Vigência a partir de <b>{{inicio_vigencia}}</b>. |
|||
{% endblocktrans%} |
|||
{% endif %} |
|||
<br> |
|||
{% if view.ta_vigencia %} |
|||
<small>{% trans 'Dada por '%}<a href="{% url 'sapl.compilacao:ta_text' view.ta_vigencia %}">{{ta_pub_list|lookup:view.ta_vigencia}}</a></small> |
|||
{% elif view.ta_vigencia and view.ta_vigencia != 0%} |
|||
<small>{% trans 'Dada por '%}<a href="{% url 'sapl.compilacao:ta_text' dispositivo.ta_publicado.pk %}">{{dispositivo.ta_publicado}}</a></small> |
|||
{% endif %} |
|||
</span> |
|||
{% endif%} |
|||
{% endfor %} |
|||
{% else %} |
|||
<li class="{% if values.inicio_vigencia.year == key %}active{% endif %}"><a data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">{{ key }}</a> |
|||
<ul class="dropdown-menu"> |
|||
<div class="arrow top"></div> |
|||
{% for dispositivo in values %} |
|||
<li> |
|||
{% if not forloop.parentloop.first %} |
|||
<a href="{% url 'sapl.compilacao:ta_vigencia' dispositivo.ta_id dispositivo|get_sign_vigencia %}" title="{% if dispositivo.ta_publicado_id in ta_pub_list%}{{ ta_pub_list|lookup:dispositivo.ta_publicado_id }}{%else%}{%if dispositivo.ta_publicado %}{{dispositivo.ta_publicado}}{%else%}{{dispositivo.ta}}{%endif%}{%endif%}">{% trans 'Vigência entre'%} {{dispositivo.inicio_vigencia}} {% trans 'e'%} {{dispositivo.fim_vigencia}}</a> |
|||
{% endif %} |
|||
</li> |
|||
{% endfor %} |
|||
</ul> |
|||
</li> |
|||
{% endif %} |
|||
{% endfor %} |
|||
|
|||
<ul class="tipo-vigencias"> |
|||
<li><a class="selected" onclick="textoMultiVigente(this, false);" title="{% trans 'Texto Multivigente Sequencial'%}">{% trans 'TMS'%}</a></li> |
|||
<li><a onclick="textoMultiVigente(this, true);" title="{% trans 'Texto Multivigente Integrado com Realce de Alterações'%}">{% trans 'TMI'%}</a></li> |
|||
<li><a onclick="textoMultiVigente(this, false); textoVigente(this, true);" title="{% trans 'Texto Vigente COM Links para Textos Alteradores'%}">{% trans 'TVL'%}</a></li> |
|||
<li><a onclick="textoVigente(this, false);" title="{% trans 'Texto Vigente'%}">{% trans 'TVT'%}</a></li> |
|||
</ul> |
|||
{% include 'compilacao/text_list_bloco.html'%} |
|||
</div> |
|||
<script type="text/javascript" src="{% static 'js/compilacao.js' %}"></script> |
|||
<script type="text/javascript" src="{% static 'js/compilacao_view.js' %}"></script> |
|||
|
|||
{% if perms.compilacao.add_nota %} |
|||
<script type="text/javascript" src="{% static 'js/compilacao_notas.js' %}"></script> |
|||
{% endif %} |
|||
@ -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. |
|||
@ -1,164 +1,195 @@ |
|||
{% extends "base.html" %} |
|||
{% load i18n staticfiles %} |
|||
|
|||
{% block title%} |
|||
<head> |
|||
</head> |
|||
<br /> |
|||
<div id="conteudo" style="min-height: 60px"> |
|||
<div id="homeIndex"> |
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_mesa_diretora.png' %}" alt="Mesa Diretora"> |
|||
</div> |
|||
<h2>Mesa Diretora</h2> |
|||
</div> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_mesa_diretora.png' %}"> |
|||
{% block title %} |
|||
|
|||
{% endblock title %} |
|||
{% block base_content%} |
|||
<div class="container-home"> |
|||
<div id="homeIndex"> |
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_mesa_diretora.png' %}" alt="Mesa Diretora"> |
|||
</div> |
|||
<h2>Mesa Diretora</h2> |
|||
</div> |
|||
<p> |
|||
Órgão colegiado, composto de no mínimo três membros efetivos - Presidente e 1° e 2° Secretários - a quem cabe a direção dos trabalhos legislativos. Os parlamentares integrantes da Mesa Diretora são eleitos por seus pares na primeira reunião de instalação do período legislativo, para um mandato de um a dois anos. |
|||
</p> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_mesa_diretora.png' %}"> |
|||
<h2>Mesa Diretora</h2> |
|||
</div> |
|||
<p> |
|||
Órgão colegiado, composto de no mínimo três membros efetivos - Presidente e 1° e 2° Secretários - a |
|||
quem cabe a direção dos trabalhos legislativos. Os parlamentares integrantes da Mesa Diretora são |
|||
eleitos por seus pares na primeira reunião de instalação do período legislativo, para um mandato de |
|||
um |
|||
a dois anos. |
|||
</p> |
|||
</div> |
|||
<a href="{% url 'sapl.parlamentares:mesa_diretora' %}"></a> |
|||
</div> |
|||
<a href="{% url 'sapl.parlamentares:mesa_diretora' %}"></a> |
|||
</div> |
|||
|
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_comissoes.png' %}" alt="Comissões"> |
|||
</div> |
|||
<h2>Comissões</h2> |
|||
</div> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_comissoes.png' %}"> |
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_comissoes.png' %}" alt="Comissões"> |
|||
</div> |
|||
<h2>Comissões</h2> |
|||
</div> |
|||
<p> |
|||
Órgãos da Casa Legislativa, de natureza técnica especializada e que têm por objetivo prestar melhores esclarecimentos aos parlamentares para a tomada de decisões. Assim, as comissões elaboram estudos, pareceres a respeito de determinados projetos de lei e investigação de irregularidades sobre fato determinado. |
|||
</p> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_comissoes.png' %}"> |
|||
<h2>Comissões</h2> |
|||
</div> |
|||
<p> |
|||
Órgãos da Casa Legislativa, de natureza técnica especializada e que têm por objetivo prestar |
|||
melhores |
|||
esclarecimentos aos parlamentares para a tomada de decisões. Assim, as comissões elaboram estudos, |
|||
pareceres a respeito de determinados projetos de lei e investigação de irregularidades sobre fato |
|||
determinado. |
|||
</p> |
|||
</div> |
|||
<a href="{% url 'sapl.comissoes:comissao_list' %}"></a> |
|||
</div> |
|||
<a href="{% url 'sapl.comissoes:comissao_list' %}"></a> |
|||
</div> |
|||
|
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_parlamentares.png' %}" alt="Parlamentares"> |
|||
</div> |
|||
<h2>Parlamentares</h2> |
|||
</div> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_parlamentares.png' %}"> |
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_parlamentares.png' %}" alt="Parlamentares"> |
|||
</div> |
|||
<h2>Parlamentares</h2> |
|||
</div> |
|||
<p> |
|||
O Poder Legislativo, exercido pelo sistema de representação, tem nos parlamentares a sua expressão máxima. Devem transformar os anseios de seus representados em ações diretas, na forma de leis ou buscando junto do Executivo obras e atos que beneficiem a sua comunidade. Possuem funções legisladora, administrativa, julgadora e de fiscalização sobre a conduta do Executivo. |
|||
</p> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_parlamentares.png' %}"> |
|||
<h2>Parlamentares</h2> |
|||
</div> |
|||
<p> |
|||
O Poder Legislativo, exercido pelo sistema de representação, tem nos parlamentares a sua expressão |
|||
máxima. Devem transformar os anseios de seus representados em ações diretas, na forma de leis ou |
|||
buscando junto do Executivo obras e atos que beneficiem a sua comunidade. Possuem funções |
|||
legisladora, |
|||
administrativa, julgadora e de fiscalização sobre a conduta do Executivo. |
|||
</p> |
|||
</div> |
|||
<a href="{% url 'sapl.parlamentares:parlamentar_list' %}"></a> |
|||
</div> |
|||
<a href="{% url 'sapl.parlamentares:parlamentar_list' %}"></a> |
|||
</div> |
|||
|
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_pautas.png' %}" alt="Pautas das Sessões"> |
|||
</div> |
|||
<h2>Pautas das Sessões</h2> |
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_pautas.png' %}" alt="Pautas das Sessões"> |
|||
</div> |
|||
<h2>Pautas das Sessões</h2> |
|||
</div> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_pautas.png' %}"> |
|||
<h2>Pautas das<br>Sessões</h2> |
|||
</div> |
|||
<p> |
|||
Utilizadas para se determinar quais matérias serão discutidas e votadas. A responsabilidade pela |
|||
elaboração das Pautas, que incluem Expediente e Ordem do Dia, é definida no Regimento Interno que, |
|||
em |
|||
geral, dá poderes ao Presidente da Casa Legislativa para a sua elaboração. Também, pode ficar a |
|||
cargo |
|||
de um colégio de líderes dos partidos políticos. |
|||
</p> |
|||
</div> |
|||
<a href="{% url 'sapl.sessao:pauta_sessao' %}"></a> |
|||
</div> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_pautas.png' %}"> |
|||
<h2>Pautas das<br>Sessões</h2> |
|||
</div> |
|||
<p> |
|||
Utilizadas para se determinar quais matérias serão discutidas e votadas. A responsabilidade pela elaboração das Pautas, que incluem Expediente e Ordem do Dia, é definida no Regimento Interno que, em geral, dá poderes ao Presidente da Casa Legislativa para a sua elaboração. Também, pode ficar a cargo de um colégio de líderes dos partidos políticos. |
|||
</p> |
|||
</div> |
|||
<a href="{% url 'sapl.sessao:pauta_sessao' %}"></a> |
|||
</div> |
|||
|
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_plenarias.png' %}" alt="Sessão Plenária"> |
|||
</div> |
|||
<h2>Sessão Plenária</h2> |
|||
</div> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_plenarias.png' %}"> |
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_plenarias.png' %}" alt="Sessão Plenária"> |
|||
</div> |
|||
<h2>Sessão Plenária</h2> |
|||
</div> |
|||
<p> |
|||
Foro apropriado para a tomada de decisões sobre os projetos de lei e outras matérias legislativas ou administrativas, aprovadas ou rejeitadas em votação pelos parlamentares. É dirigida pela Mesa Diretora de acordo com o Regimento Interno da Casa. As decisões votadas em Plenário são soberanas e prevalecem sobre interesses ou vontades individuais. |
|||
</p> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_plenarias.png' %}"> |
|||
<h2>Sessão Plenária</h2> |
|||
</div> |
|||
<p> |
|||
Foro apropriado para a tomada de decisões sobre os projetos de lei e outras matérias legislativas |
|||
ou |
|||
administrativas, aprovadas ou rejeitadas em votação pelos parlamentares. É dirigida pela Mesa |
|||
Diretora |
|||
de acordo com o Regimento Interno da Casa. As decisões votadas em Plenário são soberanas e |
|||
prevalecem |
|||
sobre interesses ou vontades individuais. |
|||
</p> |
|||
</div> |
|||
<a href="{% url 'sapl.sessao:pesquisar_sessao' %}"></a> |
|||
</div> |
|||
<a href="{% url 'sapl.sessao:pesquisar_sessao' %}"></a> |
|||
</div> |
|||
|
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_materia_legislativa.png' %}" alt="Matérias Legislativas"> |
|||
</div> |
|||
<h2>Matérias Legislativas</h2> |
|||
</div> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_materia_legislativa.png' %}"> |
|||
<h2>Matérias<br>Legislativas</h2> |
|||
</div> |
|||
<p> |
|||
Têm início com o processo de criação de leis e a apresentação de projetos no Poder Legislativo. Na apreciação de matérias, podem haver eventuais conflitos de interpretação ou de entendimento entre o que estabelece o Regimento Interno da Casa e a Lei Orgânica do Município. Nestes casos, prevalece a Lei Orgânica. |
|||
</p> |
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_materia_legislativa.png' %}" alt="Matérias Legislativas"> |
|||
</div> |
|||
<h2>Matérias Legislativas</h2> |
|||
</div> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_materia_legislativa.png' %}"> |
|||
<h2>Matérias<br>Legislativas</h2> |
|||
</div> |
|||
<p> |
|||
Têm início com o processo de criação de leis e a apresentação de projetos no Poder Legislativo. Na |
|||
apreciação de matérias, podem haver eventuais conflitos de interpretação ou de entendimento entre o |
|||
que |
|||
estabelece o Regimento Interno da Casa e a Lei Orgânica do Município. Nestes casos, prevalece a Lei |
|||
Orgânica. |
|||
</p> |
|||
</div> |
|||
<a href="{% url 'sapl.materia:pesquisar_materia' %}"></a> |
|||
</div> |
|||
<a href="{% url 'sapl.materia:pesquisar_materia' %}"></a> |
|||
</div> |
|||
|
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_normas_juridicas.png' %}" alt="Normas Jurídicas"> |
|||
</div> |
|||
<h2>Normas Jurídicas</h2> |
|||
</div> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_normas_juridicas.png' %}"> |
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_normas_juridicas.png' %}" alt="Normas Jurídicas"> |
|||
</div> |
|||
<h2>Normas Jurídicas</h2> |
|||
</div> |
|||
<p> |
|||
Nos Municípios, referem-se às emendas à Lei Orgânica, às leis complementares, às leis ordinárias, aos decretos legislativos e às resoluções. |
|||
</p> |
|||
</div> |
|||
<a href="{% url 'sapl.norma:norma_pesquisa'%}"></a> |
|||
</div> |
|||
|
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_relatorios.png' %}" alt="Relatórios"> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_normas_juridicas.png' %}"> |
|||
<h2>Normas Jurídicas</h2> |
|||
</div> |
|||
<p> |
|||
Nos Municípios, referem-se às emendas à Lei Orgânica, às leis complementares, às leis ordinárias, |
|||
aos |
|||
decretos legislativos e às resoluções. |
|||
</p> |
|||
</div> |
|||
<h2>Relatórios</h2> |
|||
<a href="{% url 'sapl.norma:norma_pesquisa'%}"></a> |
|||
</div> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_relatorios.png' %}"> |
|||
|
|||
<div class="homeBlock"> |
|||
<div class="homeFront"> |
|||
<div class="homeIcon"> |
|||
<img src="{% static 'img/icon_relatorios.png' %}" alt="Relatórios"> |
|||
</div> |
|||
<h2>Relatórios</h2> |
|||
</div> |
|||
<p> |
|||
Contém informações estatísticas sobre a produção legislativa dos parlamentares e da Casa, dispostas e agrupadas de diferentes formas de acordo com parâmetros fornecidos. |
|||
</p> |
|||
<div class="homeContent"> |
|||
<div class="homeTitle"> |
|||
<img src="{% static 'img/icon_relatorios.png' %}"> |
|||
<h2>Relatórios</h2> |
|||
</div> |
|||
<p> |
|||
Contém informações estatísticas sobre a produção legislativa dos parlamentares e da Casa, dispostas |
|||
e |
|||
agrupadas de diferentes formas de acordo com parâmetros fornecidos. |
|||
</p> |
|||
</div> |
|||
<a href="/sistema/relatorios/"></a> |
|||
</div> |
|||
<a href="/sistema/relatorios/"></a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
{% endblock %} |
|||
{% endblock %} |
|||
@ -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 %} |
|||
Loading…
Reference in new issue