Improve next_url and previous_url calculation
Instead of calculating these values in the dispatch method, add new methods to calculate and insert the values of next_url and previous_url in the context. Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user