From 382e2f5956d3199360e2ff3574f439f31d818cb8 Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Tue, 14 Jun 2016 17:26:43 -0300 Subject: [PATCH 1/9] Acrescenta classe 'active' na item subnav ativo --- sapl/base/templatetags/menus.py | 28 ++++++++++++++++++---------- sapl/templates/menus/subnav.html | 31 ++++++++++++++++--------------- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/sapl/base/templatetags/menus.py b/sapl/base/templatetags/menus.py index d96ab2e22..5086233d9 100644 --- a/sapl/base/templatetags/menus.py +++ b/sapl/base/templatetags/menus.py @@ -37,29 +37,37 @@ def subnav(context, path=None): yaml_path = '%s/subnav.yaml' % app_template try: - """ Por padrão, são carragados dois Loaders, - filesystem.Loader - busca em TEMPLATES_DIRS do projeto atual - app_directories.Loader - busca em todas apps instaladas - A função abaixo é nativa e busca em todos os Loaders Configurados. + """ Por padrão, são carragados dois Loaders, + filesystem.Loader - busca em TEMPLATE_DIRS do projeto atual + app_directories.Loader - busca em todas apps instaladas + A função nativa abaixo busca em todos os Loaders Configurados. """ yaml_template = template.loader.get_template(yaml_path) menu = yaml.load(open(yaml_template.origin.name, 'r')) - resolve_urls_inplace(menu, root_pk, app) + resolve_urls_inplace(menu, root_pk, app, request.path) except: - # um erro será lançado por get_template se não for encontrado - # yaml_path em nenhum de locais registrados. pass return {'menu': menu} -def resolve_urls_inplace(menu, pk, app): +def resolve_urls_inplace(menu, pk, app, request_path): + print(menu) if isinstance(menu, list): + list_active = '' for item in menu: - resolve_urls_inplace(item, pk, app) + menuactive = resolve_urls_inplace(item, pk, app, request_path) + list_active = menuactive if menuactive else list_active + if not isinstance(item, list): + item['active'] = menuactive + + return list_active else: if 'url' in menu: menu['url'] = reverse('%s:%s' % (app, menu['url']), kwargs={'pk': pk}) + menu['active'] = 'active' if request_path == menu['url'] else '' if 'children' in menu: - resolve_urls_inplace(menu['children'], pk, app) + menu['active'] = resolve_urls_inplace( + menu['children'], pk, app, request_path) + return menu['active'] diff --git a/sapl/templates/menus/subnav.html b/sapl/templates/menus/subnav.html index 85fdecb83..7a029ab10 100644 --- a/sapl/templates/menus/subnav.html +++ b/sapl/templates/menus/subnav.html @@ -1,23 +1,24 @@ + {% load i18n %} {% if menu %} {% endif %} From 2efcb6c42fc0862a2cb13a992f978b1d7862704d Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Tue, 14 Jun 2016 17:32:33 -0300 Subject: [PATCH 2/9] retira print de debug --- sapl/base/templatetags/menus.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sapl/base/templatetags/menus.py b/sapl/base/templatetags/menus.py index 5086233d9..a3c104103 100644 --- a/sapl/base/templatetags/menus.py +++ b/sapl/base/templatetags/menus.py @@ -52,7 +52,6 @@ def subnav(context, path=None): def resolve_urls_inplace(menu, pk, app, request_path): - print(menu) if isinstance(menu, list): list_active = '' for item in menu: From ab2c0594b56b530fb8800027aa85efabb1b5a964 Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Fri, 17 Jun 2016 03:13:47 -0300 Subject: [PATCH 3/9] =?UTF-8?q?Otimiza=20o=20contexto=20do=20template=20Pe?= =?UTF-8?q?squisa=20de=20Mat=C3=A9rias?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/materia/views.py | 32 ++++--------------- .../materia/materialegislativa_filter.html | 28 ++++++++-------- 2 files changed, 20 insertions(+), 40 deletions(-) diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 132080228..b63efc737 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -469,39 +469,21 @@ class MateriaLegislativaPesquisaView(FilterView): context = super(MateriaLegislativaPesquisaView, self).get_context_data(**kwargs) + context['title'] = _('Pesquisar Matéria Legislativa') + paginator = context['paginator'] page_obj = context['page_obj'] - context['page_range'] = make_pagination( page_obj.number, paginator.num_pages) - return context - - def get(self, request, *args, **kwargs): - super(MateriaLegislativaPesquisaView, self).get(request) - - # Se a pesquisa estiver quebrando com a paginação - # Olhe esta função abaixo - # Provavelmente você criou um novo campo no Form/FilterSet - # Então a ordem da URL está diferente - data = self.filterset.data - if (data and data.get('tipo') is not None): - url = "&" + str(self.request.environ['QUERY_STRING']) - if url.startswith("&page"): - ponto_comeco = url.find('tipo=') - 1 - url = url[ponto_comeco:] - else: - url = '' - self.filterset.form.fields['o'].label = _('Ordenação') - context = self.get_context_data(filter=self.filterset, - object_list=self.object_list, - filter_url=url, - numero_res=len(self.object_list) - ) + qr = self.request.GET.copy() + if 'page' in qr: + del qr['page'] + context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else '' - return self.render_to_response(context) + return context class MateriaTaView(IntegracaoTaView): diff --git a/sapl/templates/materia/materialegislativa_filter.html b/sapl/templates/materia/materialegislativa_filter.html index 86673d7cf..71f4dc146 100644 --- a/sapl/templates/materia/materialegislativa_filter.html +++ b/sapl/templates/materia/materialegislativa_filter.html @@ -3,36 +3,34 @@ {% load crispy_forms_tags %} {% block actions %}{% endblock %} -{% block sections_nav %} +{% block sections_nav %} {% endblock %} {% block detail_content %} -

Pesquisar Matéria

-

{% if filter_url %} {% endif %} - + {% if not filter_url %} {% crispy filter.form %} {% endif %} - +

{% if filter_url %} - + - {% if page_obj|length %} - {% if numero_res > 1 %} -

Pesquisa concluída com sucesso! Foram encontradas {{numero_res}} matérias.

- {% elif numero_res == 1 %} -

Pesquisa concluída com sucesso! Foi encontrada {{numero_res}} matéria.

+ {% if paginator.count %} + {% if paginator.count > 1 %} +

{% blocktrans with paginator.count as total_materias %}Pesquisa concluída com sucesso! Foram encontradas {{total_materias}} matérias.{% endblocktrans %}

+ {% elif paginator.count == 1 %} +

{% trans 'Pesquisa concluída com sucesso! Foi encontrada 1 matéria.'%}

{% endif %} + {% for m in page_obj %} - {% endif %} - +

Resultados

{% trans "Resultados" %}

{{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}
@@ -42,7 +40,7 @@ ,    {{a.autor|default_if_none:"Não Informado"}} {% else %}  {{a.autor|default_if_none:"Não Informado"}} - {% endif %} + {% endif %} {% endfor %}
Localização Atual:  {{m.tramitacao_set.last.unidade_tramitacao_destino|default_if_none:"Não Informada"}}
@@ -58,11 +56,11 @@

Nenhuma matéria encontrada com essas especificações

{% include "paginacao.html" %} {% endif %} -{% endblock detail_content %} \ No newline at end of file +{% endblock detail_content %} From f18089e227f15adc2effc64aae572eae66d19c1a Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Fri, 17 Jun 2016 23:33:59 -0300 Subject: [PATCH 4/9] Move url media para sapl.urls --- sapl/base/urls.py | 4 ---- sapl/sessao/urls.py | 4 ---- sapl/urls.py | 3 +++ 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/sapl/base/urls.py b/sapl/base/urls.py index 94cd3979a..13b9d7eb2 100644 --- a/sapl/base/urls.py +++ b/sapl/base/urls.py @@ -23,7 +23,3 @@ urlpatterns = [ name='login'), url(r'^logout/$', views.logout, {'next_page': '/login'}, name='logout') ] - -# Fix a static asset finding error on Django 1.9 + gunicorn: -# http://stackoverflow.com/questions/35510373/ -urlpatterns += staticfiles_urlpatterns() diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py index f616e00a2..ef1a4c7be 100644 --- a/sapl/sessao/urls.py +++ b/sapl/sessao/urls.py @@ -1,7 +1,5 @@ from django.conf.urls import include, url -from django.views.static import serve -from sapl import settings from sapl.sessao.views import (BancadaCrud, CargoBancadaCrud, EditMateriaOrdemDiaView, ExpedienteMateriaCrud, ExpedienteView, ListMateriaOrdemDiaView, @@ -40,8 +38,6 @@ urlpatterns = [ url(r'^(?P\d+)/reordenar-expediente$', reordernar_materias_expediente, name="reordenar_expediente"), - url(r'^media/(?P.*)$', serve, - {'document_root': settings.MEDIA_ROOT}), url(r'^rest/', include(sessao_rest)), url(r'^sistema/sessao-plenaria/tipo/', include(TipoSessaoCrud.get_urls())), diff --git a/sapl/urls.py b/sapl/urls.py index 2fb1df919..750cce94d 100644 --- a/sapl/urls.py +++ b/sapl/urls.py @@ -53,6 +53,9 @@ urlpatterns = [ ] +# Fix a static asset finding error on Django 1.9 + gunicorn: +# http://stackoverflow.com/questions/35510373/ + if settings.DEBUG: urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) From 8ab7dc31c3a9234b68d648102e29b769f63953bc Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Mon, 20 Jun 2016 10:37:54 -0300 Subject: [PATCH 5/9] Corrige link de config inicial da casa legislativa --- sapl/templates/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sapl/templates/base.html b/sapl/templates/base.html index 25020e9d1..8c5eafc56 100644 --- a/sapl/templates/base.html +++ b/sapl/templates/base.html @@ -242,7 +242,7 @@ {% else %} Casa Legislativa não configurada.
- Favor configurar clicando aqui + Favor configurar clicando aqui {% endif %} From 66ecc0731988581edb998ca32be12b09a82fcde7 Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Wed, 22 Jun 2016 00:10:19 -0300 Subject: [PATCH 6/9] =?UTF-8?q?Localiza=20url=20do=20subnav.yaml=20nas=20v?= =?UTF-8?q?aria=C3=A7=C3=B5es=20do=20crud?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Localiza url do subnav.yaml nas variações do crud da view do request caso o acesso seja por uma de suas variações com o intuito de manter a classe "active" no subnav correto ao serem ativadas funcionalidades de adição, edição e exclusão. --- sapl/base/templatetags/menus.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/sapl/base/templatetags/menus.py b/sapl/base/templatetags/menus.py index a3c104103..ce67143ea 100644 --- a/sapl/base/templatetags/menus.py +++ b/sapl/base/templatetags/menus.py @@ -44,18 +44,18 @@ def subnav(context, path=None): """ yaml_template = template.loader.get_template(yaml_path) menu = yaml.load(open(yaml_template.origin.name, 'r')) - resolve_urls_inplace(menu, root_pk, app, request.path) + resolve_urls_inplace(menu, root_pk, app, context) except: pass return {'menu': menu} -def resolve_urls_inplace(menu, pk, app, request_path): +def resolve_urls_inplace(menu, pk, app, context): if isinstance(menu, list): list_active = '' for item in menu: - menuactive = resolve_urls_inplace(item, pk, app, request_path) + menuactive = resolve_urls_inplace(item, pk, app, context) list_active = menuactive if menuactive else list_active if not isinstance(item, list): item['active'] = menuactive @@ -63,10 +63,25 @@ def resolve_urls_inplace(menu, pk, app, request_path): return list_active else: if 'url' in menu: + url_name = menu['url'] menu['url'] = reverse('%s:%s' % (app, menu['url']), kwargs={'pk': pk}) - menu['active'] = 'active' if request_path == menu['url'] else '' + menu['active'] = 'active'\ + if context['request'].path == menu['url'] else '' + + if not menu['active']: + # se não encontrada, procura a url acionada dentro do crud, caso + # seja um. + view = context['view'] + if hasattr(view, '__class__') and\ + hasattr(view.__class__, 'crud'): + urls = view.__class__.crud.get_urls() + for u in urls: + if u.name == url_name: + menu['active'] = 'active' + break + if 'children' in menu: menu['active'] = resolve_urls_inplace( - menu['children'], pk, app, request_path) + menu['children'], pk, app, context) return menu['active'] From c4046aa7b7ded5f95ac639b8204d826ffa3abd1c Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Wed, 22 Jun 2016 12:33:59 -0300 Subject: [PATCH 7/9] =?UTF-8?q?Ajusta=20script=20de=20anonimiza=C3=A7?= =?UTF-8?q?=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/anonimizador/anon.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/anonimizador/anon.py b/scripts/anonimizador/anon.py index c91be10cd..2711f0114 100644 --- a/scripts/anonimizador/anon.py +++ b/scripts/anonimizador/anon.py @@ -11,7 +11,7 @@ from sapl.norma.models import AssuntoNorma from sapl.parlamentares.models import Municipio, NivelInstrucao, Partido from sapl.settings import SAPL_APPS -sapl_appconfs = [apps.get_app_config(n) for n in SAPL_APPS] +sapl_appconfs = [apps.get_app_config(n.split('.')[1]) for n in SAPL_APPS] models = [model for app in sapl_appconfs for model in app.get_models()] excluidos = Origem, Orgao, AssuntoNorma, Partido, NivelInstrucao, Municipio, From b69ccfdfd728b7608497c502b0ea3433d218a1fc Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Sat, 18 Jun 2016 00:57:23 -0300 Subject: [PATCH 8/9] =?UTF-8?q?Refat.=20leitura=20de=20yaml's=20para=20int?= =?UTF-8?q?ernacionaliza=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - As leituras dos arquivos subnav.yaml e layouts.yaml foram refatoradas para suportar internacionalização. - Falta fazer neste branch: - Mover todos os arquivos [app_label]/layouts.yaml para templates/[app_label]/layouts.yaml - aplicar a tag {% load i18n %} no início de todo arquivo layouts.yaml - aplicar a tag {% trans '' %} em todo texto a ser internacionalizado - DICA: deixe os ":" (dois pontos) de fora da tag trans. --- sapl/base/templatetags/menus.py | 3 ++- sapl/crispy_layout_mixin.py | 25 ++++++++++--------- .../parlamentares/layouts.yaml | 4 +-- sapl/templates/parlamentares/subnav.yaml | 4 +-- 4 files changed, 19 insertions(+), 17 deletions(-) rename sapl/{ => templates}/parlamentares/layouts.yaml (97%) diff --git a/sapl/base/templatetags/menus.py b/sapl/base/templatetags/menus.py index ce67143ea..5dda6f104 100644 --- a/sapl/base/templatetags/menus.py +++ b/sapl/base/templatetags/menus.py @@ -43,7 +43,8 @@ def subnav(context, path=None): A função nativa abaixo busca em todos os Loaders Configurados. """ yaml_template = template.loader.get_template(yaml_path) - menu = yaml.load(open(yaml_template.origin.name, 'r')) + rendered = yaml_template.render() + menu = yaml.load(rendered) resolve_urls_inplace(menu, root_pk, app, context) except: pass diff --git a/sapl/crispy_layout_mixin.py b/sapl/crispy_layout_mixin.py index ad079f66a..638efecf5 100644 --- a/sapl/crispy_layout_mixin.py +++ b/sapl/crispy_layout_mixin.py @@ -1,12 +1,13 @@ from math import ceil from os.path import dirname, join -import rtyaml from crispy_forms.bootstrap import FormActions from crispy_forms.helper import FormHelper from crispy_forms.layout import HTML, Div, Fieldset, Layout, Submit +from django import template from django.utils import formats from django.utils.translation import ugettext as _ +import rtyaml def heads_and_tails(list_of_lists): @@ -70,8 +71,8 @@ def get_field_display(obj, fieldname): elif 'FieldFile' in str(type(value)): if value: display = '{}'.format( - value.url, - value.name.split('/')[-1:][0]) + value.url, + value.name.split('/')[-1:][0]) else: display = '' else: @@ -89,10 +90,8 @@ class CrispyLayoutFormMixin: return self.model.__name__ def get_layout(self): - filename = join( - dirname(self.model._meta.app_config.models_module.__file__), - 'layouts.yaml') - return read_layout_from_yaml(filename, self.layout_key) + yaml_layout = '%s/layouts.yaml' % self.model._meta.app_config.label + return read_layout_from_yaml(yaml_layout, self.layout_key) @property def fields(self): @@ -146,15 +145,17 @@ class CrispyLayoutFormMixin: } for legend, rows in heads_and_tails(self.get_layout())] -def read_yaml_from_file(filename): +def read_yaml_from_file(yaml_layout): + # TODO cache this at application level - with open(filename, 'r') as yamlfile: - return rtyaml.load(yamlfile) + t = template.loader.get_template(yaml_layout) + rendered = t.render() + return rtyaml.load(rendered) -def read_layout_from_yaml(filename, key): +def read_layout_from_yaml(yaml_layout, key): # TODO cache this at application level - yaml = read_yaml_from_file(filename) + yaml = read_yaml_from_file(yaml_layout) base = yaml[key] def line_to_namespans(line): diff --git a/sapl/parlamentares/layouts.yaml b/sapl/templates/parlamentares/layouts.yaml similarity index 97% rename from sapl/parlamentares/layouts.yaml rename to sapl/templates/parlamentares/layouts.yaml index 866a791f9..f3fc6fc54 100644 --- a/sapl/parlamentares/layouts.yaml +++ b/sapl/templates/parlamentares/layouts.yaml @@ -1,6 +1,6 @@ - +{% load i18n %} CargoMesa: - Cargo na Mesa: + {% trans 'Cargo na Mesa'%}: - descricao:10 unico Legislatura: diff --git a/sapl/templates/parlamentares/subnav.yaml b/sapl/templates/parlamentares/subnav.yaml index fc171ea84..aa8bcc7a0 100644 --- a/sapl/templates/parlamentares/subnav.yaml +++ b/sapl/templates/parlamentares/subnav.yaml @@ -1,4 +1,5 @@ -- title: Início +{% load i18n %} +- title: {% trans 'Início' %} url: parlamentar_detail - title: Mandatos url: mandato_list @@ -6,4 +7,3 @@ url: filiacao_list - title: Dependentes url: dependente_list - From 89a56ad809c584703ba7865e23181e24addc56c0 Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Sat, 25 Jun 2016 21:44:55 -0300 Subject: [PATCH 9/9] =?UTF-8?q?Fix=20#502=20Internacionaliza=C3=A7=C3=A3o?= =?UTF-8?q?=20dos=20arquivos=20yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Transfere arq yaml da pasta de apps para a pasta de templates das apps - Aplica tags internacionalização nos arquivos layouts.yaml e subnav.yaml - Customiza base/templatetags/menus.py para customização de origem do arquivo yaml dos itens de menu do subnav com precedência de execução com maiores detalhes sobre a precedência no próprio arquivo. --- sapl/base/templatetags/menus.py | 82 +++++++++++++------ sapl/base/tests/test_login.py | 3 +- sapl/base/urls.py | 1 - sapl/compilacao/views.py | 7 +- sapl/crispy_layout_mixin.py | 3 +- sapl/crud/tests/stub_app/layouts.yaml | 4 +- sapl/{ => templates}/base/layouts.yaml | 3 +- sapl/{ => templates}/comissoes/layouts.yaml | 18 ++-- sapl/templates/comissoes/subnav.yaml | 8 +- sapl/{ => templates}/compilacao/layouts.yaml | 22 ++--- sapl/{ => templates}/lexml/layouts.yaml | 6 +- sapl/{ => templates}/materia/layouts.yaml | 61 +++++++------- sapl/templates/materia/subnav.yaml | 21 ++--- sapl/{ => templates}/norma/layouts.yaml | 14 ++-- sapl/templates/norma/subnav.yaml | 5 +- sapl/{ => templates}/painel/layouts.yaml | 4 +- sapl/templates/parlamentares/layouts.yaml | 31 ++++--- sapl/templates/parlamentares/subnav.yaml | 6 +- .../{ => templates}/protocoloadm/layouts.yaml | 20 ++--- sapl/{ => templates}/sessao/layouts.yaml | 28 +++---- sapl/templates/sessao/subnav.yaml | 29 +++---- sapl/utils.py | 5 +- setup.py | 5 +- 23 files changed, 207 insertions(+), 179 deletions(-) rename sapl/{ => templates}/base/layouts.yaml (75%) rename sapl/{ => templates}/comissoes/layouts.yaml (68%) rename sapl/{ => templates}/compilacao/layouts.yaml (61%) rename sapl/{ => templates}/lexml/layouts.yaml (72%) rename sapl/{ => templates}/materia/layouts.yaml (65%) rename sapl/{ => templates}/norma/layouts.yaml (78%) rename sapl/{ => templates}/painel/layouts.yaml (53%) rename sapl/{ => templates}/protocoloadm/layouts.yaml (66%) rename sapl/{ => templates}/sessao/layouts.yaml (69%) diff --git a/sapl/base/templatetags/menus.py b/sapl/base/templatetags/menus.py index 5dda6f104..4d1f14b4c 100644 --- a/sapl/base/templatetags/menus.py +++ b/sapl/base/templatetags/menus.py @@ -1,21 +1,20 @@ -import os - +import yaml from django import template from django.core.urlresolvers import reverse -import yaml - register = template.Library() @register.inclusion_tag('menus/subnav.html', takes_context=True) def subnav(context, path=None): - """Renders a subnavigation for views of a certain object. + """Renderiza sub navegação para objetos no padrão Mestre Detalhe - If not provided, path defaults to /subnav.yaml + Existem três possíveis fontes de busca do yaml + com precedência enumerada abaixo: + 1) Se a variável path não é nula; + 2) Se existe no contexto a chave subnav_template_name; + 3) o path default: /subnav.yaml """ - # TODO: 118n !!!!!!!!!!!!!! - # How to internationalize yaml files???? menu = None root_pk = context.get('root_pk', None) if not root_pk: @@ -26,37 +25,48 @@ def subnav(context, path=None): if root_pk: request = context['request'] + """ + As implementações das Views de Modelos que são dados auxiliares e + de diversas app's estão concentradas em urls com prefixo 'sistema'. + Essas Views não possuem submenu de navegação e são incompativeis com a + execução deste subnav. Inicialmente, a maneira mais prática encontrada + de isolar foi com o teste abaixo. + """ if 'sistema' in request.path: return - app = request.resolver_match.app_name - app_template = app.split('.') - app_template = app_template[1] if app_template[ - 0] == 'sapl' and len(app_template) > 1 else app_template[0] + rm = request.resolver_match + app_template = rm.app_name.rsplit('.', 1)[-1] - yaml_path = '%s/subnav.yaml' % app_template + if path: + yaml_path = path + elif 'subnav_template_name' in context: + yaml_path = context['subnav_template_name'] + else: + yaml_path = '%s/%s' % (app_template, 'subnav.yaml') try: - """ Por padrão, são carragados dois Loaders, - filesystem.Loader - busca em TEMPLATE_DIRS do projeto atual - app_directories.Loader - busca em todas apps instaladas - A função nativa abaixo busca em todos os Loaders Configurados. + """ + Por padrão, são carragados dois Loaders, + filesystem.Loader - busca em TEMPLATE_DIRS do projeto atual + app_directories.Loader - busca em todas apps instaladas + A função nativa abaixo busca em todos os Loaders Configurados. """ yaml_template = template.loader.get_template(yaml_path) rendered = yaml_template.render() menu = yaml.load(rendered) - resolve_urls_inplace(menu, root_pk, app, context) - except: - pass + resolve_urls_inplace(menu, root_pk, rm, context) + except Exception as e: + print(e) return {'menu': menu} -def resolve_urls_inplace(menu, pk, app, context): +def resolve_urls_inplace(menu, pk, rm, context): if isinstance(menu, list): list_active = '' for item in menu: - menuactive = resolve_urls_inplace(item, pk, app, context) + menuactive = resolve_urls_inplace(item, pk, rm, context) list_active = menuactive if menuactive else list_active if not isinstance(item, list): item['active'] = menuactive @@ -65,24 +75,42 @@ def resolve_urls_inplace(menu, pk, app, context): else: if 'url' in menu: url_name = menu['url'] - menu['url'] = reverse('%s:%s' % (app, menu['url']), + menu['url'] = reverse('%s:%s' % (rm.app_name, menu['url']), kwargs={'pk': pk}) menu['active'] = 'active'\ if context['request'].path == menu['url'] else '' if not menu['active']: - # se não encontrada, procura a url acionada dentro do crud, caso - # seja um. + """ + Se não encontrada diretamente, + procura a url acionada dentro do crud, caso seja um. + Serve para manter o active no suvnav correto ao acionar + as funcionalidades diretas do MasterDetailCrud, como: + - visualização de detalhes, adição, edição, remoção. + + Casos para urls_extras: + Em relações de segundo nível, como ocorre em + (0) Comissões -> (1) Composição -> (2) Participação + + (2) não tem ligação direta com (1) através da view. Para (2) + ser localizado, e o nav-tabs ou nav-pills do front-end serem + ativados foi inserido o teste de existência de urls_extras + para serem testadas e, sendo válidado, o active do front-end + seja devidamente colocado. + """ + view = context['view'] if hasattr(view, '__class__') and\ hasattr(view.__class__, 'crud'): urls = view.__class__.crud.get_urls() for u in urls: - if u.name == url_name: + if (u.name == url_name or + 'urls_extras' in menu and + u.name in menu['urls_extras']): menu['active'] = 'active' break if 'children' in menu: menu['active'] = resolve_urls_inplace( - menu['children'], pk, app, context) + menu['children'], pk, rm, context) return menu['active'] diff --git a/sapl/base/tests/test_login.py b/sapl/base/tests/test_login.py index 40ad93264..73f9eac69 100755 --- a/sapl/base/tests/test_login.py +++ b/sapl/base/tests/test_login.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- -from django.contrib.auth import get_user_model import pytest - +from django.contrib.auth import get_user_model pytestmark = pytest.mark.django_db diff --git a/sapl/base/urls.py b/sapl/base/urls.py index 13b9d7eb2..9fd6f0dcb 100644 --- a/sapl/base/urls.py +++ b/sapl/base/urls.py @@ -1,6 +1,5 @@ from django.conf.urls import include, url from django.contrib.auth import views -from django.contrib.staticfiles.urls import staticfiles_urlpatterns from django.views.generic.base import TemplateView from .apps import AppConfig diff --git a/sapl/compilacao/views.py b/sapl/compilacao/views.py index 339d6a5de..ff88d627d 100644 --- a/sapl/compilacao/views.py +++ b/sapl/compilacao/views.py @@ -1,6 +1,6 @@ +import sys from collections import OrderedDict from datetime import datetime, timedelta -import sys from braces.views import FormMessagesMixin from django import forms @@ -38,7 +38,6 @@ from sapl.compilacao.models import (Dispositivo, Nota, from sapl.compilacao.utils import DISPOSITIVO_SELECT_RELATED from sapl.crud.base import Crud, CrudListView, make_pagination - TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota') TipoVideCrud = Crud.build(TipoVide, 'tipo_vide') TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao') @@ -2144,10 +2143,10 @@ class DispositivoSearchFragmentFormView(ListView): """ ao integrar um model ao app de compilação, se este model possuir - + texto_articulado = GenericRelation( TextoArticulado, related_query_name='texto_articulado') - + será uma integração mais eficiente para as buscas de Dispositivos """ if hasattr(model_class, 'texto_articulado'): diff --git a/sapl/crispy_layout_mixin.py b/sapl/crispy_layout_mixin.py index 638efecf5..6c60c9b79 100644 --- a/sapl/crispy_layout_mixin.py +++ b/sapl/crispy_layout_mixin.py @@ -1,13 +1,12 @@ from math import ceil -from os.path import dirname, join +import rtyaml from crispy_forms.bootstrap import FormActions from crispy_forms.helper import FormHelper from crispy_forms.layout import HTML, Div, Fieldset, Layout, Submit from django import template from django.utils import formats from django.utils.translation import ugettext as _ -import rtyaml def heads_and_tails(list_of_lists): diff --git a/sapl/crud/tests/stub_app/layouts.yaml b/sapl/crud/tests/stub_app/layouts.yaml index fc104c87e..adb32e93c 100644 --- a/sapl/crud/tests/stub_app/layouts.yaml +++ b/sapl/crud/tests/stub_app/layouts.yaml @@ -1,7 +1,7 @@ Country: - Basic Data: + {% trans 'Basic Data' %}: - name:9 continent - population is_cold - More Details: + {% trans 'More Details' %}: - description diff --git a/sapl/base/layouts.yaml b/sapl/templates/base/layouts.yaml similarity index 75% rename from sapl/base/layouts.yaml rename to sapl/templates/base/layouts.yaml index 0a377da6f..4e84ee4cd 100644 --- a/sapl/base/layouts.yaml +++ b/sapl/templates/base/layouts.yaml @@ -1,5 +1,6 @@ +{% load i18n %} CasaLegislativa: - Casa Legislativa: + {% trans 'Casa Legislativa' %}: - codigo:2 nome sigla - endereco:8 cep - municipio:10 uf diff --git a/sapl/comissoes/layouts.yaml b/sapl/templates/comissoes/layouts.yaml similarity index 68% rename from sapl/comissoes/layouts.yaml rename to sapl/templates/comissoes/layouts.yaml index 22ffa0f98..e881b0b1e 100644 --- a/sapl/comissoes/layouts.yaml +++ b/sapl/templates/comissoes/layouts.yaml @@ -1,36 +1,36 @@ - +{% load i18n %} CargoComissao: - Período de composição de Comissão: + {% trans 'Período de composição de Comissão' %}: - nome:10 unico Periodo: - Cargo de Comissão: + {% trans 'Cargo de Comissão' %}: - data_inicio data_fim TipoComissao: - Tipo Comissão: + {% trans 'Tipo Comissão' %}: - nome:9 sigla - dispositivo_regimental:9 natureza Comissao: - Dados Básicos: + {% trans 'Dados Básicos' %}: - nome:8 sigla - tipo data_criacao unidade_deliberativa data_extincao - Dados Complementares: + {% trans 'Dados Complementares' %}: - local_reuniao agenda_reuniao telefone_reuniao - endereco_secretaria telefone_secretaria fax_secretaria - secretario email - finalidade - Temporária: + {% trans 'Temporária' %}: - apelido_temp:8 data_instalacao_temp - data_final_prevista_temp data_prorrogada_temp data_fim_comissao Composicao: - Composição: + {% trans 'Composição' %}: - periodo Participacao: - Participação: + {% trans 'Participação' %}: - parlamentar cargo titular - data_designacao data_desligamento - motivo_desligamento diff --git a/sapl/templates/comissoes/subnav.yaml b/sapl/templates/comissoes/subnav.yaml index 8ee080406..02402bfee 100644 --- a/sapl/templates/comissoes/subnav.yaml +++ b/sapl/templates/comissoes/subnav.yaml @@ -1,6 +1,8 @@ -- title: Início +{% load i18n %} +- title: {% trans 'Início' %} url: comissao_detail -- title: Composição +- title: {% trans 'Composição' %} url: composicao_list -- title: Matérias em Tramitação + urls_extras: participacao_detail participacao_create participacao_edit participacao_delete +- title: {% trans 'Matérias em Tramitação' %} url: materias_em_tramitacao diff --git a/sapl/compilacao/layouts.yaml b/sapl/templates/compilacao/layouts.yaml similarity index 61% rename from sapl/compilacao/layouts.yaml rename to sapl/templates/compilacao/layouts.yaml index d512d7615..6d54631d9 100644 --- a/sapl/compilacao/layouts.yaml +++ b/sapl/templates/compilacao/layouts.yaml @@ -1,36 +1,36 @@ - +{% load i18n %} TipoNota: - Tipo da Nota: + {% trans 'Tipo da Nota' %}: - sigla:2 nome - modelo TipoVide: - Tipo de Vide: + {% trans 'Tipo de Vide' %}: - sigla:2 nome TipoPublicacao: - Tipo de Publicação: + {% trans 'Tipo de Publicação' %}: - sigla:2 nome VeiculoPublicacao: - Veículo de Publicação: + {% trans 'Veículo de Publicação' %}: - sigla:2 nome PerfilEstruturalTextoArticulado: - Perfil Estrutural de Textos Articulados: + {% trans 'Perfil Estrutural de Textos Articulados' %}: - sigla:2 nome TipoDispositivo: - Dados Básicos: + {% trans 'Dados Básicos' %}: - nome:8 class_css - Configurações para Edição do Rótulo: + {% trans 'Configurações para Edição do Rótulo' %}: - rotulo_prefixo_texto rotulo_sufixo_texto rotulo_ordinal contagem_continua - Configurações para Renderização de Rótulo e Texto: + {% trans 'Configurações para Renderização de Rótulo e Texto' %}: - rotulo_prefixo_html rotulo_sufixo_html - texto_prefixo_html dispositivo_de_articulacao texto_sufixo_html - Configurações para Nota Automática: + {% trans 'Configurações para Nota Automática' %}: - nota_automatica_prefixo_html nota_automatica_sufixo_html - Configurações para Variações Numéricas: + {% trans 'Configurações para Variações Numéricas' %}: - formato_variacao0 - rotulo_separador_variacao01:5 formato_variacao1 - rotulo_separador_variacao12:5 formato_variacao2 diff --git a/sapl/lexml/layouts.yaml b/sapl/templates/lexml/layouts.yaml similarity index 72% rename from sapl/lexml/layouts.yaml rename to sapl/templates/lexml/layouts.yaml index b09bfc62d..1dc354bd2 100644 --- a/sapl/lexml/layouts.yaml +++ b/sapl/templates/lexml/layouts.yaml @@ -1,11 +1,11 @@ - +{% load i18n %} LexmlProvedor: - Provedor Lexml: + {% trans 'Provedor Lexml' %}: - id_provedor:2 nome - id_responsavel:2 nome_responsavel email_responsavel - xml LexmlPublicador: - Publicador Lexml: + {% trans 'Publicador Lexml' %}: - id_publicador:2 nome sigla - id_responsavel:2 nome_responsavel email_responsavel diff --git a/sapl/materia/layouts.yaml b/sapl/templates/materia/layouts.yaml similarity index 65% rename from sapl/materia/layouts.yaml rename to sapl/templates/materia/layouts.yaml index 887a37349..6b32b41a7 100644 --- a/sapl/materia/layouts.yaml +++ b/sapl/templates/materia/layouts.yaml @@ -1,132 +1,133 @@ +{% load i18n %} Origem: - Origem: + {% trans 'Origem' %}: - nome:8 sigla TipoMateriaLegislativa: - Tipo Matéria Legislativa: + {% trans 'Tipo Matéria Legislativa' %}: - sigla:4 descricao RegimeTramitacao: - Tipo de Documento: + {% trans 'Tipo de Documento' %}: - descricao TipoDocumento: - Regime Tramitação: + {% trans 'Regime Tramitação' %}: - descricao TipoFimRelatoria: - Tipo Fim de Relatoria: + {% trans 'Tipo Fim de Relatoria' %}: - descricao MateriaLegislativa: - Identificação Básica: + {% trans 'Identificação Básica' %}: - tipo numero ano - data_apresentacao numero_protocolo tipo_apresentacao - texto_original - Outras Informações: + {% trans 'Outras Informações' %}: - apelido dias_prazo polemica - objeto regime_tramitacao em_tramitacao - data_fim_prazo data_publicacao complementar - Origem Externa: + {% trans 'Origem Externa' %}: - tipo_origem_externa numero_origem_externa ano_origem_externa - local_origem_externa data_origem_externa - Dados Textuais: + {% trans 'Dados Textuais' %}: - ementa - indexacao - observacao Anexada: - Matéria Anexada: + {% trans 'Matéria Anexada' %}: - tipo numero ano - data_anexacao data_desanexacao AnexadaDetail: - Matéria Anexada: + {% trans 'Matéria Anexada' %}: - materia_principal - materia_anexada - data_anexacao data_desanexacao TipoAutor: - Tipo Autor: + {% trans 'Tipo Autor' %}: - descricao Autor: - Autor: + {% trans 'Autor' %}: - tipo:3 nome - username Autoria: - Autoria: + {% trans 'Autoria' %}: - autor partido primeiro_autor DocumentoAcessorio: - Documento Acessório: + {% trans 'Documento Acessório' %}: - tipo nome data - autor - ementa - arquivo Numeracao: - Numeração: + {% trans 'Numeração' %}: - tipo_materia numero_materia ano_materia data_materia Orgao: - Órgão: + {% trans 'Órgão' %}: - nome:4 sigla telefone endereco unidade_deliberativa Relatoria: - Relatoria: + {% trans 'Relatoria' %}: - comissao - data_designacao_relator data_destituicao_relator - parlamentar tipo_fim_relatoria TipoProposicao: - Tipo Proposição: + {% trans 'Tipo Proposição' %}: - descricao - materia_ou_documento tipo_documento - modelo ProposicaoCreate: - Proposição: + {% trans 'Proposição' %}: - tipo data_envio - descricao - Materia: + {% trans 'Materia' %}: - tipo_materia numero_materia ano_materia - Complemento: + {% trans 'Complemento' %}: - texto_original Proposicao: - Proposição: + {% trans 'Proposição' %}: - tipo data_envio - descricao - Materia: + {% trans 'Materia' %}: - materia - Complemento: + {% trans 'Complemento' %}: - texto_original StatusTramitacao: - Status Tramitação: + {% trans 'Status Tramitação' %}: - indicador:3 sigla:2 descricao UnidadeTramitacao: - Unidade Tramitação: + {% trans 'Unidade Tramitação' %}: - orgao - comissao - parlamentar Tramitacao: - Tramitação: + {% trans 'Tramitação' %}: - unidade_tramitacao_local unidade_tramitacao_destino - data_tramitacao data_encaminhamento data_fim_prazo - status turno urgente - texto DespachoInicial: - Despacho Inicial: + {% trans 'Despacho Inicial' %}: - comissao LegislacaoCitadaDetail: - Legislação Citada: + {% trans 'Legislação Citada' %}: - norma - disposicoes parte livro titulo - capitulo secao subsecao artigo diff --git a/sapl/templates/materia/subnav.yaml b/sapl/templates/materia/subnav.yaml index 8dc4db159..c1a5bf8d6 100644 --- a/sapl/templates/materia/subnav.yaml +++ b/sapl/templates/materia/subnav.yaml @@ -1,25 +1,26 @@ -- title: Início +{% load i18n %} +- title: {% trans 'Início' %} url: materialegislativa_detail -- title: Anexada +- title: {% trans 'Anexada' %} url: anexada_list -- title: Autoria +- title: {% trans 'Autoria' %} url: autoria_list -- title: Despacho Inicial +- title: {% trans 'Despacho Inicial' %} url: despachoinicial_list -- title: Documento Acessório +- title: {% trans 'Documento Acessório' %} url: documentoacessorio_list -- title: Legislação Citada +- title: {% trans 'Legislação Citada' %} url: legislacaocitada_list -- title: Numeração +- title: {% trans 'Numeração' %} url: numeracao_list -- title: Tramitação +- title: {% trans 'Tramitação' %} url: tramitacao_list -- title: Relatoria +- title: {% trans 'Relatoria' %} url: relatoria_list # Opção adicionada para chamar o TextoArticulado da matéria. # para integração foram necessárias apenas criar a url materia_ta em urls.py # e a view MateriaTaView(IntegracaoTaView) em views.py # Em nada mais a integração interfere em MateriaLegislativa -- title: Texto +- title: {% trans 'Texto' %} url: materia_ta diff --git a/sapl/norma/layouts.yaml b/sapl/templates/norma/layouts.yaml similarity index 78% rename from sapl/norma/layouts.yaml rename to sapl/templates/norma/layouts.yaml index ba148045a..e7eff947e 100644 --- a/sapl/norma/layouts.yaml +++ b/sapl/templates/norma/layouts.yaml @@ -1,14 +1,14 @@ - +{% load i18n %} AssuntoNorma: - Assunto Norma Jurídica: + {% trans 'Assunto Norma Jurídica' %}: - assunto descricao TipoNormaJuridica: - Tipo Norma Jurídica: + {% trans 'Tipo Norma Jurídica' %}: - descricao sigla equivalente_lexml NormaJuridica: - Identificação Básica: + {% trans 'Identificação Básica' %}: - tipo numero ano - data esfera_federacao complemento - materia @@ -19,7 +19,7 @@ NormaJuridica: - observacao NormaJuridicaCreate: - Identificação Básica: + {% trans 'Identificação Básica' %}: - tipo numero ano - data esfera_federacao complemento - tipo_materia numero_materia ano_materia @@ -30,14 +30,14 @@ NormaJuridicaCreate: - observacao LegislacaoCitada: - Legislação Citada: + {% trans 'Legislação Citada' %}: - tipo numero ano - disposicoes parte livro titulo - capitulo secao subsecao artigo - paragrafo inciso alinea item LegislacaoCitadaDetail: - Legislação Citada: + {% trans 'Legislação Citada' %}: - norma - disposicoes parte livro titulo - capitulo secao subsecao artigo diff --git a/sapl/templates/norma/subnav.yaml b/sapl/templates/norma/subnav.yaml index 638daf96e..7704bfeb9 100644 --- a/sapl/templates/norma/subnav.yaml +++ b/sapl/templates/norma/subnav.yaml @@ -1,9 +1,10 @@ -- title: Início +{% load i18n %} +- title: {% trans 'Início' %} url: normajuridica_detail # Opção adicionada para chamar o TextoArticulado da norma. # para integração foram necessárias apenas criar a url norma_ta em urls.py # e a view NormaTaView(IntegracaoTaView) em views.py # Em nada mais a integração interfere em NormaJuridica -- title: Texto +- title: {% trans 'Texto' %} url: norma_ta diff --git a/sapl/painel/layouts.yaml b/sapl/templates/painel/layouts.yaml similarity index 53% rename from sapl/painel/layouts.yaml rename to sapl/templates/painel/layouts.yaml index e4a6f4606..e0d01ac66 100644 --- a/sapl/painel/layouts.yaml +++ b/sapl/templates/painel/layouts.yaml @@ -1,4 +1,4 @@ - +{% load i18n %} Cronometro: - Cronometro: + {% trans 'Cronometro' %}: - status:3 data_cronometro:6 tipo diff --git a/sapl/templates/parlamentares/layouts.yaml b/sapl/templates/parlamentares/layouts.yaml index f3fc6fc54..48e11240c 100644 --- a/sapl/templates/parlamentares/layouts.yaml +++ b/sapl/templates/parlamentares/layouts.yaml @@ -4,29 +4,29 @@ CargoMesa: - descricao:10 unico Legislatura: - Legislatura: + {% trans 'Legislatura' %}: - data_inicio data_fim data_eleicao Coligacao: - Coligação: + {% trans 'Coligação' %}: - nome:5 legislatura:5 numero_votos Partido: - Partido Político: + {% trans 'Partido Político' %}: - nome:6 sigla data_criacao data_extincao Dependente: - Dependentes: + {% trans 'Dependentes' %}: - nome - tipo sexo data_nascimento - cpf rg titulo_eleitor SessaoLegislativa: - Sessão Legislativa: + {% trans 'Sessão Legislativa' %}: - numero:4 tipo:4 legislatura:4 data_inicio data_fim data_inicio_intervalo data_fim_intervalo Parlamentar: - Cadastro do Parlamentar: + {% trans 'Cadastro do Parlamentar' %}: - nome_parlamentar:8 ativo - nome_completo - nivel_instrucao sexo data_nascimento @@ -43,9 +43,9 @@ Parlamentar: - biografia ParlamentarCreate: - Dados do Mandato: + {% trans 'Dados do Mandato' %}: - legislatura data_expedicao_diploma - Cadastro do Parlamentar: + {% trans 'Cadastro do Parlamentar' %}: - nome_parlamentar:8 ativo - nome_completo - nivel_instrucao sexo data_nascimento @@ -61,34 +61,33 @@ ParlamentarCreate: - fotografia - biografia - Filiacao: - 'Filiações Partidárias ': + {% trans ''Filiações Partidárias '' %}: - partido data data_desfiliacao Mandato: - Mandato: + {% trans 'Mandato' %}: - legislatura coligacao votos_recebidos - data_fim_mandato data_expedicao_diploma - tipo_afastamento - observacao TipoDependente: - Tipo de Dependente: + {% trans 'Tipo de Dependente' %}: - descricao NivelInstrucao: - Nível Instrução: + {% trans 'Nível Instrução' %}: - descricao TipoAfastamento: - Tipo de Afastamento: + {% trans 'Tipo de Afastamento' %}: - descricao:5 dispositivo:5 afastamento SituacaoMilitar: - Tipo Situação Militar: + {% trans 'Tipo Situação Militar' %}: - descricao ComposicaoColigacao: - 'Nome do Partido': + {% trans ''Nome do Partido'' %}: - partido diff --git a/sapl/templates/parlamentares/subnav.yaml b/sapl/templates/parlamentares/subnav.yaml index aa8bcc7a0..9b457cd18 100644 --- a/sapl/templates/parlamentares/subnav.yaml +++ b/sapl/templates/parlamentares/subnav.yaml @@ -1,9 +1,9 @@ {% load i18n %} - title: {% trans 'Início' %} url: parlamentar_detail -- title: Mandatos +- title: {% trans 'Mandatos' %} url: mandato_list -- title: Filiações Partidárias +- title: {% trans 'Filiações Partidárias' %} url: filiacao_list -- title: Dependentes +- title: {% trans 'Dependentes' %} url: dependente_list diff --git a/sapl/protocoloadm/layouts.yaml b/sapl/templates/protocoloadm/layouts.yaml similarity index 66% rename from sapl/protocoloadm/layouts.yaml rename to sapl/templates/protocoloadm/layouts.yaml index 304cd0bd8..c9f872b6f 100644 --- a/sapl/protocoloadm/layouts.yaml +++ b/sapl/templates/protocoloadm/layouts.yaml @@ -1,39 +1,39 @@ - +{% load i18n %} TipoDocumentoAdministrativo: - Tipo Documento Administrativo: + {% trans 'Tipo Documento Administrativo' %}: - sigla:4 descricao DocumentoAdministrativo: - Indentificação Básica: + {% trans 'Indentificação Básica' %}: - tipo numero ano - data numero_protocolo - assunto - interessado tramitacao - texto_integral - Outras Informações: + {% trans 'Outras Informações' %}: - dias_prazo data_fim_prazo - observacao DocumentoAcessorioAdministrativo: - Documento Acessório: + {% trans 'Documento Acessório' %}: - tipo nome data - autor - arquivo - assunto StatusTramitacaoAdministrativo: - Status Tramitação Administrativo: + {% trans 'Status Tramitação Administrativo' %}: - indicador:3 sigla:2 descricao TramitacaoAdministrativo: - Tramitação: + {% trans 'Tramitação' %}: - data_tramitacao:4 unidade_tramitacao_local - status:4 unidade_tramitacao_destino - data_encaminhamento data_fim_prazo - texto Protocolo: - Indentificação Documento: + {% trans 'Indentificação Documento' %}: - tipo_protocolo - tipo_documento numero_paginas - assunto_ementa @@ -41,12 +41,12 @@ Protocolo: - observacao Protocolo: - Indentificação da Matéria: + {% trans 'Indentificação da Matéria' %}: - tipo_materia numero_paginas - assunto_ementa - autor - observacao TipoInstituicao: - Tipo de Instituição: + {% trans 'Tipo de Instituição' %}: - descricao diff --git a/sapl/sessao/layouts.yaml b/sapl/templates/sessao/layouts.yaml similarity index 69% rename from sapl/sessao/layouts.yaml rename to sapl/templates/sessao/layouts.yaml index 63529bf46..981788a4e 100644 --- a/sapl/sessao/layouts.yaml +++ b/sapl/templates/sessao/layouts.yaml @@ -1,10 +1,10 @@ - +{% load i18n %} TipoSessaoPlenaria: - Tipo de Sessão Plenária: + {% trans 'Tipo de Sessão Plenária' %}: - nome quorum_minimo SessaoPlenaria: - Dados Básicos: + {% trans 'Dados Básicos' %}: - numero:1 tipo:3 legislatura sessao_legislativa - data_inicio:5 hora_inicio:5 iniciada - data_fim:5 hora_fim:5 finalizada @@ -12,62 +12,62 @@ SessaoPlenaria: - url_audio url_video ExpedienteMateria: - Cadastro de Matérias do Expediente: + {% trans 'Cadastro de Matérias do Expediente' %}: - data_ordem tip_sessao_FIXME numero_ordem - tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME - tipo_votacao - observacao OrdemDia: - Cadastro de Matérias da Ordem do Dia: + {% trans 'Cadastro de Matérias da Ordem do Dia' %}: - data_ordem tip_sessao_FIXME numero_ordem - tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME - tipo_votacao - observacao TipoResultadoVotacao: - Tipo de Resultado da Votação: + {% trans 'Tipo de Resultado da Votação' %}: - nome TipoExpediente: - Tipo de Expediente: + {% trans 'Tipo de Expediente' %}: - nome RegistroVotacao: - Votação Simbólica: + {% trans 'Votação Simbólica' %}: - numero_votos_sim numero_votos_nao numero_abstencoes nao_votou_FIXME - votacao_branco_FIXME ind_votacao_presidente_FIXME - tipo_resultado_votacao - observacao Orador: - Orador das Explicações Pessoais: + {% trans 'Orador das Explicações Pessoais' %}: - numero_ordem parlamentar url_discurso OradorExpediente: - Orador do Expediente: + {% trans 'Orador do Expediente' %}: - numero_ordem parlamentar url_discurso ExpedienteMateria: - Matéria do Expediente: + {% trans 'Matéria do Expediente' %}: - data_ordem numero_ordem - tipo_materia numero_materia ano_materia - tipo_votacao - observacao ExpedienteMateriaDetail: - Matérias do Expediente: + {% trans 'Matérias do Expediente' %}: - materia - tipo_votacao - observacao Bancada: - Bancada: + {% trans 'Bancada' %}: - legislatura - nome partido - data_criacao data_extincao - descricao CargoBancada: - Cargo de Bancada: + {% trans 'Cargo de Bancada' %}: - nome_cargo:8 cargo_unico diff --git a/sapl/templates/sessao/subnav.yaml b/sapl/templates/sessao/subnav.yaml index 82c8f7f2a..e6a32279d 100644 --- a/sapl/templates/sessao/subnav.yaml +++ b/sapl/templates/sessao/subnav.yaml @@ -1,32 +1,33 @@ -- title: Abertura +{% load i18n %} +- title: {% trans 'Abertura' %} children: - - title: Dados Básicos + - title: {% trans 'Dados Básicos' %} url: sessaoplenaria_detail - - title: Mesa + - title: {% trans 'Mesa' %} url: mesa - - title: Presença + - title: {% trans 'Presença' %} url: presenca - - title: Explicações Pessoais + - title: {% trans 'Explicações Pessoais' %} url: orador_list -- title: Expedientes +- title: {% trans 'Expedientes' %} children: - - title: Expediente Diversos + - title: {% trans 'Expediente Diversos' %} url: expediente - - title: Matérias Expediente + - title: {% trans 'Matérias Expediente' %} url: expedientemateria_list - - title: Oradores do Expediente + - title: {% trans 'Oradores do Expediente' %} url: oradorexpediente_list -- title: Ordem do Dia +- title: {% trans 'Ordem do Dia' %} children: - - title: Matérias Ordem do Dia + - title: {% trans 'Matérias Ordem do Dia' %} url: materiaordemdia_list - - title: Presença Ordem do Dia + - title: {% trans 'Presença Ordem do Dia' %} url: presencaordemdia -- title: Painel Eletrônico +- title: {% trans 'Painel Eletrônico' %} url: painel -- title: Resumo +- title: {% trans 'Resumo' %} url: resumo diff --git a/sapl/utils.py b/sapl/utils.py index 630d9032b..c4a6f8a70 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -1,16 +1,13 @@ from datetime import date from functools import wraps -import os.path -from compressor.utils import get_class +import magic from django.apps import apps from django.conf import settings from django.contrib import admin -from django.core.checks import Warning, register from django.core.exceptions import ValidationError from django.utils.translation import ugettext_lazy as _ from floppyforms import ClearableFileInput -import magic def get_settings_auth_user_model(): diff --git a/setup.py b/setup.py index a8ed72051..330749885 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,5 @@ import os + from setuptools import find_packages, setup with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as readme: @@ -33,7 +34,7 @@ install_requires = [ 'unipath==1.1', 'python-magic==0.4.10', 'gunicorn==19.4.5', -#git+git://github.com/interlegis/trml2pdf.git + # git+git://github.com/interlegis/trml2pdf.git ] setup( name='interlegis-sapl', @@ -60,5 +61,5 @@ setup( 'Topic :: Internet :: WWW/HTTP', 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', ], - install_requires = install_requires, + install_requires=install_requires, )