diff --git a/sapl/crud/base.py b/sapl/crud/base.py
index e72a9b5c9..060153993 100644
--- a/sapl/crud/base.py
+++ b/sapl/crud/base.py
@@ -316,7 +316,7 @@ class CrudBaseMixin(CrispyLayoutFormMixin):
def delete_url(self):
obj = self.crud if hasattr(self, 'crud') else self
if not obj.DeleteView.permission_required:
- return self.resolve_url(ACTION_DELETE)
+ return self.resolve_url(ACTION_DELETE, args=(self.object.id,))
else:
return self.resolve_url(ACTION_DELETE, args=(self.object.id,))\
if self.request.user.has_perm(
diff --git a/sapl/materia/views.py b/sapl/materia/views.py
index b7ddbc233..d5b13e4a9 100644
--- a/sapl/materia/views.py
+++ b/sapl/materia/views.py
@@ -27,8 +27,10 @@ from sapl.base.models import CasaLegislativa
from sapl.compilacao.views import IntegracaoTaView
from sapl.crispy_layout_mixin import SaplFormLayout, form_actions, to_row
from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux, CrudDetailView,
- MasterDetailCrud, make_pagination)
-from sapl.materia.forms import AnexadaForm
+ MasterDetailCrud, make_pagination,
+ ACTION_CREATE, ACTION_UPDATE, ACTION_LIST,
+ ACTION_DELETE)
+from sapl.materia.forms import AnexadaForm, LegislacaoCitadaForm
from sapl.norma.models import LegislacaoCitada
from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label,
autor_modal, gerar_hash_arquivo, get_base_url,
@@ -51,8 +53,7 @@ from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria,
Tramitacao, UnidadeTramitacao)
-AnexadaCrud = Crud.build(Anexada, '')
-
+#AnexadaCrud = Crud.build(Anexada, '')
OrigemCrud = Crud.build(Origem, '')
TipoMateriaCrud = CrudAux.build(
@@ -720,7 +721,37 @@ class LegislacaoCitadaCrud(MasterDetailCrud):
return reverse('%s:%s' % (namespace, self.url_name(suffix)),
args=args)
+ def has_permission(self):
+ return self.request.user.has_module_perms('materia')
+
+ @property
+ def list_url(self):
+ return self.resolve_url(ACTION_LIST, args=(self.kwargs['pk'],))\
+ if self.request.user.has_module_perms('materia') else ''
+
+ @property
+ def create_url(self):
+ obj = self.crud if hasattr(self, 'crud') else self
+ if not obj.CreateView:
+ return ''
+ return self.resolve_url(ACTION_CREATE, args=(self.kwargs['pk'],))\
+ if self.request.user.has_module_perms('materia') else ''
+
+ @property
+ def update_url(self):
+ return self.resolve_url(ACTION_CREATE, args=(self.kwargs['pk'],))\
+ if self.request.user.has_module_perms('materia') else ''
+
+ @property
+ def delete_url(self):
+ return self.resolve_url(ACTION_DELETE, args=(self.object.id,))\
+ if self.request.user.has_module_perms('materia') else ''
+
+ class CreateView(MasterDetailCrud.CreateView):
+ form_class = LegislacaoCitadaForm
+
class UpdateView(MasterDetailCrud.UpdateView):
+ form_class = LegislacaoCitadaForm
def get_initial(self):
self.initial['tipo'] = self.object.norma.tipo.id
@@ -751,6 +782,18 @@ class AnexadaCrud(MasterDetailCrud):
class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['materia_anexada', 'data_anexacao']
+ class CreateView(MasterDetailCrud.CreateView):
+ form_class = AnexadaForm
+
+ class UpdateView(MasterDetailCrud.UpdateView):
+ form_class = AnexadaForm
+
+ def get_initial(self):
+ self.initial['tipo'] = self.object.materia_anexada.tipo.id
+ self.initial['numero'] = self.object.materia_anexada.numero
+ self.initial['ano'] = self.object.materia_anexada.ano
+ return self.initial
+
class DetailView(MasterDetailCrud.DetailView):
@property
diff --git a/sapl/templates/crud/detail.html b/sapl/templates/crud/detail.html
index 0992bc345..e5d9c0ffc 100644
--- a/sapl/templates/crud/detail.html
+++ b/sapl/templates/crud/detail.html
@@ -48,36 +48,38 @@
{% endfor %}
{% endblock detail_content %}
-
- {% if not rows %}
-
{{ NO_ENTRIES_MSG }}
- {% else %}
-
{% blocktrans with verbose_name_plural=view.model_set_verbose_name_plural %}Total de {{ verbose_name_plural }}: {{count}}{% endblocktrans %}
-
-
+ {% block table_content %}
+
+ {% if not rows %}
+
{{ NO_ENTRIES_MSG }}
+ {% else %}
+
{% blocktrans with verbose_name_plural=view.model_set_verbose_name_plural %}Total de {{ verbose_name_plural }}: {{count}}{% endblocktrans %}
+
+
+
+ {% for name in headers %}
+ {{ name }} |
+ {% endfor %}
+
+
+
+ {% for value_list in rows %}
- {% for name in headers %}
- {{ name }} |
+ {% for value, href in value_list %}
+
+ {% if href %}
+ {{ value }}
+ {% elif value != 'core.Cep.None' %}
+ {{ value|safe }}
+ {% endif %}
+ |
{% endfor %}
-
-
- {% for value_list in rows %}
-
- {% for value, href in value_list %}
-
- {% if href %}
- {{ value }}
- {% elif value != 'core.Cep.None' %}
- {{ value|safe }}
- {% endif %}
- |
{% endfor %}
-
- {% endfor %}
-
-
- {% endif %}
-
- {% include "paginacao.html" %}
+
+
+ {% endif %}
+
+ {% include "paginacao.html" %}
+ {% endblock table_content %}
{% endblock base_content %}
diff --git a/sapl/templates/materia/materialegislativa_filter.html b/sapl/templates/materia/materialegislativa_filter.html
index 9811394b9..ec49f450a 100644
--- a/sapl/templates/materia/materialegislativa_filter.html
+++ b/sapl/templates/materia/materialegislativa_filter.html
@@ -2,64 +2,62 @@
{% load i18n %}
{% load crispy_forms_tags %}
-{% block actions %}
-
+ {% endblock %}
-{% block base_content %}
+ {% block detail_content %}
+ {% if not filter_url %}
+ {% crispy filter.form %}
+ {% endif %}
- {% if not filter_url %}
- {% crispy filter.form %}
- {% endif %}
+ {% if filter_url %}
+
+
+ {% trans "Resultados" %} |
+
+ {% 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 %}
- {% if filter_url %}
-
-
- {% trans "Resultados" %} |
-
- {% 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.'%}
+ {% for m in page_obj %}
+
+
+ {{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}
+ Autores:
+ {% for a in m.autoria_set.all %}
+ {% if not forloop.first %}
+ , {{a.autor|default_if_none:"Não Informado"}}
+ {% else %}
+ {{a.autor|default_if_none:"Não Informado"}}
+ {% endif %}
+ {% endfor %}
+
+ Localização Atual: {{m.tramitacao_set.last.unidade_tramitacao_destino|default_if_none:"Não Informada"}}
+ Status: {{m.tramitacao_set.last.status|default_if_none:"Não Informada"}}
+ Data da última Tramitação: {{m.tramitacao_set.last.data_tramitacao|default_if_none:"Não Informada"}}
+ Ementa: {{ m.ementa|safe }}
+
+ |
+ {% endfor %}
+ {% else %}
+ Nenhuma matéria encontrada com essas especificações |
{% endif %}
-
- {% for m in page_obj %}
-
-
- {{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}
- Autores:
- {% for a in m.autoria_set.all %}
- {% if not forloop.first %}
- , {{a.autor|default_if_none:"Não Informado"}}
- {% else %}
- {{a.autor|default_if_none:"Não Informado"}}
- {% endif %}
- {% endfor %}
-
- Localização Atual: {{m.tramitacao_set.last.unidade_tramitacao_destino|default_if_none:"Não Informada"}}
- Status: {{m.tramitacao_set.last.status|default_if_none:"Não Informada"}}
- Data da última Tramitação: {{m.tramitacao_set.last.data_tramitacao|default_if_none:"Não Informada"}}
- Ementa: {{ m.ementa|safe }}
-
- |
- {% endfor %}
- {% else %}
- Nenhuma matéria encontrada com essas especificações |
- {% endif %}
-
- {% include "paginacao.html" %}
- {% endif %}
-{% endblock base_content %}
+
+ {% include "paginacao.html" %}
+ {% endif %}
+ {% endblock detail_content %}
+ {% block table_content %}
+ {% endblock table_content %}
diff --git a/sapl/templates/materia/subnav.yaml b/sapl/templates/materia/subnav.yaml
index c1a5bf8d6..dbbf8eddf 100644
--- a/sapl/templates/materia/subnav.yaml
+++ b/sapl/templates/materia/subnav.yaml
@@ -11,16 +11,12 @@
url: documentoacessorio_list
- title: {% trans 'Legislação Citada' %}
url: legislacaocitada_list
+ app_name: 'materia'
- title: {% trans 'Numeração' %}
url: numeracao_list
- title: {% trans 'Tramitação' %}
url: tramitacao_list
- 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: {% trans 'Texto' %}
url: materia_ta