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. 62
      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. 160
      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.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)

30
sapl/compilacao/urls.py

@ -98,31 +98,31 @@ urlpatterns_compilacao = [
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 = [
url(r'^ta/', include(urlpatterns_compilacao)),
url(r'^ta/config/tipo-nota/',
url(r'^sistema/ta/config/tipo-nota/',
include(TipoNotaCrud.get_urls())),
url(r'^ta/config/tipo-vide/',
url(r'^sistema/ta/config/tipo-vide/',
include(TipoVideCrud.get_urls())),
url(r'^ta/config/tipo-publicacao/',
url(r'^sistema/ta/config/tipo-publicacao/',
include(TipoPublicacaoCrud.get_urls())),
url(r'^ta/config/veiculo-publicacao/',
url(r'^sistema/ta/config/veiculo-publicacao/',
include(VeiculoPublicacaoCrud.get_urls())),
url(r'^ta/config/tipo-dispositivo/',
url(r'^sistema/ta/config/tipo-dispositivo/',
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,
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)

7
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

31
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]

6
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

74
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 {

62
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 %}
<div class="actions btn-group pull-right" role="group">
@ -14,27 +14,37 @@
{% endif %}
{% endblock actions %}
{% if not object_list %}
<p>{{ NO_ENTRIES_MSG }}</p>
{% else %}
<table class="table table-striped table-hover" width=100%>
<thead>
<tr>
<th>{% fieldclass_verbose_name 'sapl.compilacao.models.TipoTextoArticulado' 'sigla' %}</th>
<th>{% fieldclass_verbose_name 'sapl.compilacao.models.TipoTextoArticulado' 'descricao' %}</th>
<th>{% fieldclass_verbose_name 'sapl.compilacao.models.TipoTextoArticulado' 'content_type' %}</th>
</tr>
</thead>
<tbody>
{% for tipo_ta in object_list %}
<tr>
<td><a href="{% url 'sapl.compilacao:tipo_ta_detail' tipo_ta.pk %}">{{ tipo_ta.sigla }}</a></td>
<td>{{ tipo_ta.descricao }}</td>
<td>{{ tipo_ta.content_type }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{%endif%}
{% include 'paginacao.html'%}
<div class="row container-tabaux">
<div class="{% if perms.base.menu_tabelas_auxiliares %}col-sm-9{% endif %}">
{% if not object_list %}
<p>{{ NO_ENTRIES_MSG }}</p>
{% else %}
<table class="table table-striped table-hover" width=100%>
<thead>
<tr>
<th>{% fieldclass_verbose_name 'sapl.compilacao.models.TipoTextoArticulado' 'sigla' %}</th>
<th>{% fieldclass_verbose_name 'sapl.compilacao.models.TipoTextoArticulado' 'descricao' %}</th>
<th>{% fieldclass_verbose_name 'sapl.compilacao.models.TipoTextoArticulado' 'content_type' %}</th>
</tr>
</thead>
<tbody>
{% for tipo_ta in object_list %}
<tr>
<td><a href="{% url 'sapl.compilacao:tipo_ta_detail' tipo_ta.pk %}">{{ tipo_ta.sigla }}</a></td>
<td>{{ tipo_ta.descricao }}</td>
<td>{{ tipo_ta.content_type }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{%endif%}
{% 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 %}

4
sapl/templates/crud/detail.html

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

4
sapl/templates/crud/detail_detail.html

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

15
sapl/templates/crud/list.html

@ -20,7 +20,22 @@
{% block more_buttons %}{% endblock more_buttons %}
</div>
{% 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>
{% block extra_content %} {% endblock %}
{% 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 %}

160
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 %}
<h2>Configurações Gerais</h2>
<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:autor_list' %}" class="btn btn-link">Autor</a></div>
<div class="col-md-6"><a href="{% url 'sapl.base:appconfig_list' %}" class="btn btn-link">Configurações da Aplicação</a></div>
<div class="col-md-6"><a href="{% url 'sapl.base:tipoautor_list' %}" class="btn btn-link">Tipo de Autor</a></div>
</div>
<div class="container-tabaux">
<ul class="list">
{% menu 'menu_tabelas_auxiliares.yaml'%}
</ul>
</div>
{% comment %}
<h2>Configurações Gerais</h2>
<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:autor_list' %}" class="btn btn-link">Autor</a></div>
<div class="col-md-6"><a href="{% url 'sapl.base:appconfig_list' %}" class="btn btn-link">Configurações da Aplicação</a></div>
<div class="col-md-6"><a href="{% url 'sapl.base:tipoautor_list' %}" class="btn btn-link">Tipo de Autor</a></div>
</div>
<hr />
<h2>Módulo Parlamentares</h2>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:legislatura_list' %}" class="btn btn-link">Legislatura</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:tipoafastamento_list' %}" class="btn btn-link">Tipo de Afastamento</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:tipodependente_list' %}" class="btn btn-link">Tipo de Dependente</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:situacaomilitar_list' %}" class="btn btn-link">Tipo de Situação Militar</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:nivelinstrucao_list' %}" class="btn btn-link">Nível de Instrução</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:partido_list' %}" class="btn btn-link">Partido</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:coligacao_list' %}" class="btn btn-link">Coligação</a></div>
</div>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:legislatura_list' %}" class="btn btn-link">Legislatura</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:tipoafastamento_list' %}" class="btn btn-link">Tipo de Afastamento</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:tipodependente_list' %}" class="btn btn-link">Tipo de Dependente</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:situacaomilitar_list' %}" class="btn btn-link">Tipo de Situação Militar</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:nivelinstrucao_list' %}" class="btn btn-link">Nível de Instrução</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:partido_list' %}" class="btn btn-link">Partido</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:coligacao_list' %}" class="btn btn-link">Coligação</a></div>
</div>
<hr />
<h2>Módulo Mesa Diretora</h2>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:sessaolegislativa_list' %}" class="btn btn-link">Sessão Legislativa</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:cargomesa_list' %}" class="btn btn-link">Cargo da Mesa</a></div>
</div>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:sessaolegislativa_list' %}" class="btn btn-link">Sessão Legislativa</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:cargomesa_list' %}" class="btn btn-link">Cargo da Mesa</a></div>
</div>
<hr />
<h2>Módulo Comissões</h2>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.comissoes:cargocomissao_list' %}" class="btn btn-link">Cargo de Comissão</a></div>
<div class="col-md-6"><a href="{% url 'sapl.comissoes:periodo_list' %}" class="btn btn-link">Período de Composição</a></div>
<div class="col-md-6"><a href="{% url 'sapl.comissoes:tipocomissao_list' %}" class="btn btn-link">Tipo de Comissão</a></div>
</div>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.comissoes:cargocomissao_list' %}" class="btn btn-link">Cargo de Comissão</a></div>
<div class="col-md-6"><a href="{% url 'sapl.comissoes:periodo_list' %}" class="btn btn-link">Período de Composição</a></div>
<div class="col-md-6"><a href="{% url 'sapl.comissoes:tipocomissao_list' %}" class="btn btn-link">Tipo de Comissão</a></div>
</div>
<hr />
<h2>Módulo Bancadas Parlamentares</h2>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.sessao:bancada_list' %}" class="btn btn-link">Bancadas Parlamentares</a></div>
<div class="col-md-6"><a href="{% url 'sapl.sessao:cargobancada_list' %}" class="btn btn-link">Cargo de Bancada Parlamentar</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:frente_list' %}" class="btn btn-link">Frente Parlamentar</a></div>
<div class="col-md-6"><a href="{% url 'sapl.sessao:bloco_list' %}" class="btn btn-link">Bloco Parlamentar</a></div>
</div>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.sessao:bancada_list' %}" class="btn btn-link">Bancadas Parlamentares</a></div>
<div class="col-md-6"><a href="{% url 'sapl.sessao:cargobancada_list' %}" class="btn btn-link">Cargo de Bancada Parlamentar</a></div>
<div class="col-md-6"><a href="{% url 'sapl.parlamentares:frente_list' %}" class="btn btn-link">Frente Parlamentar</a></div>
<div class="col-md-6"><a href="{% url 'sapl.sessao:bloco_list' %}" class="btn btn-link">Bloco Parlamentar</a></div>
</div>
<hr />
<h2>Módulo Proposições</h2>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.materia:tipoproposicao_list' %}" class="btn btn-link">Tipo de Proposição</a></div>
</div>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.materia:tipoproposicao_list' %}" class="btn btn-link">Tipo de Proposição</a></div>
</div>
<hr />
<h2>Módulo Matéria Legislativa</h2>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.materia:tipomaterialegislativa_list' %}" class="btn btn-link">Tipo de Matéria Legislativa</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:regimetramitacao_list' %}" class="btn btn-link">Regime de Tramitação</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:tipodocumento_list' %}" class="btn btn-link">Tipo de Documento</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:tipofimrelatoria_list' %}" class="btn btn-link">Tipo de fim de Relatoria</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:unidadetramitacao_list' %}" class="btn btn-link">Unidade de Tramitação</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:origem_list' %}" class="btn btn-link">Origem</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:statustramitacao_list' %}" class="btn btn-link">Status da Tramitação</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:orgao_list' %}" class="btn btn-link">Órgão</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:assuntomateria_list' %}" class="btn btn-link">Assunto Matéria</a></div>
</div>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.materia:tipomaterialegislativa_list' %}" class="btn btn-link">Tipo de Matéria Legislativa</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:regimetramitacao_list' %}" class="btn btn-link">Regime de Tramitação</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:tipodocumento_list' %}" class="btn btn-link">Tipo de Documento</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:tipofimrelatoria_list' %}" class="btn btn-link">Tipo de fim de Relatoria</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:unidadetramitacao_list' %}" class="btn btn-link">Unidade de Tramitação</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:origem_list' %}" class="btn btn-link">Origem</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:statustramitacao_list' %}" class="btn btn-link">Status da Tramitação</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:orgao_list' %}" class="btn btn-link">Órgão</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:assuntomateria_list' %}" class="btn btn-link">Assunto Matéria</a></div>
</div>
<hr />
<h2>Módulo Normas Jurídicas</h2>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.norma:tiponormajuridica_list' %}" class="btn btn-link">Tipo de Norma Jurídica</a></div>
<div class="col-md-6"><a href="{% url 'sapl.norma:assuntonorma_list' %}" class="btn btn-link">Assunto de Norma Jurídica</a></div>
<div class="col-md-6"><a href="{% url 'sapl.norma:tipovinculonormajuridica_list' %}" class="btn btn-link">Tipo de Vínculo</a></div>
</div>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.norma:tiponormajuridica_list' %}" class="btn btn-link">Tipo de Norma Jurídica</a></div>
<div class="col-md-6"><a href="{% url 'sapl.norma:assuntonorma_list' %}" class="btn btn-link">Assunto de Norma Jurídica</a></div>
<div class="col-md-6"><a href="{% url 'sapl.norma:tipovinculonormajuridica_list' %}" class="btn btn-link">Tipo de Vínculo</a></div>
</div>
<hr />
<hr />
<h2>Módulo Textos Articulados</h2>
<div class="row">
<div class="col-md-6"><a class="btn btn-link" href="{% url 'sapl.compilacao:tipo_ta_list' %}">Tipos de Textos Articulados</a></div>
<div class="col-md-6"><a class="btn btn-link" href="{% url 'sapl.compilacao:tipopublicacao_list' %}">Tipos de Publicação</a></div>
<div class="col-md-6"><a class="btn btn-link" href="{% url 'sapl.compilacao:veiculopublicacao_list' %}">Veículos de Publicação</a></div>
<div class="col-md-6"><a class="btn btn-link" href="{% url 'sapl.compilacao:tiponota_list' %}">Tipos de Notas</a></div>
<div class="col-md-6"><a class="btn btn-link" href="{% url 'sapl.compilacao:tipovide_list' %}">Tipos de Vides</a></div>
<div class="col-md-6"><a class="btn btn-link" href="{% url 'sapl.compilacao:tipodispositivo_list' %}">Tipos de Dispositivos</a></div>
<div class="col-md-6"><a class="btn btn-link" href="/admin/compilacao/tipodispositivorelationship/">Relacionamento entre Dispositivos</a></div>
</div>
<div class="row">
<div class="col-md-6"><a class="btn btn-link" href="{% url 'sapl.compilacao:tipo_ta_list' %}">Tipos de Textos Articulados</a></div>
<div class="col-md-6"><a class="btn btn-link" href="{% url 'sapl.compilacao:tipopublicacao_list' %}">Tipos de Publicação</a></div>
<div class="col-md-6"><a class="btn btn-link" href="{% url 'sapl.compilacao:veiculopublicacao_list' %}">Veículos de Publicação</a></div>
<div class="col-md-6"><a class="btn btn-link" href="{% url 'sapl.compilacao:tiponota_list' %}">Tipos de Notas</a></div>
<div class="col-md-6"><a class="btn btn-link" href="{% url 'sapl.compilacao:tipovide_list' %}">Tipos de Vides</a></div>
<div class="col-md-6"><a class="btn btn-link" href="{% url 'sapl.compilacao:tipodispositivo_list' %}">Tipos de Dispositivos</a></div>
<div class="col-md-6"><a class="btn btn-link" href="/admin/compilacao/tipodispositivorelationship/">Relacionamento entre Dispositivos</a></div>
</div>
<hr />
<h2>Módulo Sessão Plenária</h2>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.sessao:tiposessaoplenaria_list' %}" class="btn btn-link">Tipo de Sessão Plenária</a></div>
<div class="col-md-6"><a href="{% url 'sapl.sessao:tiporesultadovotacao_list' %}" class="btn btn-link">Tipo de Resultado da Votação</a></div>
<div class="col-md-6"><a href="{% url 'sapl.sessao:tipoexpediente_list' %}" class="btn btn-link">Tipo de Expediente</a></div>
<div class="col-md-6"><a href="{% url 'sapl.sessao:resumo_ordenacao' %}" class="btn btn-link">Ordenação do Resumo</a></div>
</div>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.sessao:tiposessaoplenaria_list' %}" class="btn btn-link">Tipo de Sessão Plenária</a></div>
<div class="col-md-6"><a href="{% url 'sapl.sessao:tiporesultadovotacao_list' %}" class="btn btn-link">Tipo de Resultado da Votação</a></div>
<div class="col-md-6"><a href="{% url 'sapl.sessao:tipoexpediente_list' %}" class="btn btn-link">Tipo de Expediente</a></div>
<div class="col-md-6"><a href="{% url 'sapl.sessao:resumo_ordenacao' %}" class="btn btn-link">Ordenação do Resumo</a></div>
</div>
<hr />
<h2>Módulo LexML</h2>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.lexml:lexmlprovedor_list' %}" class="btn btn-link">Provedor</a></div>
<div class="col-md-6"><a href="{% url 'sapl.lexml:lexmlpublicador_list' %}" class="btn btn-link">Publicador</a></div>
</div>
<div class="row">
<div class="col-md-6"><a href="{% url 'sapl.lexml:lexmlprovedor_list' %}" class="btn btn-link">Provedor</a></div>
<div class="col-md-6"><a href="{% url 'sapl.lexml:lexmlpublicador_list' %}" class="btn btn-link">Publicador</a></div>
</div>
<hr />
<h2>Módulo Administrativo</h2>
<div class="row">
<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>
<div class="row">
<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>
{% endcomment %}
{% endblock base_content %}

7
sapl/test_urls.py

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

Loading…
Cancel
Save