diff --git a/sessao/forms.py b/sessao/forms.py index 1fab0ece7..08ee8586a 100644 --- a/sessao/forms.py +++ b/sessao/forms.py @@ -2,10 +2,6 @@ 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) @@ -32,18 +28,6 @@ class MateriaOrdemDiaForm(forms.Form): error_message = forms.CharField(required=False, label=_('Matéria')) -class OradorForm(forms.Form): - numero_ordem = forms.IntegerField( - required=True, - label=_('Ordem de pronunciamento')) - parlamentar = forms.CharField(required=False, max_length=20) - url_discurso = forms.CharField(required=False, max_length=100) - - -class OradorDeleteForm(forms.Form): - pass - - class MesaForm(forms.Form): parlamentar = forms.IntegerField(required=True) cargo = forms.IntegerField(required=True) diff --git a/sessao/layouts.yaml b/sessao/layouts.yaml index 0df7d6c18..dc8497e4c 100644 --- a/sessao/layouts.yaml +++ b/sessao/layouts.yaml @@ -41,5 +41,9 @@ RegistroVotacao: - observacao Orador: - Orador: + Orador das Explicações Pessoais: + - numero_ordem parlamentar url_discurso + +OradorExpediente: + Orador do Expediente: - numero_ordem parlamentar url_discurso diff --git a/sessao/urls.py b/sessao/urls.py index cf0ae37ee..7e03cd6e3 100644 --- a/sessao/urls.py +++ b/sessao/urls.py @@ -6,8 +6,7 @@ from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView, ExpedienteOrdemDiaView, ExpedienteView, ListExpedienteOrdemDiaView, ListMateriaOrdemDiaView, MateriaOrdemDiaView, MesaView, - OradorExpedienteDelete, OradorExpedienteEdit, - OradorExpedienteView, PainelView, + PainelView, PautaExpedienteDetail, PautaOrdemDetail, PautaSessaoDetailView, PautaSessaoListView, PresencaOrdemDiaView, PresencaView, ResumoView, @@ -17,7 +16,7 @@ from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView, VotacaoExpedienteView, VotacaoNominalEditView, VotacaoNominalExpedienteEditView, VotacaoNominalExpedienteView, VotacaoNominalView, - VotacaoView, OradorCrud) + VotacaoView, OradorCrud, OradorExpedienteCrud) from .apps import AppConfig @@ -28,7 +27,8 @@ sessao_rest = [ ] urlpatterns = [ - url(r'^sessao/', include(SessaoCrud.get_urls() + OradorCrud.get_urls())), + url(r'^sessao/', include(SessaoCrud.get_urls() + OradorCrud.get_urls() + + OradorExpedienteCrud.get_urls())), url(r'^media/(?P.*)$', serve, {'document_root': settings.MEDIA_ROOT}), @@ -60,12 +60,6 @@ urlpatterns = [ url(r'^(?P\d+)/presencaordemdia$', PresencaOrdemDiaView.as_view(), name='presencaordemdia'), - url(r'^(?P\d+)/oradorexpediente$', - OradorExpedienteView.as_view(), name='oradorexpediente'), - url(r'^(?P\d+)/oradorexpediente/excluir/(?P\d+)$', - OradorExpedienteDelete.as_view(), name='oradorexcluir'), - url(r'^(?P\d+)/oradorexpediente/editar/(?P\d+)$', - OradorExpedienteEdit.as_view(), name='oradoreditar'), url(r'^(?P\d+)/mesa$', MesaView.as_view(), name='mesa'), url(r'^(?P\d+)/materiaordemdia/list$', ListMateriaOrdemDiaView.as_view(), name='materiaordemdia_list'), diff --git a/sessao/views.py b/sessao/views.py index bcd5272b1..4fbc22512 100644 --- a/sessao/views.py +++ b/sessao/views.py @@ -21,7 +21,7 @@ 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, + MesaForm, PresencaForm, VotacaoEditForm, VotacaoForm, VotacaoNominalForm) from .models import (CargoMesa, ExpedienteMateria, ExpedienteSessao, IntegranteMesa, MateriaLegislativa, Orador, @@ -39,6 +39,15 @@ TipoExpedienteCrud = Crud.build(TipoExpediente, 'tipo_expediente') RegistroVotacaoCrud = Crud.build(RegistroVotacao, '') +class OradorExpedienteCrud(MasterDetailCrud): + model = OradorExpediente + parent_field = 'sessao_plenaria' + help_path = '' + + class ListView(MasterDetailCrud.ListView): + ordering = ['numero_ordem', 'parlamentar'] + + class OradorCrud(MasterDetailCrud): model = Orador parent_field = 'sessao_plenaria' @@ -698,161 +707,6 @@ class EditExpedienteOrdemDiaView(FormMixin, SessaoCrud.CrudDetailView): kwargs={'pk': pk}) -class OradorExpedienteDelete(FormMixin, SessaoCrud.CrudDetailView): - template_name = 'sessao/delete_orador.html' - form_class = OradorDeleteForm - - def post(self, request, *args, **kwargs): - self.object = self.get_object() - - orador_id = kwargs['oid'] - - form = OradorDeleteForm(request.POST) - - if form.is_valid(): - orador = OradorExpediente.objects.get( - sessao_plenaria_id=self.object.id, - parlamentar_id=orador_id) - 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:oradorexpediente', kwargs={'pk': pk}) - - -class OradorExpedienteEdit(FormMixin, SessaoCrud.CrudDetailView): - template_name = 'sessao/edit_orador.html' - form_class = OradorForm - - def post(self, request, *args, **kwargs): - self.object = self.get_object() - form = OradorForm(request.POST) - - if form.is_valid(): - orador_id = kwargs['oid'] - - orador = OradorExpediente.objects.get( - sessao_plenaria_id=self.object.id, - parlamentar_id=orador_id) - orador.delete() - - orador = OradorExpediente() - orador.sessao_plenaria_id = self.object.id - orador.numero_ordem = request.POST['numero_ordem'] - orador.parlamentar = Parlamentar.objects.get( - id=orador_id) - orador.url_discurso = request.POST['url_discurso'] - orador.save() - - return self.form_valid(form) - else: - context = self.get_context_data(object=self.object) - orador_id = kwargs['oid'] - - parlamentar = Parlamentar.objects.get(id=orador_id) - orador = OradorExpediente.objects.get( - sessao_plenaria=self.object, parlamentar=parlamentar) - - orador = {'parlamentar': parlamentar, - 'url_discurso': orador.url_discurso} - context.update({'orador': orador}) - 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) - - orador_id = kwargs['oid'] - - parlamentar = Parlamentar.objects.get(id=orador_id) - orador = OradorExpediente.objects.get( - sessao_plenaria=self.object, parlamentar=parlamentar) - - orador = {'parlamentar': parlamentar, 'numero_ordem': - orador.numero_ordem, 'url_discurso': orador.url_discurso} - context.update({'orador': orador}) - - return self.render_to_response(context) - - def get_success_url(self): - pk = self.kwargs['pk'] - return reverse('sessao:oradorexpediente', kwargs={'pk': pk}) - - -class OradorExpedienteView(FormMixin, SessaoCrud.CrudDetailView): - template_name = 'sessao/orador_expediente.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 = OradorExpediente() - 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 = OradorExpediente.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 OradorExpediente.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 OradorExpediente.objects.filter( - sessao_plenaria_id=self.object.id): - 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:oradorexpediente', kwargs={'pk': pk}) - - class MesaView(FormMixin, SessaoCrud.CrudDetailView): template_name = 'sessao/mesa.html' form_class = MesaForm diff --git a/templates/sessao/subnav.yaml b/templates/sessao/subnav.yaml index 5fed73171..fd24ae131 100644 --- a/templates/sessao/subnav.yaml +++ b/templates/sessao/subnav.yaml @@ -16,7 +16,7 @@ - title: Matérias Expediente url: expedienteordemdia_list - title: Oradores do Expediente - url: oradorexpediente + url: oradorexpediente_list - title: Ordem do Dia children: