| ' + str(expediente_materia['num_ordem']) + ' - ' + expediente_materia['id_materia'] + '\n' + 'Turno: ' + expediente_materia[
+ 'des_turno'] + '\n' + ''+ expediente_materia['num_autores'] + ': ' + str(expediente_materia['nom_autor']) + ' | \n'
txt_ementa = expediente_materia['txt_ementa'].replace('&', '&')
- tmp += '' + txt_ementa + ' | \n'
+ tmp += '' + txt_ementa + '' + '' + expediente_materia['ordem_observacao'] + ' | \n'
tmp += '' + \
str(expediente_materia['nom_resultado']) + \
'\n' + ''
@@ -254,8 +265,8 @@ def votacao(lst_votacao):
tmp += '\n'
tmp += '| Matéria | Ementa | Resultado da Votação | \n'
for votacao in lst_votacao:
- tmp += '| ' + str(votacao['num_ordem']) + ' - ' + votacao['id_materia'] + '\n' + 'Turno: ' + str(votacao[
- 'des_turno']) + '\n' + 'Autor: ' + str(votacao['nom_autor']) + ' | \n'
+ tmp += ' | ' + str(votacao['num_ordem']) + ' - ' + votacao['id_materia'] + '\n' + 'Turno: ' + votacao[
+ 'des_turno'] + '\n' + ''+ votacao['num_autores'] +': ' + str(votacao['nom_autor']) + ' | \n'
txt_ementa = votacao['txt_ementa'].replace('&', '&')
tmp += '' + txt_ementa + '' + '' + votacao['ordem_observacao'] + ' | \n'
tmp += '' + \
@@ -296,7 +307,7 @@ def ocorrencias(lst_ocorrencias):
tmp += '\t\t\n'
tmp += '\t\t\t \n'
tmp += '\t\t\n'
- for idx, ocorrencia in enumerate(lst_ocorrencias):
+ for ocorrencia in lst_ocorrencias:
tmp += '\t\t' + \
str(ocorrencia.conteudo) + '\n'
tmp += '\t\t\n'
@@ -305,7 +316,7 @@ def ocorrencias(lst_ocorrencias):
return tmp
-def principal(cabecalho_dic, rodape_dic, imagem, sessao, inf_basicas_dic, lst_mesa, lst_presenca_sessao, lst_expedientes, lst_expediente_materia, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_oradores, lst_ocorrencias):
+def principal(rodape_dic, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao, lst_ausencia_sessao, lst_expedientes, lst_expediente_materia, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_oradores, lst_ocorrencias):
"""
"""
arquivoPdf = str(int(time.time() * 100)) + ".pdf"
@@ -331,7 +342,7 @@ def principal(cabecalho_dic, rodape_dic, imagem, sessao, inf_basicas_dic, lst_me
'cont_mult': '',
'exp': expedientes(lst_expedientes),
'id_basica': inf_basicas(inf_basicas_dic),
- 'lista_p': presenca(lst_presenca_sessao),
+ 'lista_p': presenca(lst_presenca_sessao,lst_ausencia_sessao),
'lista_p_o_d': presenca_ordem_dia(lst_presenca_ordem_dia),
'mat_exp': expediente_materia(lst_expediente_materia),
'mat_o_d': votacao(lst_votacao),
@@ -357,7 +368,7 @@ def principal(cabecalho_dic, rodape_dic, imagem, sessao, inf_basicas_dic, lst_me
else:
tmp += inf_basicas(inf_basicas_dic)
tmp += mesa(lst_mesa)
- tmp += presenca(lst_presenca_sessao)
+ tmp += presenca(lst_presenca_sessao,lst_ausencia_sessao)
tmp += expedientes(lst_expedientes)
tmp += expediente_materia(lst_expediente_materia)
tmp += oradores_expediente(lst_oradores_expediente)
diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py
index 4fb4785dd..0c5dfd377 100755
--- a/sapl/relatorios/views.py
+++ b/sapl/relatorios/views.py
@@ -16,11 +16,12 @@ from sapl.parlamentares.models import CargoMesa, Filiacao, Parlamentar
from sapl.protocoloadm.models import (DocumentoAdministrativo, Protocolo,
TramitacaoAdministrativo)
from sapl.sessao.models import (ExpedienteMateria, ExpedienteSessao,
- IntegranteMesa, Orador, OradorExpediente,
+ IntegranteMesa, JustificativaAusencia,
+ Orador, OradorExpediente,
OrdemDia, PresencaOrdemDia, SessaoPlenaria,
SessaoPlenariaPresenca, OcorrenciaSessao)
from sapl.settings import STATIC_ROOT
-from sapl.utils import LISTA_DE_UFS, ExtraiTag, TrocaTag, filiacao_data
+from sapl.utils import LISTA_DE_UFS, TrocaTag, filiacao_data
from .templates import (pdf_capa_processo_gerar,
pdf_documento_administrativo_gerar, pdf_espelho_gerar,
@@ -538,6 +539,20 @@ def get_sessao_plenaria(sessao, casa):
dic_presenca['sgl_partido'] = partido_sigla
lst_presenca_sessao.append(dic_presenca)
+ # Lista de ausencias na sessão
+ lst_ausencia_sessao = []
+ ausencia = JustificativaAusencia.objects.filter(
+ sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar')
+ for ausente in ausencia:
+ dic_ausencia = {}
+ dic_ausencia['parlamentar'] = ausente.parlamentar
+ dic_ausencia['justificativa'] = ausente.tipo_ausencia
+ if ausente.ausencia == 1:
+ dic_ausencia['tipo'] = 'Matéria'
+ else:
+ dic_ausencia['tipo'] = 'Sessão'
+
+ lst_ausencia_sessao.append(dic_ausencia)
# Exibe os Expedientes
lst_expedientes = []
@@ -572,9 +587,7 @@ def get_sessao_plenaria(sessao, casa):
for expediente_materia in ExpedienteMateria.objects.filter(
sessao_plenaria=sessao):
# seleciona os detalhes de uma matéria
- materia = MateriaLegislativa.objects.filter(
- id=expediente_materia.materia.id).first()
-
+ materia = expediente_materia.materia
dic_expediente_materia = {}
dic_expediente_materia["num_ordem"] = expediente_materia.numero_ordem
dic_expediente_materia["id_materia"] = (materia.tipo.sigla + ' ' +
@@ -585,40 +598,27 @@ def get_sessao_plenaria(sessao, casa):
numeracao = Numeracao.objects.filter(
materia=expediente_materia.materia).first()
- if numeracao is not None:
+ if numeracao:
dic_expediente_materia["des_numeracao"] = (
str(numeracao.numero_materia) + '/' + str(
numeracao.ano_materia))
- turno, _ = get_turno(dic_expediente_materia, materia, sessao.data_inicio)
+ turno, _ = get_turno(materia)
dic_expediente_materia["des_turno"] = turno
-
dic_expediente_materia["txt_ementa"] = str(materia.ementa)
dic_expediente_materia["ordem_observacao"] = expediente_materia.observacao
- dic_expediente_materia["nom_autor"] = ' '
dic_expediente_materia["nom_resultado"] = ''
- autoria = Autoria.objects.filter(
- materia=materia, primeiro_autor=True).first()
-
- if autoria is not None:
- autor = Autor.objects.filter(id=autoria.autor.id)
-
- if autor is not None:
- autor = autor.first()
-
- if autor.tipo == 'Parlamentar':
- parlamentar = Parlamentar.objects.filter(
- id=autor.parlamentar.id)
- dic_expediente_materia["nom_autor"] = str(
- parlamentar.nome_completo)
- elif autor.tipo == 'Comissao':
- comissao = Comissao.objects.filter(id=autor.comissao.id)
- dic_expediente_materia["nom_autor"] = str(comissao)
- else:
- dic_expediente_materia["nom_autor"] = str(autor.nome)
- elif autoria is None:
+ dic_expediente_materia["nom_autor"] = ''
+ autoria = materia.autoria_set.all()
+ dic_expediente_materia['num_autores'] = 'Autores' if len(autoria) > 1 else 'Autor'
+ if autoria:
+ for a in autoria:
+ if a.autor.nome:
+ dic_expediente_materia['nom_autor'] += a.autor.nome + ', '
+ dic_expediente_materia['nom_autor'] = dic_expediente_materia['nom_autor'][:-2]
+ else:
dic_expediente_materia["nom_autor"] = 'Desconhecido'
dic_expediente_materia["votacao_observacao"] = ' '
@@ -674,9 +674,7 @@ def get_sessao_plenaria(sessao, casa):
for votacao in OrdemDia.objects.filter(
sessao_plenaria=sessao):
# seleciona os detalhes de uma matéria
- materia = MateriaLegislativa.objects.filter(
- id=votacao.materia.id).first()
-
+ materia = votacao.materia
dic_votacao = {}
dic_votacao["nom_resultado"] = ''
dic_votacao["num_ordem"] = votacao.numero_ordem
@@ -687,15 +685,15 @@ def get_sessao_plenaria(sessao, casa):
str(materia.ano))
dic_votacao["des_numeracao"] = ' '
- numeracao = Numeracao.objects.filter(
- materia=votacao.materia).first()
- if numeracao is not None:
+ numeracao = materia.numeracao_set.first()
+ if numeracao:
+
dic_votacao["des_numeracao"] = (
str(numeracao.numero_materia) +
'/' +
str(numeracao.ano_materia))
- turno, _ = get_turno(dic_votacao, materia, sessao.data_inicio)
+ turno, _ = get_turno(materia)
dic_votacao["des_turno"] = turno
@@ -703,26 +701,15 @@ def get_sessao_plenaria(sessao, casa):
dic_votacao["txt_ementa"] = html.unescape(materia.ementa)
dic_votacao["ordem_observacao"] = html.unescape(votacao.observacao)
- dic_votacao["nom_autor"] = ' '
- autoria = Autoria.objects.filter(
- materia=materia, primeiro_autor=True).first()
-
- if autoria is not None:
- autor = Autor.objects.filter(id=autoria.autor.id)
- if autor is not None:
- autor = autor.first()
-
- if autor.tipo == 'Parlamentar':
- parlamentar = Parlamentar.objects.filter(
- id=autor.parlamentar.id)
- dic_votacao["nom_autor"] = str(parlamentar.nome_completo)
- elif autor.tipo == 'Comissao':
- comissao = Comissao.objects.filter(
- id=autor.comissao.id)
- dic_votacao["nom_autor"] = str(comissao)
- else:
- dic_votacao["nom_autor"] = str(autor.nome)
- elif autoria is None:
+ dic_votacao["nom_autor"] = ''
+ autoria = materia.autoria_set.all()
+ dic_votacao['num_autores'] = 'Autores' if len(autoria) > 1 else 'Autor'
+ if autoria:
+ for a in autoria:
+ if a.autor.nome:
+ dic_votacao['nom_autor'] += a.autor.nome + ', '
+ dic_votacao['nom_autor'] = dic_votacao['nom_autor'][:-2]
+ else:
dic_votacao["nom_autor"] = 'Desconhecido'
dic_votacao["votacao_observacao"] = ' '
@@ -779,6 +766,7 @@ def get_sessao_plenaria(sessao, casa):
return (inf_basicas_dic,
lst_mesa,
lst_presenca_sessao,
+ lst_ausencia_sessao,
lst_expedientes,
lst_expediente_materia,
lst_oradores_expediente,
@@ -788,20 +776,19 @@ def get_sessao_plenaria(sessao, casa):
lst_ocorrencias)
-def get_turno(dic, materia, sessao_data_inicio):
- descricao_turno = ' '
- descricao_tramitacao = ' '
- tramitacao = None
- if tramitacao is None:
- tramitacao = materia.tramitacao_set.last()
+def get_turno(materia):
+ descricao_turno = ''
+ descricao_tramitacao = ''
+ tramitacao = materia.tramitacao_set.last()
- if tramitacao is not None:
- for t in Tramitacao.TURNO_CHOICES:
- if t[0] == tramitacao.turno:
- descricao_turno = t[1]
- break
+ if tramitacao:
+ if tramitacao.turno:
+ for t in Tramitacao.TURNO_CHOICES:
+ if t[0] == tramitacao.turno:
+ descricao_turno = str(t[1])
+ break
descricao_tramitacao = tramitacao.status.descricao if tramitacao.status else 'Não informada'
- return (descricao_turno, descricao_tramitacao)
+ return descricao_turno, descricao_tramitacao
def relatorio_sessao_plenaria(request, pk):
@@ -819,7 +806,6 @@ def relatorio_sessao_plenaria(request, pk):
if not casa:
raise Http404
- cabecalho = get_cabecalho(casa)
rodape = get_rodape(casa)
imagem = get_imagem(casa)
@@ -833,6 +819,7 @@ def relatorio_sessao_plenaria(request, pk):
(inf_basicas_dic,
lst_mesa,
lst_presenca_sessao,
+ lst_ausencia_sessao,
lst_expedientes,
lst_expediente_materia,
lst_oradores_expediente,
@@ -849,13 +836,12 @@ def relatorio_sessao_plenaria(request, pk):
lst_expedientes[idx]['txt_expediente'] = txt_expedientes
pdf = pdf_sessao_plenaria_gerar.principal(
- cabecalho,
rodape,
imagem,
- None,
inf_basicas_dic,
lst_mesa,
lst_presenca_sessao,
+ lst_ausencia_sessao,
lst_expedientes,
lst_expediente_materia,
lst_oradores_expediente,
@@ -1048,7 +1034,6 @@ def relatorio_pauta_sessao(request, pk):
casa = CasaLegislativa.objects.first()
- cabecalho = get_cabecalho(casa)
rodape = get_rodape(casa)
imagem = get_imagem(casa)
@@ -1056,9 +1041,7 @@ def relatorio_pauta_sessao(request, pk):
lst_expediente_materia, lst_votacao, inf_basicas_dic = get_pauta_sessao(
sessao, casa)
- pdf = pdf_pauta_sessao_gerar.principal(cabecalho,
- rodape,
- sessao,
+ pdf = pdf_pauta_sessao_gerar.principal(rodape,
imagem,
inf_basicas_dic,
lst_expediente_materia,
@@ -1083,8 +1066,7 @@ def get_pauta_sessao(sessao, casa):
inf_basicas_dic["nom_camara"] = casa.nome
lst_expediente_materia = []
- for expediente_materia in ExpedienteMateria.objects.filter(
- data_ordem=sessao.data_inicio, sessao_plenaria=sessao):
+ for expediente_materia in ExpedienteMateria.objects.filter(sessao_plenaria=sessao):
materia = MateriaLegislativa.objects.filter(
id=expediente_materia.materia.id).first()
@@ -1102,34 +1084,22 @@ def get_pauta_sessao(sessao, casa):
dic_expediente_materia["des_numeracao"] = ' '
numeracao = Numeracao.objects.filter(materia=materia)
- if numeracao is not None:
+ if numeracao:
numeracao = numeracao.first()
dic_expediente_materia["des_numeracao"] = str(numeracao)
- dic_expediente_materia["nom_autor"] = ' '
- autoria = Autoria.objects.filter(
- materia=materia, primeiro_autor=True).first()
-
- if autoria is not None:
- autor = Autor.objects.filter(id=autoria.autor.id)
-
- if autor is not None:
- autor = autor.first()
-
- if autor.tipo == 'Parlamentar':
- parlamentar = Parlamentar.objects.filter(
- id=autor.parlamentar.id)
- dic_expediente_materia["nom_autor"] = str(
- parlamentar.nome_completo)
- elif autor.tipo == 'Comissao':
- comissao = Comissao.objects.filter(id=autor.comissao.id)
- dic_expediente_materia["nom_autor"] = str(comissao)
- else:
- dic_expediente_materia["nom_autor"] = str(autor.nome)
- elif autoria is None:
+ dic_expediente_materia["nom_autor"] = ''
+ autoria = materia.autoria_set.all()
+ dic_expediente_materia['num_autores'] = 'Autores' if len(autoria) > 1 else 'Autor'
+ if autoria:
+ for a in autoria:
+ if a.autor.nome:
+ dic_expediente_materia['nom_autor'] += a.autor.nome + ', '
+ dic_expediente_materia['nom_autor'] = dic_expediente_materia['nom_autor'][:-2]
+ else:
dic_expediente_materia["nom_autor"] = 'Desconhecido'
- turno, tramitacao = get_turno(dic_expediente_materia, materia, sessao.data_inicio)
+ turno, tramitacao = get_turno(materia)
dic_expediente_materia["des_turno"] = turno
dic_expediente_materia["des_situacao"] = tramitacao
@@ -1156,30 +1126,19 @@ def get_pauta_sessao(sessao, casa):
dic_votacao["des_numeracao"] = str(
numeracao.numero_materia) + '/' + str(numeracao.ano_materia)
- turno, tramitacao = get_turno(dic_votacao, materia, sessao.data_inicio)
+ turno, tramitacao = get_turno(materia)
dic_votacao["des_turno"] = turno
dic_votacao["des_situacao"] = tramitacao
- dic_votacao["nom_autor"] = ' '
- autoria = Autoria.objects.filter(
- materia=materia, primeiro_autor=True).first()
-
- if autoria is not None:
- autor = Autor.objects.filter(id=autoria.autor.id)
- if autor is not None:
- autor = autor.first()
-
- if autor.tipo == 'Parlamentar':
- parlamentar = Parlamentar.objects.filter(
- id=autor.parlamentar.id)
- dic_votacao["nom_autor"] = str(parlamentar.nome_completo)
- elif autor.tipo == 'Comissao':
- comissao = Comissao.objects.filter(
- id=autor.comissao.id)
- dic_votacao["nom_autor"] = str(comissao)
- else:
- dic_votacao["nom_autor"] = str(autor.nome)
- elif autoria is None:
+ dic_votacao["nom_autor"] = ''
+ autoria = materia.autoria_set.all()
+ dic_votacao['num_autores'] = 'Autores' if len(autoria) > 1 else 'Autor'
+ if autoria:
+ for a in autoria:
+ if a.autor.nome:
+ dic_votacao['nom_autor'] += a.autor.nome + ', '
+ dic_votacao['nom_autor'] = dic_votacao['nom_autor'][:-2]
+ else:
dic_votacao["nom_autor"] = 'Desconhecido'
lst_votacao.append(dic_votacao)
diff --git a/sapl/rules/map_rules.py b/sapl/rules/map_rules.py
index 2b6204ec2..aa691da5e 100644
--- a/sapl/rules/map_rules.py
+++ b/sapl/rules/map_rules.py
@@ -172,6 +172,7 @@ rules_group_sessao = {
(sessao.RegistroVotacao, __base__),
(sessao.VotoParlamentar, __base__),
(sessao.JustificativaAusencia, __base__),
+ (sessao.RetiradaPauta, __base__)
]
}
@@ -269,6 +270,7 @@ rules_group_geral = {
(sessao.JustificativaAusencia, __base__),
(sessao.Bloco, __base__),
(sessao.ResumoOrdenacao, __base__),
+ (sessao.TipoRetiradaPauta, __base__),
(lexml.LexmlProvedor, __base__),
(lexml.LexmlPublicador, __base__),
diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py
index f22eeee28..3020d93b2 100644
--- a/sapl/sessao/forms.py
+++ b/sapl/sessao/forms.py
@@ -27,7 +27,7 @@ from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES,
from .models import (Bancada, Bloco, ExpedienteMateria, JustificativaAusencia,
Orador, OradorExpediente, OrdemDia, SessaoPlenaria,
SessaoPlenariaPresenca, TipoJustificativa, TipoResultadoVotacao,
- OcorrenciaSessao, RegistroVotacao)
+ OcorrenciaSessao, RegistroVotacao, RetiradaPauta, TipoRetiradaPauta)
def recupera_anos():
@@ -191,6 +191,100 @@ class SessaoPlenariaForm(ModelForm):
return self.cleaned_data
+class RetiradaPautaForm(ModelForm):
+
+ tipo_de_retirada = forms.ModelChoiceField(required=True,
+ empty_label='------------',
+ queryset=TipoRetiradaPauta.objects.all())
+ expediente = forms.ModelChoiceField(required=False,
+ label='Matéria do Expediente',
+ queryset=ExpedienteMateria.objects.all())
+ ordem = forms.ModelChoiceField(required=False,
+ label='Matéria da Ordem do Dia',
+ queryset=OrdemDia.objects.all())
+ materia = forms.ModelChoiceField(required=False,
+ widget=forms.HiddenInput(),
+ queryset=MateriaLegislativa.objects.all())
+
+ class Meta:
+ model = RetiradaPauta
+ fields = ['ordem',
+ 'expediente',
+ 'parlamentar',
+ 'tipo_de_retirada',
+ 'data',
+ 'observacao',
+ 'materia']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = to_row([('tipo_de_retirada', 5),
+ ('parlamentar', 4),
+ ('data', 3)])
+ row2 = to_row([('ordem', 6),
+ ('expediente', 6)])
+ row3 = to_row([('observacao',12)])
+
+ self.helper = FormHelper()
+ self.helper.layout = SaplFormLayout(
+ Fieldset(_('Retirada de Pauta'),
+ row1, row2, row3))
+
+ q = Q(sessao_plenaria=kwargs['initial']['sessao_plenaria'])
+ ordens = OrdemDia.objects.filter(q)
+ expedientes = ExpedienteMateria.objects.filter(q)
+ retiradas_ordem = [r.ordem for r in RetiradaPauta.objects.filter(q, ordem__in=ordens)]
+ retiradas_expediente = [r.expediente for r in RetiradaPauta.objects.filter(q, expediente__in=expedientes)]
+ setOrdem = set(ordens) - set(retiradas_ordem)
+ setExpediente = set(expedientes) - set(retiradas_expediente)
+
+ super(RetiradaPautaForm, self).__init__(
+ *args, **kwargs)
+
+ if self.instance.pk:
+ setOrdem = set(ordens)
+ setExpediente = set(expedientes)
+
+ presencas = SessaoPlenariaPresenca.objects.filter(
+ q).order_by('parlamentar__nome_parlamentar')
+ presentes = [p.parlamentar for p in presencas]
+
+ self.fields['expediente'].choices = [
+ (None, "------------")] + [(e.id, e.materia) for e in setExpediente]
+ self.fields['ordem'].choices = [
+ (None, "------------")] + [(o.id, o.materia) for o in setOrdem]
+ self.fields['parlamentar'].choices = [
+ (None, "------------")] + [(p.id, p) for p in presentes]
+
+ def clean(self):
+
+ super(RetiradaPautaForm, self).clean()
+
+ if not self.is_valid():
+ return self.cleaned_data
+
+ sessao_plenaria = self.instance.sessao_plenaria
+ if self.cleaned_data['data'] < sessao_plenaria.data_inicio:
+ raise ValidationError(_("Data de retirada de pauta anterior à abertura da Sessão."))
+ if sessao_plenaria.data_fim and self.cleaned_data['data'] > sessao_plenaria.data_fim:
+ raise ValidationError(_("Data de retirada de pauta posterior ao encerramento da Sessão."))
+
+ if self.cleaned_data['ordem'] and self.cleaned_data['ordem'].registrovotacao_set.exists():
+ raise ValidationError(_("Essa matéria já foi votada, portanto não pode ser retirada de pauta."))
+ elif self.cleaned_data['expediente'] and self.cleaned_data['expediente'].registrovotacao_set.exists():
+ raise ValidationError(_("Essa matéria já foi votada, portanto não pode ser retirada de pauta."))
+
+ return self.cleaned_data
+
+ def save(self, commit=False):
+ retirada = super(RetiradaPautaForm, self).save(commit=False)
+ if retirada.ordem:
+ retirada.materia = retirada.ordem.materia
+ elif retirada.expediente:
+ retirada.materia = retirada.expediente.materia
+ retirada.save()
+ return retirada
+
class BancadaForm(ModelForm):
class Meta:
diff --git a/sapl/sessao/migrations/0028_auto_20181031_0902.py b/sapl/sessao/migrations/0028_auto_20181031_0902.py
new file mode 100644
index 000000000..3ff3c0dc5
--- /dev/null
+++ b/sapl/sessao/migrations/0028_auto_20181031_0902.py
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.8 on 2018-10-31 12:02
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('materia', '0032_auto_20181022_1743'),
+ ('parlamentares', '0025_auto_20180924_1724'),
+ ('sessao', '0029_auto_20181024_0952'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='RetiradaPauta',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('observacao', models.TextField(blank=True, verbose_name='Observações')),
+ ('expediente', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='sessao.ExpedienteMateria')),
+ ('materia', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='materia.MateriaLegislativa')),
+ ('ordem', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='sessao.OrdemDia')),
+ ('parlamentar', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='parlamentares.Parlamentar', verbose_name='Requerente')),
+ ],
+ options={
+ 'verbose_name_plural': 'Retirada de Pauta',
+ 'verbose_name': 'Retirada de Pauta',
+ },
+ ),
+ migrations.CreateModel(
+ name='TipoRetiradaPauta',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('descricao', models.CharField(max_length=150, verbose_name='Descrição')),
+ ],
+ options={
+ 'verbose_name_plural': 'Tipos de Retirada de Pauta',
+ 'verbose_name': 'Tipo de Retidara de Pauta',
+ 'ordering': ['descricao'],
+ },
+ ),
+ migrations.AddField(
+ model_name='retiradapauta',
+ name='tipo_de_retirada',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='sessao.TipoRetiradaPauta', verbose_name='Motivo de Retirada de Pauta'),
+ ),
+ ]
diff --git a/sapl/sessao/migrations/0030_auto_20181113_1149.py b/sapl/sessao/migrations/0030_auto_20181113_1149.py
new file mode 100644
index 000000000..6b7c3a237
--- /dev/null
+++ b/sapl/sessao/migrations/0030_auto_20181113_1149.py
@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.8 on 2018-11-13 13:49
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('sessao', '0028_auto_20181031_0902'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='retiradapauta',
+ name='data',
+ field=models.DateField(default=django.utils.timezone.now, verbose_name='Data'),
+ ),
+ migrations.AddField(
+ model_name='retiradapauta',
+ name='sessao_plenaria',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='sessao.SessaoPlenaria', verbose_name='Sessão Plenária'),
+ ),
+ ]
diff --git a/sapl/sessao/migrations/0031_auto_20181116_1849.py b/sapl/sessao/migrations/0031_auto_20181116_1849.py
new file mode 100644
index 000000000..61ea74b9f
--- /dev/null
+++ b/sapl/sessao/migrations/0031_auto_20181116_1849.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.8 on 2018-11-16 20:49
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('sessao', '0030_auto_20181113_1149'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='retiradapauta',
+ name='materia',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='materia.MateriaLegislativa', verbose_name='Matéria'),
+ ),
+ ]
diff --git a/sapl/sessao/migrations/0032_merge_20181122_1527.py b/sapl/sessao/migrations/0032_merge_20181122_1527.py
new file mode 100644
index 000000000..9a74abe95
--- /dev/null
+++ b/sapl/sessao/migrations/0032_merge_20181122_1527.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.8 on 2018-11-22 17:27
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('sessao', '0031_auto_20181116_1849'),
+ ('sessao', '0031_auto_20181119_1103'),
+ ]
+
+ operations = [
+ ]
diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py
index 6f07d9645..8cc162a05 100644
--- a/sapl/sessao/models.py
+++ b/sapl/sessao/models.py
@@ -2,6 +2,7 @@ from operator import xor
from django.core.exceptions import ValidationError
from django.db import models
+from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from model_utils import Choices
import reversion
@@ -584,6 +585,18 @@ class ResumoOrdenacao(models.Model):
def __str__(self):
return 'Ordenação do Resumo de uma Sessão'
+@reversion.register()
+class TipoRetiradaPauta(models.Model):
+ descricao = models.CharField(max_length=150, verbose_name=_('Descrição'))
+
+ class Meta:
+ verbose_name = _('Tipo de Retidara de Pauta')
+ verbose_name_plural = _('Tipos de Retirada de Pauta')
+ ordering = ['descricao']
+
+ def __str__(self):
+ return self.descricao
+
@reversion.register()
class TipoJustificativa(models.Model):
@@ -662,3 +675,55 @@ class JustificativaAusencia(models.Model):
force_update=force_update,
using=using,
update_fields=update_fields)
+
+class RetiradaPauta(models.Model):
+ materia = models.ForeignKey(MateriaLegislativa,
+ on_delete=models.CASCADE,
+ verbose_name=_('Matéria'))
+ sessao_plenaria = models.ForeignKey(SessaoPlenaria,
+ on_delete=models.CASCADE,
+ verbose_name=_('Sessão Plenária'),
+ blank=True,
+ null=True)
+ ordem = models.ForeignKey(OrdemDia,
+ blank=True,
+ null=True,
+ on_delete=models.CASCADE)
+ expediente = models.ForeignKey(ExpedienteMateria,
+ blank=True,
+ null=True,
+ on_delete=models.CASCADE)
+ data = models.DateField(verbose_name=_('Data'),
+ default=timezone.now)
+ observacao = models.TextField(blank=True,
+ verbose_name=_('Observações'))
+ parlamentar = models.ForeignKey(Parlamentar,
+ on_delete=models.PROTECT,
+ verbose_name=_('Requerente'),
+ blank=True,
+ null=True)
+ tipo_de_retirada = models.ForeignKey(TipoRetiradaPauta,
+ on_delete=models.PROTECT,
+ verbose_name=_('Motivo de Retirada de Pauta'))
+
+ class Meta:
+ verbose_name = _('Retirada de Pauta')
+ verbose_name_plural = _('Retirada de Pauta')
+
+ def __str__(self):
+ return _('Ordem: %(ordem)s - Requerente: %(requerente)s - '
+ 'Matéria: %(materia)s') % {
+ 'ordem': self.ordem,
+ 'requerente': self.parlamentar,
+ 'materia': self.materia}
+
+ def clean(self):
+ """Exatamente um dos campos ordem ou expediente deve estar preenchido.
+ """
+ # TODO remover esse método quando OrdemDia e ExpedienteMateria
+ # forem reestruturados e os campos ordem e expediente forem unificados
+ if not xor(bool(self.ordem), bool(self.expediente)):
+ raise ValidationError(
+ 'ReritadaPauta deve ter exatamente um dos campos '
+ 'ordem ou expediente preenchido. Ambos estão preenchidos: '
+ '{}, {}'. format(self.ordem, self.expediente))
diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py
index 725c0c13f..9bcb414b6 100644
--- a/sapl/sessao/urls.py
+++ b/sapl/sessao/urls.py
@@ -10,8 +10,9 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
PesquisarPautaSessaoView,
PesquisarSessaoPlenariaView,
PresencaOrdemDiaView, PresencaView,
- ResumoOrdenacaoView, ResumoView, ResumoAtaView, SessaoCrud,
+ ResumoOrdenacaoView, ResumoView, ResumoAtaView, RetiradaPautaCrud, SessaoCrud,
TipoJustificativaCrud, TipoExpedienteCrud, TipoResultadoVotacaoCrud,
+ TipoExpedienteCrud, TipoResultadoVotacaoCrud,TipoRetiradaPautaCrud,
TipoSessaoCrud, VotacaoEditView,
VotacaoExpedienteEditView,
VotacaoExpedienteView, VotacaoNominalEditView,
@@ -41,7 +42,7 @@ urlpatterns = [
OradorExpedienteCrud.get_urls() +
ExpedienteMateriaCrud.get_urls() +
JustificativaAusenciaCrud.get_urls() +
- MateriaOrdemDiaCrud.get_urls())),
+ MateriaOrdemDiaCrud.get_urls() + RetiradaPautaCrud.get_urls())),
url(r'^sessao/(?P\d+)/mesa$', MesaView.as_view(), name='mesa'),
@@ -78,6 +79,8 @@ urlpatterns = [
include(TipoExpedienteCrud.get_urls())),
url(r'^sistema/sessao-plenaria/tipo-justificativa/',
include(TipoJustificativaCrud.get_urls())),
+ url(r'^sistema/sessao-plenaria/tipo-retirada-pauta/',
+ include(TipoRetiradaPautaCrud.get_urls())),
url(r'^sistema/bancada/',
include(BancadaCrud.get_urls())),
url(r'^sistema/bloco/',
@@ -173,5 +176,5 @@ urlpatterns = [
name='votacao_simbolica_transparencia'),
url(r'^sessao/mudar-ordem-materia-sessao/',
mudar_ordem_materia_sessao,
- name='mudar_ordem_materia_sessao'),
+ name='mudar_ordem_materia_sessao'),
]
diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py
index 2b47b236d..ecaf52712 100755
--- a/sapl/sessao/views.py
+++ b/sapl/sessao/views.py
@@ -43,24 +43,22 @@ from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, BlocoForm,
MesaForm, OradorExpedienteForm, OradorForm, PautaSessaoFilterSet,
PresencaForm, ResumoOrdenacaoForm, SessaoPlenariaFilterSet,
SessaoPlenariaForm, VotacaoEditForm, VotacaoForm,
- VotacaoNominalForm)
-from .models import (Bancada, Bloco, CargoBancada, CargoMesa, ExpedienteMateria,
- ExpedienteSessao, JustificativaAusencia, OcorrenciaSessao, IntegranteMesa,
+ VotacaoNominalForm, RetiradaPautaForm)
+from .models import (Bancada, Bloco, CargoBancada, CargoMesa,
+ ExpedienteMateria, ExpedienteSessao, OcorrenciaSessao, IntegranteMesa,
MateriaLegislativa, Orador, OradorExpediente, OrdemDia,
PresencaOrdemDia, RegistroVotacao, ResumoOrdenacao,
SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente,
- TipoJustificativa, TipoResultadoVotacao, TipoSessaoPlenaria,
- VotoParlamentar)
+ TipoResultadoVotacao, TipoSessaoPlenaria, VotoParlamentar, TipoRetiradaPauta,
+ RetiradaPauta, TipoJustificativa, JustificativaAusencia)
TipoSessaoCrud = CrudAux.build(TipoSessaoPlenaria, 'tipo_sessao_plenaria')
TipoExpedienteCrud = CrudAux.build(TipoExpediente, 'tipo_expediente')
TipoJustificativaCrud = CrudAux.build(TipoJustificativa, 'tipo_justificativa')
CargoBancadaCrud = CrudAux.build(CargoBancada, '')
-
-
-TipoResultadoVotacaoCrud = CrudAux.build(
- TipoResultadoVotacao, 'tipo_resultado_votacao')
+TipoResultadoVotacaoCrud = CrudAux.build(TipoResultadoVotacao, 'tipo_resultado_votacao')
+TipoRetiradaPautaCrud = CrudAux.build(TipoRetiradaPauta, 'tipo_retirada_pauta')
def reordernar_materias_expediente(request, pk):
@@ -197,7 +195,7 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
'-data_tramitacao'
).first()
turno = ' '
- if tramitacao is not None:
+ if tramitacao:
for t in Tramitacao.TURNO_CHOICES:
if t[0] == tramitacao.turno:
turno = t[1]
@@ -221,7 +219,9 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
exist_resultado = obj.registrovotacao_set.filter(
materia=obj.materia).exists()
- if not exist_resultado:
+ exist_retirada = obj.retiradapauta_set.filter(
+ materia=obj.materia).exists()
+ if not exist_resultado and not exist_retirada:
if obj.votacao_aberta:
url = ''
if is_expediente:
@@ -294,6 +294,19 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
resultado = btn_abrir
else:
resultado = '''Não há resultado'''
+
+ elif exist_retirada:
+ retirada = obj.retiradapauta_set.filter(
+ materia_id=obj.materia_id).last()
+ retirada_descricao = retirada.tipo_de_retirada.descricao
+ retirada_observacao = retirada.observacao
+ url = reverse('sapl.sessao:retiradapauta_detail',
+ kwargs={'pk': retirada.id})
+ resultado = ('%s %s' %
+ (url,
+ retirada_descricao,
+ retirada_observacao))
+
else:
resultado = obj.registrovotacao_set.filter(
materia_id=obj.materia_id).last()
@@ -833,18 +846,11 @@ class PainelView(PermissionRequiredForAppCrudMixin, TemplateView):
messages.add_message(self.request, messages.ERROR, msg)
else:
- m, s, x = cronometro_discurso.isoformat().split(':')
- cronometro_discurso = int(m) * 60 + int(s)
-
- m, s, x = cronometro_aparte.isoformat().split(':')
- cronometro_aparte = int(m) * 60 + int(s)
-
- m, s, x = cronometro_ordem.isoformat().split(':')
- cronometro_ordem = int(m) * 60 + int(s)
-
- m, s, x = cronometro_consideracoes.isoformat().split(':')
- cronometro_consideracoes = int(m) * 60 + int(s)
-
+ cronometro_discurso = cronometro_discurso.seconds
+ cronometro_aparte = cronometro_aparte.seconds
+ cronometro_ordem = cronometro_ordem.seconds
+ cronometro_consideracoes = cronometro_consideracoes.seconds
+
context = TemplateView.get_context_data(self, **kwargs)
context.update({
'head_title': str(_('Painel Plenário')),
@@ -1335,8 +1341,13 @@ class ResumoView(DetailView):
).order_by('parlamentar__nome_parlamentar')
parlamentares_sessao = [p.parlamentar for p in presencas]
-
- context.update({'presenca_sessao': parlamentares_sessao})
+
+ ausentes_sessao = JustificativaAusencia.objects.filter(
+ sessao_plenaria_id=self.object.id
+ ).order_by('parlamentar__nome_parlamentar')
+
+ context.update({'presenca_sessao': parlamentares_sessao,
+ 'justificativa_ausencia': ausentes_sessao})
# =====================================================================
@@ -1370,10 +1381,13 @@ class ResumoView(DetailView):
turno = get_turno(tramitacao.turno)
rv = m.registrovotacao_set.first()
+ rp = m.retiradapauta_set.filter(materia=m.materia).first()
if rv:
resultado = rv.tipo_resultado_votacao.nome
resultado_observacao = rv.observacao
-
+ elif rp:
+ resultado = rp.tipo_de_retirada.descricao
+ resultado_observacao = rp.observacao
else:
resultado = _('Matéria não votada')
resultado_observacao = _(' ')
@@ -1461,9 +1475,13 @@ class ResumoView(DetailView):
# Verificar resultado
rv = o.registrovotacao_set.filter(materia=o.materia).first()
+ rp = o.retiradapauta_set.filter(materia=o.materia).first()
if rv:
resultado = rv.tipo_resultado_votacao.nome
resultado_observacao = rv.observacao
+ elif rp:
+ resultado = rp.tipo_de_retirada.descricao
+ resultado_observacao = rp.observacao
else:
resultado = _('Matéria não votada')
resultado_observacao = _(' ')
@@ -3099,7 +3117,7 @@ def mudar_ordem_materia_sessao(request):
elif materia == 'ordem':
materia = OrdemDia
else:
- return
+ return JsonResponse({}, safe=False)
# Testa se existe alguma matéria na posição recebida
try:
@@ -3138,7 +3156,7 @@ def mudar_ordem_materia_sessao(request):
materia_1.numero_ordem = posicao_final
materia_1.save()
- return
+ return JsonResponse({}, safe=False)
class JustificativaAusenciaCrud(MasterDetailCrud):
@@ -3675,4 +3693,38 @@ class VotacaoEmBlocoNominalView(TemplateView):
'form': form,
'origem': self.request.POST['origem']})
- return self.render_to_response(context)
\ No newline at end of file
+ return self.render_to_response(context)
+
+class RetiradaPautaCrud(MasterDetailCrud):
+ model = RetiradaPauta
+ public = [RP_LIST, RP_DETAIL, ]
+ parent_field = 'sessao_plenaria'
+
+ class BaseMixin(MasterDetailCrud.BaseMixin):
+ list_field_names = ['tipo_de_retirada', 'materia', 'observacao', 'parlamentar']
+
+ class ListView(MasterDetailCrud.ListView):
+ paginate_by = 10
+
+ class CreateView(MasterDetailCrud.CreateView):
+ form_class = RetiradaPautaForm
+ layout_key = None
+
+ def get_initial(self):
+ sessao_plenaria = SessaoPlenaria.objects.get(id=self.kwargs['pk'])
+ return {'sessao_plenaria': sessao_plenaria}
+
+ def get_success_url(self):
+ return reverse('sapl.sessao:retiradapauta_list',
+ kwargs={'pk': self.kwargs['pk']})
+
+ class UpdateView(MasterDetailCrud.UpdateView):
+ form_class = RetiradaPautaForm
+ layout_key = None
+
+ def get_initial(self):
+ sessao_plenaria = RetiradaPauta.objects.get(id=self.kwargs['pk']).sessao_plenaria
+ return {'sessao_plenaria': sessao_plenaria}
+
+ class DeleteView(MasterDetailCrud.DeleteView):
+ pass
diff --git a/sapl/static/js/app.js b/sapl/static/js/app.js
index cc9c773ce..4341cb784 100644
--- a/sapl/static/js/app.js
+++ b/sapl/static/js/app.js
@@ -47,7 +47,7 @@ function refreshMask() {
$('.dateinput').mask('00/00/0000', {placeholder:"__/__/____"});
$('.hora').mask("00:00", {placeholder:"hh:mm"});
$('.hora_hms').mask("00:00:00", {placeholder:"hh:mm:ss"});
- $('.cronometro').mask("00:00", {placeholder:"mm:ss"});
+ $('.cronometro').mask("00:00:00", {placeholder:"hh:mm:ss"});
}
function autorModal() {
diff --git a/sapl/static/styles/app.css b/sapl/static/styles/app.css
new file mode 100644
index 000000000..3561a3e06
--- /dev/null
+++ b/sapl/static/styles/app.css
@@ -0,0 +1,503 @@
+.container-home {
+ position: relative;
+ padding: 2em 1.5em 1.5em 1.5em;
+ max-width: 1000px;
+ margin: 0 auto; }
+ .container-home a:hover {
+ color: #444;
+ -webkit-transition: 0.3s ease-in;
+ -moz-transition: 0.3s ease-in;
+ -o-transition: 0.3s ease-in; }
+ .container-home #homeIndex {
+ text-align: center; }
+ .container-home .homeBanner span {
+ color: white;
+ font-size: 32px;
+ font-weight: 600;
+ display: inline-block;
+ vertical-align: middle;
+ padding: 2px 45px 4px;
+ border: 2px solid; }
+ .container-home .homeBanner::after {
+ display: inline-block;
+ vertical-align: middle;
+ height: 100%; }
+ .container-home .homeBlock {
+ display: inline-block;
+ position: relative;
+ background-color: #F3F3F3;
+ width: 190px;
+ height: 260px;
+ margin: 3px;
+ text-align: center;
+ font-size: 0;
+ overflow: hidden; }
+ .container-home .homeBlock > a {
+ display: block;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0; }
+ .container-home .homeBlock::after {
+ content: '';
+ display: inline-block;
+ vertical-align: middle;
+ height: 100%;
+ overflow: visible;
+ clear: none;
+ visibility: initial; }
+ .container-home .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; }
+ .container-home .homeContent p {
+ display: block;
+ line-height: 13px;
+ font-size: 80%;
+ color: white; }
+ .container-home .homeIcon {
+ position: relative;
+ display: inline-block;
+ width: 105px;
+ height: 105px;
+ border-radius: 50%;
+ background: #364347;
+ z-index: 1; }
+ .container-home .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; }
+ .container-home .homeIcon img {
+ position: absolute;
+ margin: auto;
+ top: 0;
+ bottom: 0;
+ right: 0;
+ left: 0;
+ transition: opacity 0.4s 0.4s ease; }
+ .container-home .homeFront {
+ position: absolute;
+ top: 46%;
+ width: 100%;
+ font-size: 0;
+ transform: translateY(-60%); }
+ .container-home .homeFront h2 {
+ position: absolute;
+ margin-top: 18px;
+ font-size: 22px;
+ font-weight: 700;
+ color: #595959 !important;
+ width: 100%;
+ padding: 0 6%;
+ z-index: 0; }
+ .container-home .homeTitle {
+ display: block;
+ height: 32px;
+ text-align: center;
+ width: 100%;
+ opacity: 0;
+ transition: opacity 0.4s ease; }
+ .container-home .homeTitle::before {
+ content: '';
+ display: inline-block;
+ vertical-align: middle;
+ height: 100%; }
+ .container-home .homeTitle h2 {
+ display: inline-block;
+ vertical-align: middle;
+ max-width: 110px;
+ font-size: 14px;
+ color: white !important;
+ line-height: 1em; }
+ .container-home .homeTitle img {
+ display: inline-block;
+ vertical-align: middle;
+ height: 30px;
+ margin-right: 5px; }
+ .container-home .homeBlock:hover .homeIcon::before {
+ transform: scale(3.6) translateY(7px); }
+ .container-home .homeBlock:hover .homeContent {
+ opacity: 1;
+ transition-delay: 0.2s; }
+ .container-home .homeBlock:hover .homeIcon img {
+ opacity: 0;
+ transition-duration: 0.2s;
+ transition-delay: 0s; }
+ .container-home .homeBlock:hover .homeTitle {
+ opacity: 1; }
+
+html {
+ position: relative;
+ min-height: 100%; }
+
+body {
+ margin-bottom: 160px; }
+
+h1, h2, h3, h4, h5, h6, form, dl, dt, dd, p, div, img, a {
+ margin: 0;
+ padding: 0; }
+
+h1, .h1 {
+ font-size: 30px; }
+
+h2, .h2 {
+ font-size: 24px; }
+
+h3, .h3 {
+ font-size: 20px; }
+
+h4, .h4 {
+ font-size: 16px; }
+
+h5, .h5 {
+ font-size: 14px; }
+
+h6, .h6 {
+ font-size: 12px; }
+
+p {
+ margin: 0.5em 0; }
+ p .control-label {
+ font-weight: bold; }
+
+label {
+ margin-bottom: 0;
+ line-height: 1; }
+
+fieldset fieldset {
+ font-size: 95%; }
+ fieldset fieldset legend {
+ font-size: 18px; }
+
+.page-header {
+ margin: 20px 0px 10px; }
+
+.caret.top {
+ transform: rotate(180deg); }
+
+.btn:hover, .btn:focus {
+ color: inherit; }
+
+.btn-default.btn-excluir {
+ color: #d9534f; }
+ .btn-default.btn-excluir:hover {
+ color: #fff;
+ border-color: #de6764;
+ background-color: #de6764; }
+
+.btn-cancel-iframe {
+ position: relative;
+ text-align: right;
+ opacity: 0.5; }
+ .btn-cancel-iframe:hover {
+ opacity: 1; }
+ .btn-cancel-iframe a {
+ padding: 10px;
+ display: inline-block; }
+
+.legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 20px;
+ font-size: 21px;
+ line-height: inherit;
+ color: #333333;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
+ clear: both; }
+
+.grid-gutter-width-right {
+ margin-right: 15px; }
+
+.controls-file {
+ padding: 10px;
+ border: 1px solid #d6e1e5;
+ border-radius: 4px; }
+ .controls-file label.checkbox-inline {
+ margin: 0px;
+ display: block; }
+
+.help-block-danger {
+ margin: 15px;
+ padding: 15px;
+ border: 2px dashed #f00; }
+
+.control-label {
+ margin: 0; }
+
+.form-control-static {
+ padding-top: 0;
+ min-height: auto; }
+ .form-control-static img {
+ max-width: 100%; }
+
+.pagination {
+ padding-top: 25px; }
+
+.modal .alert {
+ margin-bottom: 0; }
+
+.avatar-parlamentar {
+ height: 128px;
+ width: 128px;
+ margin: 0 auto;
+ display: table; }
+
+.masthead {
+ padding: 10px; }
+ .masthead .nav {
+ clear: both; }
+ .masthead .navbar-brand {
+ padding: 0px;
+ color: inherit;
+ font-size: 24px; }
+ .masthead .navbar-brand img.img-responsive {
+ height: 95px;
+ margin-right: 15px;
+ display: inline-block; }
+ .masthead .navbar-brand small {
+ color: #93A4AA;
+ font-size: 75%;
+ line-height: 25px; }
+ .masthead .navbar-brand .vcenter {
+ display: inline-block;
+ vertical-align: middle;
+ float: none;
+ padding: 10px; }
+
+nav.navbar {
+ margin-bottom: 0;
+ border-radius: 0;
+ font-size: 15px; }
+
+nav .navbar-nav > li > a {
+ padding-top: 0px;
+ padding-bottom: 0px;
+ line-height: 75px; }
+ nav .navbar-nav > li > a:hover {
+ background-color: #23527c; }
+
+nav .navbar-nav > li:nth-child(2) > .dropdown-menu {
+ right: auto; }
+
+nav .navbar-nav:last-child > li:last-child a {
+ padding-right: 0px; }
+
+.controls-radio-checkbox {
+ padding: 0px;
+ border: 1px solid #d6e1e5;
+ border-radius: 4px;
+ min-height: 20px; }
+ .controls-radio-checkbox .checkbox, .controls-radio-checkbox .radio, .controls-radio-checkbox .checkbox-inline, .controls-radio-checkbox .radio-inline {
+ padding: 8px 8px 8px 36px;
+ margin: 0;
+ line-height: 1.6;
+ display: block; }
+ .controls-radio-checkbox .checkbox:hover, .controls-radio-checkbox .radio:hover, .controls-radio-checkbox .checkbox-inline:hover, .controls-radio-checkbox .radio-inline:hover {
+ background-color: #d6e1e5; }
+ .controls-radio-checkbox .checkbox .icons, .controls-radio-checkbox .radio .icons, .controls-radio-checkbox .checkbox-inline .icons, .controls-radio-checkbox .radio-inline .icons {
+ top: auto;
+ left: 8px; }
+ .controls-radio-checkbox .checkbox-inline, .controls-radio-checkbox .radio-inline {
+ display: inline-block; }
+ .controls-radio-checkbox .help-block {
+ margin: 15px;
+ padding: 15px;
+ border: 2px dashed #d6e1e5; }
+
+.controls-radio-checkbox__old {
+ padding: 0px;
+ border: 1px solid #d6e1e5;
+ border-radius: 4px;
+ min-height: 20px; }
+ .controls-radio-checkbox__old label {
+ padding: 0;
+ line-height: 2.7;
+ padding-left: 36px; }
+ .controls-radio-checkbox__old label .icons {
+ top: 8px;
+ left: 8px; }
+ .controls-radio-checkbox__old label.checkbox-inline, .controls-radio-checkbox__old label.radio-inline {
+ padding-right: 8px; }
+ .controls-radio-checkbox__old label.checkbox-inline .icons, .controls-radio-checkbox__old label.radio-inline .icons {
+ top: 8px;
+ left: 8px; }
+ .controls-radio-checkbox__old .checkbox, .controls-radio-checkbox__old .radio, .controls-radio-checkbox__old .checkbox-inline, .controls-radio-checkbox__old .radio-inline {
+ margin: 0; }
+ .controls-radio-checkbox__old .checkbox:hover, .controls-radio-checkbox__old .radio:hover, .controls-radio-checkbox__old .checkbox-inline:hover, .controls-radio-checkbox__old .radio-inline:hover {
+ background-color: #d6e1e5; }
+
+.manual, .manual ul {
+ padding-left: 1.5em;
+ list-style-type: none;
+ margin-top: 0;
+ font-size: 100%; }
+
+.manual li {
+ display: list-item;
+ line-height: 1.5em;
+ padding-right: 0; }
+ .manual li a {
+ background-color: transparent;
+ border: none;
+ border-radius: none;
+ padding: 0; }
+
+.container-tabaux .sidebar-tabaux {
+ background: #fafafa;
+ margin-top: -70px;
+ padding: 10px;
+ border: 1px solid #eee; }
+ .container-tabaux .sidebar-tabaux .navbar-right {
+ margin: 0; }
+ .container-tabaux .sidebar-tabaux .nav-pills > li + li {
+ margin-left: 0px; }
+ .container-tabaux .sidebar-tabaux li {
+ width: 100%; }
+ .container-tabaux .sidebar-tabaux span {
+ display: none; }
+ .container-tabaux .sidebar-tabaux .dropdown-menu {
+ padding: 0px;
+ right: 10px;
+ margin-top: -5px;
+ overflow: hidden; }
+ .container-tabaux .sidebar-tabaux .dropdown-menu a {
+ border: 0px; }
+
+.container-tabaux ul {
+ list-style: none;
+ padding: 0; }
+
+.container-tabaux .list {
+ font-family: "SourceSansProSemiBold", Helvetica, Arial, sans-serif;
+ font-size: 0px;
+ display: table;
+ width: 100%;
+ margin: 0; }
+ .container-tabaux .list ul {
+ display: table;
+ width: 100%;
+ margin: 0; }
+ .container-tabaux .list li {
+ width: calc(50%);
+ display: inline-block;
+ position: relative; }
+ .container-tabaux .list > li {
+ width: 100%;
+ border-bottom: 1px solid #eee;
+ padding-bottom: 20px;
+ margin-bottom: 20px; }
+ .container-tabaux .list .head_title {
+ color: #364347;
+ font-size: 2.4rem;
+ text-transform: none; }
+ .container-tabaux .list a span {
+ display: none; }
+
+#styleparlamentar {
+ border: 0px solid #d6e1e5;
+ border-top-color: #d6e1e5;
+ border-right-color: #d6e1e5;
+ border-bottom-color: #d6e1e5;
+ border-left-color: #d6e1e5;
+ border-image-source: initial;
+ border-image-slice: initial;
+ border-image-repeat: initial;
+ font-size: 16px;
+ line-height: 1.467;
+ padding: 7px 12px;
+ height: 40px;
+ -webkit-appearance: none;
+ border-radius: 4px;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ margin-left: 1.0em; }
+
+.footer {
+ background: #364347;
+ color: white;
+ text-align: center;
+ position: absolute;
+ width: 100%;
+ bottom: 0px; }
+ .footer p {
+ color: white;
+ margin-top: 10px; }
+ .footer .container {
+ padding-top: 25px; }
+
+@media (max-width: 1199px) {
+ nav .container {
+ width: auto !important; }
+ .navbar-nav > li > a {
+ padding-left: 10.71429px;
+ padding-right: 10.71429px; } }
+
+@media (max-width: 1091px) {
+ .container {
+ width: auto; }
+ .navbar-nav > li > a {
+ padding-left: 7.5px;
+ padding-right: 7.5px; }
+ .masthead .navbar-brand {
+ font-size: 22px; }
+ .masthead .navbar-brand img.img-responsive {
+ height: 60px;
+ margin-right: 7.5px; } }
+
+@media (max-width: 991px) {
+ body {
+ margin: 0; }
+ .footer {
+ position: relative; }
+ .caret {
+ margin-left: 1px; }
+ .navbar-nav > li > a {
+ padding-left: 4px;
+ padding-right: 4px; } }
+
+@media (max-width: 767px) {
+ nav .navbar-nav > li > a {
+ line-height: 2.5; }
+ nav .navbar-right {
+ position: absolute;
+ top: 0;
+ margin: 10px; }
+ nav .navbar-right > li {
+ vertical-align: top;
+ display: inline-block; }
+ nav .navbar-right > li a {
+ padding-left: 10px;
+ padding-right: 10px; }
+ nav .navbar-right .pesquisa.open ul {
+ position: absolute; }
+ nav .navbar-right .navbar-form {
+ margin: 8px 0; }
+ .table {
+ width: auto;
+ white-space: normal;
+ display: block;
+ overflow-x: auto; } }
+
+@media (min-width: 1092px) and (max-width: 1199px) {
+ .container {
+ width: 1070px; } }
+
+@media print {
+ a[href]:after {
+ content: none !important; } }
diff --git a/sapl/static/styles/compilacao.css b/sapl/static/styles/compilacao.css
new file mode 100644
index 000000000..557ef057a
--- /dev/null
+++ b/sapl/static/styles/compilacao.css
@@ -0,0 +1,1136 @@
+a:link:after, a:visited:after {
+ content: ""; }
+
+.test_import:nth-child(even) {
+ background-color: #ccc; }
+
+#wait_message {
+ display: block;
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ background-color: rgba(220, 220, 220, 0.75);
+ z-index: 99; }
+ #wait_message #msg {
+ position: relative;
+ margin: 20% auto;
+ padding: 1.2em 2em;
+ max-width: 600px;
+ text-align: center;
+ font-size: 1.5em;
+ color: #677;
+ border: 1px solid #eee;
+ background-color: #fff !important;
+ box-shadow: 0 1px 2px #999; }
+
+.text-center {
+ text-align: center; }
+
+.cp-notify {
+ z-index: 9999;
+ position: fixed;
+ top: 2em;
+ left: 50%;
+ min-width: 600px;
+ transform: translate(-50%, 0);
+ transition: all 0.4s ease;
+ opacity: 0.97; }
+ .cp-notify.hide {
+ opacity: 0;
+ top: -1000px;
+ display: block !important;
+ transition: all 0.4s ease; }
+ .cp-notify .message {
+ padding: 1em;
+ border: 2px solid rgba(0, 0, 0, 0.1);
+ border-radius: 4px;
+ color: rgba(0, 0, 0, 0.6);
+ line-height: 1em;
+ font-size: 1.3em;
+ text-align: center;
+ box-shadow: 0 0 100px rgba(0, 0, 0, 0.2); }
+
+.cp {
+ /* and dpt */ }
+ .cp .desativado .dtxt, .cp .dpt .dptt > a.desativado .dtxt, .cp .desativado .dtxt *, .cp .dpt .dptt > a.desativado .dtxt *, .cp .desativado .dpt-link, .cp .dpt .dptt > a.desativado .dpt-link, .cp .desativado .dpt-link *, .cp .dpt .dptt > a.desativado .dpt-link * {
+ text-decoration: line-through;
+ color: #999 !important; }
+ .cp .desativado .dtxt table, .cp .dpt .dptt > a.desativado .dtxt table, .cp .desativado .dtxt table td, .cp .dpt .dptt > a.desativado .dtxt table td, .cp .desativado .dtxt * table, .cp .dpt .dptt > a.desativado .dtxt * table, .cp .desativado .dtxt * table td, .cp .dpt .dptt > a.desativado .dtxt * table td, .cp .desativado .dpt-link table, .cp .dpt .dptt > a.desativado .dpt-link table, .cp .desativado .dpt-link table td, .cp .dpt .dptt > a.desativado .dpt-link table td, .cp .desativado .dpt-link * table, .cp .dpt .dptt > a.desativado .dpt-link * table, .cp .desativado .dpt-link * table td, .cp .dpt .dptt > a.desativado .dpt-link * table td {
+ border: 1px dotted #ccc; }
+ .cp a {
+ text-decoration: none;
+ cursor: pointer; }
+ .cp .diff .desativado, .cp .diff .dpt .dptt > a.desativado, .cp .dpt .diff .dptt > a.desativado, .cp .diff .desativado *, .cp .diff .dpt .dptt > a.desativado *, .cp .dpt .diff .dptt > a.desativado * {
+ text-decoration: line-through;
+ color: #ddd !important;
+ font-size: 90%; }
+ .cp .diff .added {
+ color: #04DE2C; }
+ .cp .dpt {
+ font-size: 1em;
+ position: relative; }
+ .cp .dpt.indent {
+ padding-left: 1em; }
+ .cp .dpt .ementa {
+ padding: 2em 0em 2em 35%;
+ font-weight: bold; }
+ .cp .dpt .titulo_generico, .cp .dpt .anexo, .cp .dpt .disp_preliminares, .cp .dpt .disp_gerais, .cp .dpt .disp_transitorias, .cp .dpt .disp_finais, .cp .dpt .parte, .cp .dpt .livro, .cp .dpt .titulo, .cp .dpt .capitulo, .cp .dpt .secao, .cp .dpt .subsecao, .cp .dpt .itemsecao {
+ text-align: center;
+ margin-bottom: 1em;
+ font-size: 1.15em;
+ margin-top: 3em; }
+ .cp .dpt .titulo {
+ margin-top: 2em; }
+ .cp .dpt .capitulo {
+ margin-top: 1.5em;
+ font-size: 1.15em; }
+ .cp .dpt .secao {
+ margin-top: 1.2em;
+ margin-bottom: 0.7em;
+ font-weight: bold;
+ font-size: 1.15em; }
+ .cp .dpt .subsecao,
+ .cp .dpt .itemsecao {
+ margin-top: 1em;
+ margin-bottom: 0.6em;
+ font-weight: bold;
+ font-size: 1.15em; }
+ .cp .dpt .artigo {
+ font-size: 1.15em;
+ float: left; }
+ .cp .dpt .artigo .dptt {
+ position: relative; }
+ .cp .dpt .caput {
+ margin-top: 0.3333em;
+ font-size: 1.15em; }
+ .cp .dpt .paragrafo {
+ font-size: 1.1em;
+ margin-top: 0.2222em; }
+ .cp .dpt .inciso {
+ font-size: 1.1em;
+ margin-top: 0.1667em; }
+ .cp .dpt .alinea {
+ font-size: 1.0em;
+ margin-top: 2px; }
+ .cp .dpt .item {
+ font-size: 1.0em;
+ margin-top: 2px; }
+ .cp .dpt .assinatura {
+ margin-top: 0.6em;
+ font-size: 1.15em; }
+ .cp .dpt .fecho_lei {
+ margin-top: 0.6em;
+ font-size: 1.15em; }
+ .cp .dpt .page-break {
+ page-break-before: always; }
+ .cp .dpt .bloco_alteracao {
+ padding-left: 10%;
+ font-style: italic;
+ color: #018; }
+ .cp .dpt .bloco_alteracao a {
+ text-decoration: underline; }
+ .cp .dpt .bloco_alteracao a, .cp .dpt .bloco_alteracao table, .cp .dpt .bloco_alteracao table td {
+ color: #018 !important; }
+ .cp .dpt .dn {
+ /* Notas de Dispositivo*/
+ font-weight: normal;
+ position: relative;
+ font-size: 70%; }
+ .cp .dpt .dn p, .cp .dpt .dn ul {
+ font-weight: normal;
+ margin: 0 0 0 0;
+ list-style: none;
+ padding: 0; }
+ .cp .dpt .dn .dnl {
+ /* Lista Notas de Dispositivo*/
+ display: block;
+ text-align: left !important; }
+ .cp .dpt .dn .dnl * {
+ display: inline; }
+ .cp .dpt .dn .dnl .bullet {
+ padding: 0 0.333em;
+ display: inline-block; }
+ .cp .dpt .dn .dnl .dnli {
+ min-height: 2.5em; }
+ .cp .dpt .dn .dnl .dnli:hover ul {
+ transition: opacity 0.5s linear, clip 0s 0.3s;
+ clip: auto;
+ opacity: 1;
+ background: rgba(230, 230, 230, 0.9); }
+ .cp .dpt .dn .dnl .dnli ul {
+ transition: opacity 0.5s linear, clip 0s 0.3s;
+ clip: rect(0, 0, 0, 0);
+ opacity: 0;
+ position: absolute;
+ background: transparent;
+ right: 0;
+ padding: 0.2em 0.5em 0em 0.5em;
+ border: 1px solid #c7e3d3;
+ border-top: 0px;
+ font-size: 1.5rem; }
+ .cp .dpt .dn .dnl .dnli ul li {
+ display: table-cell;
+ color: #aaa; }
+ .cp .dpt .dn .dnl .dnli ul li:hover {
+ color: #787; }
+ .cp .dpt .dn .dnl .dnli ul li:hover a {
+ color: #27AE60 !important; }
+ .cp .dpt .dn .dnl .dnli ul li .nowner {
+ color: #27AE60 !important; }
+ .cp .dpt .dn .dnl .dnli .ntitulo {
+ font-weight: bold;
+ color: #03A203;
+ text-decoration: none; }
+ .cp .dpt .dn .dnl .dnli .ntitulo a {
+ color: #294 !important; }
+ .cp .dpt .dn .dnl .dnli .ntexto {
+ color: #06D806; }
+ .cp .dpt .dn .dnl .dnli .ntexto a {
+ color: #03A203 !important; }
+ .cp .dpt .dn .dnl:hover {
+ display: block; }
+ .cp .dpt .dn .dnl:hover * {
+ display: block; }
+ .cp .dpt .dn .dnl:hover > .bullet {
+ display: none; }
+ .cp .dpt .dn .dnl:hover .dnli {
+ margin-top: 0.5em;
+ border-top: 1px solid #c7e3d3; }
+ .cp .dpt .dptt {
+ clear: left; }
+ .cp .dpt .dptt > a {
+ color: #000000; }
+ .cp .dpt .dptt > a.nota-alteracao {
+ color: #02baf2;
+ font-size: 0.75em; }
+ .cp .dpt .dptt > a.nota-alteracao:hover {
+ text-decoration: underline; }
+ .cp .dpt .dptt .dne {
+ position: absolute;
+ display: block;
+ right: 0;
+ left: 0;
+ top: 0;
+ height: 0;
+ transform: scaleX(0);
+ transform-origin: right;
+ transition: all 0.3s ease;
+ border-top: 1px solid #2980B9; }
+ .cp .dpt .dptt .dne ul.btns-action {
+ list-style: none;
+ padding: 0;
+ position: absolute;
+ right: 0;
+ background-color: #2980B9; }
+ .cp .dpt .dptt .dne ul.btns-action li {
+ float: left; }
+ .cp .dpt .dptt .dne ul.btns-action li:hover {
+ background-color: rgba(0, 0, 0, 0.1); }
+ .cp .dpt .dptt .dne ul.btns-action li a {
+ color: white;
+ padding: 0.15em 1em 0;
+ display: inline-block; }
+ .cp .dpt .dptt .dne-nota {
+ position: relative;
+ transform: scaleX(1);
+ height: auto;
+ border-top: 0px; }
+ .cp .dpt .dptt .dne-nota ul.btns-action {
+ display: none; }
+ .cp .dpt .dptt .dne-nota .dne-form {
+ margin: 1em -2em 0em;
+ text-align: left;
+ font-size: 1.6rem; }
+ .cp .dpt .dptt:hover .dne {
+ height: 0.1667rem;
+ transform: scaleX(1);
+ transition-delay: 1s; }
+ .cp .dpt .dptt:hover .dne-nota {
+ height: auto;
+ transition-delay: 0s; }
+ .cp .tipo-vigencias {
+ list-style: none;
+ position: fixed;
+ bottom: 0px;
+ left: 50%;
+ transform: translate(-50%, 0);
+ margin: 0;
+ padding: 0;
+ background-color: #2980B9;
+ z-index: 1000;
+ opacity: 0.9;
+ transition: all 0.3s ease-in-out; }
+ .cp .tipo-vigencias li {
+ display: inline-block;
+ border-left: 1px solid #fff;
+ float: left; }
+ .cp .tipo-vigencias li a {
+ color: white;
+ padding: 0.3em 1em 0;
+ display: inline-block;
+ font-size: 110%;
+ cursor: pointer; }
+ .cp .tipo-vigencias li a.selected {
+ background-color: rgba(0, 0, 0, 0.5); }
+ .cp .tipo-vigencias li:hover {
+ background-color: rgba(0, 0, 0, 0.2); }
+ .cp .tipo-vigencias:hover {
+ opacity: 1; }
+
+/* end cp */
+.cp.cpe {
+ /* fim .dpt */
+ /* fim dpt-alts */ }
+ .cp.cpe .desativado, .cp.cpe .dpt .dptt > a.desativado {
+ text-decoration: line-through;
+ color: #999 !important; }
+ .cp.cpe .desativado table, .cp.cpe .dpt .dptt > a.desativado table, .cp.cpe .desativado table td, .cp.cpe .dpt .dptt > a.desativado table td {
+ border: 1px dotted #ccc; }
+ .cp.cpe .desativado a.nota-alteracao * {
+ color: #02baf2 !important; }
+ .cp.cpe .dpt {
+ display: block; }
+ .cp.cpe .dpt > .dpt-actions-fixed {
+ position: absolute;
+ right: -0.8em;
+ top: -0.8em;
+ z-index: 3;
+ opacity: 0; }
+ .cp.cpe .dpt > .dpt-actions-fixed .activate {
+ display: none; }
+ .cp.cpe .dpt > .dpt-actions-fixed .deactivate {
+ display: inline; }
+ .cp.cpe .dpt > .dpt-actions-fixed .btn-dpt-edit.btn-default {
+ color: #333; }
+ .cp.cpe .dpt > .dpt-actions-fixed .btn-dpt-edit.btn-default:hover {
+ color: #fff;
+ background-color: #02baf2; }
+ .cp.cpe .dpt > .dpt-actions, .cp.cpe .dpt > .dpt-actions-bottom {
+ display: none; }
+ .cp.cpe .dpt > .dpt-text {
+ cursor: text;
+ min-height: 30px;
+ border: 1px solid transparent; }
+ .cp.cpe .dpt > .dpt-text:hover, .cp.cpe .dpt > .dpt-text.hover-fixed {
+ background-color: rgba(0, 0, 0, 0.01);
+ color: #2980B9;
+ border: 1px solid #eee;
+ transition: color 0.3s ease; }
+ .cp.cpe .dpt > .dpt-text.artigo {
+ float: none; }
+ .cp.cpe .dpt > .dpt-text a.link-rotulo {
+ color: #000; }
+ .cp.cpe .dpt:hover > .dpt-actions-fixed {
+ opacity: 1; }
+ .cp.cpe .dpt:hover > .dpt-actions-fixed:hover ~ .dpt-text {
+ background-color: rgba(0, 0, 0, 0.01);
+ color: #2980B9;
+ border: 1px solid #eee;
+ transition: color 0.3s ease; }
+ .cp.cpe .dpt .semtexto {
+ font-weight: bold;
+ color: #9aaed6; }
+ .cp.cpe .dpt .semtexto:hover {
+ color: #5f76a4; }
+ .cp.cpe .dpt-alts {
+ margin: 0;
+ margin-bottom: 1em;
+ padding: 0;
+ background-color: transparent;
+ min-height: 100px;
+ border: 2px dashed #fff; }
+ .cp.cpe .dpt-alts:hover {
+ border-color: #d9ddde; }
+ .cp.cpe .dpt-alts:empty {
+ border-color: #ddd; }
+ .cp.cpe .dpt-alts.drag {
+ width: 100% !important;
+ border-color: #d9ddde; }
+ .cp.cpe .dpt-alts.drag .dpt {
+ transition-duration: 0s !important; }
+ .cp.cpe .dpt-alts .dpt {
+ width: 100% !important;
+ box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24);
+ padding: 0;
+ margin: 0;
+ background-color: #edf0f1;
+ height: auto !important;
+ min-height: 2em;
+ z-index: 1; }
+ .cp.cpe .dpt-alts .dpt:not(:first-child) {
+ border-top: 1px solid white; }
+ .cp.cpe .dpt-alts .dpt > .dpt-text {
+ padding: 0.3em 1em;
+ margin-top: 0;
+ margin-bottom: 0; }
+ .cp.cpe .dpt-alts .dpt > .dpt-text a.link-rotulo {
+ text-decoration: underline; }
+ .cp.cpe .dpt-alts .dpt-selected.dpt {
+ margin: 0em -0.5em; }
+ .cp.cpe .dpt-selected.dpt {
+ width: auto !important;
+ margin: 1em -0.5em;
+ border: 1px solid #fad46b !important;
+ padding: 0;
+ background-color: #fafafa;
+ border-radius: 3px;
+ z-index: 4; }
+ .cp.cpe .dpt-selected.dpt > .dpt-text {
+ border: 1px solid transparent; }
+ .cp.cpe .dpt-selected.dpt > .dpt-text:hover {
+ border: 1px solid transparent;
+ background-color: transparent; }
+ .cp.cpe .dpt-selected.dpt > .dpt-form {
+ margin-bottom: 0em; }
+ .cp.cpe .dpt-selected.dpt > .dpt-actions, .cp.cpe .dpt-selected.dpt > .dpt-actions-bottom {
+ display: table;
+ background-color: #e5e5e5;
+ padding: 1em;
+ margin-bottom: 0em;
+ width: 100%; }
+ .cp.cpe .dpt-selected.dpt > .dpt-actions > .btn-action, .cp.cpe .dpt-selected.dpt > .dpt-actions-bottom > .btn-action {
+ display: table-cell;
+ float: none; }
+ .cp.cpe .dpt-selected.dpt > .dpt-actions .btn-excluir, .cp.cpe .cp.cpe1_old_apagar .dpt-selected.dpt > .dpt-actions .csform .actions_inserts > li > a.btn-salvar, .cp.cpe1_old_apagar .cp.cpe .dpt-selected.dpt > .dpt-actions .csform .actions_inserts > li > a.btn-salvar, .cp.cpe .dpt-selected.dpt > .dpt-actions-bottom .btn-excluir, .cp.cpe .cp.cpe1_old_apagar .dpt-selected.dpt > .dpt-actions-bottom .csform .actions_inserts > li > a.btn-salvar, .cp.cpe1_old_apagar .cp.cpe .dpt-selected.dpt > .dpt-actions-bottom .csform .actions_inserts > li > a.btn-salvar {
+ display: inline-block;
+ opacity: 0.3; }
+ .cp.cpe .dpt-selected.dpt > .dpt-actions .btn-excluir:hover, .cp.cpe .cp.cpe1_old_apagar .dpt-selected.dpt > .dpt-actions .csform .actions_inserts > li > a.btn-salvar:hover, .cp.cpe1_old_apagar .cp.cpe .dpt-selected.dpt > .dpt-actions .csform .actions_inserts > li > a.btn-salvar:hover, .cp.cpe .dpt-selected.dpt > .dpt-actions-bottom .btn-excluir:hover, .cp.cpe .cp.cpe1_old_apagar .dpt-selected.dpt > .dpt-actions-bottom .csform .actions_inserts > li > a.btn-salvar:hover, .cp.cpe1_old_apagar .cp.cpe .dpt-selected.dpt > .dpt-actions-bottom .csform .actions_inserts > li > a.btn-salvar:hover {
+ opacity: 1; }
+ .cp.cpe .dpt-selected.dpt > .dpt-actions-bottom {
+ margin: 0; }
+ .cp.cpe .dpt-selected .dpt-block {
+ border-top: 1px solid #e5e5e5 !important;
+ opacity: 0.6;
+ transition: opacity 0.4s ease; }
+ .cp.cpe .dpt-selected .dpt-block:hover {
+ opacity: 1; }
+ .cp.cpe .dpt-selected .dpt:only-child {
+ /*border-bottom: 1px solid #e5e5e5 !important;*/ }
+ .cp.cpe .dpt-selected .dpt:not(:last-child) {
+ /*border-bottom: 1px solid #e5e5e5 !important;*/ }
+ .cp.cpe .dpt-selected .dpt-text {
+ opacity: 0.7;
+ margin: 0;
+ padding: 0.7em; }
+ .cp.cpe .dpt-selected .dpt-text:hover {
+ opacity: 1;
+ background-color: #f5f5f5; }
+ .cp.cpe .dpt-selected .dpt-alts {
+ margin: 1em; }
+ .cp.cpe .dpt-selected .dpt-alts .dpt {
+ box-shadow: 0 0 0; }
+ .cp.cpe .dpt-selected > .dpt-actions-fixed {
+ opacity: 1;
+ top: -12px;
+ right: 0.5em; }
+ .cp.cpe .dpt-selected > .dpt-actions-fixed .activate {
+ display: inline; }
+ .cp.cpe .dpt-selected > .dpt-actions-fixed .deactivate {
+ display: none; }
+ .cp.cpe .dpt-selected > .dpt-actions-fixed .btn-dpt-edit {
+ padding-top: 2px;
+ padding-bottom: 1px; }
+ .cp.cpe .dpt-selected > .dpt-actions-fixed .btn-dpt-edit.btn-default {
+ background-color: #fad46b;
+ border: 1px solid #fad46b; }
+ .cp.cpe .dpt-selected .dropdown-menu.dropdown-menu-left {
+ right: auto !important;
+ left: 0;
+ padding: 2px 0; }
+ .cp.cpe .dpt-selected .dropdown-menu.dropdown-menu-left > .top.arrow {
+ right: 88%;
+ left: auto; }
+ .cp.cpe .dpt-selected .dropdown-menu li a {
+ padding-top: 2px;
+ padding-bottom: 2px; }
+ .cp.cpe .dpt-selected .btn-group .radius-right {
+ border-bottom-right-radius: 4px !important;
+ border-top-right-radius: 4px !important; }
+ .cp.cpe .dpt-selected:hover > .dpt-actions-fixed {
+ opacity: 1; }
+
+.cp.cpe1_old_apagar {
+ margin-bottom: 15em;
+ /* fim dpt */
+ /* fim dpt-selected */ }
+ .cp.cpe1_old_apagar .desativado, .cp.cpe1_old_apagar .dpt .dptt > a.desativado, .cp.cpe1_old_apagar .desativado *, .cp.cpe1_old_apagar .dpt .dptt > a.desativado * {
+ text-decoration: line-through;
+ color: #999 !important; }
+ .cp.cpe1_old_apagar .desativado table, .cp.cpe1_old_apagar .dpt .dptt > a.desativado table, .cp.cpe1_old_apagar .desativado table td, .cp.cpe1_old_apagar .dpt .dptt > a.desativado table td, .cp.cpe1_old_apagar .desativado * table, .cp.cpe1_old_apagar .dpt .dptt > a.desativado * table, .cp.cpe1_old_apagar .desativado * table td, .cp.cpe1_old_apagar .dpt .dptt > a.desativado * table td {
+ border: 1px dotted #ccc; }
+ .cp.cpe1_old_apagar a {
+ text-decoration: none;
+ cursor: pointer; }
+ .cp.cpe1_old_apagar .dpt {
+ position: relative;
+ display: block; }
+ .cp.cpe1_old_apagar .dpt .semtexto {
+ font-weight: bold;
+ color: #BFD1F6; }
+ .cp.cpe1_old_apagar .dpt .artigo {
+ float: none; }
+ .cp.cpe1_old_apagar .dpt .caput {
+ margin-top: 0; }
+ .cp.cpe1_old_apagar .dpt > .actions_right, .cp.cpe1_old_apagar .dpt-selected .csform .dpt > .actions_left {
+ color: #fff;
+ right: 0em;
+ position: absolute;
+ opacity: 0;
+ transition: all 0.4s ease-in-out;
+ z-index: 1000; }
+ .cp.cpe1_old_apagar .dpt > .actions_right a.btn-bloco, .cp.cpe1_old_apagar .dpt-selected .csform .dpt > .actions_left a.btn-bloco {
+ background-color: #3498db;
+ color: #ffffff !important;
+ padding: 8px 18px 6px;
+ display: inline-block;
+ line-height: 1;
+ float: right; }
+ .cp.cpe1_old_apagar .dpt > .actions_right a.btn-bloco:hover, .cp.cpe1_old_apagar .dpt-selected .csform .dpt > .actions_left a.btn-bloco:hover {
+ opacity: 1;
+ background-image: -webkit-linear-gradient(top, #1c81c4, #0b6dad);
+ background-image: -moz-linear-gradient(top, #1c81c4, #0b6dad);
+ background-image: -ms-linear-gradient(top, #1c81c4, #0b6dad);
+ background-image: -o-linear-gradient(top, #1c81c4, #0b6dad);
+ background-image: linear-gradient(to bottom, #1c81c4, #0b6dad); }
+ .cp.cpe1_old_apagar .dpt:hover > .actions_right, .cp.cpe1_old_apagar .dpt-selected .csform .dpt:hover > .actions_left {
+ opacity: 1; }
+ .cp.cpe1_old_apagar .dpt .bloco {
+ display: block;
+ clear: both; }
+ .cp.cpe1_old_apagar .dpt .bloco *:hover {
+ color: #27AE60; }
+ .cp.cpe1_old_apagar .dpt .bloco .de {
+ cursor: pointer; }
+ .cp.cpe1_old_apagar .dpt .articulacao {
+ border-top: 2px solid #e5e5e5;
+ margin: 2em 0; }
+ .cp.cpe1_old_apagar .dpt .bloco_alteracao {
+ margin: 1em 0;
+ padding: 0em;
+ background-color: transparent;
+ min-height: 100px;
+ border: 2px dashed #fff; }
+ .cp.cpe1_old_apagar .dpt .bloco_alteracao:hover {
+ border-color: #d9ddde; }
+ .cp.cpe1_old_apagar .dpt .bloco_alteracao.drag {
+ width: 100% !important;
+ border-color: #d9ddde; }
+ .cp.cpe1_old_apagar .dpt .bloco_alteracao.drag .dpt {
+ transition-duration: 0s !important; }
+ .cp.cpe1_old_apagar .dpt .bloco_alteracao .dpt {
+ width: 100% !important;
+ box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24);
+ padding: 0.3em 1em;
+ margin: 0;
+ background-color: #edf0f1;
+ z-index: 1; }
+ .cp.cpe1_old_apagar .dpt .bloco_alteracao .dpt:not(:first-child) {
+ border-top: 1px solid white; }
+ .cp.cpe1_old_apagar .dpt .bloco_alteracao .dpt.ui-draggable div {
+ cursor: pointer; }
+ .cp.cpe1_old_apagar .dpt .bloco_alteracao .dpt.dpt-comp-selected {
+ transition: all 0.3s ease;
+ width: auto !important;
+ margin: 2em -3.7em;
+ box-shadow: 0 0 6px rgba(0, 0, 0, 0.16), 0 6px 12px rgba(0, 0, 0, 0.32); }
+ .cp.cpe1_old_apagar .dpt-selected {
+ font-size: 1em;
+ border: 0px solid #CCC;
+ margin: 1em -1.8em 1em -1.8em;
+ padding: 2.2em 2.2em 1.6em 2.2em;
+ box-shadow: -4px 15px 15px rgba(0, 0, 0, 0.1), 0px 6px 6px rgba(0, 0, 0, 0.23);
+ background-image: -webkit-linear-gradient(top, #eaeaee, #ddd);
+ background-image: -moz-linear-gradient(top, #eaeaee, #ddd);
+ background-image: -ms-linear-gradient(top, #eaeaee, #ddd);
+ background-image: -o-linear-gradient(top, #eaeaee, #ddd);
+ background-image: linear-gradient(to bottom, #eaeaee, #ddd);
+ /* fim csform*/ }
+ .cp.cpe1_old_apagar .dpt-selected ul {
+ list-style: none;
+ margin: 0;
+ padding: 0; }
+ .cp.cpe1_old_apagar .dpt-selected .semtexto {
+ color: #999; }
+ .cp.cpe1_old_apagar .dpt-selected .bloco {
+ opacity: 0.5; }
+ .cp.cpe1_old_apagar .dpt-selected .bloco:hover {
+ opacity: 1; }
+ .cp.cpe1_old_apagar .dpt-selected .bloco a:hover {
+ background: transparent; }
+ .cp.cpe1_old_apagar .dpt-selected > .bloco {
+ opacity: 1;
+ margin: 1em; }
+ .cp.cpe1_old_apagar .dpt-selected .bloco_alteracao {
+ margin: 0;
+ padding: 1em;
+ border: 0 transparent;
+ background-image: -webkit-linear-gradient(top, #eaeaee, #ddd);
+ background-image: -moz-linear-gradient(top, #eaeaee, #ddd);
+ background-image: -ms-linear-gradient(top, #eaeaee, #ddd);
+ background-image: -o-linear-gradient(top, #eaeaee, #ddd);
+ background-image: linear-gradient(to bottom, #eaeaee, #ddd); }
+ .cp.cpe1_old_apagar .dpt-selected .bloco_alteracao:hover {
+ border-color: transparent; }
+ .cp.cpe1_old_apagar .dpt-selected .bloco_alteracao.drag {
+ width: 100% !important; }
+ .cp.cpe1_old_apagar .dpt-selected .bloco_alteracao.drag .dpt {
+ transition-duration: 0s !important; }
+ .cp.cpe1_old_apagar .dpt-selected .bloco_alteracao .dpt {
+ width: auto !important;
+ transition: all 0.3s ease;
+ background-color: white; }
+ .cp.cpe1_old_apagar .dpt-selected .bloco_alteracao .dpt:not(:first-child) {
+ border-top: 0px solid white; }
+ .cp.cpe1_old_apagar .dpt-selected > .dpt {
+ padding: 0; }
+ .cp.cpe1_old_apagar .dpt-selected > .dpt:last-child {
+ padding-bottom: 1em; }
+ .cp.cpe1_old_apagar .dpt-selected > .actions_right a.btn-bloco, .cp.cpe1_old_apagar .dpt-selected .csform .dpt-selected > .actions_left a.btn-bloco {
+ display: none; }
+ .cp.cpe1_old_apagar .dpt-selected .csform {
+ /* compilacao simple form */
+ display: block;
+ clear: both;
+ z-index: 9;
+ position: static;
+ /* actions_inserts */ }
+ .cp.cpe1_old_apagar .dpt-selected .csform .btns-action {
+ -webkit-animation: fadeIn 1s ease-in-out;
+ -moz-animation: fadeIn 1s ease-in-out;
+ -o-animation: fadeIn 1s ease-in-out;
+ opacity: 1;
+ position: absolute;
+ display: table;
+ transition: all 0.4s ease-in-out; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .btns-action a {
+ color: #16407c;
+ display: block;
+ background: transparent;
+ vertical-align: middle;
+ text-align: center;
+ font-weight: normal;
+ text-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
+ padding: 0.33em 0.4em; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .btns-action > li {
+ position: relative;
+ display: table-cell;
+ vertical-align: top; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .btns-action > li:hover {
+ background-color: rgba(255, 255, 255, 0.5); }
+ .cp.cpe1_old_apagar .dpt-selected .csform .btns-action > li:hover > a {
+ text-shadow: 0 0 5px #777;
+ color: #0a5; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .label_status {
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ color: #889;
+ padding: 0.3em;
+ font-size: 80%;
+ text-align: right;
+ z-index: 15;
+ display: table; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .label_status li {
+ display: table-cell;
+ padding: 0 0.5em; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_parents {
+ z-index: 11;
+ top: 0em;
+ left: 0em; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_parents a {
+ padding: 0.62em; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_parents div, .cp.cpe1_old_apagar .dpt-selected .csform .actions_parents li {
+ font-size: 80%;
+ display: table-cell;
+ vertical-align: middle;
+ border-right: 1px solid #CCC; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_parents div {
+ padding: 0 0.4em;
+ font-stretch: condensed;
+ font-variant: small-caps;
+ font-weight: bold;
+ text-shadow: 0 0 10px #fff; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_parents > li:hover a {
+ color: #16407c;
+ font-weight: normal; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_top, .cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom {
+ top: 0em;
+ right: 0em; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_top a, .cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom a {
+ padding-right: 1em;
+ padding-left: 1em; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_top li, .cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom li {
+ display: table-cell;
+ vertical-align: middle;
+ border-left: 1px solid #CCC; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom {
+ top: auto;
+ left: 0;
+ bottom: 0;
+ display: inline-block;
+ border-top: 1px solid #CCC; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom a {
+ padding: 0 0.4em; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_bottom li {
+ border: 0px;
+ border-right: 1px solid #CCC; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_right, .cp.cpe1_old_apagar .dpt-selected .csform .actions_left {
+ top: 2.2em;
+ right: 0em;
+ bottom: 0;
+ display: block; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_right li, .cp.cpe1_old_apagar .dpt-selected .csform .actions_left li {
+ width: 2.2em;
+ display: block;
+ border-bottom: 1px solid #CCC; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_right li:first-child, .cp.cpe1_old_apagar .dpt-selected .csform .actions_left li:first-child {
+ border-top: 1px solid #CCC; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_left {
+ right: auto;
+ left: 0em; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts {
+ background: transparent;
+ position: relative;
+ z-index: 19;
+ display: table;
+ width: 100%; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li {
+ display: table-cell; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li:hover > a {
+ background-image: -webkit-linear-gradient(top, #1c81c4, #0b6dad);
+ background-image: -moz-linear-gradient(top, #1c81c4, #0b6dad);
+ background-image: -ms-linear-gradient(top, #1c81c4, #0b6dad);
+ background-image: -o-linear-gradient(top, #1c81c4, #0b6dad);
+ background-image: linear-gradient(to bottom, #1c81c4, #0b6dad); }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > a {
+ background-image: -webkit-linear-gradient(top, #3498DB, #2980C9);
+ background-image: -moz-linear-gradient(top, #3498DB, #2980C9);
+ background-image: -ms-linear-gradient(top, #3498DB, #2980C9);
+ background-image: -o-linear-gradient(top, #3498DB, #2980C9);
+ background-image: linear-gradient(to bottom, #3498DB, #2980C9);
+ border-right: 1px solid #fff;
+ padding: 0.2em;
+ display: block;
+ color: white;
+ text-align: center;
+ white-space: nowrap;
+ /* btn-excluir */ }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > a.btn-excluir, .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > a.btn-salvar {
+ text-align: left;
+ background: #A70808;
+ color: #c99;
+ padding-left: 1.7em;
+ position: relative; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > a.btn-excluir:hover, .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > a.btn-salvar:hover {
+ background-color: #c70808;
+ color: #ecc; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > a.btn-excluir::before, .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > a.btn-salvar::before {
+ z-index: 20;
+ position: absolute;
+ background: url(/static/img/icon_delete_white.png) no-repeat 50% 50%;
+ content: "";
+ top: 0;
+ left: 0;
+ display: block;
+ color: black;
+ margin-left: 0.4em;
+ height: 100%;
+ width: 2em; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > a.btn-salvar {
+ background: #1f8b4d;
+ color: white; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > a.btn-salvar:hover {
+ background: #2d9c5c;
+ color: white; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > a.btn-salvar::before {
+ background: url(/static/img/icon_save_white.png) no-repeat 50% 50%; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > a span {
+ padding: 0 0.7em; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li:last-child > a {
+ border-right: 0px solid #fff; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > ul li:nth-child(even) a {
+ background: #3385CA; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > ul li a {
+ border-right: 1px solid #fff;
+ display: block;
+ color: white;
+ background: #2980C9;
+ font-size: 80%;
+ padding: 0.23em 1em; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > ul li a:hover {
+ background: #0a5ea4; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.add_prior {
+ table-layout: fixed; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.add_prior > ul {
+ transform: translateY(30px);
+ transition: transform 0.1s linear, opacity 0.1s linear, clip 0s 0.3s;
+ clip: rect(0, 0, 0, 0);
+ opacity: 0;
+ position: absolute;
+ margin-left: 0.5em;
+ box-shadow: 0px 6px 18px rgba(0, 0, 0, 0.19), 0px 2px 6px rgba(0, 0, 0, 0.23);
+ -webkit-transition-delay: 0.4s;
+ /* Safari */
+ transition-delay: 0.4s; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.add_prior > ul li a {
+ border-right: 0px !important; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.add_prior > ul li:first-child::before {
+ border-width: 0.375rem;
+ border-style: inset inset solid;
+ content: "";
+ display: block;
+ height: 0px;
+ width: 0px;
+ border-color: transparent transparent #3385CA;
+ position: absolute;
+ top: -0.71rem;
+ left: 0.9375rem; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.add_prior > ul li:first-child:hover::before {
+ border-color: transparent transparent #0A5EA4; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.add_prior > ul::after {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ left: 0;
+ top: rem-calc(-25px);
+ height: rem-calc(25px);
+ width: 100%;
+ transition: all 0.3s cubic-bezier(0.55, 0, 0.1, 1); }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.add_prior:hover > ul {
+ transform: translateY(7px);
+ transition: transform 0.4s linear, opacity 0.4s linear, clip 0s 0.2s;
+ opacity: 1;
+ clip: rect(-100px, 2000px, 2000px, -100px); }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.menu_excluir {
+ display: block;
+ position: static; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.menu_excluir > ul {
+ transform: translateY(30px);
+ transition: transform 0.1s linear, opacity 0.1s linear, clip 0s 0.3s;
+ clip: rect(0, 0, 0, 0);
+ opacity: 0;
+ position: absolute;
+ margin-left: 0.5em;
+ box-shadow: 0px 6px 18px rgba(0, 0, 0, 0.19), 0px 2px 6px rgba(0, 0, 0, 0.23);
+ -webkit-transition-delay: 0.4s;
+ /* Safari */
+ transition-delay: 0.4s; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.menu_excluir > ul li a {
+ border-right: 0px !important; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.menu_excluir > ul li:first-child::before {
+ border-width: 0.375rem;
+ border-style: inset inset solid;
+ content: "";
+ display: block;
+ height: 0px;
+ width: 0px;
+ border-color: transparent transparent #3385CA;
+ position: absolute;
+ top: -0.71rem;
+ left: 0.9375rem; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.menu_excluir > ul li:first-child:hover::before {
+ border-color: transparent transparent #0A5EA4; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.menu_excluir > ul::after {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ left: 0;
+ top: rem-calc(-25px);
+ height: rem-calc(25px);
+ width: 100%;
+ transition: all 0.3s cubic-bezier(0.55, 0, 0.1, 1); }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.menu_excluir:hover > ul {
+ transform: translateY(7px);
+ transition: transform 0.4s linear, opacity 0.4s linear, clip 0s 0.2s;
+ opacity: 1;
+ clip: rect(-100px, 2000px, 2000px, -100px); }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.menu_excluir > ul {
+ right: 0.5em; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.menu_excluir > ul li a {
+ background-color: #A70808; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.menu_excluir > ul li a:hover {
+ background: #c70808; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.menu_excluir > ul li:first-child::before {
+ border-color: transparent transparent #A70808;
+ right: 10%;
+ left: auto; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li.menu_excluir > ul li:first-child:hover::before {
+ border-color: transparent transparent #c70808; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante, .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo {
+ z-index: 2000; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante > li > ul, .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo > li > ul {
+ transform: translateY(30px);
+ transition: transform 0.1s linear, opacity 0.1s linear, clip 0s 0.3s;
+ clip: rect(0, 0, 0, 0);
+ opacity: 0;
+ position: absolute;
+ margin-left: 0.5em;
+ box-shadow: 0px 6px 18px rgba(0, 0, 0, 0.19), 0px 2px 6px rgba(0, 0, 0, 0.23);
+ -webkit-transition-delay: 0.4s;
+ /* Safari */
+ transition-delay: 0.4s; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante > li > ul li a, .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo > li > ul li a {
+ border-right: 0px !important; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante > li > ul li:first-child::before, .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo > li > ul li:first-child::before {
+ border-width: 0.375rem;
+ border-style: inset inset solid;
+ content: "";
+ display: block;
+ height: 0px;
+ width: 0px;
+ border-color: transparent transparent #3385CA;
+ position: absolute;
+ top: -0.71rem;
+ left: 0.9375rem; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante > li > ul li:first-child:hover::before, .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo > li > ul li:first-child:hover::before {
+ border-color: transparent transparent #0A5EA4; }
+ .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante > li > ul::after, .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo > li > ul::after {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ left: 0;
+ top: rem-calc(-25px);
+ height: rem-calc(25px);
+ width: 100%;
+ transition: all 0.3s cubic-bezier(0.55, 0, 0.1, 1); }
+ .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante > li:hover > ul, .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo > li:hover > ul {
+ transform: translateY(7px);
+ transition: transform 0.4s linear, opacity 0.4s linear, clip 0s 0.2s;
+ opacity: 1;
+ clip: rect(-100px, 2000px, 2000px, -100px); }
+ .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante > li.menu_excluir > ul li:first-child::before, .cp.cpe1_old_apagar .dpt-selected .csform .menu_flutuante_fixo > li.menu_excluir > ul li:first-child::before {
+ right: auto;
+ left: 0.9375rem; }
+ .cp.cpe1_old_apagar .dpt-selected .csform textarea {
+ margin: 0;
+ resize: vertical;
+ min-height: 12.6em;
+ border: 0px;
+ font-size: 120%;
+ width: 100%; }
+ .cp.cpe1_old_apagar .dpt-selected .csform textarea:focus {
+ background: #fff; }
+ .cp.cpe1_old_apagar .dpt-selected .csform textarea::-webkit-input-placeholder {
+ color: #c70808;
+ opacity: 0.6;
+ font-size: 80%; }
+ .cp.cpe1_old_apagar .dpt-selected .csform textarea:-moz-placeholder {
+ /* Firefox 18- */
+ color: #c70808; }
+ .cp.cpe1_old_apagar .dpt-selected .csform textarea::-moz-placeholder {
+ /* Firefox 19+ */
+ color: #c70808; }
+ .cp.cpe1_old_apagar .dpt-selected .csform textarea:-ms-input-placeholder {
+ color: #c70808;
+ opacity: 0.6; }
+ .cp.cpe1_old_apagar .selected {
+ background-color: rgba(255, 255, 255, 0.5); }
+ .cp.cpe1_old_apagar .selected a:hover {
+ color: #16407c !important;
+ font-weight: normal !important; }
+
+.result-busca-dispositivo, .lista-dispositivo {
+ padding: 0 0 1em;
+ min-height: 3em; }
+ .result-busca-dispositivo ul, .lista-dispositivo ul {
+ list-style: none;
+ margin: 0;
+ padding: 1em 0 0;
+ transition: all 2s linear;
+ clear: both; }
+ .result-busca-dispositivo ul li, .lista-dispositivo ul li {
+ display: table;
+ border-collapse: separate;
+ border-bottom: 1px solid white;
+ width: 100%; }
+ .result-busca-dispositivo ul li.ta_title, .lista-dispositivo ul li.ta_title {
+ background-color: rgba(0, 0, 0, 0.15);
+ border-radius: 4px 4px 0 0;
+ width: 100%; }
+ .result-busca-dispositivo ul li:last-child .itemlabel, .lista-dispositivo ul li:last-child .itemlabel {
+ border-radius: 0 0 4px 0px;
+ margin: 0px; }
+ .result-busca-dispositivo ul li:last-child .iteminput, .lista-dispositivo ul li:last-child .iteminput {
+ border-radius: 0 0 0px 4px; }
+ .result-busca-dispositivo ul li .iteminput, .lista-dispositivo ul li .iteminput {
+ background-color: rgba(0, 0, 0, 0.1);
+ border-right: 1px solid white;
+ display: table-cell;
+ padding: 0.5em;
+ vertical-align: middle;
+ text-align: center; }
+ .result-busca-dispositivo ul li .iteminput input, .lista-dispositivo ul li .iteminput input {
+ margin: 0; }
+ .result-busca-dispositivo ul li .itemlabel, .lista-dispositivo ul li .itemlabel {
+ background-color: rgba(0, 0, 0, 0.1);
+ display: table-cell;
+ padding: 0.5em;
+ vertical-align: middle;
+ width: 100%; }
+ .result-busca-dispositivo ul li .itemlabel .artigo, .lista-dispositivo ul li .itemlabel .artigo {
+ float: none; }
+ .result-busca-dispositivo .nomenclatura_heranca, .lista-dispositivo .nomenclatura_heranca {
+ font-size: 90%;
+ color: #057dba;
+ display: inline; }
+
+.lista-dispositivo.controls-radio-checkbox {
+ border: 0px; }
+
+.label_vigencia {
+ border-top: 1px solid white;
+ display: inline-block;
+ color: #555; }
+ .label_vigencia span {
+ color: gray; }
+
+.cp-nav-parents > .dropdown-menu {
+ left: 0;
+ right: auto; }
+ .cp-nav-parents > .dropdown-menu::before {
+ content: '';
+ position: absolute;
+ top: -11px;
+ width: 100%;
+ height: 11px; }
+
+.cp-nav-parents:hover > .dropdown-menu {
+ display: block; }
+
+.table-notificacoes tbody tr td {
+ border-top: 1px solid white;
+ padding: 5px;
+ vertical-align: middle; }
+ .table-notificacoes tbody tr td ul {
+ margin: 0px;
+ /*padding: 0px;
+ list-style: none;*/ }
+ .table-notificacoes tbody tr td ul li:hover {
+ background-color: rgba(0, 0, 0, 0.1); }
+
+.btn-modal-open {
+ float: right; }
+
+.class_color_container {
+ background: #ddd !important; }
+
+.clear {
+ clear: both; }
+
+.mce-tinymce.mce-container {
+ border: 1px solid #ccc !important;
+ margin-right: 2px; }
+
+.mce-btn button:hover {
+ background-color: rgba(0, 0, 0, 0.1) !important;
+ text-shadow: 0 0 5px #fff;
+ box-shadow: 0 0 5px #777; }
+
+.mce-menu {
+ background: #eee !important; }
+
+.displaynone {
+ display: none !important; }
+
+@media only screen and (max-width: 800px) {
+ .cp .fixed {
+ z-index: 98;
+ position: relative; }
+ .cp.cpe1 .dpt-selected {
+ margin: 1em 0; }
+ .cp.cpe1 .dpt-selected .csform .actions_parents, .cp.cpe1 .dpt-selected .csform .label_status {
+ font-size: 80%;
+ position: static !important;
+ display: block !important;
+ padding: 0em;
+ height: auto !important;
+ left: 0;
+ right: auto;
+ text-align: left; }
+ .cp.cpe1 .dpt-selected .csform .actions_parents div, .cp.cpe1 .dpt-selected .csform .actions_parents li, .cp.cpe1 .dpt-selected .csform .label_status div, .cp.cpe1 .dpt-selected .csform .label_status li {
+ display: inline-block !important; }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li > ul {
+ transform: translateY(30px);
+ transition: transform 0.1s linear, opacity 0.1s linear, clip 0s 0.3s;
+ clip: rect(0, 0, 0, 0);
+ opacity: 0;
+ position: absolute;
+ margin-left: 0.5em;
+ box-shadow: 0px 6px 18px rgba(0, 0, 0, 0.19), 0px 2px 6px rgba(0, 0, 0, 0.23);
+ -webkit-transition-delay: 0.4s;
+ /* Safari */
+ transition-delay: 0.4s; }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li > ul li a {
+ border-right: 0px !important; }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li > ul li:first-child::before {
+ border-width: 0.375rem;
+ border-style: inset inset solid;
+ content: "";
+ display: block;
+ height: 0px;
+ width: 0px;
+ border-color: transparent transparent #3385CA;
+ position: absolute;
+ top: -0.71rem;
+ left: 0.9375rem; }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li > ul li:first-child:hover::before {
+ border-color: transparent transparent #0A5EA4; }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li > ul::after {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ left: 0;
+ top: rem-calc(-25px);
+ height: rem-calc(25px);
+ width: 100%;
+ transition: all 0.3s cubic-bezier(0.55, 0, 0.1, 1); }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li:hover > ul {
+ transform: translateY(7px);
+ transition: transform 0.4s linear, opacity 0.4s linear, clip 0s 0.2s;
+ opacity: 1;
+ clip: rect(-100px, 2000px, 2000px, -100px); }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li > a span {
+ display: none; }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li > a.btn-excluir, .cp.cpe1 .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > a.btn-salvar, .cp.cpe1_old_apagar .cp.cpe1 .dpt-selected .csform .actions_inserts > li > a.btn-salvar, .cp.cpe1 .dpt-selected .csform .actions_inserts > li > a.btn-salvar {
+ padding-left: 0;
+ min-width: 1em; }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li > a.btn-excluir::before, .cp.cpe1 .cp.cpe1_old_apagar .dpt-selected .csform .actions_inserts > li > a.btn-salvar::before, .cp.cpe1_old_apagar .cp.cpe1 .dpt-selected .csform .actions_inserts > li > a.btn-salvar::before, .cp.cpe1 .dpt-selected .csform .actions_inserts > li > a.btn-salvar::before {
+ width: 100%;
+ margin: 0; }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li.add_in, .cp.cpe1 .dpt-selected .csform .actions_inserts > li.add_next, .cp.cpe1 .dpt-selected .csform .actions_inserts > li.add_prior {
+ position: static; }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li.add_in > ul {
+ left: 1em !important;
+ right: 1em !important;
+ margin-left: 0; }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li.add_in > ul li:first-child::before {
+ left: 37%; }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li.add_next > ul {
+ left: 0 !important;
+ right: 1em !important; }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li.add_prior > ul {
+ left: 1em !important;
+ right: 0 !important;
+ margin-left: 0;
+ margin-right: 0.5em; }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li.add_prior > ul li:first-child::before {
+ right: 42%;
+ left: auto; }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li.menu_excluir > ul {
+ left: 10% !important;
+ right: 0 !important;
+ margin-left: 0;
+ margin-right: 0.5em; }
+ .cp.cpe1 .dpt-selected .csform .actions_inserts > li.menu_excluir > ul li:first-child::before {
+ right: 0;
+ left: auto; } }
+
+@media print {
+ .cp .vigencias, .toggle-topbar, .menu-icon, .button, .tipo-vigencias, .dne {
+ display: none; }
+ #btn_font_menos, #btn_font_mais {
+ display: none; }
+ .container {
+ width: 100%; } }
diff --git a/sapl/templates/base.html b/sapl/templates/base.html
index 2ff5fdea4..d2f4cca33 100644
--- a/sapl/templates/base.html
+++ b/sapl/templates/base.html
@@ -184,7 +184,7 @@
Desenvolvido pelo Interlegis em software livre e aberto.
- Release: 3.1.134
+ Release: 3.1.137
diff --git a/sapl/templates/menu_tabelas_auxiliares.yaml b/sapl/templates/menu_tabelas_auxiliares.yaml
index 65ea6fd6f..6c8734805 100644
--- a/sapl/templates/menu_tabelas_auxiliares.yaml
+++ b/sapl/templates/menu_tabelas_auxiliares.yaml
@@ -152,6 +152,9 @@
- title: {% trans 'Tipo de Expediente' %}
url: sapl.sessao:tipoexpediente_list
css_class: btn btn-link
+ - title: {% trans 'Tipo de Retirada de Pauta' %}
+ url: sapl.sessao:tiporetiradapauta_list
+ css_class: btn btn-link
- title: {% trans 'Ordenação do Resumo' %}
url: sapl.sessao:resumo_ordenacao
css_class: btn btn-link
diff --git a/sapl/templates/norma/layouts.yaml b/sapl/templates/norma/layouts.yaml
index 295ef62d5..90be4172e 100644
--- a/sapl/templates/norma/layouts.yaml
+++ b/sapl/templates/norma/layouts.yaml
@@ -58,7 +58,7 @@ LegislacaoCitadaDetail:
TipoVinculoNormaJuridica:
{% trans 'Tipo de Vínculo entre Normas Jurídicas' %}:
- - sigla:2 descricao_ativa descricao_passiva
+ - sigla:2 descricao_ativa descricao_passiva revoga_integralmente
NormaRelacionada:
{% trans 'Norma Relacionada' %}:
@@ -73,4 +73,4 @@ NormaRelacionadaDetail:
AutoriaNorma:
{% trans 'Autoria' %}:
- - autor primeiro_autor
\ No newline at end of file
+ - autor primeiro_autor
diff --git a/sapl/templates/sessao/blocos_ata/lista_presenca.html b/sapl/templates/sessao/blocos_ata/lista_presenca.html
index c6456f2c4..621a4783c 100644
--- a/sapl/templates/sessao/blocos_ata/lista_presenca.html
+++ b/sapl/templates/sessao/blocos_ata/lista_presenca.html
@@ -2,9 +2,15 @@
\ No newline at end of file
+
+ Justificativas de Ausências na Sessão:
+ {% for j in justificativa_ausencia %}
+ {{j.parlamentar}} / {{ j.tipo_ausencia }} ;
+ {% endfor %}
+
+
diff --git a/sapl/templates/sessao/blocos_resumo/lista_presenca.html b/sapl/templates/sessao/blocos_resumo/lista_presenca.html
index 56ecf9c17..8f5ac10e2 100644
--- a/sapl/templates/sessao/blocos_resumo/lista_presenca.html
+++ b/sapl/templates/sessao/blocos_resumo/lista_presenca.html
@@ -7,4 +7,29 @@
{{p.nome_parlamentar}} / {{ p|filiacao_data_filter:object.data_inicio }}
{% endfor %}
-
\ No newline at end of file
+
+
+
+
+
+
+ | Parlamentar |
+ Justificativa |
+ Ausente em |
+
+
+
+ {% for j in justificativa_ausencia %}
+
+ | {{ j.parlamentar }} |
+ {{ j.tipo_ausencia }} |
+ {% if j.ausencia == 1 %}
+ Matéria |
+ {% else %}
+ Sessão |
+ {% endif %}
+ {% endfor %}
+
+
+
+
diff --git a/sapl/templates/sessao/layouts.yaml b/sapl/templates/sessao/layouts.yaml
index 4e9e1118a..55e0db570 100644
--- a/sapl/templates/sessao/layouts.yaml
+++ b/sapl/templates/sessao/layouts.yaml
@@ -91,7 +91,7 @@ TipoJustificativa:
JustificativaAusencia:
{% trans 'Justificativa de Ausência' %}:
- - parlamentar
+ - parlamentar
- data hora
- upload_anexo
- tipo_ausencia
@@ -99,3 +99,13 @@ JustificativaAusencia:
- materias_do_expediente
- materias_da_ordem_do_dia
- observacao
+
+TipoRetiradaPauta:
+ {% trans 'Tipo Retirada Pauta'%}:
+ - descricao
+
+RetiradaPauta:
+ {% trans 'Retirada de Pauta' %}:
+ - tipo_de_retirada materia
+ - data parlamentar
+ - observacao
diff --git a/sapl/templates/sessao/resumo_ata.html b/sapl/templates/sessao/resumo_ata.html
index 528dda494..dd3b811f7 100644
--- a/sapl/templates/sessao/resumo_ata.html
+++ b/sapl/templates/sessao/resumo_ata.html
@@ -19,6 +19,6 @@
{% include 'sessao/blocos_ata/'|add:oitavo_ordenacao %}
{% include 'sessao/blocos_ata/'|add:nono_ordenacao %}
{% include 'sessao/blocos_ata/'|add:decimo_ordenacao %}
- {% include 'sessao/blocos_ata/'|add:decimo_primeiro_ordenacao %}
+ {% include 'sessao/blocos_ata/'|add:decimo_primeiro_ordenacao %}
{% include 'sessao/blocos_ata/assinaturas.html' %}
{% endblock detail_content %}
diff --git a/sapl/templates/sessao/retiradapauta_form.html b/sapl/templates/sessao/retiradapauta_form.html
new file mode 100644
index 000000000..9d850cad0
--- /dev/null
+++ b/sapl/templates/sessao/retiradapauta_form.html
@@ -0,0 +1,6 @@
+{% extends "crud/form.html" %}
+{% load i18n %}
+{% load crispy_forms_tags %}
+{% block detail_content %}
+ {% crispy form %}
+{% endblock detail_content %}
diff --git a/sapl/templates/sessao/subnav.yaml b/sapl/templates/sessao/subnav.yaml
index 442eb92f4..b86684e61 100644
--- a/sapl/templates/sessao/subnav.yaml
+++ b/sapl/templates/sessao/subnav.yaml
@@ -14,6 +14,8 @@
url: orador_list
- title: {% trans 'Ocorrências da Sessão' %}
url: ocorrencia_sessao
+ - title: {% trans 'Retirada de Pauta'%}
+ url: retiradapauta_list
- title: {% trans 'Expedientes' %}
children:
diff --git a/sapl/templates/sistema.html b/sapl/templates/sistema.html
index 2283266b8..8c1784038 100644
--- a/sapl/templates/sistema.html
+++ b/sapl/templates/sistema.html
@@ -104,6 +104,7 @@
+
diff --git a/setup.py b/setup.py
index 3e97d8bf1..daf572e62 100644
--- a/setup.py
+++ b/setup.py
@@ -52,7 +52,7 @@ install_requires = [
]
setup(
name='interlegis-sapl',
- version='3.1.134',
+ version='3.1.137',
packages=find_packages(),
include_package_data=True,
license='GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007',
| |