Browse Source

Ajusta de busca de mat e crud de legislacaocitada

pull/691/head
LeandroRoberto 8 years ago
parent
commit
98713161b9
  1. 2
      sapl/crud/base.py
  2. 51
      sapl/materia/views.py
  3. 58
      sapl/templates/crud/detail.html
  4. 110
      sapl/templates/materia/materialegislativa_filter.html
  5. 6
      sapl/templates/materia/subnav.yaml

2
sapl/crud/base.py

@ -316,7 +316,7 @@ class CrudBaseMixin(CrispyLayoutFormMixin):
def delete_url(self): def delete_url(self):
obj = self.crud if hasattr(self, 'crud') else self obj = self.crud if hasattr(self, 'crud') else self
if not obj.DeleteView.permission_required: if not obj.DeleteView.permission_required:
return self.resolve_url(ACTION_DELETE) return self.resolve_url(ACTION_DELETE, args=(self.object.id,))
else: else:
return self.resolve_url(ACTION_DELETE, args=(self.object.id,))\ return self.resolve_url(ACTION_DELETE, args=(self.object.id,))\
if self.request.user.has_perm( if self.request.user.has_perm(

51
sapl/materia/views.py

@ -27,8 +27,10 @@ from sapl.base.models import CasaLegislativa
from sapl.compilacao.views import IntegracaoTaView from sapl.compilacao.views import IntegracaoTaView
from sapl.crispy_layout_mixin import SaplFormLayout, form_actions, to_row from sapl.crispy_layout_mixin import SaplFormLayout, form_actions, to_row
from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux, CrudDetailView, from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux, CrudDetailView,
MasterDetailCrud, make_pagination) MasterDetailCrud, make_pagination,
from sapl.materia.forms import AnexadaForm ACTION_CREATE, ACTION_UPDATE, ACTION_LIST,
ACTION_DELETE)
from sapl.materia.forms import AnexadaForm, LegislacaoCitadaForm
from sapl.norma.models import LegislacaoCitada from sapl.norma.models import LegislacaoCitada
from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label, from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label,
autor_modal, gerar_hash_arquivo, get_base_url, autor_modal, gerar_hash_arquivo, get_base_url,
@ -51,8 +53,7 @@ from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria,
Tramitacao, UnidadeTramitacao) Tramitacao, UnidadeTramitacao)
AnexadaCrud = Crud.build(Anexada, '') #AnexadaCrud = Crud.build(Anexada, '')
OrigemCrud = Crud.build(Origem, '') OrigemCrud = Crud.build(Origem, '')
TipoMateriaCrud = CrudAux.build( TipoMateriaCrud = CrudAux.build(
@ -720,7 +721,37 @@ class LegislacaoCitadaCrud(MasterDetailCrud):
return reverse('%s:%s' % (namespace, self.url_name(suffix)), return reverse('%s:%s' % (namespace, self.url_name(suffix)),
args=args) 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): class UpdateView(MasterDetailCrud.UpdateView):
form_class = LegislacaoCitadaForm
def get_initial(self): def get_initial(self):
self.initial['tipo'] = self.object.norma.tipo.id self.initial['tipo'] = self.object.norma.tipo.id
@ -751,6 +782,18 @@ class AnexadaCrud(MasterDetailCrud):
class BaseMixin(MasterDetailCrud.BaseMixin): class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['materia_anexada', 'data_anexacao'] 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): class DetailView(MasterDetailCrud.DetailView):
@property @property

58
sapl/templates/crud/detail.html

@ -48,36 +48,38 @@
{% endfor %} {% endfor %}
{% endblock detail_content %} {% endblock detail_content %}
<div class="container-table"> {% block table_content %}
{% if not rows %} <div class="container-table">
<p>{{ NO_ENTRIES_MSG }}</p> {% if not rows %}
{% else %} <p>{{ NO_ENTRIES_MSG }}</p>
<div class="result-count">{% blocktrans with verbose_name_plural=view.model_set_verbose_name_plural %}Total de {{ verbose_name_plural }}: <strong>{{count}}</strong>{% endblocktrans %}</div> {% else %}
<table class="table table-striped table-hover"> <div class="result-count">{% blocktrans with verbose_name_plural=view.model_set_verbose_name_plural %}Total de {{ verbose_name_plural }}: <strong>{{count}}</strong>{% endblocktrans %}</div>
<thead> <table class="table table-striped table-hover">
<thead>
<tr>
{% for name in headers %}
<th>{{ name }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for value_list in rows %}
<tr> <tr>
{% for name in headers %} {% for value, href in value_list %}
<th>{{ name }}</th> <td>
{% if href %}
<a href="{{ href }}">{{ value }}</a>
{% elif value != 'core.Cep.None' %}
{{ value|safe }}
{% endif %}
</td>
{% endfor %} {% endfor %}
</tr> </tr>
</thead>
<tbody>
{% for value_list in rows %}
<tr>
{% for value, href in value_list %}
<td>
{% if href %}
<a href="{{ href }}">{{ value }}</a>
{% elif value != 'core.Cep.None' %}
{{ value|safe }}
{% endif %}
</td>
{% endfor %} {% endfor %}
</tr> </tbody>
{% endfor %} </table>
</tbody> {% endif %}
</table> </div>
{% endif %} {% include "paginacao.html" %}
</div> {% endblock table_content %}
{% include "paginacao.html" %}
{% endblock base_content %} {% endblock base_content %}

110
sapl/templates/materia/materialegislativa_filter.html

@ -2,64 +2,62 @@
{% load i18n %} {% load i18n %}
{% load crispy_forms_tags %} {% load crispy_forms_tags %}
{% block actions %} {% block actions %}
<div class="actions btn-group pull-right" role="group"> <div class="actions btn-group pull-right" role="group">
{% if user.is_authenticated %} {% if user.is_authenticated %}
<a href="{% url 'sapl.materia:materialegislativa_create' %}" class="btn btn-default"> <a href="{% url 'sapl.materia:materialegislativa_create' %}" class="btn btn-default">
{% blocktrans with verbose_name=view.verbose_name %} Adicionar Matéria Legislativa {% endblocktrans %} {% blocktrans with verbose_name=view.verbose_name %} Adicionar Matéria Legislativa {% endblocktrans %}
</a> </a>
{% endif %}
{% if filter_url %}
<a href="{% url 'sapl.materia:pesquisar_materia' %}" class="btn btn-default">{% trans 'Fazer nova pesquisa' %}</a>
{% endif %} {% endif %}
{% if filter_url %} </div>
<a href="{% url 'sapl.materia:pesquisar_materia' %}" class="btn btn-default">{% trans 'Fazer nova pesquisa' %}</a> {% endblock %}
{% endif %}
</div>
{% endblock %}
{% block sections_nav %}
{% endblock %}
{% block base_content %} {% block detail_content %}
{% if not filter_url %}
{% crispy filter.form %}
{% endif %}
{% if not filter_url %} {% if filter_url %}
{% crispy filter.form %} <table class="table table-striped table-bordered">
{% endif %} <thead class="thead-default">
<tr><td><h3>{% trans "Resultados" %}</h3></td></tr>
</thead>
{% if paginator.count %}
{% if paginator.count > 1 %}
<h3>{% blocktrans with paginator.count as total_materias %}Pesquisa concluída com sucesso! Foram encontradas {{total_materias}} matérias.{% endblocktrans %}</h3>
{% elif paginator.count == 1 %}
<h3>{% trans 'Pesquisa concluída com sucesso! Foi encontrada 1 matéria.'%}</h3>
{% endif %}
{% if filter_url %} {% for m in page_obj %}
<table class="table table-striped table-bordered"> <tr>
<thead class="thead-default"> <td>
<tr><td><h3>{% trans "Resultados" %}</h3></td></tr> <strong><a href="{% url 'materia:materialegislativa_detail' m.id %}">{{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}</strong></a></br>
</thead> <strong>Autores:</strong>
{% if paginator.count %} {% for a in m.autoria_set.all %}
{% if paginator.count > 1 %} {% if not forloop.first %}
<h3>{% blocktrans with paginator.count as total_materias %}Pesquisa concluída com sucesso! Foram encontradas {{total_materias}} matérias.{% endblocktrans %}</h3> , &nbsp;&nbsp; {{a.autor|default_if_none:"Não Informado"}}
{% elif paginator.count == 1 %} {% else %}
<h3>{% trans 'Pesquisa concluída com sucesso! Foi encontrada 1 matéria.'%}</h3> &nbsp;{{a.autor|default_if_none:"Não Informado"}}
{% endif %}
{% endfor %}
</br>
<strong>Localização Atual:</strong> &nbsp;{{m.tramitacao_set.last.unidade_tramitacao_destino|default_if_none:"Não Informada"}}</br>
<strong>Status:</strong> &nbsp;{{m.tramitacao_set.last.status|default_if_none:"Não Informada"}}</br>
<strong>Data da última Tramitação:</strong> &nbsp;{{m.tramitacao_set.last.data_tramitacao|default_if_none:"Não Informada"}}</br>
<strong>Ementa:</strong>&nbsp;{{ m.ementa|safe }}</br>
<p></p>
</tr>
{% endfor %}
{% else %}
<tr><td><h3>Nenhuma matéria encontrada com essas especificações</h3></tr>
{% endif %} {% endif %}
</table>
{% for m in page_obj %} {% include "paginacao.html" %}
<tr> {% endif %}
<td> {% endblock detail_content %}
<strong><a href="{% url 'materia:materialegislativa_detail' m.id %}">{{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}</strong></a></br> {% block table_content %}
<strong>Autores:</strong> {% endblock table_content %}
{% for a in m.autoria_set.all %}
{% if not forloop.first %}
, &nbsp;&nbsp; {{a.autor|default_if_none:"Não Informado"}}
{% else %}
&nbsp;{{a.autor|default_if_none:"Não Informado"}}
{% endif %}
{% endfor %}
</br>
<strong>Localização Atual:</strong> &nbsp;{{m.tramitacao_set.last.unidade_tramitacao_destino|default_if_none:"Não Informada"}}</br>
<strong>Status:</strong> &nbsp;{{m.tramitacao_set.last.status|default_if_none:"Não Informada"}}</br>
<strong>Data da última Tramitação:</strong> &nbsp;{{m.tramitacao_set.last.data_tramitacao|default_if_none:"Não Informada"}}</br>
<strong>Ementa:</strong>&nbsp;{{ m.ementa|safe }}</br>
<p></p>
</tr>
{% endfor %}
{% else %}
<tr><td><h3>Nenhuma matéria encontrada com essas especificações</h3></tr>
{% endif %}
</table>
{% include "paginacao.html" %}
{% endif %}
{% endblock base_content %}

6
sapl/templates/materia/subnav.yaml

@ -11,16 +11,12 @@
url: documentoacessorio_list url: documentoacessorio_list
- title: {% trans 'Legislação Citada' %} - title: {% trans 'Legislação Citada' %}
url: legislacaocitada_list url: legislacaocitada_list
app_name: 'materia'
- title: {% trans 'Numeração' %} - title: {% trans 'Numeração' %}
url: numeracao_list url: numeracao_list
- title: {% trans 'Tramitação' %} - title: {% trans 'Tramitação' %}
url: tramitacao_list url: tramitacao_list
- title: {% trans 'Relatoria' %} - title: {% trans 'Relatoria' %}
url: relatoria_list 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' %} - title: {% trans 'Texto' %}
url: materia_ta url: materia_ta

Loading…
Cancel
Save