mixins.py
40 lines
| 1.1 KiB
| text/x-python
|
PythonLexer
neko259
|
r900 | PARAM_NEXT = 'next' | ||
neko259
|
r563 | PARAMETER_METHOD = 'method' | ||
from django.shortcuts import redirect | ||||
from django.http import HttpResponseRedirect | ||||
class RedirectNextMixin: | ||||
def redirect_to_next(self, request): | ||||
""" | ||||
If a 'next' parameter was specified, redirect to the next page. This | ||||
is used when the user is required to return to some page after the | ||||
current view has finished its work. | ||||
""" | ||||
neko259
|
r900 | if PARAM_NEXT in request.GET: | ||
next_page = request.GET[PARAM_NEXT] | ||||
neko259
|
r563 | return HttpResponseRedirect(next_page) | ||
else: | ||||
return redirect('index') | ||||
class DispatcherMixin: | ||||
""" | ||||
This class contains a dispather method that can run a method specified by | ||||
'method' request parameter. | ||||
""" | ||||
neko259
|
r566 | def dispatch_method(self, *args, **kwargs): | ||
request = args[0] | ||||
method_name = None | ||||
neko259
|
r563 | if PARAMETER_METHOD in request.GET: | ||
method_name = request.GET[PARAMETER_METHOD] | ||||
neko259
|
r566 | elif PARAMETER_METHOD in request.POST: | ||
method_name = request.POST[PARAMETER_METHOD] | ||||
neko259
|
r563 | |||
neko259
|
r566 | if method_name: | ||
return getattr(self, method_name)(*args, **kwargs) | ||||