diff --git a/sapl/base/templatetags/menus.py b/sapl/base/templatetags/menus.py
index 34294fbd8..92df1e39f 100644
--- a/sapl/base/templatetags/menus.py
+++ b/sapl/base/templatetags/menus.py
@@ -2,13 +2,17 @@ from django import template
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _
import yaml
-
from sapl.utils import sapl_logger
register = template.Library()
+@register.inclusion_tag('menus/menu.html', takes_context=True)
+def menu(context, path=None):
+ return nav_run(context, path)
+
+
@register.inclusion_tag('menus/subnav.html', takes_context=True)
def subnav(context, path=None):
return nav_run(context, path)
diff --git a/sapl/compilacao/views.py b/sapl/compilacao/views.py
index b24bfd677..250ef70ea 100644
--- a/sapl/compilacao/views.py
+++ b/sapl/compilacao/views.py
@@ -48,15 +48,15 @@ from sapl.compilacao.models import (STATUS_TA_EDITION, STATUS_TA_PRIVATE,
from sapl.compilacao.utils import (DISPOSITIVO_SELECT_RELATED,
DISPOSITIVO_SELECT_RELATED_EDIT,
get_integrations_view_names)
-from sapl.crud.base import Crud, CrudListView, make_pagination
+from sapl.crud.base import Crud, CrudListView, make_pagination, CrudAux
from sapl.settings import BASE_DIR
-TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota')
-TipoVideCrud = Crud.build(TipoVide, 'tipo_vide')
-TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao')
-VeiculoPublicacaoCrud = Crud.build(VeiculoPublicacao, 'veiculo_publicacao')
-TipoDispositivoCrud = Crud.build(
+TipoNotaCrud = CrudAux.build(TipoNota, 'tipo_nota')
+TipoVideCrud = CrudAux.build(TipoVide, 'tipo_vide')
+TipoPublicacaoCrud = CrudAux.build(TipoPublicacao, 'tipo_publicacao')
+VeiculoPublicacaoCrud = CrudAux.build(VeiculoPublicacao, 'veiculo_publicacao')
+TipoDispositivoCrud = CrudAux.build(
TipoDispositivo, 'tipo_dispositivo')
logger = logging.getLogger(BASE_DIR.name)
diff --git a/sapl/crud/base.py b/sapl/crud/base.py
index c94820a03..3f20e376b 100644
--- a/sapl/crud/base.py
+++ b/sapl/crud/base.py
@@ -17,18 +17,20 @@ from django.http.response import Http404
from django.shortcuts import redirect
from django.utils.decorators import classonlymethod
from django.utils.encoding import force_text
-from django.utils.translation import ugettext_lazy as _
from django.utils.translation import string_concat
+from django.utils.translation import ugettext_lazy as _
from django.views.generic import (CreateView, DeleteView, DetailView, ListView,
UpdateView)
from django.views.generic.base import ContextMixin
from django.views.generic.list import MultipleObjectMixin
+
from sapl.crispy_layout_mixin import CrispyLayoutFormMixin, get_field_display
from sapl.rules.map_rules import (RP_ADD, RP_CHANGE, RP_DELETE, RP_DETAIL,
RP_LIST)
from sapl.settings import BASE_DIR
from sapl.utils import normalize
+
logger = logging.getLogger(BASE_DIR.name)
ACTION_LIST, ACTION_CREATE, ACTION_DETAIL, ACTION_UPDATE, ACTION_DELETE = \
@@ -936,6 +938,9 @@ class CrudAux(Crud):
"""
permission_required = ('base.view_tabelas_auxiliares',)
+ class ListView(Crud.ListView):
+ template_name = "crud/list_tabaux.html"
+
class BaseMixin(Crud.BaseMixin):
subnav_template_name = None
diff --git a/sapl/materia/views.py b/sapl/materia/views.py
index a5f69a1e0..ebbcca5e5 100644
--- a/sapl/materia/views.py
+++ b/sapl/materia/views.py
@@ -2,8 +2,6 @@ from datetime import datetime
from random import choice
from string import ascii_letters, digits
-import sapl
-import weasyprint
from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML
from django.contrib import messages
@@ -24,6 +22,8 @@ from django.views.generic import CreateView, ListView, TemplateView, UpdateView
from django.views.generic.base import RedirectView
from django.views.generic.edit import FormView
from django_filters.views import FilterView
+import weasyprint
+
from sapl.base.models import Autor, CasaLegislativa
from sapl.comissoes.models import Comissao, Participacao
from sapl.compilacao.models import (STATUS_TA_IMMUTABLE_RESTRICT,
@@ -47,6 +47,7 @@ from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label,
autor_modal, gerar_hash_arquivo, get_base_url,
get_mime_type_from_file_extension, montar_row_autor,
show_results_filter_set)
+import sapl
from .email_utils import do_envia_email_confirmacao
from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm,
@@ -67,9 +68,10 @@ from .models import (AcompanhamentoMateria, Anexada, AssuntoMateria, Autoria,
TipoProposicao, Tramitacao, UnidadeTramitacao)
from .signals import tramitacao_signal
-AssuntoMateriaCrud = Crud.build(AssuntoMateria, 'assunto_materia')
-OrigemCrud = Crud.build(Origem, '')
+AssuntoMateriaCrud = CrudAux.build(AssuntoMateria, 'assunto_materia')
+
+OrigemCrud = CrudAux.build(Origem, '')
TipoMateriaCrud = CrudAux.build(
TipoMateriaLegislativa, 'tipo_materia_legislativa')
@@ -308,7 +310,8 @@ def recuperar_materia(request):
tipo=tipo).aggregate(
Max('numero'))
elif numeracao == 'U':
- numero = MateriaLegislativa.objects.filter(tipo=tipo).aggregate(Max('numero'))
+ numero = MateriaLegislativa.objects.filter(
+ tipo=tipo).aggregate(Max('numero'))
if numeracao is None:
numero['numero__max'] = 0
@@ -323,10 +326,10 @@ def recuperar_materia(request):
StatusTramitacaoCrud = CrudAux.build(StatusTramitacao, 'status_tramitacao')
-class OrgaoCrud(Crud):
+class OrgaoCrud(CrudAux):
model = Orgao
- class CreateView(Crud.CreateView):
+ class CreateView(CrudAux.CreateView):
form_class = OrgaoForm
@@ -591,11 +594,10 @@ class UnidadeTramitacaoCrud(CrudAux):
model = UnidadeTramitacao
help_topic = 'unidade_tramitacao'
- class BaseMixin(Crud.BaseMixin):
+ class BaseMixin(CrudAux.BaseMixin):
list_field_names = ['comissao', 'orgao', 'parlamentar']
- class ListView(Crud.ListView):
- template_name = "crud/list.html"
+ class ListView(CrudAux.ListView):
def get_headers(self):
return [_('Unidade de Tramitação')]
@@ -841,14 +843,17 @@ class ProposicaoCrud(Crud):
obj.data_recebimento = 'Não recebida'\
if obj.data_envio else 'Não enviada'
else:
- obj.data_recebimento = timezone.localtime(obj.data_recebimento)
- obj.data_recebimento = obj.data_recebimento = formats.date_format(obj.data_recebimento, "DATETIME_FORMAT")
+ obj.data_recebimento = timezone.localtime(
+ obj.data_recebimento)
+ obj.data_recebimento = obj.data_recebimento = formats.date_format(
+ obj.data_recebimento, "DATETIME_FORMAT")
if obj.data_envio is None:
obj.data_envio = 'Em elaboração...'
else:
obj.data_envio = timezone.localtime(obj.data_envio)
- obj.data_envio = formats.date_format(obj.data_envio, "DATETIME_FORMAT")
+ obj.data_envio = formats.date_format(
+ obj.data_envio, "DATETIME_FORMAT")
return [self._as_row(obj) for obj in object_list]
diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py
index 2b66849a7..ab0f2fec4 100644
--- a/sapl/sessao/views.py
+++ b/sapl/sessao/views.py
@@ -577,6 +577,9 @@ class OradorCrud(OradorCrud):
class BancadaCrud(Crud):
model = Bancada
+ class ListView(Crud.ListView):
+ template_name = 'crud/list_tabaux.html'
+
class CreateView(Crud.CreateView):
form_class = BancadaForm
@@ -587,6 +590,9 @@ class BancadaCrud(Crud):
class BlocoCrud(Crud):
model = Bloco
+ class ListView(Crud.ListView):
+ template_name = 'crud/list_tabaux.html'
+
class CreateView(Crud.CreateView):
form_class = BlocoForm
diff --git a/sapl/static/styles/app.scss b/sapl/static/styles/app.scss
index 2edac98fc..262b3f45e 100644
--- a/sapl/static/styles/app.scss
+++ b/sapl/static/styles/app.scss
@@ -481,6 +481,80 @@ p {
}
/* FIM TEMPLATE AJUDA */
+.container-tabaux {
+ .sidebar-tabaux {
+ background: #fafafa;
+ margin-top: -70px;
+ padding: 10px;
+ border: 1px solid #eee;
+ .navbar-right {
+ margin: 0;
+ }
+ .nav-pills > li + li {
+ margin-left: 0px;
+ }
+ li {
+ width: 100%;
+ }
+ span {
+ display: none;
+ }
+ .dropdown-menu {
+ padding: 0px;
+ right: 10px;
+ margin-top: -5px;
+ overflow: hidden;
+ a {
+ border: 0px;
+ }
+ }
+ }
+
+ ul {
+ list-style: none;
+ padding: 0;
+ }
+
+ .list {
+ font-family: "SourceSansProSemiBold", Helvetica, Arial, sans-serif;
+ font-size: 0px;
+ display: table;
+ width: 100%;
+ margin: 0;
+
+ ul {
+ display: table;
+ width: 100%;
+ margin: 0;
+ }
+
+ li {
+ width: calc(50%);
+ display: inline-block;
+ position: relative;
+ }
+ & > li {
+ width: 100%;
+ border-bottom: 1px solid #eee;
+ padding-bottom: 20px;
+ margin-bottom: 20px;
+ }
+
+ .head_title {
+ color: #364347;
+ font-size: 2.4rem;
+ text-transform: none;
+ }
+
+ a {
+ span {
+ display: none;
+ }
+ }
+ }
+}
+
+
@media (max-width: 1199px) {
.masthead {
.navbar-brand {
diff --git a/sapl/templates/compilacao/tipotextoarticulado_list.html b/sapl/templates/compilacao/tipotextoarticulado_list.html
index e89e8afd4..509c9c0d3 100644
--- a/sapl/templates/compilacao/tipotextoarticulado_list.html
+++ b/sapl/templates/compilacao/tipotextoarticulado_list.html
@@ -1,9 +1,9 @@
{% extends "base.html" %}
-{% load i18n %}
-{% load compilacao_filters %}
-{% load common_tags %}
+{% load i18n compilacao_filters common_tags menus%}
{% block base_content %}
+
+
{% block actions %}
{% if perms.compilacao.add_tipotextoarticulado %}
@@ -14,27 +14,37 @@
{% endif %}
{% endblock actions %}
- {% if not object_list %}
-
{{ NO_ENTRIES_MSG }}
- {% else %}
-
-
-
- {% fieldclass_verbose_name 'sapl.compilacao.models.TipoTextoArticulado' 'sigla' %} |
- {% fieldclass_verbose_name 'sapl.compilacao.models.TipoTextoArticulado' 'descricao' %} |
- {% fieldclass_verbose_name 'sapl.compilacao.models.TipoTextoArticulado' 'content_type' %} |
-
-
-
- {% for tipo_ta in object_list %}
-
- {{ tipo_ta.sigla }} |
- {{ tipo_ta.descricao }} |
- {{ tipo_ta.content_type }} |
-
- {% endfor %}
-
-
- {%endif%}
- {% include 'paginacao.html'%}
+
+
+ {% if perms.base.menu_tabelas_auxiliares %}
+
+ {% endif %}
+
{% endblock %}
diff --git a/sapl/templates/crud/detail.html b/sapl/templates/crud/detail.html
index 8087b458b..4a1cad276 100644
--- a/sapl/templates/crud/detail.html
+++ b/sapl/templates/crud/detail.html
@@ -23,8 +23,8 @@
{% if view.extras_url %}
- {% for url, css_class, text in view.extras_url %}
-
+ {% for href, css_class, text in view.extras_url %}
+
{{text}}
{% endfor %}
diff --git a/sapl/templates/crud/detail_detail.html b/sapl/templates/crud/detail_detail.html
index cb0b103ec..b2312ec51 100644
--- a/sapl/templates/crud/detail_detail.html
+++ b/sapl/templates/crud/detail_detail.html
@@ -20,8 +20,8 @@
{% if view.extras_url %}
- {% for url, css_class, text in view.extras_url %}
-
+ {% for href, css_class, text in view.extras_url %}
+
{{text}}
{% endfor %}
diff --git a/sapl/templates/crud/list.html b/sapl/templates/crud/list.html
index 3789761fc..b1743516d 100644
--- a/sapl/templates/crud/list.html
+++ b/sapl/templates/crud/list.html
@@ -20,7 +20,22 @@
{% block more_buttons %}{% endblock more_buttons %}
{% endblock actions %}
+
+ {% block extra_actions %}{% endblock extra_actions %}
+
+ {% comment %}
+ {% if view.extras_url %}
+
+ {% for href, css_class, text in view.extras_url %}
+
+ {{text}}
+
+ {% endfor %}
+
+ {% endif %}
+ {% endcomment %}
+
{% block extra_content %} {% endblock %}
{% block container_table_list %}
diff --git a/sapl/templates/crud/list_tabaux.html b/sapl/templates/crud/list_tabaux.html
new file mode 100644
index 000000000..77c81f651
--- /dev/null
+++ b/sapl/templates/crud/list_tabaux.html
@@ -0,0 +1,15 @@
+{% extends "crud/list.html" %}
+{% load i18n menus%}
+{% block base_content %}
+
+
+ {% if perms.base.menu_tabelas_auxiliares %}
+
+ {% endif %}
+
+{% endblock base_content %}
diff --git a/sapl/templates/menu_tabelas_auxiliares.yaml b/sapl/templates/menu_tabelas_auxiliares.yaml
new file mode 100644
index 000000000..3e99fb877
--- /dev/null
+++ b/sapl/templates/menu_tabelas_auxiliares.yaml
@@ -0,0 +1,181 @@
+{% load i18n common_tags %}
+- title: {% trans 'Configurações Gerais' %}
+ css_class: head_title
+ children:
+ - title: {% trans 'Casa Legislativa' %}
+ url: sapl.base:casalegislativa_list
+ css_class: btn btn-link
+ - title: {% trans 'Configurações da Aplicação' %}
+ url: sapl.base:appconfig_list
+ css_class: btn btn-link'
+ - title: {% trans 'Autor' %}
+ url: sapl.base:autor_list
+ css_class: btn btn-link
+ - title: {% trans 'Tipo de Autor' %}
+ url: sapl.base:tipoautor_list
+ css_class: btn btn-link
+- title: {% trans 'Módulo Parlamentares' %}
+ css_class: head_title
+ children:
+ - title: {% trans 'Legislatura' %}
+ url: sapl.parlamentares:legislatura_list
+ css_class: btn btn-link
+ - title: {% trans 'Tipo de Afastamento' %}
+ url: sapl.parlamentares:tipoafastamento_list
+ css_class: btn btn-link
+ - title: {% trans 'Tipo de Dependente' %}
+ url: sapl.parlamentares:tipodependente_list
+ css_class: btn btn-link
+ - title: {% trans 'Tipo de Situação Militar' %}
+ url: sapl.parlamentares:situacaomilitar_list
+ css_class: btn btn-link
+ - title: {% trans 'Nível de Instrução' %}
+ url: sapl.parlamentares:nivelinstrucao_list
+ css_class: btn btn-link
+ - title: {% trans 'Partido' %}
+ url: sapl.parlamentares:partido_list
+ css_class: btn btn-link
+ - title: {% trans 'Coligação' %}
+ url: sapl.parlamentares:coligacao_list
+ css_class: btn btn-link
+- title: {% trans 'Módulo Mesa Diretora' %}
+ css_class: head_title
+ children:
+ - title: {% trans 'Sessão Legislativa' %}
+ url: sapl.parlamentares:sessaolegislativa_list
+ css_class: btn btn-link
+ - title: {% trans 'Cargo da Mesa' %}
+ url: sapl.parlamentares:cargomesa_list
+ css_class: btn btn-link
+- title: {% trans 'Módulo Comissões' %}
+ css_class: head_title
+ children:
+ - title: {% trans 'Cargo de Comissão' %}
+ url: sapl.comissoes:cargocomissao_list
+ css_class: btn btn-link
+ - title: {% trans 'Período de Composição' %}
+ url: sapl.comissoes:periodo_list
+ css_class: btn btn-link
+ - title: {% trans 'Tipo de Comissão' %}
+ url: sapl.comissoes:tipocomissao_list
+ css_class: btn btn-link
+- title: {% trans 'Módulo Bancadas Parlamentares' %}
+ css_class: head_title
+ children:
+ - title: {% trans 'Bancadas Parlamentares' %}
+ url: sapl.sessao:bancada_list
+ css_class: btn btn-link
+ - title: {% trans 'Cargo de Bancada Parlamentar' %}
+ url: sapl.sessao:cargobancada_list
+ css_class: btn btn-link
+ - title: {% trans 'Frente Parlamentar' %}
+ url: sapl.parlamentares:frente_list
+ css_class: btn btn-link
+ - title: {% trans 'Bloco Parlamentar' %}
+ url: sapl.sessao:bloco_list
+ css_class: btn btn-link
+- title: {% trans 'Módulo Proposições' %}
+ css_class: head_title
+ children:
+ - title: {% trans 'Tipo de Proposição' %}
+ url: sapl.materia:tipoproposicao_list
+ css_class: btn btn-link
+- title: {% trans 'Módulo Matéria Legislativa' %}
+ css_class: head_title
+ children:
+ - title: {% trans 'Tipo de Matéria Legislativa' %}
+ url: sapl.materia:tipomaterialegislativa_list
+ css_class: btn btn-link
+ - title: {% trans 'Regime de Tramitação' %}
+ url: sapl.materia:regimetramitacao_list
+ css_class: btn btn-link
+ - title: {% trans 'Tipo de Documento' %}
+ url: sapl.materia:tipodocumento_list
+ css_class: btn btn-link
+ - title: {% trans 'Tipo de fim de Relatoria' %}
+ url: sapl.materia:tipofimrelatoria_list
+ css_class: btn btn-link
+ - title: {% trans 'Unidade de Tramitação' %}
+ url: sapl.materia:unidadetramitacao_list
+ css_class: btn btn-link
+ - title: {% trans 'Origem' %}
+ url: sapl.materia:origem_list
+ css_class: btn btn-link
+ - title: {% trans 'Status da Tramitação' %}
+ url: sapl.materia:statustramitacao_list
+ css_class: btn btn-link
+ - title: {% trans 'Órgão' %}
+ url: sapl.materia:orgao_list
+ css_class: btn btn-link
+ - title: {% trans 'Assunto Matéria' %}
+ url: sapl.materia:assuntomateria_list
+ css_class: btn btn-link
+- title: {% trans 'Módulo Normas Jurídicas' %}
+ css_class: head_title
+ children:
+ - title: {% trans 'Tipo de Norma Jurídica' %}
+ url: sapl.norma:tiponormajuridica_list
+ css_class: btn btn-link
+ - title: {% trans 'Assunto de Norma Jurídica' %}
+ url: sapl.norma:assuntonorma_list
+ css_class: btn btn-link
+ - title: {% trans 'Tipo de Vínculo' %}
+ url: sapl.norma:tipovinculonormajuridica_list
+ css_class: btn btn-link
+- title: {% trans 'Módulo Textos Articulados' %}
+ css_class: head_title
+ children:
+ - title: {% trans 'Tipos de Textos Articulados' %}
+ url: sapl.compilacao:tipo_ta_list
+ css_class: btn btn-link
+ - title: {% trans 'Tipos de Publicação' %}
+ url: sapl.compilacao:tipopublicacao_list
+ css_class: btn btn-link
+ - title: {% trans 'Veículos de Publicação' %}
+ url: sapl.compilacao:veiculopublicacao_list
+ css_class: btn btn-link
+ - title: {% trans 'Tipos de Notas' %}
+ url: sapl.compilacao:tiponota_list
+ css_class: btn btn-link
+ - title: {% trans 'Tipos de Vides' %}
+ url: sapl.compilacao:tipovide_list
+ css_class: btn btn-link
+ - title: {% trans 'Tipos de Dispositivos' %}
+ url: sapl.compilacao:tipodispositivo_list
+ css_class: btn btn-link
+ - title: {% trans 'Relacionamento entre Dispositivos' %}
+ url: /admin/compilacao/tipodispositivorelationship/
+ css_class: btn btn-link
+- title: {% trans 'Módulo Sessão Plenária' %}
+ css_class: head_title
+ children:
+ - title: {% trans 'Tipo de Sessão Plenária' %}
+ url: sapl.sessao:tiposessaoplenaria_list
+ css_class: btn btn-link
+ - title: {% trans 'Tipo de Resultado da Votação' %}
+ url: sapl.sessao:tiporesultadovotacao_list
+ css_class: btn btn-link
+ - title: {% trans 'Tipo de Expediente' %}
+ url: sapl.sessao:tipoexpediente_list
+ css_class: btn btn-link
+ - title: {% trans 'Ordenação do Resumo' %}
+ url: sapl.sessao:resumo_ordenacao
+ css_class: btn btn-link
+- title: {% trans 'Módulo LexML' %}
+ css_class: head_title
+ children:
+ - title: {% trans 'Provedor' %}
+ url: sapl.lexml:lexmlprovedor_list
+ css_class: btn btn-link
+ - title: {% trans 'Publicador' %}
+ url: sapl.lexml:lexmlpublicador_list
+ css_class: btn btn-link
+- title: {% trans 'Módulo Administrativo' %}
+ css_class: head_title
+ children:
+ - title: {% trans 'Tipo de Documento' %}
+ url: sapl.protocoloadm:tipodocumentoadministrativo_list
+ css_class: btn btn-link
+ - title: {% trans 'Status de Tramitação' %}
+ url: sapl.protocoloadm:statustramitacaoadministrativo_list
+ css_class: btn btn-link
diff --git a/sapl/templates/menus/menu.html b/sapl/templates/menus/menu.html
new file mode 100644
index 000000000..9b0a086f4
--- /dev/null
+++ b/sapl/templates/menus/menu.html
@@ -0,0 +1,36 @@
+{% load i18n %}
+{% if menu %}
+ {% for item in menu %}
+ {% if item.children %}
+
+ {% if item.url %}
+
+ {{ item.title|safe }}
+
+
+ {% else %}
+
+ {{ item.title|safe }}
+
+ {% endif %}
+
+ {% with item.children as menu %}
+ {% include "menus/menu.html" %}
+ {% endwith %}
+
+
+ {% else %}
+
+ {% if item.url %}
+
+ {{ item.title|safe }}
+
+ {% else %}
+
+ {{ item.title|safe }}
+
+ {% endif %}
+
+ {% endif %}
+ {% endfor %}
+{% endif %}
diff --git a/sapl/templates/sistema.html b/sapl/templates/sistema.html
index 643c38a9b..8e3882369 100644
--- a/sapl/templates/sistema.html
+++ b/sapl/templates/sistema.html
@@ -1,115 +1,125 @@
{% extends "base.html" %}
-{% load i18n crispy_forms_tags %}
+{% load i18n crispy_forms_tags menus%}
{% block base_content %}
- Configurações Gerais
-
+
+
+ {% menu 'menu_tabelas_auxiliares.yaml'%}
+
+
+
+
+ {% comment %}
+
+ Configurações Gerais
+
Módulo Parlamentares
-
+
Módulo Mesa Diretora
-
+
Módulo Comissões
-
+
Módulo Bancadas Parlamentares
-
+
Módulo Proposições
-
+
Módulo Matéria Legislativa
-
+
Módulo Normas Jurídicas
-
+
-
+
Módulo Textos Articulados
-
+
Módulo Sessão Plenária
-
+
Módulo LexML
-
+
Módulo Administrativo
-
+
+ {% endcomment %}
{% endblock base_content %}