From 3212c54efcd8ae62246f0ac7cad4b0dae2272121 Mon Sep 17 00:00:00 2001 From: VictorFabreF Date: Tue, 16 Oct 2018 11:45:17 -0300 Subject: [PATCH] [WIP] initial commit --- sapl/sessao/forms.py | 19 +++++++++++++++---- sapl/sessao/models.py | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index 2a31b60c3..ec72b1b5c 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -23,11 +23,11 @@ from sapl.parlamentares.models import Parlamentar, Legislatura, Mandato from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES, MateriaPesquisaOrderingFilter, autor_label, autor_modal, timezone) +from .models import (Bancada, Bloco, ExpedienteMateria, Orador, JustificativaAusencia, + OradorExpediente, OrdemDia, SessaoPlenaria, + SessaoPlenariaPresenca, TipoResultadoVotacao, OcorrenciaSessao, + RegistroVista) -from .models import (Bancada, Bloco, ExpedienteMateria, JustificativaAusencia, - Orador, OradorExpediente, OrdemDia, SessaoPlenaria, - SessaoPlenariaPresenca, TipoJustificativa, TipoResultadoVotacao, - OcorrenciaSessao) def recupera_anos(): @@ -191,6 +191,17 @@ class SessaoPlenariaForm(ModelForm): return self.cleaned_data +class RegistroVistaForm(ModelForm): + + parlamentar = forms.ModelChoiceField(required=True, + empty_label='------', + queryset=Parlamentar.objects.all()) + + class Meta: + model = RegistroVista + exclude = ['ordem', 'expediente', 'materia'] + + class BancadaForm(ModelForm): class Meta: diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index 6f07d9645..649958c6d 100644 --- a/sapl/sessao/models.py +++ b/sapl/sessao/models.py @@ -662,3 +662,43 @@ class JustificativaAusencia(models.Model): force_update=force_update, using=using, update_fields=update_fields) + +class RegistroVista(models.Model): + materia = models.ForeignKey(MateriaLegislativa, + on_delete=models.CASCADE) + ordem = models.ForeignKey(OrdemDia, + blank=True, + null=True, + on_delete=models.CASCADE) + expediente = models.ForeignKey(ExpedienteMateria, + blank=True, + null=True, + on_delete=models.CASCADE) + observacao = models.TextField(blank=True, + verbose_name=_('Observações')) + + parlamentar = models.ForeignKey(Parlamentar, + on_delete=models.PROTECT, + verbose_name=_('Requerente')) + + class Meta: + verbose_name = _('Pedido de Vista') + verbose_name_plural = _('Pedidos de Vista') + + def __str__(self): + return _('Ordem: %(ordem)s - Requerente: %(requerente)s - ' + 'Matéria: %(materia)s') % { + 'ordem': self.ordem, + 'requerente': self.parlamentar, + 'materia': self.materia} + + def clean(self): + """Exatamente um dos campos ordem ou expediente deve estar preenchido. + """ + # TODO remover esse método quando OrdemDia e ExpedienteMateria + # forem reestruturados e os campos ordem e expediente forem unificados + if not xor(bool(self.ordem), bool(self.expediente)): + raise ValidationError( + 'RegistroVotacao deve ter exatamente um dos campos ' + 'ordem ou expediente preenchido. Ambos estão preenchidos: ' + '{}, {}'. format(self.ordem, self.expediente))