From 9aa9840231bc160acd1d44309c8e28bb5e664b03 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 22 Apr 2019 21:12:14 -0400 Subject: [PATCH] Move favorite document views to their own module Signed-off-by: Roberto Rosario --- HISTORY.rst | 1 + docs/releases/3.2.rst | 1 + mayan/apps/documents/views/__init__.py | 1 + mayan/apps/documents/views/document_views.py | 102 ++---------------- .../views/favorite_document_views.py | 102 ++++++++++++++++++ 5 files changed, 112 insertions(+), 95 deletions(-) create mode 100644 mayan/apps/documents/views/favorite_document_views.py diff --git a/HISTORY.rst b/HISTORY.rst index 7b89f3d38c..2c202fbb90 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -115,6 +115,7 @@ * Add support for link icon path imports. * Remove support for link icon strings. * Split document app form into separate modules. +* Move the favorite document views to their own module. 3.1.11 (2019-04-XX) =================== diff --git a/docs/releases/3.2.rst b/docs/releases/3.2.rst index f557e36015..6890afec0c 100644 --- a/docs/releases/3.2.rst +++ b/docs/releases/3.2.rst @@ -147,6 +147,7 @@ Other changes * Add support for link icon path imports. * Remove support for link icon strings. * Split document app form into separate modules. +* Move the favorite document views to their own module. Removals -------- diff --git a/mayan/apps/documents/views/__init__.py b/mayan/apps/documents/views/__init__.py index 5f07051fc7..0183a3a642 100644 --- a/mayan/apps/documents/views/__init__.py +++ b/mayan/apps/documents/views/__init__.py @@ -2,5 +2,6 @@ from .document_page_views import * # NOQA from .document_type_views import * # NOQA from .document_version_views import * # NOQA from .document_views import * # NOQA +from .favorite_document_views import * # NOQA from .misc_views import * # NOQA from .trashed_document_views import * # NOQA diff --git a/mayan/apps/documents/views/document_views.py b/mayan/apps/documents/views/document_views.py index b0abddd2b0..cea2ac0222 100644 --- a/mayan/apps/documents/views/document_views.py +++ b/mayan/apps/documents/views/document_views.py @@ -12,7 +12,6 @@ from django.utils.translation import ugettext_lazy as _, ungettext from mayan.apps.acls.models import AccessControlList from mayan.apps.common.compressed_files import ZipArchive -from mayan.apps.common.exceptions import ActionError from mayan.apps.common.generics import ( FormView, MultipleObjectConfirmActionView, MultipleObjectFormActionView, SingleObjectDetailView, SingleObjectDownloadView, SingleObjectEditView, @@ -28,25 +27,21 @@ from ..events import event_document_download, event_document_view from ..forms import ( DocumentDownloadForm, DocumentForm, DocumentPageNumberForm, DocumentPreviewForm, DocumentPrintForm, DocumentPropertiesForm, - DocumentTypeSelectForm, + DocumentTypeFilteredSelectForm, ) from ..icons import ( - icon_document_list, icon_document_list_favorites, - icon_document_list_recent_access, icon_document_list_recent_added, - icon_duplicated_document_list + icon_document_list, icon_document_list_recent_access, + icon_document_list_recent_added, icon_duplicated_document_list ) from ..literals import PAGE_RANGE_RANGE, DEFAULT_ZIP_FILENAME -from ..models import ( - Document, DuplicatedDocument, FavoriteDocument, RecentDocument -) +from ..models import Document, DuplicatedDocument, RecentDocument from ..permissions import ( permission_document_download, permission_document_print, permission_document_properties_edit, permission_document_tools, permission_document_view ) from ..settings import ( - setting_favorite_count, setting_print_width, setting_print_height, - setting_recent_added_count + setting_print_width, setting_print_height, setting_recent_added_count ) from ..tasks import task_update_page_count from ..utils import parse_range @@ -57,8 +52,7 @@ __all__ = ( 'DocumentView', 'DocumentDownloadFormView', 'DocumentDownloadView', 'DocumentUpdatePageCountView', 'DocumentTransformationsClearView', 'DocumentTransformationsCloneView', 'DocumentPrint', - 'DuplicatedDocumentListView', 'FavoriteDocumentListView', - 'FavoriteAddView', 'FavoriteRemoveView', 'RecentAccessDocumentListView', + 'DuplicatedDocumentListView', 'RecentAccessDocumentListView', 'RecentAddedDocumentListView' ) logger = logging.getLogger(__name__) @@ -106,7 +100,7 @@ class DocumentListView(SingleObjectListView): class DocumentDocumentTypeEditView(MultipleObjectFormActionView): - form_class = DocumentTypeSelectForm + form_class = DocumentTypeFilteredSelectForm model = Document object_permission = permission_document_properties_edit success_message = _( @@ -702,88 +696,6 @@ class DuplicatedDocumentListView(DocumentListView): return context -class FavoriteDocumentListView(DocumentListView): - def get_document_queryset(self): - return FavoriteDocument.objects.get_for_user(user=self.request.user) - - def get_extra_context(self): - context = super(FavoriteDocumentListView, self).get_extra_context() - context.update( - { - 'no_results_icon': icon_document_list_favorites, - 'no_results_text': _( - 'Favorited documents will be listed in this view. ' - 'Up to %(count)d documents can be favorited per user. ' - ) % {'count': setting_favorite_count.value}, - 'no_results_title': _('There are no favorited documents.'), - 'title': _('Favorites'), - } - ) - return context - - -class FavoriteAddView(MultipleObjectConfirmActionView): - model = Document - object_permission = permission_document_view - success_message = _( - '%(count)d document added to favorites.' - ) - success_message_plural = _( - '%(count)d documents added to favorites.' - ) - - def get_extra_context(self): - queryset = self.get_queryset() - - return { - 'submit_label': _('Add'), - 'submit_icon_class': icon_document_list_favorites, - 'title': ungettext( - singular='Add the selected document to favorites', - plural='Add the selected documents to favorites', - number=queryset.count() - ) - } - - def object_action(self, form, instance): - FavoriteDocument.objects.add_for_user( - user=self.request.user, document=instance - ) - - -class FavoriteRemoveView(MultipleObjectConfirmActionView): - error_message = _('Document "%(instance)s" is not in favorites.') - model = Document - object_permission = permission_document_view - success_message = _( - '%(count)d document removed from favorites.' - ) - success_message_plural = _( - '%(count)d documents removed from favorites.' - ) - - def get_extra_context(self): - queryset = self.get_queryset() - - return { - 'submit_label': _('Remove'), - 'submit_icon_class': icon_document_list_favorites, - 'title': ungettext( - singular='Remove the selected document from favorites', - plural='Remove the selected documents from favorites', - number=queryset.count() - ) - } - - def object_action(self, form, instance): - try: - FavoriteDocument.objects.remove_for_user( - user=self.request.user, document=instance - ) - except FavoriteDocument.DoesNotExist: - raise ActionError - - class RecentAccessDocumentListView(DocumentListView): def get_document_queryset(self): return RecentDocument.objects.get_for_user(user=self.request.user) diff --git a/mayan/apps/documents/views/favorite_document_views.py b/mayan/apps/documents/views/favorite_document_views.py new file mode 100644 index 0000000000..80a8859416 --- /dev/null +++ b/mayan/apps/documents/views/favorite_document_views.py @@ -0,0 +1,102 @@ +from __future__ import absolute_import, unicode_literals + +import logging + +from django.utils.translation import ugettext_lazy as _, ungettext + +from mayan.apps.common.exceptions import ActionError +from mayan.apps.common.generics import MultipleObjectConfirmActionView + +from ..icons import icon_favorite_document_list +from ..models import Document, FavoriteDocument +from ..permissions import permission_document_view +from ..settings import setting_favorite_count + +from .document_views import DocumentListView + +__all__ = ( + 'FavoriteDocumentListView', 'FavoriteAddView', 'FavoriteRemoveView' +) +logger = logging.getLogger(__name__) + + +class FavoriteDocumentListView(DocumentListView): + def get_document_queryset(self): + return FavoriteDocument.objects.get_for_user(user=self.request.user) + + def get_extra_context(self): + context = super(FavoriteDocumentListView, self).get_extra_context() + context.update( + { + 'no_results_icon': icon_favorite_document_list, + 'no_results_text': _( + 'Favorited documents will be listed in this view. ' + 'Up to %(count)d documents can be favorited per user. ' + ) % {'count': setting_favorite_count.value}, + 'no_results_title': _('There are no favorited documents.'), + 'title': _('Favorites'), + } + ) + return context + + +class FavoriteAddView(MultipleObjectConfirmActionView): + model = Document + object_permission = permission_document_view + success_message = _( + '%(count)d document added to favorites.' + ) + success_message_plural = _( + '%(count)d documents added to favorites.' + ) + + def get_extra_context(self): + queryset = self.get_queryset() + + return { + 'submit_label': _('Add'), + 'submit_icon_class': icon_favorite_document_list, + 'title': ungettext( + singular='Add the selected document to favorites', + plural='Add the selected documents to favorites', + number=queryset.count() + ) + } + + def object_action(self, form, instance): + FavoriteDocument.objects.add_for_user( + user=self.request.user, document=instance + ) + + +class FavoriteRemoveView(MultipleObjectConfirmActionView): + error_message = _('Document "%(instance)s" is not in favorites.') + model = Document + object_permission = permission_document_view + success_message = _( + '%(count)d document removed from favorites.' + ) + success_message_plural = _( + '%(count)d documents removed from favorites.' + ) + + def get_extra_context(self): + queryset = self.get_queryset() + + return { + 'submit_label': _('Remove'), + 'submit_icon_class': icon_favorite_document_list, + 'title': ungettext( + singular='Remove the selected document from favorites', + plural='Remove the selected documents from favorites', + number=queryset.count() + ) + } + + def object_action(self, form, instance): + try: + FavoriteDocument.objects.remove_for_user( + user=self.request.user, document=instance + ) + except FavoriteDocument.DoesNotExist: + raise ActionError