Browse Source

Merge b8e262ee72 into d7b043be4a

pull/444/merge
Eduardo Edson Batista Cordeiro Alves 10 years ago
parent
commit
bc13fd2773
  1. 20
      materia/forms.py
  2. 30
      materia/views.py
  3. 2
      parlamentares/forms.py
  4. 2
      parlamentares/views.py
  5. 12
      sessao/forms.py
  6. 8
      sessao/layouts.yaml
  7. 21
      sessao/urls.py
  8. 331
      sessao/views.py
  9. 21
      templates/sessao/delete_explicacao.html
  10. 21
      templates/sessao/delete_orador.html
  11. 39
      templates/sessao/edit_explicacao.html
  12. 39
      templates/sessao/edit_orador.html
  13. 70
      templates/sessao/explicacao.html
  14. 70
      templates/sessao/orador_expediente.html
  15. 4
      templates/sessao/subnav.yaml

20
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):

30
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'

2
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")

2
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'

12
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)

8
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

21
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<path>.*)$', serve,
{'document_root': settings.MEDIA_ROOT}),
@ -61,12 +60,6 @@ urlpatterns = [
url(r'^(?P<pk>\d+)/presencaordemdia$',
PresencaOrdemDiaView.as_view(),
name='presencaordemdia'),
url(r'^(?P<pk>\d+)/oradorexpediente$',
OradorExpedienteView.as_view(), name='oradorexpediente'),
url(r'^(?P<pk>\d+)/oradorexpediente/excluir/(?P<oid>\d+)$',
OradorExpedienteDelete.as_view(), name='oradorexcluir'),
url(r'^(?P<pk>\d+)/oradorexpediente/editar/(?P<oid>\d+)$',
OradorExpedienteEdit.as_view(), name='oradoreditar'),
url(r'^(?P<pk>\d+)/mesa$', MesaView.as_view(), name='mesa'),
url(r'^(?P<pk>\d+)/materiaordemdia/list$',
ListMateriaOrdemDiaView.as_view(), name='materiaordemdia_list'),
@ -84,12 +77,6 @@ urlpatterns = [
ExpedienteOrdemDiaView.as_view(), name='expedienteordemdia_create'),
url(r'^(?P<pk>\d+)/resumo$',
ResumoView.as_view(), name='resumo'),
url(r'^(?P<pk>\d+)/explicacao$',
ExplicacaoView.as_view(), name='explicacao'),
url(r'^(?P<pk>\d+)/explicacao/excluir/(?P<oid>\d+)$',
ExplicacaoDelete.as_view(), name='explicacaoexcluir'),
url(r'^(?P<pk>\d+)/explicacao/editar/(?P<oid>\d+)$',
ExplicacaoEdit.as_view(), name='explicacaoeditar'),
url(r'^(?P<pk>\d+)/matordemdia/votnom/(?P<oid>\d+)/(?P<mid>\d+)$',
VotacaoNominalView.as_view(), name='votacaonominal'),
url(r'^(?P<pk>\d+)/matordemdia/votnom/edit/(?P<oid>\d+)/(?P<mid>\d+)$',

331
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):
'''

21
templates/sessao/delete_explicacao.html

@ -1,21 +0,0 @@
{% extends "base.html" %}
{% load i18n %}
{% block base_content %}
<form action="" method="post">{% csrf_token %}
<div class="callout panel text-center radius clearfix">
<p>
{% blocktrans %}
Tem certeza que deseja apagar o orador?
{% endblocktrans %}
</p>
<div class="button-group">
<a href="{{ view.detail_url }}" class="btn btn-primary">{% trans 'Cancelar' %}</a>
<input name="submit" value="{% trans 'Confirmar' %}" class="btn btn-danger" type="submit" ></li>
</div>
</div>
</form>
{% endblock %}

21
templates/sessao/delete_orador.html

@ -1,21 +0,0 @@
{% extends "base.html" %}
{% load i18n %}
{% block base_content %}
<form action="" method="post">{% csrf_token %}
<div class="callout panel text-center radius clearfix">
<p>
{% blocktrans %}
Tem certeza que deseja apagar o orador?
{% endblocktrans %}
</p>
<div class="button-group">
<a href="{{ view.detail_url }}" class="btn btn-primary">{% trans 'Cancelar' %}</a>
<input name="submit" value="{% trans 'Confirmar' %}" class="btn btn-danger" type="submit"></li>
</div>
</div>
</form>
{% endblock %}

39
templates/sessao/edit_explicacao.html

@ -1,39 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<fieldset class="form-group">
<legend>Editar Orador</legend>
{% if form.errors %}
<div class="alert-box alert">
<b><h4>Os seguintes erros foram encontrados:</h4></b>
<ul>
{% for field in form %}
{% if field.errors %}
<li>O campo <b>{{field.label}}</b> é obrigatório!</li>
{% endif %}
{% endfor %}
</ul>
</div>
{% endif %}
<form method="POST" action="">
{% csrf_token %}
<div class="row">
<div class="col-md-4">Ordem de pronunciamento</div>
<div class="col-md-4">Parlamentar</div>
<div class="col-md-4">URL Discurso</div>
</div>
<div class="row">
<div class="col-md-4"><input type="text" id="numero_ordem" name="numero_ordem" value="{{explicacao.numero_ordem}}" class="form-control" /></div>
<div class="col-md-4"><input type="text" id="parlamentar" name="parlamentar" value="{{explicacao.parlamentar.nome_parlamentar}}" disabled class="form-control"/></div>
<div class="col-md-4"><input type="text" id="url_discurso" name="url_discurso" value="{{explicacao.url_discurso}}" class="form-control"/></div>
</div>
<br />
<input type="submit" value="Salvar Orador" class="btn btn-primary" />
</form>
</fieldset>
{% endblock detail_content %}

39
templates/sessao/edit_orador.html

@ -1,39 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<fieldset class="form-group">
<legend>Editar Orador</legend>
{% if form.errors %}
<div class="alert-box alert">
<b><h4>Os seguintes erros foram encontrados:</h4></b>
<ul>
{% for field in form %}
{% if field.errors %}
<li>O campo <b>{{field.label}}</b> é obrigatório!</li>
{% endif %}
{% endfor %}
</ul>
</div>
{% endif %}
<form method="POST" action="">
{% csrf_token %}
<div class="row">
<div class="col-md-4">Ordem de pronunciamento</div>
<div class="col-md-4">Parlamentar</div>
<div class="col-md-4">URL Discurso</div>
</div>
<div class="row">
<div class="col-md-4"><input type="text" id="numero_ordem" name="numero_ordem" value="{{orador.numero_ordem}}" class="form-control"/></div>
<div class="col-md-4"><input type="text" id="parlamentar" name="parlamentar" value="{{orador.parlamentar.nome_parlamentar}}" disabled class="form-control"/></div>
<div class="col-md-4"><input type="text" id="url_discurso" name="url_discurso" value="{{orador.url_discurso}}" class="form-control"/></div>
</div>
<br />
<input type="submit" value="Salvar Orador" class="btn btn-primary" />
</form>
</fieldset>
{% endblock detail_content %}

70
templates/sessao/explicacao.html

@ -1,70 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<fieldset class="form-group">
<legend>Oradores das Explicações Pessoais</legend>
<table class="table table-striped table-bordered">
<thead class="thead-default">
<tr>
<th>Ordem de pronunciamento</th>
<th>Parlamentar</th>
<th>URL Discurso</th>
<th>Editar/Excluir</th>
</tr>
</thead>
{% for numero_ordem, url_discurso, parlamentar in view.get_oradores %}
<tr>
<td>{{numero_ordem}}</td>
<td>{{parlamentar.nome_parlamentar }}</td>
<td>{% if not url_discurso %}Orador sem discurso cadastrado{% else %}{{url_discurso}}{% endif %}</td>
<td>
<a id="editar-orador" href="{% url 'sessao:explicacaoeditar' object.pk parlamentar.id %}" class="btn btn-primary btn-sm active">Editar</a>
<a id="excluir-orador" href="{% url 'sessao:explicacaoexcluir' object.pk parlamentar.id %}" class="btn btn-danger btn-sm active">Excluir</a>
</td>
</tr>
{% endfor %}
</table>
</fieldset>
<fieldset class="form-group">
<legend>Adicionar Orador</legend>
{% if form.errors %}
<div class="alert-box alert">
<b><h4>Os seguintes erros foram encontrados:</h4></b>
<ul>
{% for field in form %}
{% if field.errors %}
<li>O campo <b>{{field.label}}</b> é obrigatório!</li>
{% endif %}
{% endfor %}
</ul>
</div>
{% endif %}
<form method="POST" action="">
{% csrf_token %}
<div class="row">
<div class="col-md-4">Ordem de pronunciamento</div>
<div class="col-md-4">Parlamentar</div>
<div class="col-md-4">URL Discurso</div>
</div>
<div class="row">
<div class="col-md-4"><input type="text" id="numero_ordem" name="numero_ordem" class="form-control"/></div>
<div class="col-md-4"><select name="parlamentar" id="parlamentar" class="form-control">
{% for parlamentar in view.get_candidatos_orador %}
<option value="{{parlamentar.id}}">{{parlamentar.nome_parlamentar}}</option>
{% endfor %}
</select></div>
<div class="col-md-4"><input type="text" id="url_discurso" name="url_discurso" class="form-control"/></div>
</div>
<br />
<input type="submit" value="Adicionar Orador" name="adicionar" id="adicionar" class="btn btn-primary" />
<input type="submit" value="Reordenar Oradores" name="reordenar" id="reordenar" class="btn btn-primary" />
</form>
</fieldset>
{% endblock detail_content %}

70
templates/sessao/orador_expediente.html

@ -1,70 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<fieldset>
<legend>Oradores do Expediente</legend>
<table class="table table-striped table-bordered">
<thead class="thead-default">
<tr>
<th>Ordem de pronunciamento</th>
<th>Parlamentar</th>
<th>URL Discurso</th>
<th>Editar/Excluir</th>
</tr>
</thead>
{% for numero_ordem, url_discurso, parlamentar in view.get_oradores %}
<tr>
<td>{{numero_ordem}}</td>
<td>{{parlamentar.nome_parlamentar }}</td>
<td>{% if not url_discurso %}Orador sem discurso cadastrado{% else %}{{url_discurso}}{% endif %}</td>
<td>
<a id="editar-orador" href="{% url 'sessao:oradoreditar' object.pk parlamentar.id %}" class="btn btn-primary btn-sm active">Editar</a>
<a id="excluir-orador" href="{% url 'sessao:oradorexcluir' object.pk parlamentar.id %}" class="btn btn-danger btn-sm active">Excluir</a>
</td>
</tr>
{% endfor %}
</table>
</fieldset>
<fieldset class="form-group">
<legend>Adicionar Orador</legend>
{% if form.errors %}
<div class="alert-box alert">
<b><h4>Os seguintes erros foram encontrados:</h4></b>
<ul>
{% for field in form %}
{% if field.errors %}
<li>O campo <b>{{field.label}}</b> é obrigatório!</li>
{% endif %}
{% endfor %}
</ul>
</div>
{% endif %}
<form method="POST" action="">
{% csrf_token %}
<div class="row">
<div class="col-md-4">Ordem de pronunciamento</div>
<div class="col-md-4">Parlamentar</div>
<div class="col-md-4">URL Discurso</div>
</div>
<div class="row">
<div class="col-md-4"><input type="text" id="numero_ordem" name="numero_ordem" class="form-control"/></div>
<div class="col-md-4"><select name="parlamentar" id="parlamentar" class="form-control">
{% for parlamentar in view.get_candidatos_orador %}
<option value="{{parlamentar.id}}">{{parlamentar.nome_parlamentar}}</option>
{% endfor %}
</select></div>
<div class="col-md-4"><input type="text" id="url_discurso" name="url_discurso" class="form-control"/></div>
</div>
<br />
<input type="submit" value="Adicionar Orador" name="adicionar" id="adicionar" class="btn btn-primary" />
<input type="submit" value="Reordenar Oradores" name="reordenar" id="reordenar" class="btn btn-primary"/>
</form>
</fieldset>
{% endblock detail_content %}

4
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:

Loading…
Cancel
Save