mirror of https://github.com/interlegis/sapl.git
committed by
GitHub
82 changed files with 2514 additions and 784 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,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 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): |
class Command(BaseCommand): |
||||
|
|
||||
help = 'Ressucita dependências apagadas ' \ |
help = 'Ressuscita dependências apagadas ' \ |
||||
'que são necessárias para migrar outros registros' |
'que são necessárias para migrar outros registros' |
||||
|
|
||||
def handle(self, *args, **options): |
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,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,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