From 5a90d76005079f88945b171d7284d0e9200c7a3d Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 26 Dec 2018 05:59:31 -0400 Subject: [PATCH] Make list mode code its own mixin Signed-off-by: Roberto Rosario --- mayan/apps/common/generics.py | 16 +++------------- mayan/apps/common/mixins.py | 29 +++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/mayan/apps/common/generics.py b/mayan/apps/common/generics.py index 26cda8a1bb..4152f41599 100644 --- a/mayan/apps/common/generics.py +++ b/mayan/apps/common/generics.py @@ -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(), diff --git a/mayan/apps/common/mixins.py b/mayan/apps/common/mixins.py index 6d589dada0..97fdf5a509 100644 --- a/mayan/apps/common/mixins.py +++ b/mayan/apps/common/mixins.py @@ -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