diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index 1bf358987..10dd792a6 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -684,10 +684,20 @@ class JustificativaAusenciaForm(ModelForm): class Meta: model = JustificativaAusencia fields = ['sessao_plenaria', 'tipo_ausencia', 'hora', - 'data'] + 'data', 'ausencia', 'parlamentar', 'observacao'] + + def __init__(self, **kwargs): + super(JustificativaAusenciaForm, self).__init__(**kwargs) def clean(self): - super(JustificativaAusenciaForm, self).clean() + cleaned_data = super(JustificativaAusenciaForm, self).clean() if not self.is_valid(): - return self.cleaned_data \ No newline at end of file + return self.cleaned_data + + sessao_plenaria = cleaned_data['sessao_plenaria'] + + 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 diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index 697e96dc0..ffb0f064e 100644 --- a/sapl/sessao/models.py +++ b/sapl/sessao/models.py @@ -588,13 +588,14 @@ class JustificativaAusencia(models.Model): ) parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) sessao_plenaria = models.ForeignKey(SessaoPlenaria, - on_delete=models.CASCADE) + on_delete=models.CASCADE, + verbose_name=_('Sessão Plenárias')) tipo_ausencia = models.ForeignKey(TipoJustificativa, on_delete=models.PROTECT, verbose_name=_('Tipo')) data = models.DateField(verbose_name=_('Data')) hora = models.CharField( max_length=5, verbose_name=_('Horário (hh:mm)')) - observacao = models.CharField( + observacao = models.TextField( max_length=150, blank=True, verbose_name=_('Observação')) ausencia = models.PositiveIntegerField( verbose_name=_('Ausente em'), choices=TIPO_AUSENCIA_CHOICES, default=1) diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index ce94b34fd..6c39b93c1 100644 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -2919,9 +2919,8 @@ class JustificativaAusenciaCrud(MasterDetailCrud): return self.render_to_response(context) class BaseMixin(MasterDetailCrud.BaseMixin): - list_field_names = ['sessao_plenaria', 'tipo_ausencia', 'hora', - 'data'] - ordering = 'sessao_plenaria', 'tipo_ausencia', 'data' + list_field_names = ['sessao_plenaria', 'ausencia','tipo_ausencia', + 'data' ] class ListView(MasterDetailCrud.ListView): paginate_by = 10 @@ -2930,11 +2929,11 @@ class JustificativaAusenciaCrud(MasterDetailCrud): form_class = JustificativaAusenciaForm def get_initial(self): - if self.sessao_plenaria.finalizada is None or \ - not self.sessao_plenaria.finalizada: - raise ValidationError(_('A Sessão deve estar finalizada para registrar as ausências')) - else: - return {'sessao_plenaria': self.sessao_plenaria} + sessao_plenaria = SessaoPlenaria.objects.get(id=self.kwargs['pk']) + return {'sessao_plenaria': sessao_plenaria} + + def form_valid(self, form): + return super(MasterDetailCrud.CreateView, self).form_valid(form) def get_success_url(self): return reverse('sapl.sessao:justificativaausencia_list', @@ -2942,13 +2941,6 @@ class JustificativaAusenciaCrud(MasterDetailCrud): class UpdateView(MasterDetailCrud.UpdateView): form_class = JustificativaAusenciaForm - - def get_initial(self): - if self.sessao_plenaria.finalizada is None or \ - not self.sessao_plenaria.finalizada: - raise ValidationError(_('A Sessão deve estar finalizada para editar as ausências')) - else: - return {'sessao_plenaria': self.sessao_plenaria} class DeleteView(MasterDetailCrud.DeleteView): pass diff --git a/sapl/templates/sessao/justificativaausencia_create.html b/sapl/templates/sessao/justificativaausencia_create.html new file mode 100644 index 000000000..9682c56d5 --- /dev/null +++ b/sapl/templates/sessao/justificativaausencia_create.html @@ -0,0 +1,7 @@ +{% 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/templates/sessao/justificativaausencia_detail.html b/sapl/templates/sessao/justificativaausencia_detail.html new file mode 100644 index 000000000..9682c56d5 --- /dev/null +++ b/sapl/templates/sessao/justificativaausencia_detail.html @@ -0,0 +1,7 @@ +{% 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/templates/sessao/layouts.yaml b/sapl/templates/sessao/layouts.yaml index 9b5ea9045..8e11e7657 100644 --- a/sapl/templates/sessao/layouts.yaml +++ b/sapl/templates/sessao/layouts.yaml @@ -89,7 +89,7 @@ TipoJustificativa: {% trans 'Tipo de Justificativa' %}: - descricao -JustificativaAusenica: +JustificativaAusencia: {% trans 'Justificativa de Ausência' %}: - sessao_plenaria parlamentar - data hora