mixins.py
53 lines
| 1.4 KiB
| text/x-python
|
PythonLexer
neko259
|
r900 | PARAM_NEXT = 'next' | ||
neko259
|
r563 | PARAMETER_METHOD = 'method' | ||
neko259
|
r1854 | PARAMETER_CURRENT_PAGE = 'current_page' | ||
PARAMETER_PAGINATOR = 'paginator' | ||||
PARAMETER_PREV_LINK = 'prev_page_link' | ||||
PARAMETER_NEXT_LINK = 'next_page_link' | ||||
neko259
|
r563 | |||
neko259
|
r1997 | |||
neko259
|
r563 | class DispatcherMixin: | ||
""" | ||||
This class contains a dispather method that can run a method specified by | ||||
'method' request parameter. | ||||
""" | ||||
neko259
|
r1366 | def __init__(self): | ||
self.user = None | ||||
neko259
|
r566 | def dispatch_method(self, *args, **kwargs): | ||
request = args[0] | ||||
neko259
|
r1366 | self.user = request.user | ||
neko259
|
r566 | 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) | ||||
neko259
|
r1396 | |||
neko259
|
r1419 | class PaginatedMixin: | ||
neko259
|
r1854 | def get_page_context(self, paginator, page): | ||
""" | ||||
Get pagination context variables | ||||
""" | ||||
params = {} | ||||
params[PARAMETER_PAGINATOR] = paginator | ||||
current_page = paginator.page(int(page)) | ||||
params[PARAMETER_CURRENT_PAGE] = current_page | ||||
if current_page.has_previous(): | ||||
params[PARAMETER_PREV_LINK] = paginator.get_page_url( | ||||
current_page.previous_page_number()) | ||||
if current_page.has_next(): | ||||
params[PARAMETER_NEXT_LINK] = paginator.get_page_url( | ||||
current_page.next_page_number()) | ||||
return params | ||||