diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index 8a9d1f507..143b87bfd 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -18,7 +18,7 @@ from sapl.materia.models import (MateriaLegislativa, StatusTramitacao, from sapl.parlamentares.models import Parlamentar, Legislatura, Mandato from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES, MateriaPesquisaOrderingFilter, autor_label, - autor_modal, timezone) + ausencia_expediente, ausencia_ordem, autor_modal, timezone) from .models import (Bancada, Bloco, ExpedienteMateria, JustificativaAusencia, Orador, OradorExpediente, OrdemDia, SessaoPlenaria, @@ -699,6 +699,34 @@ class JustificativaAusenciaForm(ModelForm): fields = ['sessao_plenaria', 'tipo_ausencia', 'hora', 'data', 'upload_anexo', 'ausencia', 'parlamentar', 'observacao'] + def __init__(self, *args, **kwargs): + + row1 = to_row( + [('parlamentar', 12)]) + row2 = to_row( + [('data', 6), + ('hora', 6)]) + row3 = to_row( + [('anexo', 6)]) + row4 = to_row( + [('tipo_ausencia', 6)]) + row5 = to_row( + [('ausencia', 6)]) + row6 = to_row( + [('observacao', 12)]) + + self.form.helper = FormHelper() + self.form.helper.layout = Layout( + Fieldset(_('Justificativa de Ausência'), + row1, row2, row3, + row4, row5, + HTML(ausencia_expediente), + HTML(ausencia_ordem), + row6,) + ) + super(JustificativaAusenciaForm, self).__init__( + *args, **kwargs) + def clean(self): cleaned_data = super(JustificativaAusenciaForm, self).clean() @@ -710,4 +738,7 @@ class JustificativaAusenciaForm(ModelForm): if not sessao_plenaria.finalizada or sessao_plenaria.finalizada is None: raise ValidationError("A sessão deve está finalizada para registrar uma Ausência") else: - return cleaned_data \ No newline at end of file + return self.cleaned_data + + + diff --git a/sapl/sessao/migrations/0027_auto_20181023_0843.py b/sapl/sessao/migrations/0027_auto_20181023_1126.py similarity index 94% rename from sapl/sessao/migrations/0027_auto_20181023_0843.py rename to sapl/sessao/migrations/0027_auto_20181023_1126.py index 4a86a3ce4..9d5299154 100644 --- a/sapl/sessao/migrations/0027_auto_20181023_0843.py +++ b/sapl/sessao/migrations/0027_auto_20181023_1126.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.9.13 on 2018-10-23 10:43 +# Generated by Django 1.9.13 on 2018-10-23 13:26 from __future__ import unicode_literals from django.db import migrations, models @@ -24,7 +24,7 @@ class Migration(migrations.Migration): ('observacao', models.TextField(blank=True, max_length=150, verbose_name='Observação')), ('ausencia', models.PositiveIntegerField(choices=[(1, 'Matéria'), (2, 'Sessão')], default=1, verbose_name='Ausente em')), ('upload_anexo', models.FileField(blank=True, null=True, upload_to=sapl.sessao.models.anexo_upload_path, verbose_name='Anexo de Justificativa')), - ('parlamentar', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='parlamentares.Parlamentar')), + ('parlamentar', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='parlamentares.Parlamentar', verbose_name='Parlamentar')), ('sessao_plenaria', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sessao.SessaoPlenaria', verbose_name='Sessão Plenária')), ], options={ diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index 019200e5a..f1a9365a3 100644 --- a/sapl/sessao/models.py +++ b/sapl/sessao/models.py @@ -601,7 +601,8 @@ class JustificativaAusencia(models.Model): (1, 'materia', 'Matéria'), (2, 'sessao', 'Sessão'), ) - parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) + parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT, + verbose_name=_('Parlamentar')) sessao_plenaria = models.ForeignKey(SessaoPlenaria, on_delete=models.CASCADE, verbose_name=_('Sessão Plenária')) diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index b9caeac87..611528155 100644 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -2964,46 +2964,45 @@ class JustificativaAusenciaCrud(MasterDetailCrud): model = JustificativaAusencia public = [RP_LIST, RP_DETAIL, ] parent_field = 'sessao_plenaria' + template_name = 'sessao/justificativaausencia_create.html' + class BaseMixin(MasterDetailCrud.BaseMixin): + list_field_names = ['parlamentar', 'sessao_plenaria', 'ausencia','tipo_ausencia', + 'data' ] - def get(self, request, *args, **kwargs): - self.object = self.get_object() - context = self.get_context_data(object=self.object) - - presencas = SessaoPlenariaPresenca.objects.filter( - sessao_plenaria_id=self.object.id - ).order_by('parlamentar__nome_parlamentar') + class ListView(MasterDetailCrud.ListView): + paginate_by = 10 - parlamentares_sessao = [p.parlamentar for p in presencas] + class CreateView(MasterDetailCrud.CreateView): + form_class = JustificativaAusenciaForm - context.update({'presenca_sessao': parlamentares_sessao}) + def get_context_data(self, **kwargs): - expedientes = ExpedienteMateria.objects.filter( - sessao_plenaria_id=self.object.id) + context = super().get_context_data(**kwargs) - expedientes_materia = [e.materia for e in expedientes] + presencas = SessaoPlenariaPresenca.objects.filter( + sessao_plenaria_id=kwargs['root_pk'] + ).order_by('parlamentar__nome_parlamentar') - context.update({'expedientes': expedientes}) + parlamentares_sessao = [p.parlamentar for p in presencas] - ordens = OrdemDia.objects.filter( - sessao_plenaria_id=self.object.id) + context.update({'presenca_sessao': parlamentares_sessao}) - ordem_materia = [o.materia for o in ordens] + expedientes = ExpedienteMateria.objects.filter( + sessao_plenaria_id=kwargs['root_pk']) - context.update({'ordens': ordens}) + expedientes_materia = [e.materia for e in expedientes] - return self.render_to_response(context) + context.update({'expedientes': expedientes}) - class BaseMixin(MasterDetailCrud.BaseMixin): - list_field_names = ['sessao_plenaria', 'ausencia','tipo_ausencia', - 'data' ] + ordens = OrdemDia.objects.filter( + sessao_plenaria_id=kwargs['root_pk']) - class ListView(MasterDetailCrud.ListView): - paginate_by = 10 + ordem_materia = [o.materia for o in ordens] - class CreateView(MasterDetailCrud.CreateView): - form_class = JustificativaAusenciaForm - template_name = 'sessao/justificativaausencia_create.html' + context.update({'ordens': ordens}) + + return context def get_initial(self): sessao_plenaria = SessaoPlenaria.objects.get(id=self.kwargs['pk']) @@ -3014,6 +3013,7 @@ class JustificativaAusenciaCrud(MasterDetailCrud): kwargs={'pk': self.kwargs['pk']}) class UpdateView(MasterDetailCrud.UpdateView): + form_class = JustificativaAusenciaForm class DeleteView(MasterDetailCrud.DeleteView): diff --git a/sapl/templates/sessao/justificativaausencia_create.html b/sapl/templates/sessao/justificativaausencia_create.html index f7c2b6c66..f8ebd0979 100644 --- a/sapl/templates/sessao/justificativaausencia_create.html +++ b/sapl/templates/sessao/justificativaausencia_create.html @@ -1,34 +1,26 @@ {% extends "crud/detail.html" %} {% load i18n %} {% load crispy_forms_tags %} -{% load common_tags %} -{% block actions %}{% endblock %} {% block detail_content %} {% crispy form %} - -
- {% csrf_token %} -
-
{{ expedientes_materia }}
-
{% endblock detail_content %} {% block extra_js %} - + }); + {% endblock %} \ No newline at end of file diff --git a/sapl/templates/sessao/justificativaausencia_detail.html b/sapl/templates/sessao/justificativaausencia_edit.html similarity index 81% rename from sapl/templates/sessao/justificativaausencia_detail.html rename to sapl/templates/sessao/justificativaausencia_edit.html index 9682c56d5..28955d18e 100644 --- a/sapl/templates/sessao/justificativaausencia_detail.html +++ b/sapl/templates/sessao/justificativaausencia_edit.html @@ -1,7 +1,6 @@ {% extends "crud/detail.html" %} {% load i18n %} {% load crispy_forms_tags %} -{% block actions %}{% endblock %} {% block detail_content %} {% crispy form %} {% endblock detail_content %} diff --git a/sapl/utils.py b/sapl/utils.py index 257489321..2ed5844e0 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -87,6 +87,31 @@ autor_modal = ''' ''' +ausencia_expediente = ''' +
+ {% for e in expedientes %} +
+ +
+ {% endfor %} +
+''' + +ausencia_ordem = ''' +
+ {% for o in ordens %} +
+ +
+ {% endfor %} +
+''' def montar_row_autor(name): autor_row = to_row(