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 %} + + {% endfor %} + + + + {% for value_list in rows %} - {% for name in headers %} - + {% for value, href in value_list %} + {% endfor %} - - - {% for value_list in rows %} - - {% for value, href in value_list %} - {% endfor %} - - {% endfor %} - -
{{ name }}
{{ name }} + {% if href %} + {{ value }} + {% elif value != 'core.Cep.None' %} + {{ value|safe }} + {% endif %} +
- {% if href %} - {{ value }} - {% elif value != 'core.Cep.None' %} - {{ value|safe }} - {% endif %} -
- {% 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 %} -
- {% if user.is_authenticated %} - - {% blocktrans with verbose_name=view.verbose_name %} Adicionar Matéria Legislativa {% endblocktrans %} - + {% block actions %} +
+ {% if user.is_authenticated %} + + {% blocktrans with verbose_name=view.verbose_name %} Adicionar Matéria Legislativa {% endblocktrans %} + + {% endif %} + {% if filter_url %} + {% trans 'Fazer nova pesquisa' %} {% endif %} - {% if filter_url %} - {% trans 'Fazer nova pesquisa' %} - {% endif %} -
-{% endblock %} - -{% block sections_nav %} -{% endblock %} +
+ {% 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 %} + + + + + {% 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 %} + + + {% endfor %} + {% else %} + {% endif %} - - {% for m in page_obj %} - - - {% endfor %} - {% else %} - - {% endif %} -

{% trans "Resultados" %}

+ {{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 }}
+

+

Nenhuma matéria encontrada com essas especificações

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

-

Nenhuma matéria encontrada com essas especificações

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