From 44accbc395482db35e993e142a57ab6c1b463ed6 Mon Sep 17 00:00:00 2001 From: Leandro Roberto Date: Fri, 3 Aug 2018 11:51:02 -0300 Subject: [PATCH] Fix #2088 --- sapl/compilacao/models.py | 9 ++++++++- sapl/compilacao/views.py | 12 ++++++++---- sapl/rules/apps.py | 4 ++-- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/sapl/compilacao/models.py b/sapl/compilacao/models.py index f677cf97a..6ffb738b1 100644 --- a/sapl/compilacao/models.py +++ b/sapl/compilacao/models.py @@ -69,8 +69,15 @@ class BaseModel(models.Model): def save(self, force_insert=False, force_update=False, using=None, update_fields=None, clean=True): - if clean: + # método clean não pode ser chamado no caso do save que está sendo + # executado é o save de revision_pre_delete_signal + import inspect + funcs = list(filter(lambda x: x == 'revision_pre_delete_signal', + map(lambda x: x[3], inspect.stack()))) + + if clean and not funcs: self.clean() + return models.Model.save( self, force_insert=force_insert, diff --git a/sapl/compilacao/views.py b/sapl/compilacao/views.py index fb905b589..0efa36be0 100644 --- a/sapl/compilacao/views.py +++ b/sapl/compilacao/views.py @@ -15,7 +15,7 @@ from django.db import connection, transaction from django.db.models import Q from django.db.utils import IntegrityError from django.http.response import (HttpResponse, HttpResponseRedirect, - JsonResponse) + JsonResponse, Http404) from django.shortcuts import get_object_or_404, redirect from django.utils.dateparse import parse_date from django.utils.encoding import force_text @@ -210,8 +210,12 @@ class CompMixin(PermissionRequiredMixin): @property def ta(self): - ta = TextoArticulado.objects.get( - pk=self.kwargs.get('ta_id', self.kwargs.get('pk', 0))) + try: + ta = TextoArticulado.objects.get( + pk=self.kwargs.get('ta_id', self.kwargs.get('pk', 0))) + except TextoArticulado.DoesNotExist: + raise Http404() + return ta def get_context_data(self, **kwargs): @@ -1488,7 +1492,7 @@ class ActionDeleteDispositivoMixin(ActionsCommonsMixin): if base == base_anterior: data['pk'] = base.pk self.set_message(data, 'danger', _( - 'Base Inicial não pode ser removida'), modal=True) + 'Base Inicial não pode ser removida!'), modal=True) else: if base != base.get_raiz(): data['pai'] = [base.get_raiz().pk] diff --git a/sapl/rules/apps.py b/sapl/rules/apps.py index 606190110..dbdfce8ce 100644 --- a/sapl/rules/apps.py +++ b/sapl/rules/apps.py @@ -1,15 +1,15 @@ from builtins import LookupError import django -import reversion from django.apps import apps from django.contrib.auth import get_user_model from django.contrib.auth.management import _get_all_permissions from django.core import exceptions from django.db import models, router from django.db.utils import DEFAULT_DB_ALIAS -from django.utils.translation import ugettext_lazy as _ from django.utils.translation import string_concat +from django.utils.translation import ugettext_lazy as _ +import reversion from sapl.rules import (SAPL_GROUP_ADMINISTRATIVO, SAPL_GROUP_COMISSOES, SAPL_GROUP_GERAL, SAPL_GROUP_MATERIA, SAPL_GROUP_NORMA,