From f14dacef6373d37c8b28df75525d7d25af2c5cf0 Mon Sep 17 00:00:00 2001 From: Leandro Roberto Date: Fri, 2 Oct 2020 11:23:33 -0300 Subject: [PATCH] =?UTF-8?q?ajusta=20listagem=20e=20link=20para=20pend?= =?UTF-8?q?=C3=AAncia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/crud/base.py | 31 ++++++++++++++++++------------- sapl/norma/views.py | 13 ++++++++++++- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/sapl/crud/base.py b/sapl/crud/base.py index 3ec86b160..5306076a6 100644 --- a/sapl/crud/base.py +++ b/sapl/crud/base.py @@ -9,11 +9,11 @@ from django.conf.urls import url from django.contrib import messages from django.contrib.auth.mixins import PermissionRequiredMixin from django.core.exceptions import ObjectDoesNotExist -from django.urls import reverse from django.db import models from django.db.models.fields.related import ForeignKey, ManyToManyField from django.http.response import Http404 from django.shortcuts import redirect +from django.urls import reverse from django.utils.decorators import classonlymethod from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ @@ -29,6 +29,7 @@ from sapl.rules.map_rules import (RP_ADD, RP_CHANGE, RP_DELETE, RP_DETAIL, RP_LIST) from sapl.utils import normalize + logger = logging.getLogger(settings.BASE_DIR.name) ACTION_LIST, ACTION_CREATE, ACTION_DETAIL, ACTION_UPDATE, ACTION_DELETE = \ @@ -79,6 +80,7 @@ def make_pagination(index, num_pages): head = from_to(1, PAGINATION_LENGTH - len(tail) - 1) return head + [None] + tail + """ variáveis do crud: help_topic @@ -416,16 +418,18 @@ class CrudListView(PermissionRequiredContainerCrudMixin, ListView): for f in fn: if not f: continue - f = m._meta.get_field(f) - if hasattr(f, 'related_model') and f.related_model: - m = f.related_model - if f: - hook = 'hook_header_{}'.format(''.join(fn)) - if hasattr(self, hook): - header = getattr(self, hook)() - s.append(header) - else: - s.append(force_text(f.verbose_name)) + try: + f = m._meta.get_field(f) + if hasattr(f, 'related_model') and f.related_model: + m = f.related_model + except: + f = None + hook = 'hook_header_{}'.format(''.join(fn)) + if hasattr(self, hook): + header = getattr(self, hook)() + s.append(header) + elif f: + s.append(force_text(f.verbose_name)) s = ' / '.join(s) r.append(s) @@ -607,7 +611,8 @@ class CrudListView(PermissionRequiredContainerCrudMixin, ListView): # print(ordering) except Exception as e: - logger.warning(_(f"ERRO: construção da tupla de ordenação. {e}")) + logger.warning( + _(f"ERRO: construção da tupla de ordenação. {e}")) # print(queryset.query) if not self.request.user.is_authenticated: @@ -627,7 +632,7 @@ class AuditLogMixin(object): # Classe deve implementar um get_object(), i.e., deve ser uma View deleted_object = self.get_object() try: - return super(AuditLogMixin, self).delete(request, args, kwargs) + return super(AuditLogMixin, self).delete(request, args, kwargs) finally: post_delete_signal.send(sender=None, instance=deleted_object, diff --git a/sapl/norma/views.py b/sapl/norma/views.py index 4bcc95ecb..c53ac63a9 100644 --- a/sapl/norma/views.py +++ b/sapl/norma/views.py @@ -9,7 +9,9 @@ from django.http import HttpResponse, JsonResponse from django.http.response import HttpResponseRedirect from django.template import RequestContext, loader from django.urls import reverse +from django.urls.base import reverse_lazy from django.utils import timezone +from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ from django.views.generic import TemplateView, UpdateView from django.views.generic.base import RedirectView @@ -186,7 +188,7 @@ class NormaCrud(Crud): public = [RP_LIST, RP_DETAIL] class BaseMixin(Crud.BaseMixin): - list_field_names = ['tipo', 'numero', 'ano', 'ementa'] + list_field_names = ['epigrafe', 'ementa'] list_url = '' @@ -253,6 +255,15 @@ class NormaCrud(Crud): url = self.get_redirect_url(*args, **kwargs) return HttpResponseRedirect(url) + def hook_header_epigrafe(self, *args, **kwargs): + return force_text(_('Epigrafe')) + + def hook_epigrafe(self, obj, ss, url): + + return obj.epigrafe, reverse_lazy( + 'sapl.norma:norma_ta', + kwargs={'pk': obj.id}) + def get_redirect_url(self, *args, **kwargs): namespace = self.model._meta.app_config.name return reverse('%s:%s' % (namespace, 'norma_pesquisa'))