From cd083f7430e4e88d0d86629aaf3f1948b83373c2 Mon Sep 17 00:00:00 2001 From: Talitha Pumar Date: Tue, 6 Mar 2018 16:23:10 -0300 Subject: [PATCH] Fix #1735 (#1736) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix protocolação de Materia Legislativa * Fix #1735 * Fix #1735 --- sapl/protocoloadm/forms.py | 2 + sapl/protocoloadm/views.py | 77 +++++++++++++++++++++----------------- 2 files changed, 45 insertions(+), 34 deletions(-) diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index 7d00d8090..fbac3cf6c 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -412,6 +412,8 @@ class ProtocoloMateriaForm(ModelForm): if self.is_valid(): if data['vincular_materia'] == 'True': try: + if not data['ano_materia'] or not data['numero_materia']: + raise ValidationError('Favor informar o número e ano da matéria a ser vinculada') self.materia = MateriaLegislativa.objects.get(ano=data['ano_materia'], numero=data['numero_materia'], tipo=data['tipo_materia']) diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index 47b875753..7c3ea3107 100644 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -277,8 +277,7 @@ class ProtocoloDocumentoView(PermissionRequiredMixin, kwargs={'pk': self.object.id}) def form_valid(self, form): - f = form.save(commit=False) - + protocolo = form.save(commit=False) try: numeracao = sapl.base.models.AppConfig.objects.last( ).sequencia_numeracao @@ -288,30 +287,36 @@ class ProtocoloDocumentoView(PermissionRequiredMixin, messages.add_message(self.request, messages.ERROR, msg) return self.render_to_response(self.get_context_data()) + tipo = form.cleaned_data['tipo_documento'] + if numeracao == 'A': - numero = Protocolo.objects.filter( - ano=timezone.now().year).aggregate(Max('numero')) + numero = DocumentoAdministrativo.objects.filter( + ano=timezone.now().year, tipo=tipo).aggregate(Max('numero')) elif numeracao == 'L': - legislatura = Legislatura.objects.first() + legislatura = Legislatura.objects.filter( + data_inicio__year__lte=timezone.now().year, + data_fim__year__gte=timezone.now().year).first() data_inicio = legislatura.data_inicio data_fim = legislatura.data_fim - numero = Protocolo.objects.filter( - data__gte=data_inicio, data__lte=data_fim).aggregate( - Max('numero')) + numero = DocumentoAdministrativo.objects.filter( + data__gte=data_inicio, + data__lte=data_fim, + tipo=tipo).aggregate( + Max('numero')) elif numeracao == 'U': - numero = Protocolo.objects.all().aggregate(Max('numero')) - - f.tipo_processo = '0' # TODO validar o significado - f.anulado = False - f.numero = (numero['numero__max'] + 1) if numero['numero__max'] else 1 - f.ano = timezone.now().year - f.data = timezone.now() - f.hora = timezone.now().time() - f.timestamp = timezone.now() - f.assunto_ementa = self.request.POST['assunto'] - - f.save() - self.object = f + numero = DocumentoAdministrativo.objects.filter(tipo=tipo).aggregate(Max('numero')) + + protocolo.tipo_processo = '0' # TODO validar o significado + protocolo.anulado = False + protocolo.numero = (numero['numero__max'] + 1) if numero['numero__max'] else 1 + protocolo.ano = timezone.now().year + protocolo.data = timezone.now() + protocolo.hora = timezone.now().time() + protocolo.timestamp = timezone.now() + protocolo.assunto_ementa = self.request.POST['assunto'] + + protocolo.save() + self.object = protocolo return redirect(self.get_success_url()) @@ -414,7 +419,6 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): 'pk': protocolo.pk}) def form_valid(self, form): - try: numeracao = sapl.base.models.AppConfig.objects.last( ).sequencia_numeracao @@ -431,17 +435,21 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): numeracao = tipo.sequencia_numeracao if numeracao == 'A': - numero = Protocolo.objects.filter( - ano=timezone.now().year).aggregate(Max('numero')) + numero = MateriaLegislativa.objects.filter( + ano=timezone.now().year, tipo=tipo).aggregate(Max('numero')) elif numeracao == 'L': - legislatura = Legislatura.objects.first() + legislatura = Legislatura.objects.filter( + data_inicio__year__lte=timezone.now().year, + data_fim__year__gte=timezone.now().year).first() data_inicio = legislatura.data_inicio data_fim = legislatura.data_fim - numero = Protocolo.objects.filter( - data__gte=data_inicio, data__lte=data_fim).aggregate( - Max('numero')) + numero = MateriaLegislativa.objects.filter( + data_apresentacao__gte=data_inicio, + data_apresentacao__lte=data_fim, + tipo=tipo).aggregate( + Max('numero')) elif numeracao == 'U': - numero = Protocolo.objects.all().aggregate(Max('numero')) + numero = MateriaLegislativa.objects.filter(tipo=tipo).aggregate(Max('numero')) if numeracao is None: numero['numero__max'] = 0 @@ -469,11 +477,12 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): protocolo.save() data = form.cleaned_data - materia = MateriaLegislativa.objects.get(ano=data['ano_materia'], - numero=data['numero_materia'], - tipo=data['tipo_materia']) - materia.numero_protocolo = protocolo.numero - materia.save() + if data['vincular_materia'] == 'True': + materia = MateriaLegislativa.objects.get(ano=data['ano_materia'], + numero=data['numero_materia'], + tipo=data['tipo_materia']) + materia.numero_protocolo = protocolo.numero + materia.save() return redirect(self.get_success_url(protocolo))