Browse Source

Merge pull request #1741 from interlegis/refatora_tabelas_auxiliares

Mgr TabAux p Yaml e impl sidebar nas CrudAux.ListView
pull/1744/head
Leandro Roberto da Silva 7 years ago
committed by GitHub
parent
commit
0497223c29
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      sapl/base/templatetags/menus.py
  2. 30
      sapl/compilacao/urls.py
  3. 12
      sapl/compilacao/views.py
  4. 7
      sapl/crud/base.py
  5. 31
      sapl/materia/views.py
  6. 6
      sapl/sessao/views.py
  7. 74
      sapl/static/styles/app.scss
  8. 16
      sapl/templates/compilacao/tipotextoarticulado_list.html
  9. 4
      sapl/templates/crud/detail.html
  10. 4
      sapl/templates/crud/detail_detail.html
  11. 15
      sapl/templates/crud/list.html
  12. 15
      sapl/templates/crud/list_tabaux.html
  13. 181
      sapl/templates/menu_tabelas_auxiliares.yaml
  14. 36
      sapl/templates/menus/menu.html
  15. 12
      sapl/templates/sistema.html
  16. 7
      sapl/test_urls.py

6
sapl/base/templatetags/menus.py

@ -2,13 +2,17 @@ from django import template
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
import yaml import yaml
from sapl.utils import sapl_logger from sapl.utils import sapl_logger
register = template.Library() 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) @register.inclusion_tag('menus/subnav.html', takes_context=True)
def subnav(context, path=None): def subnav(context, path=None):
return nav_run(context, path) return nav_run(context, path)

30
sapl/compilacao/urls.py

@ -98,31 +98,31 @@ urlpatterns_compilacao = [
views.PublicacaoDeleteView.as_view(), name='ta_pub_delete'), views.PublicacaoDeleteView.as_view(), name='ta_pub_delete'),
url(r'^config/tipo-textoarticulado$',
views.TipoTaListView.as_view(), name='tipo_ta_list'),
url(r'^config/tipo-textoarticulado/create$',
views.TipoTaCreateView.as_view(), name='tipo_ta_create'),
url(r'^config/tipo-textoarticulado/(?P<pk>[0-9]+)$',
views.TipoTaDetailView.as_view(), name='tipo_ta_detail'),
url(r'^config/tipo-textoarticulado/(?P<pk>[0-9]+)/edit$',
views.TipoTaUpdateView.as_view(), name='tipo_ta_edit'),
url(r'^config/tipo-textoarticulado/(?P<pk>[0-9]+)/delete$',
views.TipoTaDeleteView.as_view(), name='tipo_ta_delete'),
] ]
urlpatterns = [ urlpatterns = [
url(r'^ta/', include(urlpatterns_compilacao)), url(r'^ta/', include(urlpatterns_compilacao)),
url(r'^ta/config/tipo-nota/', url(r'^sistema/ta/config/tipo-nota/',
include(TipoNotaCrud.get_urls())), include(TipoNotaCrud.get_urls())),
url(r'^ta/config/tipo-vide/', url(r'^sistema/ta/config/tipo-vide/',
include(TipoVideCrud.get_urls())), include(TipoVideCrud.get_urls())),
url(r'^ta/config/tipo-publicacao/', url(r'^sistema/ta/config/tipo-publicacao/',
include(TipoPublicacaoCrud.get_urls())), include(TipoPublicacaoCrud.get_urls())),
url(r'^ta/config/veiculo-publicacao/', url(r'^sistema/ta/config/veiculo-publicacao/',
include(VeiculoPublicacaoCrud.get_urls())), include(VeiculoPublicacaoCrud.get_urls())),
url(r'^ta/config/tipo-dispositivo/', url(r'^sistema/ta/config/tipo-dispositivo/',
include(TipoDispositivoCrud.get_urls())), include(TipoDispositivoCrud.get_urls())),
url(r'^sistema/ta/config/tipo-textoarticulado$',
views.TipoTaListView.as_view(), name='tipo_ta_list'),
url(r'^sistema/ta/config/tipo-textoarticulado/create$',
views.TipoTaCreateView.as_view(), name='tipo_ta_create'),
url(r'^sistema/ta/config/tipo-textoarticulado/(?P<pk>[0-9]+)$',
views.TipoTaDetailView.as_view(), name='tipo_ta_detail'),
url(r'^sistema/ta/config/tipo-textoarticulado/(?P<pk>[0-9]+)/edit$',
views.TipoTaUpdateView.as_view(), name='tipo_ta_edit'),
url(r'^sistema/ta/config/tipo-textoarticulado/(?P<pk>[0-9]+)/delete$',
views.TipoTaDeleteView.as_view(), name='tipo_ta_delete'),
] ]

12
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, from sapl.compilacao.utils import (DISPOSITIVO_SELECT_RELATED,
DISPOSITIVO_SELECT_RELATED_EDIT, DISPOSITIVO_SELECT_RELATED_EDIT,
get_integrations_view_names) 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 from sapl.settings import BASE_DIR
TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota') TipoNotaCrud = CrudAux.build(TipoNota, 'tipo_nota')
TipoVideCrud = Crud.build(TipoVide, 'tipo_vide') TipoVideCrud = CrudAux.build(TipoVide, 'tipo_vide')
TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao') TipoPublicacaoCrud = CrudAux.build(TipoPublicacao, 'tipo_publicacao')
VeiculoPublicacaoCrud = Crud.build(VeiculoPublicacao, 'veiculo_publicacao') VeiculoPublicacaoCrud = CrudAux.build(VeiculoPublicacao, 'veiculo_publicacao')
TipoDispositivoCrud = Crud.build( TipoDispositivoCrud = CrudAux.build(
TipoDispositivo, 'tipo_dispositivo') TipoDispositivo, 'tipo_dispositivo')
logger = logging.getLogger(BASE_DIR.name) logger = logging.getLogger(BASE_DIR.name)

7
sapl/crud/base.py

@ -17,18 +17,20 @@ from django.http.response import Http404
from django.shortcuts import redirect from django.shortcuts import redirect
from django.utils.decorators import classonlymethod from django.utils.decorators import classonlymethod
from django.utils.encoding import force_text 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 string_concat
from django.utils.translation import ugettext_lazy as _
from django.views.generic import (CreateView, DeleteView, DetailView, ListView, from django.views.generic import (CreateView, DeleteView, DetailView, ListView,
UpdateView) UpdateView)
from django.views.generic.base import ContextMixin from django.views.generic.base import ContextMixin
from django.views.generic.list import MultipleObjectMixin from django.views.generic.list import MultipleObjectMixin
from sapl.crispy_layout_mixin import CrispyLayoutFormMixin, get_field_display from sapl.crispy_layout_mixin import CrispyLayoutFormMixin, get_field_display
from sapl.rules.map_rules import (RP_ADD, RP_CHANGE, RP_DELETE, RP_DETAIL, from sapl.rules.map_rules import (RP_ADD, RP_CHANGE, RP_DELETE, RP_DETAIL,
RP_LIST) RP_LIST)
from sapl.settings import BASE_DIR from sapl.settings import BASE_DIR
from sapl.utils import normalize from sapl.utils import normalize
logger = logging.getLogger(BASE_DIR.name) logger = logging.getLogger(BASE_DIR.name)
ACTION_LIST, ACTION_CREATE, ACTION_DETAIL, ACTION_UPDATE, ACTION_DELETE = \ ACTION_LIST, ACTION_CREATE, ACTION_DETAIL, ACTION_UPDATE, ACTION_DELETE = \
@ -936,6 +938,9 @@ class CrudAux(Crud):
""" """
permission_required = ('base.view_tabelas_auxiliares',) permission_required = ('base.view_tabelas_auxiliares',)
class ListView(Crud.ListView):
template_name = "crud/list_tabaux.html"
class BaseMixin(Crud.BaseMixin): class BaseMixin(Crud.BaseMixin):
subnav_template_name = None subnav_template_name = None

31
sapl/materia/views.py

@ -2,8 +2,6 @@ from datetime import datetime
from random import choice from random import choice
from string import ascii_letters, digits from string import ascii_letters, digits
import sapl
import weasyprint
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML from crispy_forms.layout import HTML
from django.contrib import messages 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.base import RedirectView
from django.views.generic.edit import FormView from django.views.generic.edit import FormView
from django_filters.views import FilterView from django_filters.views import FilterView
import weasyprint
from sapl.base.models import Autor, CasaLegislativa from sapl.base.models import Autor, CasaLegislativa
from sapl.comissoes.models import Comissao, Participacao from sapl.comissoes.models import Comissao, Participacao
from sapl.compilacao.models import (STATUS_TA_IMMUTABLE_RESTRICT, 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, autor_modal, gerar_hash_arquivo, get_base_url,
get_mime_type_from_file_extension, montar_row_autor, get_mime_type_from_file_extension, montar_row_autor,
show_results_filter_set) show_results_filter_set)
import sapl
from .email_utils import do_envia_email_confirmacao from .email_utils import do_envia_email_confirmacao
from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm, from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm,
@ -67,9 +68,10 @@ from .models import (AcompanhamentoMateria, Anexada, AssuntoMateria, Autoria,
TipoProposicao, Tramitacao, UnidadeTramitacao) TipoProposicao, Tramitacao, UnidadeTramitacao)
from .signals import tramitacao_signal 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( TipoMateriaCrud = CrudAux.build(
TipoMateriaLegislativa, 'tipo_materia_legislativa') TipoMateriaLegislativa, 'tipo_materia_legislativa')
@ -308,7 +310,8 @@ def recuperar_materia(request):
tipo=tipo).aggregate( tipo=tipo).aggregate(
Max('numero')) Max('numero'))
elif numeracao == 'U': 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: if numeracao is None:
numero['numero__max'] = 0 numero['numero__max'] = 0
@ -323,10 +326,10 @@ def recuperar_materia(request):
StatusTramitacaoCrud = CrudAux.build(StatusTramitacao, 'status_tramitacao') StatusTramitacaoCrud = CrudAux.build(StatusTramitacao, 'status_tramitacao')
class OrgaoCrud(Crud): class OrgaoCrud(CrudAux):
model = Orgao model = Orgao
class CreateView(Crud.CreateView): class CreateView(CrudAux.CreateView):
form_class = OrgaoForm form_class = OrgaoForm
@ -591,11 +594,10 @@ class UnidadeTramitacaoCrud(CrudAux):
model = UnidadeTramitacao model = UnidadeTramitacao
help_topic = 'unidade_tramitacao' help_topic = 'unidade_tramitacao'
class BaseMixin(Crud.BaseMixin): class BaseMixin(CrudAux.BaseMixin):
list_field_names = ['comissao', 'orgao', 'parlamentar'] list_field_names = ['comissao', 'orgao', 'parlamentar']
class ListView(Crud.ListView): class ListView(CrudAux.ListView):
template_name = "crud/list.html"
def get_headers(self): def get_headers(self):
return [_('Unidade de Tramitação')] return [_('Unidade de Tramitação')]
@ -841,14 +843,17 @@ class ProposicaoCrud(Crud):
obj.data_recebimento = 'Não recebida'\ obj.data_recebimento = 'Não recebida'\
if obj.data_envio else 'Não enviada' if obj.data_envio else 'Não enviada'
else: else:
obj.data_recebimento = timezone.localtime(obj.data_recebimento) obj.data_recebimento = timezone.localtime(
obj.data_recebimento = obj.data_recebimento = formats.date_format(obj.data_recebimento, "DATETIME_FORMAT") obj.data_recebimento)
obj.data_recebimento = obj.data_recebimento = formats.date_format(
obj.data_recebimento, "DATETIME_FORMAT")
if obj.data_envio is None: if obj.data_envio is None:
obj.data_envio = 'Em elaboração...' obj.data_envio = 'Em elaboração...'
else: else:
obj.data_envio = timezone.localtime(obj.data_envio) 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] return [self._as_row(obj) for obj in object_list]

6
sapl/sessao/views.py

@ -577,6 +577,9 @@ class OradorCrud(OradorCrud):
class BancadaCrud(Crud): class BancadaCrud(Crud):
model = Bancada model = Bancada
class ListView(Crud.ListView):
template_name = 'crud/list_tabaux.html'
class CreateView(Crud.CreateView): class CreateView(Crud.CreateView):
form_class = BancadaForm form_class = BancadaForm
@ -587,6 +590,9 @@ class BancadaCrud(Crud):
class BlocoCrud(Crud): class BlocoCrud(Crud):
model = Bloco model = Bloco
class ListView(Crud.ListView):
template_name = 'crud/list_tabaux.html'
class CreateView(Crud.CreateView): class CreateView(Crud.CreateView):
form_class = BlocoForm form_class = BlocoForm

74
sapl/static/styles/app.scss

@ -481,6 +481,80 @@ p {
} }
/* FIM TEMPLATE AJUDA */ /* 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) { @media (max-width: 1199px) {
.masthead { .masthead {
.navbar-brand { .navbar-brand {

16
sapl/templates/compilacao/tipotextoarticulado_list.html

@ -1,9 +1,9 @@
{% extends "base.html" %} {% extends "base.html" %}
{% load i18n %} {% load i18n compilacao_filters common_tags menus%}
{% load compilacao_filters %}
{% load common_tags %}
{% block base_content %} {% block base_content %}
{% block actions %} {% block actions %}
{% if perms.compilacao.add_tipotextoarticulado %} {% if perms.compilacao.add_tipotextoarticulado %}
<div class="actions btn-group pull-right" role="group"> <div class="actions btn-group pull-right" role="group">
@ -14,6 +14,8 @@
{% endif %} {% endif %}
{% endblock actions %} {% endblock actions %}
<div class="row container-tabaux">
<div class="{% if perms.base.menu_tabelas_auxiliares %}col-sm-9{% endif %}">
{% if not object_list %} {% if not object_list %}
<p>{{ NO_ENTRIES_MSG }}</p> <p>{{ NO_ENTRIES_MSG }}</p>
{% else %} {% else %}
@ -37,4 +39,12 @@
</table> </table>
{%endif%} {%endif%}
{% include 'paginacao.html'%} {% include 'paginacao.html'%}
</div>
{% if perms.base.menu_tabelas_auxiliares %}
<div class="col-sm-3 sidebar-tabaux">
<h3>{% trans "Tabelas Auxiliares" %}</h3>
{% subnav 'menu_tabelas_auxiliares.yaml'%}
</div>
{% endif %}
</div>
{% endblock %} {% endblock %}

4
sapl/templates/crud/detail.html

@ -23,8 +23,8 @@
</div> </div>
{% if view.extras_url %} {% if view.extras_url %}
<div class="actions btn-group btn-group-sm" role="group"> <div class="actions btn-group btn-group-sm" role="group">
{% for url, css_class, text in view.extras_url %} {% for href, css_class, text in view.extras_url %}
<a href="{{url}}" class="btn btn-default {{css_class}}"> <a href="{{href}}" class="btn btn-default {{css_class}}">
{{text}} {{text}}
</a> </a>
{% endfor %} {% endfor %}

4
sapl/templates/crud/detail_detail.html

@ -20,8 +20,8 @@
</div> </div>
{% if view.extras_url %} {% if view.extras_url %}
<div class="actions btn-group btn-group-sm" role="group"> <div class="actions btn-group btn-group-sm" role="group">
{% for url, css_class, text in view.extras_url %} {% for href, css_class, text in view.extras_url %}
<a href="{{url}}" class="btn btn-default {{css_class}}"> <a href="{{href}}" class="btn btn-default {{css_class}}">
{{text}} {{text}}
</a> </a>
{% endfor %} {% endfor %}

15
sapl/templates/crud/list.html

@ -20,7 +20,22 @@
{% block more_buttons %}{% endblock more_buttons %} {% block more_buttons %}{% endblock more_buttons %}
</div> </div>
{% endblock actions %} {% endblock actions %}
{% block extra_actions %}{% endblock extra_actions %}
{% comment %}
{% if view.extras_url %}
<div class="actions btn-group btn-group-sm" role="group">
{% for href, css_class, text in view.extras_url %}
<a href="{{href}}" class="btn btn-default {{css_class}}">
{{text}}
</a>
{% endfor %}
</div>
{% endif %}
{% endcomment %}
</div> </div>
{% block extra_content %} {% endblock %} {% block extra_content %} {% endblock %}
{% block container_table_list %} {% block container_table_list %}

15
sapl/templates/crud/list_tabaux.html

@ -0,0 +1,15 @@
{% extends "crud/list.html" %}
{% load i18n menus%}
{% block base_content %}
<div class="row container-tabaux">
<div class="{% if perms.base.menu_tabelas_auxiliares %}col-sm-9{% endif %}">
{{block.super}}
</div>
{% if perms.base.menu_tabelas_auxiliares %}
<div class="col-sm-3 sidebar-tabaux">
<h3>{% trans "Tabelas Auxiliares" %}</h3>
{% subnav 'menu_tabelas_auxiliares.yaml'%}
</div>
{% endif %}
</div>
{% endblock base_content %}

181
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

36
sapl/templates/menus/menu.html

@ -0,0 +1,36 @@
{% load i18n %}
{% if menu %}
{% for item in menu %}
{% if item.children %}
<li>
{% if item.url %}
<a class="{{item.css_class}}" href="{{item.url}}">
{{ item.title|safe }}
<span class="fa-chevron-down fa"></span>
</a>
{% else %}
<span class="{{item.css_class}}">
{{ item.title|safe }}
</span>
{% endif %}
<ul>
{% with item.children as menu %}
{% include "menus/menu.html" %}
{% endwith %}
</ul>
</li>
{% else %}
<li class="{{item.active}}">
{% if item.url %}
<a class="{{item.css_class}}" href="{{item.url}}">
{{ item.title|safe }}
</a>
{% else %}
<span class="{{item.css_class}}">
{{ item.title|safe }}
</span>
{% endif %}
</li>
{% endif %}
{% endfor %}
{% endif %}

12
sapl/templates/sistema.html

@ -1,8 +1,17 @@
{% extends "base.html" %} {% extends "base.html" %}
{% load i18n crispy_forms_tags %} {% load i18n crispy_forms_tags menus%}
{% block base_content %} {% block base_content %}
<div class="container-tabaux">
<ul class="list">
{% menu 'menu_tabelas_auxiliares.yaml'%}
</ul>
</div>
{% comment %}
<h2>Configurações Gerais</h2> <h2>Configurações Gerais</h2>
<div class="row"> <div class="row">
<div class="col-md-6"><a href="{% url 'sapl.base:casalegislativa_list' %}" class="btn btn-link">Casa Legislativa</a></div> <div class="col-md-6"><a href="{% url 'sapl.base:casalegislativa_list' %}" class="btn btn-link">Casa Legislativa</a></div>
@ -111,5 +120,6 @@
<div class="col-md-6"><a href="{% url 'sapl.protocoloadm:tipodocumentoadministrativo_list' %}" class="btn btn-link">Tipo de Documento</a></div> <div class="col-md-6"><a href="{% url 'sapl.protocoloadm:tipodocumentoadministrativo_list' %}" class="btn btn-link">Tipo de Documento</a></div>
<div class="col-md-6"><a href="{% url 'sapl.protocoloadm:statustramitacaoadministrativo_list' %}" class="btn btn-link">Status de Tramitação</a></div> <div class="col-md-6"><a href="{% url 'sapl.protocoloadm:statustramitacaoadministrativo_list' %}" class="btn btn-link">Status de Tramitação</a></div>
</div> </div>
{% endcomment %}
{% endblock base_content %} {% endblock base_content %}

7
sapl/test_urls.py

@ -1,18 +1,20 @@
import pytest
from django.apps import apps from django.apps import apps
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.contrib.auth.management import _get_all_permissions from django.contrib.auth.management import _get_all_permissions
from django.contrib.auth.models import Permission from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.db import transaction from django.db import transaction
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import string_concat from django.utils.translation import string_concat
from django.utils.translation import ugettext_lazy as _
import pytest
from sapl.crud.base import PermissionRequiredForAppCrudMixin from sapl.crud.base import PermissionRequiredForAppCrudMixin
from sapl.rules.apps import AppConfig, update_groups from sapl.rules.apps import AppConfig, update_groups
from scripts.lista_urls import lista_urls from scripts.lista_urls import lista_urls
from .settings import SAPL_APPS from .settings import SAPL_APPS
pytestmark = pytest.mark.django_db pytestmark = pytest.mark.django_db
sapl_appconfs = [apps.get_app_config(n[5:]) for n in SAPL_APPS] sapl_appconfs = [apps.get_app_config(n[5:]) for n in SAPL_APPS]
@ -171,6 +173,7 @@ apps_url_patterns_prefixs_and_users = {
'compilacao': { 'compilacao': {
'prefixs': [ 'prefixs': [
'/ta', '/ta',
'/sistema/ta',
]}, ]},
'redireciona_urls': { 'redireciona_urls': {
'prefixs': [ 'prefixs': [

Loading…
Cancel
Save