|
|
@ -10,7 +10,9 @@ from django.utils.translation import ugettext_lazy as _ |
|
|
from django.views.generic import ListView, TemplateView |
|
|
from django.views.generic import ListView, TemplateView |
|
|
from django.views.generic.edit import FormMixin |
|
|
from django.views.generic.edit import FormMixin |
|
|
from rest_framework import generics |
|
|
from rest_framework import generics |
|
|
|
|
|
from crud.masterdetail import MasterDetailCrud |
|
|
|
|
|
|
|
|
|
|
|
import crud.masterdetail |
|
|
import crud.base |
|
|
import crud.base |
|
|
from crud.base import Crud, make_pagination |
|
|
from crud.base import Crud, make_pagination |
|
|
from materia.models import (Autoria, DocumentoAcessorio, |
|
|
from materia.models import (Autoria, DocumentoAcessorio, |
|
|
@ -18,7 +20,6 @@ from materia.models import (Autoria, DocumentoAcessorio, |
|
|
from norma.models import NormaJuridica |
|
|
from norma.models import NormaJuridica |
|
|
from parlamentares.models import Parlamentar |
|
|
from parlamentares.models import Parlamentar |
|
|
from sessao.serializers import SessaoPlenariaSerializer |
|
|
from sessao.serializers import SessaoPlenariaSerializer |
|
|
|
|
|
|
|
|
from .forms import (ExpedienteForm, ListMateriaForm, MateriaOrdemDiaForm, |
|
|
from .forms import (ExpedienteForm, ListMateriaForm, MateriaOrdemDiaForm, |
|
|
MesaForm, OradorDeleteForm, OradorForm, PresencaForm, |
|
|
MesaForm, OradorDeleteForm, OradorForm, PresencaForm, |
|
|
VotacaoEditForm, VotacaoForm, VotacaoNominalForm) |
|
|
VotacaoEditForm, VotacaoForm, VotacaoNominalForm) |
|
|
@ -38,6 +39,9 @@ TipoExpedienteCrud = Crud.build(TipoExpediente, 'tipo_expediente') |
|
|
RegistroVotacaoCrud = Crud.build(RegistroVotacao, '') |
|
|
RegistroVotacaoCrud = Crud.build(RegistroVotacao, '') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OradorCrud = MasterDetailCrud.build(Orador, 'sessao_plenaria', '') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SessaoCrud(Crud): |
|
|
class SessaoCrud(Crud): |
|
|
model = SessaoPlenaria |
|
|
model = SessaoPlenaria |
|
|
help_path = 'sessao_plenaria' |
|
|
help_path = 'sessao_plenaria' |
|
|
@ -1177,159 +1181,6 @@ class ExpedienteView(FormMixin, SessaoCrud.CrudDetailView): |
|
|
return reverse('sessao:expediente', kwargs={'pk': pk}) |
|
|
return reverse('sessao:expediente', kwargs={'pk': pk}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ExplicacaoView(FormMixin, SessaoCrud.CrudDetailView): |
|
|
|
|
|
template_name = 'sessao/explicacao.html' |
|
|
|
|
|
form_class = OradorForm |
|
|
|
|
|
|
|
|
|
|
|
def get(self, request, *args, **kwargs): |
|
|
|
|
|
self.object = self.get_object() |
|
|
|
|
|
context = self.get_context_data(object=self.object) |
|
|
|
|
|
return self.render_to_response(context) |
|
|
|
|
|
|
|
|
|
|
|
def post(self, request, *args, **kwargs): |
|
|
|
|
|
self.object = self.get_object() |
|
|
|
|
|
form = OradorForm(request.POST) |
|
|
|
|
|
|
|
|
|
|
|
if 'adicionar' in request.POST: |
|
|
|
|
|
if form.is_valid(): |
|
|
|
|
|
orador = Orador() |
|
|
|
|
|
orador.sessao_plenaria_id = self.object.id |
|
|
|
|
|
orador.numero_ordem = request.POST['numero_ordem'] |
|
|
|
|
|
orador.parlamentar = Parlamentar.objects.get( |
|
|
|
|
|
id=request.POST['parlamentar']) |
|
|
|
|
|
orador.url_discurso = request.POST['url_discurso'] |
|
|
|
|
|
orador.save() |
|
|
|
|
|
return self.form_valid(form) |
|
|
|
|
|
else: |
|
|
|
|
|
return self.form_invalid(form) |
|
|
|
|
|
elif 'reordenar' in request.POST: |
|
|
|
|
|
orador = Orador.objects.filter( |
|
|
|
|
|
sessao_plenaria_id=self.object.id) |
|
|
|
|
|
ordem_num = 1 |
|
|
|
|
|
for o in orador: |
|
|
|
|
|
o.numero_ordem = ordem_num |
|
|
|
|
|
o.save() |
|
|
|
|
|
ordem_num += 1 |
|
|
|
|
|
return self.get(self, request, args, kwargs) |
|
|
|
|
|
|
|
|
|
|
|
def get_candidatos_orador(self): |
|
|
|
|
|
self.object = self.get_object() |
|
|
|
|
|
lista_parlamentares = [] |
|
|
|
|
|
lista_oradores = [] |
|
|
|
|
|
|
|
|
|
|
|
for parlamentar in Parlamentar.objects.all(): |
|
|
|
|
|
if parlamentar.ativo: |
|
|
|
|
|
lista_parlamentares.append(parlamentar) |
|
|
|
|
|
|
|
|
|
|
|
for orador in Orador.objects.filter( |
|
|
|
|
|
sessao_plenaria_id=self.object.id): |
|
|
|
|
|
parlamentar = Parlamentar.objects.get( |
|
|
|
|
|
id=orador.parlamentar_id) |
|
|
|
|
|
lista_oradores.append(parlamentar) |
|
|
|
|
|
|
|
|
|
|
|
lista = list(set(lista_parlamentares) - set(lista_oradores)) |
|
|
|
|
|
lista.sort(key=lambda x: x.nome_parlamentar) |
|
|
|
|
|
return lista |
|
|
|
|
|
|
|
|
|
|
|
def get_oradores(self): |
|
|
|
|
|
self.object = self.get_object() |
|
|
|
|
|
|
|
|
|
|
|
for orador in Orador.objects.filter( |
|
|
|
|
|
sessao_plenaria_id=self.object.id).order_by('numero_ordem'): |
|
|
|
|
|
numero_ordem = orador.numero_ordem |
|
|
|
|
|
url_discurso = orador.url_discurso |
|
|
|
|
|
parlamentar = Parlamentar.objects.get( |
|
|
|
|
|
id=orador.parlamentar_id) |
|
|
|
|
|
yield(numero_ordem, url_discurso, parlamentar) |
|
|
|
|
|
|
|
|
|
|
|
def get_success_url(self): |
|
|
|
|
|
pk = self.kwargs['pk'] |
|
|
|
|
|
return reverse('sessao:explicacao', kwargs={'pk': pk}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ExplicacaoDelete(FormMixin, SessaoCrud.CrudDetailView): |
|
|
|
|
|
template_name = 'sessao/delete_explicacao.html' |
|
|
|
|
|
form_class = OradorDeleteForm |
|
|
|
|
|
|
|
|
|
|
|
def post(self, request, *args, **kwargs): |
|
|
|
|
|
self.object = self.get_object() |
|
|
|
|
|
oid = kwargs['oid'] |
|
|
|
|
|
form = OradorDeleteForm(request.POST) |
|
|
|
|
|
|
|
|
|
|
|
if form.is_valid(): |
|
|
|
|
|
orador = Orador.objects.get( |
|
|
|
|
|
sessao_plenaria_id=self.object.id, |
|
|
|
|
|
parlamentar_id=oid) |
|
|
|
|
|
orador.delete() |
|
|
|
|
|
return self.form_valid(form) |
|
|
|
|
|
else: |
|
|
|
|
|
return self.form_invalid(form) |
|
|
|
|
|
|
|
|
|
|
|
def get_success_url(self): |
|
|
|
|
|
pk = self.kwargs['pk'] |
|
|
|
|
|
return reverse('sessao:explicacao', kwargs={'pk': pk}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ExplicacaoEdit(FormMixin, SessaoCrud.CrudDetailView): |
|
|
|
|
|
template_name = 'sessao/edit_explicacao.html' |
|
|
|
|
|
form_class = OradorForm |
|
|
|
|
|
|
|
|
|
|
|
def post(self, request, *args, **kwargs): |
|
|
|
|
|
self.object = self.get_object() |
|
|
|
|
|
form = OradorForm(request.POST) |
|
|
|
|
|
|
|
|
|
|
|
pk = kwargs['pk'] |
|
|
|
|
|
oid = kwargs['oid'] |
|
|
|
|
|
|
|
|
|
|
|
if form.is_valid(): |
|
|
|
|
|
orador = Orador.objects.get( |
|
|
|
|
|
sessao_plenaria_id=pk, |
|
|
|
|
|
parlamentar_id=oid) |
|
|
|
|
|
orador.delete() |
|
|
|
|
|
|
|
|
|
|
|
orador = Orador() |
|
|
|
|
|
orador.sessao_plenaria_id = pk |
|
|
|
|
|
orador.numero_ordem = request.POST['numero_ordem'] |
|
|
|
|
|
orador.parlamentar = Parlamentar.objects.get( |
|
|
|
|
|
id=oid) |
|
|
|
|
|
orador.url_discurso = request.POST['url_discurso'] |
|
|
|
|
|
orador.save() |
|
|
|
|
|
|
|
|
|
|
|
return self.form_valid(form) |
|
|
|
|
|
else: |
|
|
|
|
|
context = self.get_context_data(object=self.object) |
|
|
|
|
|
|
|
|
|
|
|
parlamentar = Parlamentar.objects.get(id=oid) |
|
|
|
|
|
orador = Orador.objects.get( |
|
|
|
|
|
sessao_plenaria=self.object, parlamentar=parlamentar) |
|
|
|
|
|
|
|
|
|
|
|
explicacao = {'parlamentar': parlamentar, |
|
|
|
|
|
'url_discurso': orador.url_discurso} |
|
|
|
|
|
context.update({'explicacao': explicacao}) |
|
|
|
|
|
context.update({'form': form}) |
|
|
|
|
|
return self.render_to_response(context) |
|
|
|
|
|
|
|
|
|
|
|
def get(self, request, *args, **kwargs): |
|
|
|
|
|
self.object = self.get_object() |
|
|
|
|
|
context = self.get_context_data(object=self.object) |
|
|
|
|
|
|
|
|
|
|
|
oid = kwargs['oid'] |
|
|
|
|
|
|
|
|
|
|
|
parlamentar = Parlamentar.objects.get(id=oid) |
|
|
|
|
|
orador = Orador.objects.get( |
|
|
|
|
|
sessao_plenaria=self.object, parlamentar=parlamentar) |
|
|
|
|
|
|
|
|
|
|
|
explicacao = {'parlamentar': parlamentar, 'numero_ordem': |
|
|
|
|
|
orador.numero_ordem, 'url_discurso': orador.url_discurso} |
|
|
|
|
|
context.update({'explicacao': explicacao}) |
|
|
|
|
|
|
|
|
|
|
|
return self.render_to_response(context) |
|
|
|
|
|
|
|
|
|
|
|
def get_success_url(self): |
|
|
|
|
|
pk = self.kwargs['pk'] |
|
|
|
|
|
return reverse('sessao:explicacao', kwargs={'pk': pk}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VotacaoEditView(FormMixin, SessaoCrud.CrudDetailView): |
|
|
class VotacaoEditView(FormMixin, SessaoCrud.CrudDetailView): |
|
|
|
|
|
|
|
|
''' |
|
|
''' |
|
|
|