Browse Source

Muda matérias da ordem do dia para o crud

pull/518/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
committed by Edward Ribeiro
parent
commit
7468d323ce
  1. 48
      sapl/sessao/forms.py
  2. 31
      sapl/sessao/urls.py
  3. 415
      sapl/sessao/views.py
  4. 12
      sapl/templates/sessao/OrdemDia.html
  5. 85
      sapl/templates/sessao/expediente_ordemdia_list.html
  6. 27
      sapl/templates/sessao/layouts.yaml
  7. 76
      sapl/templates/sessao/materia_ordemdia.html
  8. 74
      sapl/templates/sessao/materia_ordemdia_edit.html
  9. 2
      sapl/templates/sessao/subnav.yaml

48
sapl/sessao/forms.py

@ -13,7 +13,7 @@ from sapl.materia.forms import MateriaLegislativaFilterSet
from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa
from sapl.utils import RANGE_DIAS_MES, RANGE_MESES, autor_label, autor_modal
from .models import Bancada, ExpedienteMateria, SessaoPlenaria
from .models import Bancada, ExpedienteMateria, SessaoPlenaria, OrdemDia
def pega_anos():
@ -95,6 +95,39 @@ class ExpedienteMateriaForm(ModelForm):
return expediente
class OrdemDiaForm(ExpedienteMateriaForm):
class Meta:
model = OrdemDia
fields = ['data_ordem', 'numero_ordem', 'tipo_materia', 'observacao',
'numero_materia', 'ano_materia', 'tipo_votacao']
def clean_data_ordem(self):
return datetime.now()
def clean(self):
cleaned_data = self.cleaned_data
try:
materia = MateriaLegislativa.objects.get(
numero=self.cleaned_data['numero_materia'],
ano=self.cleaned_data['ano_materia'],
tipo=self.cleaned_data['tipo_materia'])
except ObjectDoesNotExist:
msg = _('A matéria a ser inclusa não existe no cadastro'
' de matérias legislativas.')
raise ValidationError(msg)
else:
cleaned_data['materia'] = materia
return cleaned_data
def save(self, commit=False):
ordem = super(OrdemDiaForm, self).save(commit)
ordem.materia = self.cleaned_data['materia']
ordem.save()
return ordem
class PresencaForm(forms.Form):
presenca = forms.CharField(required=False, initial=False)
parlamentar = forms.CharField(required=False, max_length=20)
@ -108,19 +141,6 @@ class ListMateriaForm(forms.Form):
error_message = forms.CharField(required=False, label='votacao_aberta')
class MateriaOrdemDiaForm(forms.Form):
data_sessao = forms.CharField(required=True, label=_('Data da Sessão'))
numero_ordem = forms.IntegerField(required=True, label=_('Número Ordem'))
tipo_votacao = forms.IntegerField(required=True, label=_('Tipo Votação'))
tipo_sessao = forms.IntegerField(required=True, label=_('Tipo da Sessão'))
ano_materia = forms.IntegerField(required=True, label=_('Ano Matéria'))
numero_materia = forms.IntegerField(required=True,
label=_('Número Matéria'))
tipo_materia = forms.IntegerField(required=True, label=_('Tipo Matéria'))
observacao = forms.CharField(required=False, label=_('Ementa'))
error_message = forms.CharField(required=False, label=_('Matéria'))
class MesaForm(forms.Form):
parlamentar = forms.IntegerField(required=True)
cargo = forms.IntegerField(required=True)

31
sapl/sessao/urls.py

@ -3,9 +3,8 @@ from django.conf.urls import include, url
from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
AdicionarVariasMateriasOrdemDia,
BancadaCrud, CargoBancadaCrud,
EditMateriaOrdemDiaView, ExpedienteMateriaCrud,
ExpedienteView, ListMateriaOrdemDiaView,
MateriaOrdemDiaView, MesaView, OradorCrud,
ExpedienteMateriaCrud, ExpedienteView,
MateriaOrdemDiaCrud, MesaView, OradorCrud,
OradorExpedienteCrud, PainelView,
PautaExpedienteDetail, PautaOrdemDetail,
PautaSessaoDetailView, PautaSessaoListView,
@ -19,8 +18,10 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
VotacaoNominalExpedienteEditView,
VotacaoNominalExpedienteView,
VotacaoNominalView, VotacaoView,
abrir_votacao_view,
reordernar_materias_expediente)
abrir_votacao_expediente_view,
abrir_votacao_ordem_view,
reordernar_materias_expediente,
reordernar_materias_ordem)
from .apps import AppConfig
@ -33,13 +34,19 @@ sessao_rest = [
urlpatterns = [
url(r'^sessao/', include(SessaoCrud.get_urls() + OradorCrud.get_urls() +
OradorExpedienteCrud.get_urls() +
ExpedienteMateriaCrud.get_urls())),
ExpedienteMateriaCrud.get_urls() +
MateriaOrdemDiaCrud.get_urls())),
url(r'^(?P<pk>\d+)/(?P<spk>\d+)/abrir-votacao$', abrir_votacao_view,
url(r'^(?P<pk>\d+)/(?P<spk>\d+)/abrir-votacao-expediente$',
abrir_votacao_expediente_view,
name="abrir_votacao_exp"),
url(r'^(?P<pk>\d+)/(?P<spk>\d+)/abrir-votacao-ordem$',
abrir_votacao_ordem_view,
name="abrir_votacao"),
url(r'^(?P<pk>\d+)/reordenar-expediente$', reordernar_materias_expediente,
name="reordenar_expediente"),
url(r'^(?P<pk>\d+)/reordenar-ordem$', reordernar_materias_ordem,
name="reordenar_ordem"),
url(r'^rest/', include(sessao_rest)),
url(r'^sistema/sessao-plenaria/tipo/',
include(TipoSessaoCrud.get_urls())),
@ -79,14 +86,6 @@ urlpatterns = [
PresencaOrdemDiaView.as_view(),
name='presencaordemdia'),
url(r'^(?P<pk>\d+)/mesa$', MesaView.as_view(), name='mesa'),
url(r'^(?P<pk>\d+)/materiaordemdia/list$',
ListMateriaOrdemDiaView.as_view(), name='materiaordemdia_list'),
url(r'^(?P<pk>\d+)/materiaordemdia/list$',
ListMateriaOrdemDiaView.as_view(), name='materiaordemdia_reorder'),
url(r'^(?P<pk>\d+)/materiaordemdia/edit/(?P<oid>\d+)$',
EditMateriaOrdemDiaView.as_view(), name='materiaordemdia_edit'),
url(r'^(?P<pk>\d+)/materiaordemdia/create$',
MateriaOrdemDiaView.as_view(), name='materiaordemdia_create'),
url(r'^(?P<pk>\d+)/resumo$',
ResumoView.as_view(), name='resumo'),
url(r'^sessao/pesquisar-sessao$',

415
sapl/sessao/views.py

@ -26,11 +26,13 @@ from sapl.norma.models import NormaJuridica
from sapl.parlamentares.models import Parlamentar
from sapl.sessao.serializers import SessaoPlenariaSerializer
from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm,
ExpedienteForm, ExpedienteMateriaForm,
ListMateriaForm, MateriaOrdemDiaForm, MesaForm,
PresencaForm, SessaoPlenariaFilterSet, VotacaoEditForm,
VotacaoForm, VotacaoNominalForm)
from .forms import (AdicionarVariasMateriasFilterSet,
BancadaForm, ExpedienteForm, ExpedienteMateriaForm,
ListMateriaForm, MateriaOrdemDiaForm,
MesaForm, OrdemDiaForm, PresencaForm,
SessaoPlenariaFilterSet, VotacaoEditForm, VotacaoForm,
VotacaoNominalForm)
from .models import (Bancada, CargoBancada, CargoMesa, ExpedienteMateria,
ExpedienteSessao, IntegranteMesa, MateriaLegislativa,
Orador, OradorExpediente, OrdemDia, PresencaOrdemDia,
@ -60,6 +62,19 @@ def reordernar_materias_expediente(request, pk):
reverse('sapl.sessao:expedientemateria_list', kwargs={'pk': pk}))
def reordernar_materias_ordem(request, pk):
ordens = OrdemDia.objects.filter(
sessao_plenaria_id=pk)
ordem_num = 1
for o in ordens:
o.numero_ordem = ordem_num
o.save()
ordem_num += 1
return HttpResponseRedirect(
reverse('sapl.sessao:ordemdia_list', kwargs={'pk': pk}))
class BancadaCrud(Crud):
model = Bancada
help_path = ''
@ -77,7 +92,7 @@ class BancadaCrud(Crud):
form_class = BancadaForm
def abrir_votacao_view(request, pk, spk):
def abrir_votacao_expediente_view(request, pk, spk):
existe_votacao_aberta = ExpedienteMateria.objects.filter(
sessao_plenaria_id=spk, votacao_aberta=True
).exists()
@ -93,6 +108,114 @@ def abrir_votacao_view(request, pk, spk):
reverse('sapl.sessao:expedientemateria_list', kwargs={'pk': spk}))
def abrir_votacao_ordem_view(request, pk, spk):
existe_votacao_aberta = OrdemDia.objects.filter(
sessao_plenaria_id=spk, votacao_aberta=True
).exists()
if existe_votacao_aberta:
msg = _('Já existe uma matéria com votação aberta. Para abrir '
'outra, termine ou feche a votação existente.')
raise ValidationError(msg)
else:
ordem = OrdemDia.objects.get(id=pk)
ordem.votacao_aberta = True
ordem.save()
return HttpResponseRedirect(
reverse('sapl.sessao:ordemdia_list', kwargs={'pk': spk}))
class MateriaOrdemDiaCrud(MasterDetailCrud):
model = OrdemDia
parent_field = 'sessao_plenaria'
help_path = ''
class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['numero_ordem', 'materia', 'observacao',
'resultado']
class CreateView(MasterDetailCrud.CreateView):
form_class = OrdemDiaForm
class UpdateView(MasterDetailCrud.UpdateView):
form_class = OrdemDiaForm
def get_initial(self):
self.initial['tipo_materia'] = self.object.materia.tipo.id
self.initial['numero_materia'] = self.object.materia.numero
self.initial['ano_materia'] = self.object.materia.ano
return self.initial
class DetailView(MasterDetailCrud.DetailView):
@property
def layout_key(self):
return 'OrdemDiaDetail'
class ListView(MasterDetailCrud.ListView):
ordering = ['numero_ordem', 'materia', 'resultado']
def get_rows(self, object_list):
for obj in object_list:
if not obj.resultado:
if obj.votacao_aberta:
url = ''
if obj.tipo_votacao == 1:
url = reverse('sapl.sessao:votacaosimbolica',
kwargs={
'pk': obj.sessao_plenaria_id,
'oid': obj.materia_id,
'mid': obj.pk})
elif obj.tipo_votacao == 2:
url = reverse('sapl.sessao:votacaonominal',
kwargs={
'pk': obj.sessao_plenaria_id,
'oid': obj.materia_id,
'mid': obj.pk})
elif obj.tipo_votacao == 3:
url = reverse('sapl.sessao:votacaosecreta',
kwargs={
'pk': obj.sessao_plenaria_id,
'oid': obj.materia_id,
'mid': obj.pk})
btn_registrar = '''
<a href="%s"
class="btn btn-primary"
role="button">Registrar Votação</a>''' % (url)
obj.resultado = btn_registrar
else:
url = reverse('sapl.sessao:abrir_votacao', kwargs={
'pk': obj.pk, 'spk': obj.sessao_plenaria_id})
btn_abrir = '''
Matéria não votada<br />
<a href="%s"
class="btn btn-primary"
role="button">Abrir Votação</a>''' % (url)
obj.resultado = btn_abrir
else:
url = ''
if obj.tipo_votacao == 1:
url = reverse('sapl.sessao:votacaosimbolicaedit',
kwargs={
'pk': obj.sessao_plenaria_id,
'oid': obj.materia_id,
'mid': obj.pk})
elif obj.tipo_votacao == 2:
url = reverse('sapl.sessao:votacaonominaledit',
kwargs={
'pk': obj.sessao_plenaria_id,
'oid': obj.materia_id,
'mid': obj.pk})
elif obj.tipo_votacao == 3:
url = reverse('sapl.sessao:votacaosecretaedit',
kwargs={
'pk': obj.sessao_plenaria_id,
'oid': obj.materia_id,
'mid': obj.pk})
obj.resultado = '<a href="%s">%s</a>' % (url,
obj.resultado)
return [self._as_row(obj) for obj in object_list]
class ExpedienteMateriaCrud(MasterDetailCrud):
model = ExpedienteMateria
parent_field = 'sessao_plenaria'
@ -135,7 +258,7 @@ class ExpedienteMateriaCrud(MasterDetailCrud):
role="button">Registrar Votação</a>''' % (url)
obj.resultado = btn_registrar
else:
url = reverse('sapl.sessao:abrir_votacao', kwargs={
url = reverse('sapl.sessao:abrir_votacao_exp', kwargs={
'pk': obj.pk, 'spk': obj.sessao_plenaria_id})
btn_abrir = '''
Matéria não votada<br />
@ -328,284 +451,6 @@ class PresencaOrdemDiaView(FormMixin,
return reverse('sapl.sessao:presencaordemdia', kwargs={'pk': pk})
class ListMateriaOrdemDiaView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/materia_ordemdia_list.html'
form_class = ListMateriaForm
def get(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
pk = self.kwargs['pk']
ordem = OrdemDia.objects.filter(sessao_plenaria_id=pk)
materias_ordem = []
for o in ordem:
ementa = o.observacao
titulo = o.materia
numero = o.numero_ordem
autoria = Autoria.objects.filter(materia_id=o.materia_id)
autor = [str(a.autor) for a in autoria]
mat = {'pk': pk,
'oid': o.materia_id,
'ordem_id': o.id,
'ementa': ementa,
'titulo': titulo,
'numero': numero,
'resultado': o.resultado,
'autor': autor,
'votacao_aberta': o.votacao_aberta,
'tipo_votacao': o.tipo_votacao
}
materias_ordem.append(mat)
sorted(materias_ordem, key=lambda x: x['numero'])
context.update({'materias_ordem': materias_ordem})
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
pk = self.kwargs['pk']
form = ListMateriaForm(request.POST)
# TODO: Existe uma forma de atualizar em lote de acordo
# com a forma abaixo, mas como setar o primeiro para "1"?
# OrdemDia.objects.filter(sessao_plenaria_id=pk)
# .order_by('numero_ordem').update(numero_ordem=3)
if 'materia_reorder' in request.POST:
ordens = OrdemDia.objects.filter(sessao_plenaria_id=pk)
ordem_num = 1
for o in ordens:
o.numero_ordem = ordem_num
o.save()
ordem_num += 1
elif 'abrir-votacao' in request.POST:
existe_votacao_aberta = OrdemDia.objects.filter(
sessao_plenaria_id=pk, votacao_aberta=True).exists()
if existe_votacao_aberta:
context = self.get_context_data(object=self.object)
form._errors = {'error_message': 'error_message'}
context.update({'form': form})
pk = self.kwargs['pk']
ordem = OrdemDia.objects.filter(sessao_plenaria_id=pk)
materias_ordem = []
for o in ordem:
ementa = o.observacao
titulo = o.materia
numero = o.numero_ordem
autoria = Autoria.objects.filter(materia_id=o.materia_id)
autor = [str(a.autor) for a in autoria]
mat = {'pk': pk,
'oid': o.materia_id,
'ordem_id': o.id,
'ementa': ementa,
'titulo': titulo,
'numero': numero,
'resultado': o.resultado,
'autor': autor,
'votacao_aberta': o.votacao_aberta,
'tipo_votacao': o.tipo_votacao
}
materias_ordem.append(mat)
sorted(materias_ordem, key=lambda x: x['numero'])
context.update({'materias_ordem': materias_ordem})
return self.render_to_response(context)
else:
ordem_id = request.POST['ordem_id']
ordem = OrdemDia.objects.get(id=ordem_id)
ordem.votacao_aberta = True
ordem.save()
return self.get(self, request, args, kwargs)
class MateriaOrdemDiaView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/materia_ordemdia.html'
form_class = MateriaOrdemDiaForm
def get(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
now = datetime.now()
tipo_materia = TipoMateriaLegislativa.objects.all()
data_sessao = now
tipo_sessao = TipoSessaoPlenaria.objects.all()
tipo_votacao = ExpedienteMateria.TIPO_VOTACAO_CHOICES
ano_materia = now.year
context.update({'data_sessao': data_sessao,
'tipo_sessao': tipo_sessao,
'tipo_materia': tipo_materia,
'tipo_votacao': tipo_votacao,
'ano_materia': ano_materia,
'error_message': '', })
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
form = MateriaOrdemDiaForm(request.POST)
if form.is_valid():
try:
materia = MateriaLegislativa.objects.get(
numero=request.POST['numero_materia'],
tipo_id=request.POST['tipo_materia'],
ano=request.POST['ano_materia'])
except ObjectDoesNotExist:
form._errors["error_message"] = ErrorList([u""])
context.update({'form': form})
return self.render_to_response(context)
# TODO: barrar matérias não existentes
# TODO: barrar criação de ordemdia para materias já incluídas
ordemdia = OrdemDia()
ordemdia.sessao_plenaria_id = self.object.id
ordemdia.materia_id = materia.id
ordemdia.numero_ordem = request.POST['numero_ordem']
ordemdia.data_ordem = datetime.now()
ordemdia.observacao = sub('&nbsp;', ' ',
strip_tags(request.POST['observacao']))
ordemdia.tipo_votacao = request.POST['tipo_votacao']
ordemdia.save()
return self.form_valid(form)
else:
return self.form_invalid(form)
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('sapl.sessao:materiaordemdia_list',
kwargs={'pk': pk})
class EditMateriaOrdemDiaView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/materia_ordemdia_edit.html'
form_class = MateriaOrdemDiaForm
def get(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
pk = kwargs['pk']
oid = kwargs['oid']
ordem = OrdemDia.objects.get(sessao_plenaria_id=pk, materia_id=oid)
materia = MateriaLegislativa.objects.get(
id=ordem.materia_id)
data_ordem = ordem.data_ordem
tipo_votacao = ExpedienteMateria.TIPO_VOTACAO_CHOICES
tipo_sessao = TipoSessaoPlenaria.objects.all()
tipo_materia = TipoMateriaLegislativa.objects.all()
context.update({'data_sessao': data_ordem,
'tipo_sessao': tipo_sessao,
'tipo_sessao_selected': self.object.tipo,
'tipo_materia': tipo_materia,
'tipo_materia_selected': materia.tipo,
'tipo_votacao': tipo_votacao,
'tipo_votacao_selected': ordem.tipo_votacao,
'ano_materia': materia.ano,
'numero_ordem': ordem.numero_ordem,
'numero_materia': materia.numero,
'ordem_id': oid,
'oid': '',
'observacao': sub(
'&nbsp;', ' ', strip_tags(ordem.observacao)),
'error_message': '', })
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
form = MateriaOrdemDiaForm(request.POST)
pk = kwargs['pk']
oid = kwargs['oid']
ordemdia = OrdemDia.objects.get(sessao_plenaria_id=pk, materia_id=oid)
if 'update-ordemdia' in request.POST:
if form.is_valid():
try:
materia = MateriaLegislativa.objects.get(
numero=request.POST['numero_materia'],
tipo_id=request.POST['tipo_materia'],
ano=request.POST['ano_materia'])
except ObjectDoesNotExist:
context.update(
{'error_message': _("Matéria inexistente!")})
return self.form_invalid(form)
ordemdia.materia_id = materia.id
ordemdia.numero_ordem = request.POST['numero_ordem']
ordemdia.tipo_votacao = request.POST['tipo_votacao']
obs = strip_tags(request.POST['observacao'])
ordemdia.observacao = sub('&nbsp;', ' ', obs)
ordemdia.save()
return self.form_valid(form)
else:
context = self.get_context_data(object=self.object)
pk = kwargs['pk']
oid = kwargs['oid']
ordem = OrdemDia.objects.get(
sessao_plenaria_id=pk,
materia_id=oid)
materia = MateriaLegislativa.objects.get(
id=ordem.materia_id)
data_ordem = ordem.data_ordem
tipo_votacao = ExpedienteMateria.TIPO_VOTACAO_CHOICES
tipo_sessao = TipoSessaoPlenaria.objects.all()
tipo_materia = TipoMateriaLegislativa.objects.all()
context.update({'data_sessao': data_ordem,
'tipo_sessao': tipo_sessao,
'tipo_sessao_selected': self.object.tipo,
'tipo_materia': tipo_materia,
'tipo_materia_selected': materia.tipo,
'tipo_votacao': tipo_votacao,
'tipo_votacao_selected': ordem.tipo_votacao,
'ano_materia': materia.ano,
'numero_ordem': ordem.numero_ordem,
'numero_materia': materia.numero,
'ordem_id': oid,
'oid': '',
'observacao': sub(
'&nbsp;', ' ',
strip_tags(ordem.observacao)),
'error_message': '', })
context.update({'form': form})
return self.render_to_response(context)
elif 'delete-ordemdia' in request.POST:
ordemdia.delete()
return self.form_valid(form)
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('sapl.sessao:materiaordemdia_list',
kwargs={'pk': pk})
class MesaView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/mesa.html'
form_class = MesaForm

12
sapl/templates/sessao/OrdemDia.html

@ -1,12 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<form method="post">
{% csrf_token %}
{{formset}}
<br />
<input type="submit" value="Submit" />
</form>
{% endblock detail_content %}

85
sapl/templates/sessao/expediente_ordemdia_list.html

@ -1,85 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% block detail_content %}
{% if form.errors %}
<div class="alert-box alert">
<ul>
{% for field in form %}
{% if field.errors %}
{% if field.label == 'votacao_aberta' %}
<li>Já existe uma matéria com a votação aberta!<br />
Para abrir outra, termine ou feche a votação existente!</li>
{% endif %}
{% endif %}
{% endfor %}
</ul>
</div>
{% endif %}
Matérias do Expediente
<table class="table table-striped table-bordered">
<thead class="thead-default">
<tr>
<th>Matéria</th>
<th>Ementa</th>
<th>Resultado da Votação</th>
</tr>
</thead>
{% for m in materias_ordem %}
<tr>
<td>
{{m.numero}} - <a href="{% url 'sapl.sessao:expedienteordemdia_edit' m.pk m.oid %}">{{m.titulo}}</a>
&nbsp;
</br>
<strong>Autor{{m.autor|length|pluralize:"es"}}</strong>: {{m.autor|join:', '}}
</td>
<td>{{m.ementa|safe}}</td>
<td>
{% if m.resultado %}
{% if m.tipo_votacao == 1 %}
<b><a href="{% url 'sapl.sessao:votacaosimbolicaexpedit' m.pk m.oid m.ordem_id %}">{{m.resultado}}</a></b>
{% elif m.tipo_votacao == 2 %}
<b><a href="{% url 'sapl.sessao:votacaonominalexpedit' m.pk m.oid m.ordem_id %}">{{m.resultado}}</a></b>
{% elif m.tipo_votacao == 3%}
<b><a href="{% url 'sapl.sessao:votacaosecretaexpedit' m.pk m.oid m.ordem_id %}">{{m.resultado}}</a></b>
{% endif %}
{% else %}
Matéria não votada <br />
{% if m.votacao_aberta %}
{% if m.tipo_votacao == 1 %}
<b><a href="{% url 'sapl.sessao:votacaosimbolicaexp' m.pk m.oid m.ordem_id %}">Registrar Votação</a></b>
{% elif m.tipo_votacao == 2 %}
<b><a href="{% url 'sapl.sessao:votacaonominalexp' m.pk m.oid m.ordem_id %}">Registrar Votação</a></b>
{% elif m.tipo_votacao == 3%}
<b><a href="{% url 'sapl.sessao:votacaosecretaexp' m.pk m.oid m.ordem_id %}">Registrar Votação</a></b>
{% endif %}
{% else %}
<form method="POST" action="{% url 'sapl.sessao:expedienteordemdia_list' object.pk %}">
{% csrf_token %}
<input type="hidden" name="error_message" id="error_message" />
<input type="hidden" id="ordem_id" name="ordem_id" value="{{ m.ordem_id }}">
<input type="submit" id="abrir-votacao" name="abrir-votacao" value="Abrir Votação" class="btn btn-primary">
</form>
{% endif %}
{% endif %}
</td>
</tr>
{% endfor %}
</table>
</br>
<form method="POST" action="{% url 'sapl.sessao:expedienteordemdia_list' object.pk %}">
{% csrf_token %}
<input type="hidden" name="error_message" id="error_message" />
<a href="{% url 'sapl.sessao:expedienteordemdia_create' object.pk %}" class="btn btn-primary">{% trans 'Adicionar Matérias' %}</a>
&nbsp;&nbsp;&nbsp;
<input type="submit" id="expediente_reorder" name="expediente_reorder" value="Reordenar Matérias do Expediente" class="btn btn-primary" />
&nbsp;&nbsp;&nbsp;
<input type="submit" id="incluir_varias" name="incluir_varias" value="Incluir Várias Matérias" class="btn btn-primary" />
</form>
{% endblock detail_content %}

27
sapl/templates/sessao/layouts.yaml

@ -11,20 +11,6 @@ SessaoPlenaria:
- upload_pauta upload_ata
- url_audio url_video
ExpedienteMateria:
{% trans 'Cadastro de Matérias do Expediente' %}:
- data_ordem tip_sessao_FIXME numero_ordem
- tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME
- tipo_votacao
- observacao
OrdemDia:
{% trans 'Cadastro de Matérias da Ordem do Dia' %}:
- data_ordem tip_sessao_FIXME numero_ordem
- tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME
- tipo_votacao
- observacao
TipoResultadoVotacao:
{% trans 'Tipo de Resultado da Votação' %}:
- nome
@ -55,12 +41,25 @@ ExpedienteMateria:
- tipo_votacao
- observacao
OrdemDia:
{% trans 'Matéria da Ordem do Dia' %}:
- data_ordem numero_ordem
- tipo_materia numero_materia ano_materia
- tipo_votacao
- observacao
ExpedienteMateriaDetail:
{% trans 'Matérias do Expediente' %}:
- materia
- tipo_votacao
- observacao
OrdemDiaDetail:
{% trans 'Matérias da Ordem do Dia' %}:
- materia
- tipo_votacao
- observacao
Bancada:
{% trans 'Bancada' %}:
- legislatura

76
sapl/templates/sessao/materia_ordemdia.html

@ -1,76 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% block detail_content %}
<div>
{{ error_message }}
</div>
{% 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 %}
{% if field.label == 'Matéria' %}
<li>Matéria inexistente!</li>
{% else %}
<li>O campo <b>{{field.label}}</b> é obrigatório!</li>
{% endif %}
{% endif %}
{% endfor %}
</ul>
</div>
{% endif %}
<form method="POST">
{% csrf_token %}
<input type="hidden" name="error_message" id="error_message" />
<div class="row">
<div class="col-md-4">Data da Sessão: <input type="text" value='{{data_sessao|date:"d/m/Y"}}' disabled class="form-control"/></div>
<input type="hidden" id="data_sessao" name="data_sessao" length="10" maxlength="10" value='{{data_sessao|date:"d/m/Y"}}' class="form-control"/>
<div class="col-md-4">
Tipo da Sessão: <select id="tipo_sessao" name="tipo_sessao" class="form-control">
<option value=""></option>
{% for tipo in tipo_sessao %}
<option value="{{tipo.id}}">{{tipo.nome}}</option>
{% endfor %}
</select>
</div>
<div class="col-md-4"> Número Ordem: <input type="text" id="numero_ordem" name="numero_ordem" class="form-control"/> </div>
</div>
<div class="row">
<div class="col-md-4">
Tipo Matéria:
<select id="tipo_materia" name="tipo_materia" class="form-control">
<option value=""></option>
{% for tipo in tipo_materia %}
<option value="{{tipo.id}}">{{tipo.descricao}}</option>
{% endfor %}
</select>
</div>
<div class="col-md-4">Número Matéria: <input type="text" id="numero_materia" name="numero_materia" class="form-control"/></div>
<div class="col-md-4">Ano Matéria: <input type="text" id="ano_materia" name="ano_materia" value="{{ano_materia}}" class="form-control"/></div>
</div>
<div class="row">
<div class="col-md-12">
Tipo Votação:
<select id="tipo_votacao" name="tipo_votacao" class="form-control">
<option value=""></option>
{% for id, descricao in tipo_votacao %}
<option value="{{id}}">{{descricao}}</option>
{% endfor %}
</select>
</div>
</div>
<div class="row">
<div class="col-md-12"> Ementa: <textarea id="observacao" name="observacao" cols="10" rows="10" class="form-control"></textarea> </div>
</div>
<input type="submit" value="Salvar" class="btn btn-primary" />
</form>
{% endblock detail_content %}

74
sapl/templates/sessao/materia_ordemdia_edit.html

@ -1,74 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<div>
{{ error_message }}
</div>
{% 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">
{% csrf_token %}
<div class="row">
<div class="col-md-4">Data da Sessão: <input type="text" value='{{ data_sessao|date:"d/m/Y" }}' disabled class="form-control"/></div>
<input type="hidden" id="data_sessao" name="data_sessao" length="10" maxlength="10" value='{{ data_sessao|date:"d/m/Y" }}' class="form-control"/>
<div class="col-md-4">
Tipo da Sessão: <select id="tipo_sessao" name="tipo_sessao" class="form-control">
<option value=""></option>
{% for tipo in tipo_sessao %}
<option value="{{ tipo.id }}" {% if tipo == tipo_sessao_selected %} selected {% endif %} >{{tipo.nome}}</option>
{% endfor %}
</select>
</div>
<div class="col-md-4"> Número Ordem: <input type="text" id="numero_ordem" name="numero_ordem" value="{{numero_ordem}}" class="form-control"/></div>
</div>
<div class="row">
<div class="col-md-4">
Tipo Matéria:
<select id="tipo_materia" name="tipo_materia" class="form-control">
<option value=""></option>
{% for tipo in tipo_materia %}
<option value="{{ tipo.id }}" {% if tipo == tipo_materia_selected %} selected {% endif %}>{{tipo.descricao}}</option>
{% endfor %}
</select>
</div>
<div class="col-md-4">Número Matéria: <input type="text" id="numero_materia" name="numero_materia" value="{{ numero_materia }}" class="form-control"/></div>
<div class="col-md-4">Ano Matéria: <input type="text" id="ano_materia" name="ano_materia" value="{{ ano_materia }}" class="form-control"/></div>
</div>
<div class="row">
<div class="col-md-12">
Tipo Votação:
<select id="tipo_votacao" name="tipo_votacao" class="form-control">
<option value=""></option>
{% for id, descricao in tipo_votacao %}
<option value="{{ id }}" {% if id == tipo_votacao_selected %} selected {% endif %}>{{descricao}}</option>
{% endfor %}
</select>
</div>
</div>
<div class="row">
<div class="col-md-12"> Ementa: <textarea id="observacao" name="observacao" cols="10" rows="10" class="form-control">{{observacao}}</textarea> </div>
</div>
<br />
<input type="submit" id="update-ordemdia" name="update-ordemdia" value="Salvar" class="btn btn-primary" />
<input type="submit" id="delete-ordemdia" name="delete-ordemdia" value="Remover" class="btn btn-danger" />
</form>
{% endblock detail_content %}

2
sapl/templates/sessao/subnav.yaml

@ -22,7 +22,7 @@
- title: {% trans 'Ordem do Dia' %}
children:
- title: {% trans 'Matérias Ordem do Dia' %}
url: materiaordemdia_list
url: ordemdia_list
- title: {% trans 'Presença Ordem do Dia' %}
url: presencaordemdia

Loading…
Cancel
Save