From 0cb3fbf7671ea6f2595000692a4b945f0f01598f Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Wed, 11 May 2016 12:43:48 -0300 Subject: [PATCH] =?UTF-8?q?Init=20crud=20explica=C3=A7=C3=B5es=20pessoais?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sessao/forms.py | 4 + sessao/layouts.yaml | 4 + sessao/urls.py | 11 +-- sessao/views.py | 159 ++--------------------------------- templates/sessao/subnav.yaml | 2 +- 5 files changed, 16 insertions(+), 164 deletions(-) diff --git a/sessao/forms.py b/sessao/forms.py index d62af30c7..1fab0ece7 100644 --- a/sessao/forms.py +++ b/sessao/forms.py @@ -2,6 +2,10 @@ from django import forms from django.utils.translation import ugettext_lazy as _ +class OradorForm(): + pass + + class PresencaForm(forms.Form): presenca = forms.CharField(required=False, initial=False) parlamentar = forms.CharField(required=False, max_length=20) diff --git a/sessao/layouts.yaml b/sessao/layouts.yaml index 650105863..0df7d6c18 100644 --- a/sessao/layouts.yaml +++ b/sessao/layouts.yaml @@ -39,3 +39,7 @@ RegistroVotacao: - votacao_branco_FIXME ind_votacao_presidente_FIXME - tipo_resultado_votacao - observacao + +Orador: + Orador: + - numero_ordem parlamentar url_discurso diff --git a/sessao/urls.py b/sessao/urls.py index 4a50be674..cf0ae37ee 100644 --- a/sessao/urls.py +++ b/sessao/urls.py @@ -4,7 +4,6 @@ from django.views.static import serve from sapl import settings from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView, ExpedienteOrdemDiaView, ExpedienteView, - ExplicacaoDelete, ExplicacaoEdit, ExplicacaoView, ListExpedienteOrdemDiaView, ListMateriaOrdemDiaView, MateriaOrdemDiaView, MesaView, OradorExpedienteDelete, OradorExpedienteEdit, @@ -18,7 +17,7 @@ from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView, VotacaoExpedienteView, VotacaoNominalEditView, VotacaoNominalExpedienteEditView, VotacaoNominalExpedienteView, VotacaoNominalView, - VotacaoView) + VotacaoView, OradorCrud) from .apps import AppConfig @@ -29,7 +28,7 @@ sessao_rest = [ ] urlpatterns = [ - url(r'^sessao/', include(SessaoCrud.get_urls())), + url(r'^sessao/', include(SessaoCrud.get_urls() + OradorCrud.get_urls())), url(r'^media/(?P.*)$', serve, {'document_root': settings.MEDIA_ROOT}), @@ -84,12 +83,6 @@ urlpatterns = [ ExpedienteOrdemDiaView.as_view(), name='expedienteordemdia_create'), url(r'^(?P\d+)/resumo$', ResumoView.as_view(), name='resumo'), - url(r'^(?P\d+)/explicacao$', - ExplicacaoView.as_view(), name='explicacao'), - url(r'^(?P\d+)/explicacao/excluir/(?P\d+)$', - ExplicacaoDelete.as_view(), name='explicacaoexcluir'), - url(r'^(?P\d+)/explicacao/editar/(?P\d+)$', - ExplicacaoEdit.as_view(), name='explicacaoeditar'), url(r'^(?P\d+)/matordemdia/votnom/(?P\d+)/(?P\d+)$', VotacaoNominalView.as_view(), name='votacaonominal'), url(r'^(?P\d+)/matordemdia/votnom/edit/(?P\d+)/(?P\d+)$', diff --git a/sessao/views.py b/sessao/views.py index 442136151..f5ac9a6b7 100644 --- a/sessao/views.py +++ b/sessao/views.py @@ -10,7 +10,9 @@ from django.utils.translation import ugettext_lazy as _ from django.views.generic import ListView, TemplateView from django.views.generic.edit import FormMixin from rest_framework import generics +from crud.masterdetail import MasterDetailCrud +import crud.masterdetail import crud.base from crud.base import Crud, make_pagination from materia.models import (Autoria, DocumentoAcessorio, @@ -18,7 +20,6 @@ from materia.models import (Autoria, DocumentoAcessorio, from norma.models import NormaJuridica from parlamentares.models import Parlamentar from sessao.serializers import SessaoPlenariaSerializer - from .forms import (ExpedienteForm, ListMateriaForm, MateriaOrdemDiaForm, MesaForm, OradorDeleteForm, OradorForm, PresencaForm, VotacaoEditForm, VotacaoForm, VotacaoNominalForm) @@ -38,6 +39,9 @@ TipoExpedienteCrud = Crud.build(TipoExpediente, 'tipo_expediente') RegistroVotacaoCrud = Crud.build(RegistroVotacao, '') +OradorCrud = MasterDetailCrud.build(Orador, 'sessao_plenaria', '') + + class SessaoCrud(Crud): model = SessaoPlenaria help_path = 'sessao_plenaria' @@ -1177,159 +1181,6 @@ class ExpedienteView(FormMixin, SessaoCrud.CrudDetailView): 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): ''' diff --git a/templates/sessao/subnav.yaml b/templates/sessao/subnav.yaml index 1b096237a..5fed73171 100644 --- a/templates/sessao/subnav.yaml +++ b/templates/sessao/subnav.yaml @@ -7,7 +7,7 @@ - title: Presença url: presenca - title: Explicações Pessoais - url: explicacao + url: orador_list - title: Expedientes children: