Browse Source

Permite a adicao de varias materias em Ordem do Dia

pull/519/head
Eduardo Calil 9 years ago
parent
commit
74eda42366
  1. 4
      sapl/sessao/urls.py
  2. 79
      sapl/sessao/views.py
  3. 8
      sapl/templates/sessao/adicionar_varias_materias_expediente.html
  4. 18
      sapl/templates/sessao/adicionar_varias_materias_ordem.html
  5. 2
      sapl/templates/sessao/materia_ordemdia_list.html

4
sapl/sessao/urls.py

@ -1,6 +1,7 @@
from django.conf.urls import include, url
from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
AdicionarVariasMateriasOrdemDia,
BancadaCrud, CargoBancadaCrud,
EditMateriaOrdemDiaView, ExpedienteMateriaCrud,
ExpedienteView, ListMateriaOrdemDiaView,
@ -53,6 +54,9 @@ urlpatterns = [
url(r'^sessao/(?P<pk>\d+)/adicionar-varias-materias-expediente/',
AdicionarVariasMateriasExpediente.as_view(),
name='adicionar_varias_materias_expediente'),
url(r'^sessao/(?P<pk>\d+)/adicionar-varias-materias-ordem-dia/',
AdicionarVariasMateriasOrdemDia.as_view(),
name='adicionar_varias_materias_ordem_dia'),
# PAUTA SESSÃO
url(r'^pauta-sessao$',

79
sapl/sessao/views.py

@ -6,6 +6,7 @@ from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.core.urlresolvers import reverse
from django.forms.utils import ErrorList
from django.http.response import HttpResponseRedirect
from django.utils.datastructures import MultiValueDictKeyError
from django.utils.html import strip_tags
from django.utils.translation import ugettext_lazy as _
from django.views.generic import FormView, ListView, TemplateView
@ -1971,15 +1972,14 @@ def filtra_tramitacao_ordem_dia():
'materia_id', flat=True)
def retira_materias_ja_adicionadas(id_sessao):
lista = ExpedienteMateria.objects.filter(
def retira_materias_ja_adicionadas(id_sessao, model):
lista = model.objects.filter(
sessao_plenaria_id=id_sessao)
lista_id_materias = [l.materia_id for l in lista]
return lista_id_materias
class AdicionarVariasMateriasExpediente(MateriaLegislativaPesquisaView):
model = MateriaLegislativa
filterset_class = AdicionarVariasMateriasFilterSet
template_name = 'sessao/adicionar_varias_materias_expediente.html'
@ -1994,7 +1994,7 @@ class AdicionarVariasMateriasExpediente(MateriaLegislativaPesquisaView):
lista_ordem_dia = filtra_tramitacao_ordem_dia()
lista_materias_adicionadas = retira_materias_ja_adicionadas(
self.kwargs['pk'])
self.kwargs['pk'], ExpedienteMateria)
qs = qs.filter(id__in=lista_ordem_dia).exclude(
id__in=lista_materias_adicionadas).distinct()
@ -2024,7 +2024,16 @@ class AdicionarVariasMateriasExpediente(MateriaLegislativaPesquisaView):
marcadas = request.POST.getlist('materia_id')
for m in marcadas:
if request.POST['tipo_votacao_%s' % m]:
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'])
@ -2044,3 +2053,63 @@ class AdicionarVariasMateriasExpediente(MateriaLegislativaPesquisaView):
expediente.save()
return self.get(request, self.kwargs)
class AdicionarVariasMateriasOrdemDia(AdicionarVariasMateriasExpediente):
filterset_class = AdicionarVariasMateriasFilterSet
template_name = 'sessao/adicionar_varias_materias_ordem.html'
def get_filterset_kwargs(self, filterset_class):
super(AdicionarVariasMateriasExpediente,
self).get_filterset_kwargs(filterset_class)
kwargs = {'data': self.request.GET or None}
qs = self.get_queryset()
lista_ordem_dia = filtra_tramitacao_ordem_dia()
lista_materias_adicionadas = retira_materias_ja_adicionadas(
self.kwargs['pk'], OrdemDia)
qs = qs.filter(id__in=lista_ordem_dia).exclude(
id__in=lista_materias_adicionadas).distinct()
kwargs.update({
'queryset': qs,
})
return kwargs
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_ordem_dia = OrdemDia.objects.filter(
sessao_plenaria_id=self.kwargs[
'pk'])
materia = MateriaLegislativa.objects.get(id=m)
ordem_dia = OrdemDia()
ordem_dia.sessao_plenaria_id = self.kwargs['pk']
ordem_dia.materia_id = materia.id
if lista_materias_ordem_dia:
posicao = lista_materias_ordem_dia.last().numero_ordem + 1
ordem_dia.numero_ordem = posicao
else:
ordem_dia.numero_ordem = 1
ordem_dia.data_ordem = datetime.now()
ordem_dia.tipo_votacao = tipo_votacao
ordem_dia.save()
return self.get(request, self.kwargs)

8
sapl/templates/sessao/adicionar_varias_materias_expediente.html

@ -6,7 +6,13 @@
{% block sections_nav %}
{% endblock %}
{% block detail_content %}
{% block buttons %}
{% if filter_url %}
<div class="actions btn-group pull-right" role="group">
<a href="{% url 'sapl.sessao:adicionar_varias_materias_expediente' pk_sessao %}" class="btn btn-default">{% trans 'Fazer nova pesquisa' %}</a>
@ -18,6 +24,8 @@
{% endif %}
{% endblock %}
{% if not filter_url %}
{% crispy filter.form %}
{% endif %}

18
sapl/templates/sessao/adicionar_varias_materias_ordem.html

@ -0,0 +1,18 @@
{% extends "sessao/adicionar_varias_materias_expediente.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block buttons %}
{% if filter_url %}
<div class="actions btn-group pull-right" role="group">
<a href="{% url 'sapl.sessao:adicionar_varias_materias_ordem_dia' pk_sessao %}" class="btn btn-default">{% trans 'Fazer nova pesquisa' %}</a>
</div>
<div class="actions btn-group pull-right" role="group">
<a href="{% url 'sapl.sessao:materiaordemdia_list' pk_sessao %}" class="btn btn-default">{% trans 'Matérias da Ordem do Dia' %}</a>
</div>
{% endif %}
{% endblock %}

2
sapl/templates/sessao/materia_ordemdia_list.html

@ -78,7 +78,7 @@ Matérias da Ordem do Dia
&nbsp;&nbsp;&nbsp;
<input type="submit" id="materia_reorder" name="materia_reorder" value="Reordenar Matérias da Ordem do Dia" class="btn btn-primary" />
&nbsp;&nbsp;&nbsp;
<input type="submit" id="incluir_varias" name="incluir_varias" value="Incluir Várias Matérias" class="btn btn-primary" />
<a href="{% url 'sapl.sessao:adicionar_varias_materias_ordem_dia' object.pk %}" value="Incluir Várias Matérias" class="btn btn-primary">{% trans 'Adicionar Várias Matérias' %}</a>
</form>
{% endblock detail_content %}

Loading…
Cancel
Save