Make list mode code its own mixin

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2018-12-26 05:59:31 -04:00
parent 43691de6b7
commit 5a90d76005
2 changed files with 30 additions and 15 deletions

View File

@@ -34,8 +34,8 @@ from .literals import (
)
from .mixins import (
DeleteExtraDataMixin, DynamicFormViewMixin, ExtraContextMixin,
FormExtraKwargsMixin, MultipleObjectMixin, ObjectActionMixin,
ObjectListPermissionFilterMixin, ObjectNameMixin,
FormExtraKwargsMixin, ListModeMixin, MultipleObjectMixin,
ObjectActionMixin, ObjectListPermissionFilterMixin, ObjectNameMixin,
ObjectPermissionCheckMixin, RedirectionMixin, ViewPermissionCheckMixin
)
from .settings import setting_paginate_by
@@ -503,7 +503,7 @@ class SingleObjectDynamicFormEditView(DynamicFormViewMixin, SingleObjectEditView
pass
class SingleObjectListView(PaginationMixin, ViewPermissionCheckMixin, ObjectListPermissionFilterMixin, ExtraContextMixin, RedirectionMixin, ListView):
class SingleObjectListView(ListModeMixin, PaginationMixin, ViewPermissionCheckMixin, ObjectListPermissionFilterMixin, ExtraContextMixin, RedirectionMixin, ListView):
template_name = 'appearance/generic_list.html'
def __init__(self, *args, **kwargs):
@@ -522,18 +522,8 @@ class SingleObjectListView(PaginationMixin, ViewPermissionCheckMixin, ObjectList
def get_context_data(self, **kwargs):
context = super(SingleObjectListView, self).get_context_data(**kwargs)
if context.get(TEXT_LIST_AS_ITEMS_VARIABLE_NAME):
default_mode = TEXT_CHOICE_ITEMS
else:
default_mode = TEXT_CHOICE_LIST
list_mode = self.request.GET.get(
TEXT_LIST_AS_ITEMS_PARAMETER, default_mode
)
context.update(
{
TEXT_LIST_AS_ITEMS_VARIABLE_NAME: list_mode == TEXT_CHOICE_ITEMS,
TEXT_SORT_FIELD_VARIABLE_NAME: self.get_sort_field(),
TEXT_SORT_ORDER_VARIABLE_NAME: self.get_sort_order(),
'icon_sort': self.get_sort_icon(),

View File

@@ -14,11 +14,15 @@ from mayan.apps.permissions import Permission
from .exceptions import ActionError
from .forms import DynamicForm
from .literals import (
TEXT_CHOICE_ITEMS, TEXT_CHOICE_LIST, TEXT_LIST_AS_ITEMS_PARAMETER,
TEXT_LIST_AS_ITEMS_VARIABLE_NAME
)
__all__ = (
'DeleteExtraDataMixin', 'DynamicFormViewMixin', 'ExtraContextMixin',
'FormExtraKwargsMixin', 'MultipleObjectMixin', 'ObjectActionMixin',
'ObjectListPermissionFilterMixin', 'ObjectNameMixin',
'FormExtraKwargsMixin', 'ListModeMixin', 'MultipleObjectMixin',
'ObjectActionMixin', 'ObjectListPermissionFilterMixin', 'ObjectNameMixin',
'ObjectPermissionCheckMixin', 'RedirectionMixin',
'ViewPermissionCheckMixin'
)
@@ -75,6 +79,27 @@ class FormExtraKwargsMixin(object):
return result
class ListModeMixin(object):
def get_context_data(self, **kwargs):
context = super(ListModeMixin, self).get_context_data(**kwargs)
if context.get(TEXT_LIST_AS_ITEMS_VARIABLE_NAME):
default_mode = TEXT_CHOICE_ITEMS
else:
default_mode = TEXT_CHOICE_LIST
list_mode = self.request.GET.get(
TEXT_LIST_AS_ITEMS_PARAMETER, default_mode
)
context.update(
{
TEXT_LIST_AS_ITEMS_VARIABLE_NAME: list_mode == TEXT_CHOICE_ITEMS
}
)
return context
class MultipleInstanceActionMixin(object):
# TODO: Deprecated, replace views using this with
# MultipleObjectFormActionView or MultipleObjectConfirmActionView