diff --git a/materia/forms.py b/materia/forms.py index 9604ad6ca..541079e24 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -146,26 +146,6 @@ class RelatoriaForm(ModelForm): return cleaned_data - class Meta: - model = Relatoria - fields = ['data_designacao_relator', 'comissao', 'parlamentar', - 'data_destituicao_relator', 'tipo_fim_relatoria'] - - widgets = {'comissao': forms.Select(attrs={'disabled': 'disabled'})} - - def clean(self): - cleaned_data = self.cleaned_data - - try: - comissao = Comissao.objects.get(id=self.initial['comissao']) - except ObjectDoesNotExist: - msg = _('A localização atual deve ser uma comissão.') - raise ValidationError(msg) - else: - cleaned_data['comissao'] = comissao - - return cleaned_data - class TramitacaoForm(ModelForm): diff --git a/materia/views.py b/materia/views.py index 1cdfada39..3403a3577 100644 --- a/materia/views.py +++ b/materia/views.py @@ -1,7 +1,6 @@ from datetime import datetime from random import choice from string import ascii_letters, digits -from crispy_layout_mixin import form_actions from crispy_forms.helper import FormHelper from crispy_forms.layout import HTML, Button @@ -133,35 +132,6 @@ class RelatoriaCrud(MasterDetailCrud): form_class = RelatoriaForm -class RelatoriaCrud(MasterDetailCrud): - model = Relatoria - parent_field = 'materia' - help_path = '' - - class CreateView(MasterDetailCrud.CreateView): - form_class = RelatoriaForm - - def get_initial(self): - materia = MateriaLegislativa.objects.get(id=self.kwargs['pk']) - - loc_atual = Tramitacao.objects.filter( - materia=materia).last() - - if loc_atual is None: - localizacao = 0 - else: - comissao = loc_atual.unidade_tramitacao_destino.comissao - if comissao: - localizacao = comissao.pk - else: - localizacao = 0 - - return {'comissao': localizacao} - - class UpdateView(MasterDetailCrud.UpdateView): - form_class = RelatoriaForm - - class TramitacaoCrud(MasterDetailCrud): model = Tramitacao parent_field = 'materia' diff --git a/parlamentares/forms.py b/parlamentares/forms.py index 984ade37c..dd345345c 100644 --- a/parlamentares/forms.py +++ b/parlamentares/forms.py @@ -71,7 +71,7 @@ def validar_datas(data_filiacao, data_desfiliacao, parlamentar, filiacao): ultima_filiacao = todas_filiacoes.last() # Se ultima filiacao aberta e insercao posterior a esta filiacao if (not ultima_filiacao.data_desfiliacao and - data_filiacao >= ultima_filiacao.data): + data_filiacao >= ultima_filiacao.data): error_msg = _("O parlamentar não pode se filiar \ a novo partido sem antes se \ desfiliar do partido anterior") diff --git a/parlamentares/views.py b/parlamentares/views.py index 89fd88615..70d839ef0 100644 --- a/parlamentares/views.py +++ b/parlamentares/views.py @@ -28,6 +28,7 @@ TipoMilitarCrud = Crud.build(SituacaoMilitar, 'tipo_situa_militar') DependenteCrud = MasterDetailCrud.build(Dependente, 'parlamentar', '') + class MandatoCrud(MasterDetailCrud): model = Mandato parent_field = 'parlamentar' @@ -36,6 +37,7 @@ class MandatoCrud(MasterDetailCrud): class ListView(MasterDetailCrud.ListView): ordering = ('-legislatura__data_inicio') + class FiliacaoCrud(MasterDetailCrud): model = Filiacao parent_field = 'parlamentar' diff --git a/sessao/forms.py b/sessao/forms.py index d62af30c7..08ee8586a 100644 --- a/sessao/forms.py +++ b/sessao/forms.py @@ -28,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 650105863..dc8497e4c 100644 --- a/sessao/layouts.yaml +++ b/sessao/layouts.yaml @@ -39,3 +39,11 @@ RegistroVotacao: - votacao_branco_FIXME ind_votacao_presidente_FIXME - tipo_resultado_votacao - observacao + +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 4a50be674..cb6f4cd29 100644 --- a/sessao/urls.py +++ b/sessao/urls.py @@ -4,11 +4,9 @@ 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, - OradorExpedienteView, PainelView, + MateriaOrdemDiaView, MesaView, OradorCrud, + OradorExpedienteCrud, PainelView, PautaExpedienteDetail, PautaOrdemDetail, PautaSessaoDetailView, PautaSessaoListView, PresencaOrdemDiaView, PresencaView, ResumoView, @@ -29,7 +27,8 @@ sessao_rest = [ ] urlpatterns = [ - url(r'^sessao/', include(SessaoCrud.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}), @@ -61,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'), @@ -84,12 +77,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..d8a384eba 100644 --- a/sessao/views.py +++ b/sessao/views.py @@ -12,7 +12,9 @@ from django.views.generic.edit import FormMixin from rest_framework import generics import crud.base +import crud.masterdetail from crud.base import Crud, make_pagination +from crud.masterdetail import MasterDetailCrud from materia.models import (Autoria, DocumentoAcessorio, TipoMateriaLegislativa, Tramitacao) from norma.models import NormaJuridica @@ -20,8 +22,8 @@ from parlamentares.models import Parlamentar from sessao.serializers import SessaoPlenariaSerializer from .forms import (ExpedienteForm, ListMateriaForm, MateriaOrdemDiaForm, - MesaForm, OradorDeleteForm, OradorForm, PresencaForm, - VotacaoEditForm, VotacaoForm, VotacaoNominalForm) + MesaForm, PresencaForm, VotacaoEditForm, VotacaoForm, + VotacaoNominalForm) from .models import (CargoMesa, ExpedienteMateria, ExpedienteSessao, IntegranteMesa, MateriaLegislativa, Orador, OradorExpediente, OrdemDia, PresencaOrdemDia, @@ -38,6 +40,23 @@ TipoExpedienteCrud = Crud.build(TipoExpediente, 'tipo_expediente') RegistroVotacaoCrud = Crud.build(RegistroVotacao, '') +class OradorCrud(MasterDetailCrud): + model = '' + parent_field = 'sessao_plenaria' + help_path = '' + + class ListView(MasterDetailCrud.ListView): + ordering = ['numero_ordem', 'parlamentar'] + + +class OradorExpedienteCrud(OradorCrud): + model = OradorExpediente + + +class OradorCrud(OradorCrud): + model = Orador + + class SessaoCrud(Crud): model = SessaoPlenaria help_path = 'sessao_plenaria' @@ -688,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 @@ -1177,159 +1041,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/delete_explicacao.html b/templates/sessao/delete_explicacao.html deleted file mode 100644 index ec7439788..000000000 --- a/templates/sessao/delete_explicacao.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "base.html" %} -{% load i18n %} - -{% block base_content %} -
{% csrf_token %} -
- -

- {% blocktrans %} - Tem certeza que deseja apagar o orador? - {% endblocktrans %} -

- - - -
-
-{% endblock %} diff --git a/templates/sessao/delete_orador.html b/templates/sessao/delete_orador.html deleted file mode 100644 index a918003a6..000000000 --- a/templates/sessao/delete_orador.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "base.html" %} -{% load i18n %} - -{% block base_content %} -
{% csrf_token %} -
- -

- {% blocktrans %} - Tem certeza que deseja apagar o orador? - {% endblocktrans %} -

- - - -
-
-{% endblock %} diff --git a/templates/sessao/edit_explicacao.html b/templates/sessao/edit_explicacao.html deleted file mode 100644 index 0a0a741dd..000000000 --- a/templates/sessao/edit_explicacao.html +++ /dev/null @@ -1,39 +0,0 @@ -{% extends "crud/detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} - -{% block detail_content %} - -
- Editar Orador - {% if form.errors %} -
-

Os seguintes erros foram encontrados:

-
    - {% for field in form %} - {% if field.errors %} -
  • O campo {{field.label}} é obrigatório!
  • - {% endif %} - {% endfor %} -
-
- {% endif %} -
- {% csrf_token %} - -
-
Ordem de pronunciamento
-
Parlamentar
-
URL Discurso
-
-
-
-
-
-
-
- -
-
- -{% endblock detail_content %} diff --git a/templates/sessao/edit_orador.html b/templates/sessao/edit_orador.html deleted file mode 100644 index 352b56c61..000000000 --- a/templates/sessao/edit_orador.html +++ /dev/null @@ -1,39 +0,0 @@ -{% extends "crud/detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} - -{% block detail_content %} - -
- Editar Orador - {% if form.errors %} -
-

Os seguintes erros foram encontrados:

-
    - {% for field in form %} - {% if field.errors %} -
  • O campo {{field.label}} é obrigatório!
  • - {% endif %} - {% endfor %} -
-
- {% endif %} -
- {% csrf_token %} - -
-
Ordem de pronunciamento
-
Parlamentar
-
URL Discurso
-
-
-
-
-
-
-
- -
-
- -{% endblock detail_content %} diff --git a/templates/sessao/explicacao.html b/templates/sessao/explicacao.html deleted file mode 100644 index 48cb37652..000000000 --- a/templates/sessao/explicacao.html +++ /dev/null @@ -1,70 +0,0 @@ -{% extends "crud/detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} - -{% block detail_content %} - -
- Oradores das Explicações Pessoais - - - - - - - - - - {% for numero_ordem, url_discurso, parlamentar in view.get_oradores %} - - - - - - - {% endfor %} -
Ordem de pronunciamentoParlamentarURL DiscursoEditar/Excluir
{{numero_ordem}}{{parlamentar.nome_parlamentar }}{% if not url_discurso %}Orador sem discurso cadastrado{% else %}{{url_discurso}}{% endif %} - Editar - Excluir -
-
- -
- Adicionar Orador - {% if form.errors %} -
-

Os seguintes erros foram encontrados:

-
    - {% for field in form %} - {% if field.errors %} -
  • O campo {{field.label}} é obrigatório!
  • - {% endif %} - {% endfor %} -
-
- {% endif %} -
- {% csrf_token %} - -
-
Ordem de pronunciamento
-
Parlamentar
-
URL Discurso
-
- -
-
- -
-
-
-
- - -
-
-{% endblock detail_content %} diff --git a/templates/sessao/orador_expediente.html b/templates/sessao/orador_expediente.html deleted file mode 100644 index 04285bca2..000000000 --- a/templates/sessao/orador_expediente.html +++ /dev/null @@ -1,70 +0,0 @@ -{% extends "crud/detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} - -{% block detail_content %} - -
- Oradores do Expediente - - - - - - - - - - {% for numero_ordem, url_discurso, parlamentar in view.get_oradores %} - - - - - - - {% endfor %} -
Ordem de pronunciamentoParlamentarURL DiscursoEditar/Excluir
{{numero_ordem}}{{parlamentar.nome_parlamentar }}{% if not url_discurso %}Orador sem discurso cadastrado{% else %}{{url_discurso}}{% endif %} - Editar - Excluir -
-
- -
- Adicionar Orador - {% if form.errors %} -
-

Os seguintes erros foram encontrados:

-
    - {% for field in form %} - {% if field.errors %} -
  • O campo {{field.label}} é obrigatório!
  • - {% endif %} - {% endfor %} -
-
- {% endif %} -
- {% csrf_token %} - -
-
Ordem de pronunciamento
-
Parlamentar
-
URL Discurso
-
- -
-
- -
-
-
-
- - -
-
-{% endblock detail_content %} diff --git a/templates/sessao/subnav.yaml b/templates/sessao/subnav.yaml index 1b096237a..fd24ae131 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: @@ -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: