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 django.conf.urls import include, url
from sapl.sessao.views import (AdicionarVariasMateriasExpediente, from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
AdicionarVariasMateriasOrdemDia,
BancadaCrud, CargoBancadaCrud, BancadaCrud, CargoBancadaCrud,
EditMateriaOrdemDiaView, ExpedienteMateriaCrud, EditMateriaOrdemDiaView, ExpedienteMateriaCrud,
ExpedienteView, ListMateriaOrdemDiaView, ExpedienteView, ListMateriaOrdemDiaView,
@ -53,6 +54,9 @@ urlpatterns = [
url(r'^sessao/(?P<pk>\d+)/adicionar-varias-materias-expediente/', url(r'^sessao/(?P<pk>\d+)/adicionar-varias-materias-expediente/',
AdicionarVariasMateriasExpediente.as_view(), AdicionarVariasMateriasExpediente.as_view(),
name='adicionar_varias_materias_expediente'), 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 # PAUTA SESSÃO
url(r'^pauta-sessao$', 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.core.urlresolvers import reverse
from django.forms.utils import ErrorList from django.forms.utils import ErrorList
from django.http.response import HttpResponseRedirect from django.http.response import HttpResponseRedirect
from django.utils.datastructures import MultiValueDictKeyError
from django.utils.html import strip_tags from django.utils.html import strip_tags
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic import FormView, ListView, TemplateView from django.views.generic import FormView, ListView, TemplateView
@ -1971,15 +1972,14 @@ def filtra_tramitacao_ordem_dia():
'materia_id', flat=True) 'materia_id', flat=True)
def retira_materias_ja_adicionadas(id_sessao): def retira_materias_ja_adicionadas(id_sessao, model):
lista = ExpedienteMateria.objects.filter( lista = model.objects.filter(
sessao_plenaria_id=id_sessao) sessao_plenaria_id=id_sessao)
lista_id_materias = [l.materia_id for l in lista] lista_id_materias = [l.materia_id for l in lista]
return lista_id_materias return lista_id_materias
class AdicionarVariasMateriasExpediente(MateriaLegislativaPesquisaView): class AdicionarVariasMateriasExpediente(MateriaLegislativaPesquisaView):
model = MateriaLegislativa
filterset_class = AdicionarVariasMateriasFilterSet filterset_class = AdicionarVariasMateriasFilterSet
template_name = 'sessao/adicionar_varias_materias_expediente.html' template_name = 'sessao/adicionar_varias_materias_expediente.html'
@ -1994,7 +1994,7 @@ class AdicionarVariasMateriasExpediente(MateriaLegislativaPesquisaView):
lista_ordem_dia = filtra_tramitacao_ordem_dia() lista_ordem_dia = filtra_tramitacao_ordem_dia()
lista_materias_adicionadas = retira_materias_ja_adicionadas( lista_materias_adicionadas = retira_materias_ja_adicionadas(
self.kwargs['pk']) self.kwargs['pk'], ExpedienteMateria)
qs = qs.filter(id__in=lista_ordem_dia).exclude( qs = qs.filter(id__in=lista_ordem_dia).exclude(
id__in=lista_materias_adicionadas).distinct() id__in=lista_materias_adicionadas).distinct()
@ -2024,7 +2024,16 @@ class AdicionarVariasMateriasExpediente(MateriaLegislativaPesquisaView):
marcadas = request.POST.getlist('materia_id') marcadas = request.POST.getlist('materia_id')
for m in marcadas: 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( lista_materias_expediente = ExpedienteMateria.objects.filter(
sessao_plenaria_id=self.kwargs[ sessao_plenaria_id=self.kwargs[
'pk']) 'pk'])
@ -2044,3 +2053,63 @@ class AdicionarVariasMateriasExpediente(MateriaLegislativaPesquisaView):
expediente.save() expediente.save()
return self.get(request, self.kwargs) 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 %} {% block sections_nav %}
{% endblock %} {% endblock %}
{% block detail_content %} {% block detail_content %}
{% block buttons %}
{% if filter_url %} {% if filter_url %}
<div class="actions btn-group pull-right" role="group"> <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> <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 %} {% endif %}
{% endblock %}
{% if not filter_url %} {% if not filter_url %}
{% crispy filter.form %} {% crispy filter.form %}
{% endif %} {% 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; &nbsp;&nbsp;&nbsp;
<input type="submit" id="materia_reorder" name="materia_reorder" value="Reordenar Matérias da Ordem do Dia" class="btn btn-primary" /> <input type="submit" id="materia_reorder" name="materia_reorder" value="Reordenar Matérias da Ordem do Dia" class="btn btn-primary" />
&nbsp;&nbsp;&nbsp; &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> </form>
{% endblock detail_content %} {% endblock detail_content %}

Loading…
Cancel
Save