From 7eade7d26a40f48105142adedd1d9807e5b60f25 Mon Sep 17 00:00:00 2001 From: "tapumar@gmail.com" Date: Tue, 6 Mar 2018 15:45:28 -0300 Subject: [PATCH 1/6] =?UTF-8?q?Fix=20protocola=C3=A7=C3=A3o=20de=20Materia?= =?UTF-8?q?=20Legislativa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/protocoloadm/forms.py | 2 ++ sapl/protocoloadm/views.py | 48 ++++++++++++++++++++++---------------- 2 files changed, 30 insertions(+), 20 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..17c1c9ab7 100644 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -289,17 +289,21 @@ class ProtocoloDocumentoView(PermissionRequiredMixin, return self.render_to_response(self.get_context_data()) 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')) f.tipo_processo = '0' # TODO validar o significado f.anulado = False @@ -414,7 +418,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 +434,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 +476,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)) From 90b89b4d2538f18e6e718d275787dccf1da804cc Mon Sep 17 00:00:00 2001 From: "tapumar@gmail.com" Date: Tue, 6 Mar 2018 16:08:22 -0300 Subject: [PATCH 2/6] Fix #1735 --- sapl/protocoloadm/views.py | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index 17c1c9ab7..331c00ff1 100644 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -277,8 +277,8 @@ class ProtocoloDocumentoView(PermissionRequiredMixin, kwargs={'pk': self.object.id}) def form_valid(self, form): - f = form.save(commit=False) - + protocolo = form.save(commit=False) + import ipdb; ipdb.set_trace() try: numeracao = sapl.base.models.AppConfig.objects.last( ).sequencia_numeracao @@ -288,8 +288,10 @@ 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 = MateriaLegislativa.objects.filter( + numero = DocumentoAdministrativo.objects.filter( ano=timezone.now().year, tipo=tipo).aggregate(Max('numero')) elif numeracao == 'L': legislatura = Legislatura.objects.filter( @@ -297,25 +299,25 @@ class ProtocoloDocumentoView(PermissionRequiredMixin, data_fim__year__gte=timezone.now().year).first() data_inicio = legislatura.data_inicio data_fim = legislatura.data_fim - numero = MateriaLegislativa.objects.filter( - data_apresentacao__gte=data_inicio, - data_apresentacao__lte=data_fim, + numero = DocumentoAdministrativo.objects.filter( + data__gte=data_inicio, + data__lte=data_fim, tipo=tipo).aggregate( Max('numero')) elif numeracao == 'U': - numero = MateriaLegislativa.objects.filter(tipo=tipo).aggregate(Max('numero')) + numero = DocumentoAdministrativo.objects.filter(tipo=tipo).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 + 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()) From a58c03e1154f4b07e4d9f174e58ad0d279ff84be Mon Sep 17 00:00:00 2001 From: "tapumar@gmail.com" Date: Tue, 6 Mar 2018 16:08:22 -0300 Subject: [PATCH 3/6] Fix #1735 --- sapl/protocoloadm/views.py | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index 17c1c9ab7..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,8 +287,10 @@ 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 = MateriaLegislativa.objects.filter( + numero = DocumentoAdministrativo.objects.filter( ano=timezone.now().year, tipo=tipo).aggregate(Max('numero')) elif numeracao == 'L': legislatura = Legislatura.objects.filter( @@ -297,25 +298,25 @@ class ProtocoloDocumentoView(PermissionRequiredMixin, data_fim__year__gte=timezone.now().year).first() data_inicio = legislatura.data_inicio data_fim = legislatura.data_fim - numero = MateriaLegislativa.objects.filter( - data_apresentacao__gte=data_inicio, - data_apresentacao__lte=data_fim, + numero = DocumentoAdministrativo.objects.filter( + data__gte=data_inicio, + data__lte=data_fim, tipo=tipo).aggregate( Max('numero')) elif numeracao == 'U': - numero = MateriaLegislativa.objects.filter(tipo=tipo).aggregate(Max('numero')) + numero = DocumentoAdministrativo.objects.filter(tipo=tipo).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 + 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()) From 4f32b4d654d9175b023d7fa76d75ce2bf03db91d Mon Sep 17 00:00:00 2001 From: "tapumar@gmail.com" Date: Wed, 7 Mar 2018 10:52:22 -0300 Subject: [PATCH 4/6] Fix protocolo duplicado #1735 --- sapl/protocoloadm/forms.py | 3 ++- sapl/protocoloadm/views.py | 35 +++++++++++++---------------------- 2 files changed, 15 insertions(+), 23 deletions(-) diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index fbac3cf6c..4f68478ce 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -372,7 +372,8 @@ class ProtocoloMateriaForm(ModelForm): vincular_materia = forms.ChoiceField(label=_('Vincular a matéria existente?'), widget=forms.RadioSelect(), - choices= YES_NO_CHOICES) + choices= YES_NO_CHOICES, + initial=False) numero_paginas = forms.CharField(label=_('Núm. Páginas'), required=True) diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index 7c3ea3107..90e4e3726 100644 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -287,24 +287,19 @@ 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 = DocumentoAdministrativo.objects.filter( - ano=timezone.now().year, tipo=tipo).aggregate(Max('numero')) + numero = Protocolo.objects.filter( + ano=timezone.now().year).aggregate(Max('numero')) elif numeracao == 'L': - legislatura = Legislatura.objects.filter( - data_inicio__year__lte=timezone.now().year, - data_fim__year__gte=timezone.now().year).first() + legislatura = Legislatura.objects.first() data_inicio = legislatura.data_inicio data_fim = legislatura.data_fim - numero = DocumentoAdministrativo.objects.filter( + numero = Protocolo.objects.filter( data__gte=data_inicio, - data__lte=data_fim, - tipo=tipo).aggregate( + data__lte=data_fim).aggregate( Max('numero')) elif numeracao == 'U': - numero = DocumentoAdministrativo.objects.filter(tipo=tipo).aggregate(Max('numero')) + numero = Protocolo.objects.filter().aggregate(Max('numero')) protocolo.tipo_processo = '0' # TODO validar o significado protocolo.anulado = False @@ -433,23 +428,19 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): tipo = form.cleaned_data['tipo_materia'] if tipo.sequencia_numeracao: numeracao = tipo.sequencia_numeracao - if numeracao == 'A': - numero = MateriaLegislativa.objects.filter( - ano=timezone.now().year, tipo=tipo).aggregate(Max('numero')) + numero = Protocolo.objects.filter( + ano=timezone.now().year).aggregate(Max('numero')) elif numeracao == 'L': - legislatura = Legislatura.objects.filter( - data_inicio__year__lte=timezone.now().year, - data_fim__year__gte=timezone.now().year).first() + legislatura = Legislatura.objects.first() data_inicio = legislatura.data_inicio data_fim = legislatura.data_fim - numero = MateriaLegislativa.objects.filter( - data_apresentacao__gte=data_inicio, - data_apresentacao__lte=data_fim, - tipo=tipo).aggregate( + numero = Protocolo.objects.filter( + data__gte=data_inicio, + data__lte=data_fim).aggregate( Max('numero')) elif numeracao == 'U': - numero = MateriaLegislativa.objects.filter(tipo=tipo).aggregate(Max('numero')) + numero = Protocolo.objects.filter().aggregate(Max('numero')) if numeracao is None: numero['numero__max'] = 0 From 365606983391f589e954c513c72e6ed6a4875adf Mon Sep 17 00:00:00 2001 From: "tapumar@gmail.com" Date: Wed, 7 Mar 2018 11:15:45 -0300 Subject: [PATCH 5/6] Fix #1735 --- sapl/protocoloadm/views.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index 90e4e3726..19b9dedf3 100644 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -423,11 +423,6 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): messages.add_message(self.request, messages.ERROR, msg) return self.render_to_response(self.get_context_data()) - # Se TipoMateriaLegislativa tem sequencia própria, - # então sobreescreve a sequência global - tipo = form.cleaned_data['tipo_materia'] - if tipo.sequencia_numeracao: - numeracao = tipo.sequencia_numeracao if numeracao == 'A': numero = Protocolo.objects.filter( ano=timezone.now().year).aggregate(Max('numero')) From 71d3849edb00747f2808abdace4c083757a27b65 Mon Sep 17 00:00:00 2001 From: "tapumar@gmail.com" Date: Wed, 7 Mar 2018 12:56:57 -0300 Subject: [PATCH 6/6] Fix --- sapl/protocoloadm/views.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index bdc1ef4a3..14ba66d0f 100644 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -289,7 +289,7 @@ class ProtocoloDocumentoView(PermissionRequiredMixin, if numeracao == 'A': numero = Protocolo.objects.filter( - ano=timezone.now().year, tipo=tipo).aggregate(Max('numero')) + ano=timezone.now().year).aggregate(Max('numero')) elif numeracao == 'L': legislatura = Legislatura.objects.filter( data_inicio__year__lte=timezone.now().year, @@ -301,7 +301,7 @@ class ProtocoloDocumentoView(PermissionRequiredMixin, data__lte=data_fim).aggregate( Max('numero')) elif numeracao == 'U': - numero = Protocolo.objects.filter().aggregate(Max('numero')) + numero = Protocolo.objects.all().aggregate(Max('numero')) protocolo.tipo_processo = '0' # TODO validar o significado protocolo.anulado = False @@ -427,7 +427,7 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): if numeracao == 'A': numero = Protocolo.objects.filter( - ano=timezone.now().year, tipo=tipo).aggregate(Max('numero')) + ano=timezone.now().year).aggregate(Max('numero')) elif numeracao == 'L': legislatura = Legislatura.objects.filter( data_inicio__year__lte=timezone.now().year, @@ -439,7 +439,7 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): data__lte=data_fim).aggregate( Max('numero')) elif numeracao == 'U': - numero = Protocolo.objects.filter().aggregate(Max('numero')) + numero = Protocolo.objects.all().aggregate(Max('numero')) if numeracao is None: numero['numero__max'] = 0