Browse Source

Fix #2927 - Matérias apenas lidas, mas não votadas

pull/2953/head
Cesar Carvalho 6 years ago
parent
commit
68b1b96f8f
  1. 37
      sapl/sessao/forms.py
  2. 1
      sapl/sessao/models.py
  3. 7
      sapl/sessao/urls.py
  4. 75
      sapl/sessao/views.py
  5. 19
      sapl/templates/sessao/expedientemateria_form.html
  6. 1
      sapl/templates/sessao/layouts.yaml
  7. 3
      sapl/templates/sessao/votacao/leitura_form.html

37
sapl/sessao/forms.py

@ -358,6 +358,8 @@ class ExpedienteMateriaForm(ModelForm):
initial=datetime.strftime(timezone.now(), '%d/%m/%Y'),
widget=forms.TextInput(attrs={'readonly': 'readonly'}))
apenas_leitura = forms.BooleanField(label='Apenas Leitura', required=False)
class Meta:
model = ExpedienteMateria
fields = ['data_ordem', 'numero_ordem', 'tipo_materia', 'observacao',
@ -493,7 +495,7 @@ class VotacaoForm(forms.Form):
resultado_votacao = forms.CharField(label='Resultado da Votação')
def clean(self):
cleaned_data = super(VotacaoForm, self).clean()
cleaned_data = super().clean()
if not self.is_valid():
return cleaned_data
@ -598,7 +600,7 @@ class AdicionarVariasMateriasFilterSet(MateriaLegislativaFilterSet):
]
def __init__(self, *args, **kwargs):
super(MateriaLegislativaFilterSet, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)
self.filters['tipo'].label = 'Tipo de Matéria'
self.filters['autoria__autor__tipo'].label = 'Tipo de Autor'
@ -1023,3 +1025,34 @@ class JustificativaAusenciaForm(ModelForm):
justificativa.materias_do_expediente.clear()
justificativa.materias_da_ordem_do_dia.clear()
return justificativa
class ExpedienteLeitura(forms.Form):
materia = forms.CharField(
label='Matéria',
widget=forms.TextInput(attrs={'readonly': 'readonly'}))
materia__ementa = forms.CharField(
label='Ementa',
widget=forms.TextInput(attrs={'readonly': 'readonly'}))
observacao = forms.CharField(required=False, label='Observação', widget=forms.Textarea,)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
row1 = to_row(
[('materia', 12)])
row2 = to_row(
[('materia__ementa', 12)])
row3 = to_row(
[('observacao', 12)])
self.helper = SaplFormHelper()
self.helper.form_method = 'POST'
self.helper.layout = Layout(
Fieldset(_('Leitura de Matéria'),
row1, row2, row3,
form_actions(label='Salvar'))
)

1
sapl/sessao/models.py

@ -303,6 +303,7 @@ class AbstractOrdemDia(models.Model):
(1, 'simbolica', 'Simbólica'),
(2, 'nominal', 'Nominal'),
(3, 'secreta', 'Secreta'),
(4, 'leitura', 'Leitura')
)
sessao_plenaria = models.ForeignKey(SessaoPlenaria,

7
sapl/sessao/urls.py

@ -34,7 +34,8 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
sessao_legislativa_legislatura_ajax,
VotacaoEmBlocoOrdemDia, VotacaoEmBlocoExpediente,
VotacaoEmBlocoSimbolicaView, VotacaoEmBlocoNominalView,
recuperar_nome_tipo_sessao)
recuperar_nome_tipo_sessao,
ExpedienteLeituraView)
from .apps import AppConfig
@ -192,4 +193,8 @@ urlpatterns = [
url(r'^sessao/mudar-ordem-materia-sessao/',
mudar_ordem_materia_sessao,
name='mudar_ordem_materia_sessao'),
url(r'^sessao/(?P<pk>\d+)/matexp/leitura/(?P<oid>\d+)/(?P<mid>\d+)$',
ExpedienteLeituraView.as_view(), name='leituraexp'),
]

75
sapl/sessao/views.py

@ -34,7 +34,7 @@ from sapl.materia.views import MateriaLegislativaPesquisaView
from sapl.parlamentares.models import (Filiacao, Legislatura, Mandato,
Parlamentar, SessaoLegislativa)
from sapl.sessao.apps import AppConfig
from sapl.sessao.forms import ExpedienteMateriaForm, OrdemDiaForm
from sapl.sessao.forms import ExpedienteMateriaForm, OrdemDiaForm, ExpedienteLeitura
from sapl.utils import show_results_filter_set, remover_acentos, get_client_ip
from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm,
@ -276,6 +276,13 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
'pk': obj.sessao_plenaria_id,
'oid': obj.pk,
'mid': obj.materia_id})
elif obj.tipo_votacao == 4:
url = reverse('sapl.sessao:leituraexp',
kwargs={
'pk': obj.sessao_plenaria_id,
'oid': obj.pk,
'mid': obj.materia_id})
else:
if obj.tipo_votacao == 1:
url = reverse('sapl.sessao:votacaosimbolica',
@ -295,13 +302,22 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
'pk': obj.sessao_plenaria_id,
'oid': obj.pk,
'mid': obj.materia_id})
if has_permission:
btn_registrar = '''
<form action="%s">
<input type="submit" class="btn btn-primary"
value="Registrar Votação" />
</form>''' % (
url)
if not obj.tipo_votacao == 4:
btn_registrar = '''
<form action="%s">
<input type="submit" class="btn btn-primary"
value="Registrar Votação" />
</form>''' % (
url)
else:
btn_registrar = '''
<form action="%s">
<input type="submit" class="btn btn-primary"
value="Registrar Leitura" />
</form>''' % (
url)
resultado = btn_registrar
else:
@ -319,12 +335,20 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
}) + '?tipo_materia=ordem'
if has_permission:
btn_abrir = '''
Matéria não votada<br />
<a href="%s"
class="btn btn-primary"
role="button">Abrir Votação</a>''' % (url)
resultado = btn_abrir
if not obj.tipo_votacao == 4:
btn_abrir = '''
Matéria não votada<br />
<a href="%s"
class="btn btn-primary"
role="button">Abrir Votação</a>''' % (url)
resultado = btn_abrir
else:
btn_abrir = '''
Matéria não lida<br />
<a href="%s"
class="btn btn-primary"
role="button">Abrir para Leitura</a>''' % (url)
resultado = btn_abrir
else:
resultado = '''Não há resultado'''
@ -4319,3 +4343,28 @@ class RetiradaPautaCrud(MasterDetailCrud):
class DeleteView(MasterDetailCrud.DeleteView):
pass
class ExpedienteLeituraView(FormView):
template_name = 'sessao/votacao/leitura_form.html'
form_class = ExpedienteLeitura
success_url = '/'
def get_initial(self):
initial = super().get_initial()
sessao = SessaoPlenaria.objects.get(id=self.kwargs['pk'])
expediente = ExpedienteMateria.objects.get(id=self.kwargs['oid'])
materia = MateriaLegislativa.objects.get(id=self.kwargs['mid'])
return {'materia': materia, 'materia__ementa':materia.ementa}
def form_valid(self, form):
expediente = ExpedienteMateria.objects.get(id=self.kwargs['oid'])
expediente.resultado = "Matéria lida"
expediente.votacao_aberta = False
expediente.save()
return super().form_valid(form)
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('sapl.sessao:expedientemateria_list',
kwargs={'pk': pk})

19
sapl/templates/sessao/expedientemateria_form.html

@ -32,11 +32,26 @@
});
}
}
var fields = ["#id_tipo_materia", "#id_numero_materia", "#id_ano_materia"]
var fields = ["#id_tipo_materia", "#id_numero_materia", "#id_ano_materia"];
for (i = 0; i < fields.length; i++) {
$(fields[i]).change(recuperar_materia);
}
recuperar_materia()
recuperar_materia();
$(document).ready(function(){
$("select[name='tipo_votacao']").children("option[value='4']").remove();
$('#id_apenas_leitura').change(function(event){
$('#div_id_tipo_votacao').toggle();
if($('#id_apenas_leitura').prop('checked')){
$("select[name='tipo_votacao']").append(new Option('Leitura', '4'));
$("select[name='tipo_votacao']").val('4');
}
else{
$("select[name='tipo_votacao']").children("option[value='4']").remove();
$("select[name='tipo_votacao']").val('1');
}
})
});
</script>
{% endblock %}

1
sapl/templates/sessao/layouts.yaml

@ -59,6 +59,7 @@ ExpedienteMateria:
- data_ordem numero_ordem
- tipo_materia numero_materia ano_materia
- tipo_votacao
- apenas_leitura
- observacao
OrdemDia:

3
sapl/templates/sessao/votacao/leitura_form.html

@ -0,0 +1,3 @@
{% extends "crud/form.html" %}
{% load i18n %}
Loading…
Cancel
Save