diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index 01f0c3636..e5f8576ed 100644 --- a/sapl/sessao/forms.py +++ b/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')) + ) \ No newline at end of file diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index 45ea22d8a..7b5743759 100644 --- a/sapl/sessao/models.py +++ b/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, diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py index 730469c29..686f08bea 100644 --- a/sapl/sessao/urls.py +++ b/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\d+)/matexp/leitura/(?P\d+)/(?P\d+)$', + ExpedienteLeituraView.as_view(), name='leituraexp'), + ] diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 60831f938..0504e8064 100755 --- a/sapl/sessao/views.py +++ b/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 = ''' -
- -
''' % ( - url) + if not obj.tipo_votacao == 4: + btn_registrar = ''' +
+ +
''' % ( + url) + else: + btn_registrar = ''' +
+ +
''' % ( + 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
- Abrir Votação''' % (url) - resultado = btn_abrir + if not obj.tipo_votacao == 4: + btn_abrir = ''' + Matéria não votada
+ Abrir Votação''' % (url) + resultado = btn_abrir + else: + btn_abrir = ''' + Matéria não lida
+ Abrir para Leitura''' % (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}) \ No newline at end of file diff --git a/sapl/templates/sessao/expedientemateria_form.html b/sapl/templates/sessao/expedientemateria_form.html index 60a547e54..e90ec63ff 100644 --- a/sapl/templates/sessao/expedientemateria_form.html +++ b/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'); + } + }) + }); {% endblock %} diff --git a/sapl/templates/sessao/layouts.yaml b/sapl/templates/sessao/layouts.yaml index 9f08885b8..911d6b9c9 100644 --- a/sapl/templates/sessao/layouts.yaml +++ b/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: diff --git a/sapl/templates/sessao/votacao/leitura_form.html b/sapl/templates/sessao/votacao/leitura_form.html new file mode 100644 index 000000000..66ca3ac69 --- /dev/null +++ b/sapl/templates/sessao/votacao/leitura_form.html @@ -0,0 +1,3 @@ +{% extends "crud/form.html" %} +{% load i18n %} +