diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index 830905adf..8a9d1f507 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -697,7 +697,7 @@ class JustificativaAusenciaForm(ModelForm): class Meta: model = JustificativaAusencia fields = ['sessao_plenaria', 'tipo_ausencia', 'hora', - 'data', 'ausencia', 'parlamentar', 'observacao'] + 'data', 'upload_anexo', 'ausencia', 'parlamentar', 'observacao'] def clean(self): cleaned_data = super(JustificativaAusenciaForm, self).clean() diff --git a/sapl/sessao/migrations/0024_auto_20181004_1126.py b/sapl/sessao/migrations/0027_auto_20181023_0843.py similarity index 88% rename from sapl/sessao/migrations/0024_auto_20181004_1126.py rename to sapl/sessao/migrations/0027_auto_20181023_0843.py index d13b874e8..4a86a3ce4 100644 --- a/sapl/sessao/migrations/0024_auto_20181004_1126.py +++ b/sapl/sessao/migrations/0027_auto_20181023_0843.py @@ -1,16 +1,17 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.9.13 on 2018-10-04 14:26 +# Generated by Django 1.9.13 on 2018-10-23 10:43 from __future__ import unicode_literals from django.db import migrations, models import django.db.models.deletion +import sapl.sessao.models class Migration(migrations.Migration): dependencies = [ ('parlamentares', '0025_auto_20180924_1724'), - ('sessao', '0023_auto_20180914_1315'), + ('sessao', '0026_auto_20181016_1944'), ] operations = [ @@ -22,6 +23,7 @@ class Migration(migrations.Migration): ('hora', models.CharField(max_length=5, verbose_name='Horário (hh:mm)')), ('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')), ('sessao_plenaria', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sessao.SessaoPlenaria', verbose_name='Sessão Plenária')), ], diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index a3864343a..019200e5a 100644 --- a/sapl/sessao/models.py +++ b/sapl/sessao/models.py @@ -614,10 +614,40 @@ class JustificativaAusencia(models.Model): max_length=150, blank=True, verbose_name=_('Observação')) ausencia = models.PositiveIntegerField( verbose_name=_('Ausente em'), choices=TIPO_AUSENCIA_CHOICES, default=1) + upload_anexo = models.FileField( + blank=True, + null=True, + upload_to=anexo_upload_path, + verbose_name=_('Anexo de Justificativa')) class Meta: verbose_name = _('Justificativa de Ausência') verbose_name_plural = _('Justificativas de Ausências') def __str__(self): - return 'Justificativa de Ausência' \ No newline at end of file + return 'Justificativa de Ausência' + + def delete(self, using=None, keep_parents=False): + if self.upload_anexo: + self.upload_anexo.delete() + + return models.Model.delete( + self, using=using, keep_parents=keep_parents) + + def save(self, force_insert=False, force_update=False, using=None, + update_fields=None): + + if not self.pk and self.upload_anexo: + upload_anexo = self.upload_anexo + self.upload_anexo = None + models.Model.save(self, force_insert=force_insert, + force_update=force_update, + using=using, + update_fields=update_fields) + + self.upload_anexo = upload_anexo + + return models.Model.save(self, force_insert=force_insert, + force_update=force_update, + using=using, + update_fields=update_fields) \ No newline at end of file diff --git a/sapl/templates/sessao/layouts.yaml b/sapl/templates/sessao/layouts.yaml index 965ed8e68..efdca7122 100644 --- a/sapl/templates/sessao/layouts.yaml +++ b/sapl/templates/sessao/layouts.yaml @@ -93,6 +93,7 @@ JustificativaAusencia: {% trans 'Justificativa de Ausência' %}: - parlamentar - data hora + - upload_anexo - tipo_ausencia - ausencia - observacao