diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 767726a97..e3d62c2bf 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -481,10 +481,13 @@ class ReceberProposicao(PermissionRequiredForAppCrudMixin, FormView): form = ReceberProposicaoForm(request.POST) if form.is_valid(): - proposicoes = Proposicao.objects.filter( - data_envio__isnull=False, data_recebimento__isnull=True) + try: + # A ultima parte do código deve ser a pk da Proposicao + id = form.cleaned_data["cod_hash"].split("/")[1] + proposicao = Proposicao.objects.get(id=id, + data_envio__isnull=False, + data_recebimento__isnull=True) - for proposicao in proposicoes: if proposicao.texto_articulado.exists(): ta = proposicao.texto_articulado.first() # FIXME hash para textos articulados @@ -492,7 +495,7 @@ class ReceberProposicao(PermissionRequiredForAppCrudMixin, FormView): else: hasher = gerar_hash_arquivo( proposicao.texto_original.path, - str(proposicao.pk)) \ + str(proposicao.id)) \ if proposicao.texto_original else None if hasher == form.cleaned_data['cod_hash']: return HttpResponseRedirect( @@ -500,8 +503,12 @@ class ReceberProposicao(PermissionRequiredForAppCrudMixin, FormView): kwargs={ 'hash': hasher.split('/')[0][1:], 'pk': proposicao.pk})) - - messages.error(request, _('Proposição não encontrada!')) + except ObjectDoesNotExist: + messages.error(request, _('Proposição não encontrada!')) + except IndexError: + messages.error(request, _('Código de recibo mal formado!')) + except IOError: + messages.error(request, _('Erro abrindo texto original de proposição')) return self.form_invalid(form) def get_success_url(self):