diff --git a/HISTORY.rst b/HISTORY.rst index 037f18d59c..2e163e6e4e 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -245,6 +245,8 @@ * Remove the related attribute of check_access. * Remove filter_by_access. Replaced by restrict_queryset. * Move the user set password views to the authentication app. +* All views redirect to common's home view instead of the + REDIRECT_URL setting. 3.1.11 (2019-04-XX) =================== diff --git a/docs/releases/3.2.rst b/docs/releases/3.2.rst index cb13de0231..678817b4c9 100644 --- a/docs/releases/3.2.rst +++ b/docs/releases/3.2.rst @@ -287,6 +287,8 @@ Other changes - InterfaceWarning * Move the user set password views to the authentication app. +* All views redirect to common's home view instead of the + REDIRECT_URL setting. diff --git a/mayan/apps/common/mixins.py b/mayan/apps/common/mixins.py index 78b23f1054..dd99b68a25 100644 --- a/mayan/apps/common/mixins.py +++ b/mayan/apps/common/mixins.py @@ -1,10 +1,10 @@ from __future__ import unicode_literals -from django.conf import settings from django.contrib import messages from django.core.exceptions import ImproperlyConfigured, PermissionDenied from django.http import Http404, HttpResponseRedirect -from django.shortcuts import get_object_or_404, resolve_url +from django.shortcuts import get_object_or_404 +from django.urls import reverse from django.utils.translation import ungettext, ugettext_lazy as _ from django.views.generic.detail import SingleObjectMixin @@ -14,6 +14,7 @@ from mayan.apps.permissions import Permission from .exceptions import ActionError from .forms import DynamicForm from .literals import PK_LIST_SEPARATOR +from .settings import setting_home_view class DeleteExtraDataMixin(object): @@ -318,31 +319,10 @@ class ObjectPermissionCheckMixin(object): class RedirectionMixin(object): - post_action_redirect = None action_cancel_redirect = None - - def dispatch(self, request, *args, **kwargs): - post_action_redirect = self.get_post_action_redirect() - action_cancel_redirect = self.get_action_cancel_redirect() - - self.next_url = self.request.POST.get( - 'next', self.request.GET.get( - 'next', post_action_redirect if post_action_redirect else self.request.META.get( - 'HTTP_REFERER', resolve_url(settings.LOGIN_REDIRECT_URL) - ) - ) - ) - self.previous_url = self.request.POST.get( - 'previous', self.request.GET.get( - 'previous', action_cancel_redirect if action_cancel_redirect else self.request.META.get( - 'HTTP_REFERER', resolve_url(settings.LOGIN_REDIRECT_URL) - ) - ) - ) - - return super( - RedirectionMixin, self - ).dispatch(request, *args, **kwargs) + next_url = None + previous_url = None + post_action_redirect = None def get_action_cancel_redirect(self): return self.action_cancel_redirect @@ -351,8 +331,8 @@ class RedirectionMixin(object): context = super(RedirectionMixin, self).get_context_data(**kwargs) context.update( { - 'next': self.next_url, - 'previous': self.previous_url + 'next': self.get_next_url(), + 'previous': self.get_previous_url() } ) @@ -361,8 +341,36 @@ class RedirectionMixin(object): def get_post_action_redirect(self): return self.post_action_redirect + def get_next_url(self): + if self.next_url: + return self.next_url + else: + post_action_redirect = self.get_post_action_redirect() + + return self.request.POST.get( + 'next', self.request.GET.get( + 'next', post_action_redirect if post_action_redirect else self.request.META.get( + 'HTTP_REFERER', reverse(setting_home_view.value) + ) + ) + ) + + def get_previous_url(self): + if self.previous_url: + return self.previous_url + else: + action_cancel_redirect = self.get_action_cancel_redirect() + + return self.request.POST.get( + 'previous', self.request.GET.get( + 'previous', action_cancel_redirect if action_cancel_redirect else self.request.META.get( + 'HTTP_REFERER', reverse(setting_home_view.value) + ) + ) + ) + def get_success_url(self): - return self.next_url or self.previous_url + return self.get_next_url() or self.get_previous_url() class RestrictedQuerysetMixin(object): diff --git a/mayan/apps/common/views.py b/mayan/apps/common/views.py index 9f0750a0e6..72f354f0e8 100644 --- a/mayan/apps/common/views.py +++ b/mayan/apps/common/views.py @@ -6,9 +6,9 @@ from django.conf import settings from django.contrib import messages from django.contrib.contenttypes.models import ContentType from django.http import HttpResponseRedirect -from django.shortcuts import get_object_or_404, resolve_url +from django.shortcuts import get_object_or_404 from django.template import RequestContext -from django.urls import reverse_lazy +from django.urls import reverse, reverse_lazy from django.utils import timezone, translation from django.utils.http import urlencode from django.utils.translation import ugettext_lazy as _ @@ -235,7 +235,7 @@ def multi_object_action_view(request): next = request.POST.get( 'next', request.GET.get( 'next', request.META.get( - 'HTTP_REFERER', resolve_url(settings.LOGIN_REDIRECT_URL) + 'HTTP_REFERER', reverse(setting_home_view.value) ) ) ) @@ -254,7 +254,7 @@ def multi_object_action_view(request): ) return HttpResponseRedirect( redirect_to=request.META.get( - 'HTTP_REFERER', resolve_url(settings.LOGIN_REDIRECT_URL) + 'HTTP_REFERER', reverse(setting_home_view.value) ) ) @@ -265,7 +265,7 @@ def multi_object_action_view(request): ) return HttpResponseRedirect( redirect_to=request.META.get( - 'HTTP_REFERER', resolve_url(settings.LOGIN_REDIRECT_URL) + 'HTTP_REFERER', reverse(setting_home_view.value) ) ) diff --git a/mayan/apps/documents/views/document_page_views.py b/mayan/apps/documents/views/document_page_views.py index 1ee6d7de91..77b3715a9d 100644 --- a/mayan/apps/documents/views/document_page_views.py +++ b/mayan/apps/documents/views/document_page_views.py @@ -2,9 +2,8 @@ from __future__ import absolute_import, unicode_literals import logging -from django.conf import settings from django.contrib import messages -from django.shortcuts import get_object_or_404, resolve_url +from django.shortcuts import get_object_or_404 from django.urls import reverse from django.utils.http import urlencode from django.utils.six.moves.urllib.parse import parse_qs, urlparse @@ -13,6 +12,7 @@ from django.views.generic import RedirectView from mayan.apps.acls.models import AccessControlList from mayan.apps.common.generics import SimpleView, SingleObjectListView +from mayan.apps.common.settings import setting_home_view from mayan.apps.common.utils import resolve from mayan.apps.converter.literals import DEFAULT_ROTATION, DEFAULT_ZOOM_LEVEL @@ -79,9 +79,7 @@ class DocumentPageNavigationBase(RedirectView): def get_redirect_url(self, *args, **kwargs): parse_result = urlparse( self.request.META.get( - 'HTTP_REFERER', resolve_url( - settings.LOGIN_REDIRECT_URL - ) + 'HTTP_REFERER', reverse(setting_home_view.value) ) )