diff --git a/mayan/apps/common/mixins.py b/mayan/apps/common/mixins.py index 0f62a23919..26e9278a78 100644 --- a/mayan/apps/common/mixins.py +++ b/mayan/apps/common/mixins.py @@ -374,31 +374,10 @@ class ObjectNameMixin(object): class RedirectionMixin(object): action_cancel_redirect = None + next_url = None + previous_url = None post_action_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', reverse(setting_home_view.value) - ) - ) - ) - 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', reverse(setting_home_view.value) - ) - ) - ) - - return super( - RedirectionMixin, self - ).dispatch(request, *args, **kwargs) - def get_action_cancel_redirect(self): return self.action_cancel_redirect @@ -406,8 +385,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() } ) @@ -416,8 +395,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):