Browse Source

Inicia tela de pesquisa de matérias

pull/583/head
Eduardo Edson Batista Cordeiro Alves 8 years ago
parent
commit
6b9eca7fd8
  1. 31
      sapl/materia/forms.py
  2. 8
      sapl/materia/urls.py
  3. 55
      sapl/materia/views.py
  4. 73
      sapl/templates/materia/acessorio_lote.html

31
sapl/materia/forms.py

@ -755,3 +755,34 @@ class AutorForm(ModelForm):
u.groups.add(grupo) u.groups.add(grupo)
return autor return autor
class AcessorioEmLoteFilterSet(django_filters.FilterSet):
filter_overrides = {models.DateField: {
'filter_class': django_filters.DateFromToRangeFilter,
'extra': lambda f: {
'label': '%s (%s)' % (f.verbose_name, _('Inicial - Final')),
'widget': RangeWidgetOverride}
}}
class Meta:
model = MateriaLegislativa
fields = ['tipo', 'data_apresentacao']
def __init__(self, *args, **kwargs):
super(AcessorioEmLoteFilterSet, self).__init__(*args, **kwargs)
self.filters['tipo'].label = 'Tipo de Matéria'
self.filters['data_apresentacao'].label = 'Data (Inicial - Final)'
self.form.fields['tipo'].required = True
self.form.fields['data_apresentacao'].required = True
row1 = to_row([('tipo', 12)])
row2 = to_row([('data_apresentacao', 12)])
self.form.helper = FormHelper()
self.form.helper.form_method = 'GET'
self.form.helper.layout = Layout(
Fieldset(_('Documentos Acessórios em Lote'),
row1, row2, form_actions(save_label='Pesquisar')))

8
sapl/materia/urls.py

@ -5,8 +5,9 @@ from sapl.materia.views import (AcompanhamentoConfirmarView,
AcompanhamentoMateriaView, AnexadaCrud, AcompanhamentoMateriaView, AnexadaCrud,
AutorCrud, AutoriaCrud, ConfirmarEmailView, AutorCrud, AutoriaCrud, ConfirmarEmailView,
ConfirmarProposicao, DespachoInicialCrud, ConfirmarProposicao, DespachoInicialCrud,
DocumentoAcessorioCrud, LegislacaoCitadaCrud, DocumentoAcessorioCrud,
MateriaLegislativaCrud, DocumentoAcessorioEmLoteView,
LegislacaoCitadaCrud, MateriaLegislativaCrud,
MateriaLegislativaPesquisaView, MateriaTaView, MateriaLegislativaPesquisaView, MateriaTaView,
NumeracaoCrud, OrgaoCrud, OrigemCrud, NumeracaoCrud, OrgaoCrud, OrigemCrud,
ProposicaoCrud, ProposicaoDevolvida, ProposicaoCrud, ProposicaoDevolvida,
@ -86,4 +87,7 @@ urlpatterns = [
url(r'^materia/(?P<pk>\d+)/acompanhar-excluir$', url(r'^materia/(?P<pk>\d+)/acompanhar-excluir$',
AcompanhamentoExcluirView.as_view(), AcompanhamentoExcluirView.as_view(),
name='acompanhar_excluir'), name='acompanhar_excluir'),
url(r'^acessorio-em-lote', DocumentoAcessorioEmLoteView.as_view(),
name='acessorio_em_lote'),
] ]

55
sapl/materia/views.py

@ -4,7 +4,6 @@ from string import ascii_letters, digits
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Button from crispy_forms.layout import HTML, Button
from django.db.models import Q
from django.conf import settings from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.mixins import PermissionRequiredMixin from django.contrib.auth.mixins import PermissionRequiredMixin
@ -13,6 +12,7 @@ from django.contrib.auth.tokens import default_token_generator
from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
from django.core.mail import send_mail from django.core.mail import send_mail
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.db.models import Q
from django.http.response import HttpResponseRedirect from django.http.response import HttpResponseRedirect
from django.shortcuts import redirect from django.shortcuts import redirect
from django.template import Context, loader from django.template import Context, loader
@ -34,8 +34,9 @@ from sapl.utils import (autor_label, autor_modal, gerar_hash_arquivo,
get_base_url, permissao_tb_aux, permissoes_autor, get_base_url, permissao_tb_aux, permissoes_autor,
permissoes_materia, permissoes_protocoloadm) permissoes_materia, permissoes_protocoloadm)
from .forms import (AcompanhamentoMateriaForm, AnexadaForm, AutorForm, from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm,
AutoriaForm, ConfirmarProposicaoForm, DespachoInicialForm, AnexadaForm, AutorForm, AutoriaForm,
ConfirmarProposicaoForm, DespachoInicialForm,
DocumentoAcessorioForm, LegislacaoCitadaForm, DocumentoAcessorioForm, LegislacaoCitadaForm,
MateriaLegislativaFilterSet, NumeracaoForm, ProposicaoForm, MateriaLegislativaFilterSet, NumeracaoForm, ProposicaoForm,
ReceberProposicaoForm, RelatoriaForm, TramitacaoForm, ReceberProposicaoForm, RelatoriaForm, TramitacaoForm,
@ -1246,3 +1247,51 @@ def do_envia_email_tramitacao(request, materia):
enviar_emails(sender, recipients, messages) enviar_emails(sender, recipients, messages)
return None return None
class DocumentoAcessorioEmLoteView(PermissionRequiredMixin, FilterView):
filterset_class = AcessorioEmLoteFilterSet
template_name = 'materia/acessorio_lote.html'
def get_context_data(self, **kwargs):
context = super(DocumentoAcessorioEmLoteView,
self).get_context_data(**kwargs)
context['title'] = _('Documentos Acessórios em Lote')
qr = self.request.GET.copy()
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
return context
# def post(self, request, *args, **kwargs):
# marcadas = request.POST.getlist('materia_id')
#
# for m in marcadas:
# try:
# tipo_votacao = request.POST['tipo_votacao_%s' % m]
# except MultiValueDictKeyError:
# msg = _('Formulário Inválido. Você esqueceu de selecionar ' +
# 'o tipo de votação de %s' %
# MateriaLegislativa.objects.get(id=m))
# messages.add_message(request, messages.ERROR, msg)
# return self.get(request, self.kwargs)
#
# if tipo_votacao:
# lista_materias_expediente = ExpedienteMateria.objects.filter(
# sessao_plenaria_id=self.kwargs[
# 'pk'])
#
# materia = MateriaLegislativa.objects.get(id=m)
#
# expediente = ExpedienteMateria()
# expediente.sessao_plenaria_id = self.kwargs['pk']
# expediente.materia_id = materia.id
# if lista_materias_expediente:
# posicao = lista_materias_expediente.last().numero_ordem + 1
# expediente.numero_ordem = posicao
# else:
# expediente.numero_ordem = 1
# expediente.data_ordem = datetime.now()
# expediente.tipo_votacao = request.POST['tipo_votacao_%s' % m]
# expediente.save()
#
# return self.get(request, self.kwargs)

73
sapl/templates/materia/acessorio_lote.html

@ -0,0 +1,73 @@
{% extends "crud/detail.html" %}
{% load i18n crispy_forms_tags %}
{% block actions %}{% endblock %}
{% block sections_nav %}{% endblock %}
{% block detail_content %}
{% if not filter_url %}
{% crispy filter.form %}
{% endif %}
<!-- <p></p>
{% if filter_url %}
<table class="table table-striped table-bordered">
<thead class="thead-default">
<tr>
<td><h3>{% trans "Matérias" %}</h3></td>
<td><h3>{% trans "Tipo de Votação" %}</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 %}
<form method="POST" enctype="application/x-www-form-urlencoded">
{% csrf_token %}
{% for m in page_obj %}
<tr>
<td>
<input type="checkbox" name="materia_id" value="{{m.id}}" {% if check %} checked {% endif %}/>
<strong><a href="{% url 'sapl.materia:materialegislativa_detail' m.id %}">{{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}</strong></a></br>
<strong>Autores:</strong>
{% 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>
<td class="col-md-3">
<input type="radio" name="tipo_votacao_{{m.id}}" id="tipo_votacao_{{m.id}}" value="1"> <label for="sexo">Simbólica</label>
</br>
<input type="radio" name="tipo_votacao_{{m.id}}" id="tipo_votacao_{{m.id}}" value="2"> <label for="sexo">Nominal</label>
</br>
<input type="radio" name="tipo_votacao_{{m.id}}" id="tipo_votacao_{{m.id}}" value="3"> <label for="sexo">Secreta</label>
</td>
</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td>
<h3>Nenhuma matéria encontrada com essas especificações</h3>
</tr>
{% endif %}
</table>
<input type="submit" value="Adicionar matérias selecionadas" class="btn btn-primary"S>
</form>
{% endif %} -->
{% endblock detail_content %}
Loading…
Cancel
Save