Browse Source

Fix #1801

pull/2260/head
Mariana Mendes 7 years ago
parent
commit
4c4376d1e9
  1. 16
      sapl/sessao/forms.py
  2. 5
      sapl/sessao/models.py
  3. 22
      sapl/sessao/views.py
  4. 7
      sapl/templates/sessao/justificativaausencia_create.html
  5. 7
      sapl/templates/sessao/justificativaausencia_detail.html
  6. 2
      sapl/templates/sessao/layouts.yaml

16
sapl/sessao/forms.py

@ -684,10 +684,20 @@ class JustificativaAusenciaForm(ModelForm):
class Meta: class Meta:
model = JustificativaAusencia model = JustificativaAusencia
fields = ['sessao_plenaria', 'tipo_ausencia', 'hora', fields = ['sessao_plenaria', 'tipo_ausencia', 'hora',
'data'] 'data', 'ausencia', 'parlamentar', 'observacao']
def __init__(self, **kwargs):
super(JustificativaAusenciaForm, self).__init__(**kwargs)
def clean(self): def clean(self):
super(JustificativaAusenciaForm, self).clean() cleaned_data = super(JustificativaAusenciaForm, self).clean()
if not self.is_valid(): if not self.is_valid():
return self.cleaned_data 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

5
sapl/sessao/models.py

@ -588,13 +588,14 @@ class JustificativaAusencia(models.Model):
) )
parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT)
sessao_plenaria = models.ForeignKey(SessaoPlenaria, 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, tipo_ausencia = models.ForeignKey(TipoJustificativa, on_delete=models.PROTECT,
verbose_name=_('Tipo')) verbose_name=_('Tipo'))
data = models.DateField(verbose_name=_('Data')) data = models.DateField(verbose_name=_('Data'))
hora = models.CharField( hora = models.CharField(
max_length=5, verbose_name=_('Horário (hh:mm)')) max_length=5, verbose_name=_('Horário (hh:mm)'))
observacao = models.CharField( observacao = models.TextField(
max_length=150, blank=True, verbose_name=_('Observação')) max_length=150, blank=True, verbose_name=_('Observação'))
ausencia = models.PositiveIntegerField( ausencia = models.PositiveIntegerField(
verbose_name=_('Ausente em'), choices=TIPO_AUSENCIA_CHOICES, default=1) verbose_name=_('Ausente em'), choices=TIPO_AUSENCIA_CHOICES, default=1)

22
sapl/sessao/views.py

@ -2919,9 +2919,8 @@ class JustificativaAusenciaCrud(MasterDetailCrud):
return self.render_to_response(context) return self.render_to_response(context)
class BaseMixin(MasterDetailCrud.BaseMixin): class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['sessao_plenaria', 'tipo_ausencia', 'hora', list_field_names = ['sessao_plenaria', 'ausencia','tipo_ausencia',
'data'] 'data' ]
ordering = 'sessao_plenaria', 'tipo_ausencia', 'data'
class ListView(MasterDetailCrud.ListView): class ListView(MasterDetailCrud.ListView):
paginate_by = 10 paginate_by = 10
@ -2930,11 +2929,11 @@ class JustificativaAusenciaCrud(MasterDetailCrud):
form_class = JustificativaAusenciaForm form_class = JustificativaAusenciaForm
def get_initial(self): def get_initial(self):
if self.sessao_plenaria.finalizada is None or \ sessao_plenaria = SessaoPlenaria.objects.get(id=self.kwargs['pk'])
not self.sessao_plenaria.finalizada: return {'sessao_plenaria': sessao_plenaria}
raise ValidationError(_('A Sessão deve estar finalizada para registrar as ausências'))
else: def form_valid(self, form):
return {'sessao_plenaria': self.sessao_plenaria} return super(MasterDetailCrud.CreateView, self).form_valid(form)
def get_success_url(self): def get_success_url(self):
return reverse('sapl.sessao:justificativaausencia_list', return reverse('sapl.sessao:justificativaausencia_list',
@ -2942,13 +2941,6 @@ class JustificativaAusenciaCrud(MasterDetailCrud):
class UpdateView(MasterDetailCrud.UpdateView): class UpdateView(MasterDetailCrud.UpdateView):
form_class = JustificativaAusenciaForm 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): class DeleteView(MasterDetailCrud.DeleteView):
pass pass

7
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 %}

7
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 %}

2
sapl/templates/sessao/layouts.yaml

@ -89,7 +89,7 @@ TipoJustificativa:
{% trans 'Tipo de Justificativa' %}: {% trans 'Tipo de Justificativa' %}:
- descricao - descricao
JustificativaAusenica: JustificativaAusencia:
{% trans 'Justificativa de Ausência' %}: {% trans 'Justificativa de Ausência' %}:
- sessao_plenaria parlamentar - sessao_plenaria parlamentar
- data hora - data hora

Loading…
Cancel
Save