Move favorite document views to their own module

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2019-04-22 21:12:14 -04:00
parent 1acf67a91c
commit 9aa9840231
5 changed files with 112 additions and 95 deletions

View File

@@ -115,6 +115,7 @@
* Add support for link icon path imports. * Add support for link icon path imports.
* Remove support for link icon strings. * Remove support for link icon strings.
* Split document app form into separate modules. * Split document app form into separate modules.
* Move the favorite document views to their own module.
3.1.11 (2019-04-XX) 3.1.11 (2019-04-XX)
=================== ===================

View File

@@ -147,6 +147,7 @@ Other changes
* Add support for link icon path imports. * Add support for link icon path imports.
* Remove support for link icon strings. * Remove support for link icon strings.
* Split document app form into separate modules. * Split document app form into separate modules.
* Move the favorite document views to their own module.
Removals Removals
-------- --------

View File

@@ -2,5 +2,6 @@ from .document_page_views import * # NOQA
from .document_type_views import * # NOQA from .document_type_views import * # NOQA
from .document_version_views import * # NOQA from .document_version_views import * # NOQA
from .document_views import * # NOQA from .document_views import * # NOQA
from .favorite_document_views import * # NOQA
from .misc_views import * # NOQA from .misc_views import * # NOQA
from .trashed_document_views import * # NOQA from .trashed_document_views import * # NOQA

View File

@@ -12,7 +12,6 @@ from django.utils.translation import ugettext_lazy as _, ungettext
from mayan.apps.acls.models import AccessControlList from mayan.apps.acls.models import AccessControlList
from mayan.apps.common.compressed_files import ZipArchive from mayan.apps.common.compressed_files import ZipArchive
from mayan.apps.common.exceptions import ActionError
from mayan.apps.common.generics import ( from mayan.apps.common.generics import (
FormView, MultipleObjectConfirmActionView, MultipleObjectFormActionView, FormView, MultipleObjectConfirmActionView, MultipleObjectFormActionView,
SingleObjectDetailView, SingleObjectDownloadView, SingleObjectEditView, SingleObjectDetailView, SingleObjectDownloadView, SingleObjectEditView,
@@ -28,25 +27,21 @@ from ..events import event_document_download, event_document_view
from ..forms import ( from ..forms import (
DocumentDownloadForm, DocumentForm, DocumentPageNumberForm, DocumentDownloadForm, DocumentForm, DocumentPageNumberForm,
DocumentPreviewForm, DocumentPrintForm, DocumentPropertiesForm, DocumentPreviewForm, DocumentPrintForm, DocumentPropertiesForm,
DocumentTypeSelectForm, DocumentTypeFilteredSelectForm,
) )
from ..icons import ( from ..icons import (
icon_document_list, icon_document_list_favorites, icon_document_list, icon_document_list_recent_access,
icon_document_list_recent_access, icon_document_list_recent_added, icon_document_list_recent_added, icon_duplicated_document_list
icon_duplicated_document_list
) )
from ..literals import PAGE_RANGE_RANGE, DEFAULT_ZIP_FILENAME from ..literals import PAGE_RANGE_RANGE, DEFAULT_ZIP_FILENAME
from ..models import ( from ..models import Document, DuplicatedDocument, RecentDocument
Document, DuplicatedDocument, FavoriteDocument, RecentDocument
)
from ..permissions import ( from ..permissions import (
permission_document_download, permission_document_print, permission_document_download, permission_document_print,
permission_document_properties_edit, permission_document_tools, permission_document_properties_edit, permission_document_tools,
permission_document_view permission_document_view
) )
from ..settings import ( from ..settings import (
setting_favorite_count, setting_print_width, setting_print_height, setting_print_width, setting_print_height, setting_recent_added_count
setting_recent_added_count
) )
from ..tasks import task_update_page_count from ..tasks import task_update_page_count
from ..utils import parse_range from ..utils import parse_range
@@ -57,8 +52,7 @@ __all__ = (
'DocumentView', 'DocumentDownloadFormView', 'DocumentDownloadView', 'DocumentView', 'DocumentDownloadFormView', 'DocumentDownloadView',
'DocumentUpdatePageCountView', 'DocumentTransformationsClearView', 'DocumentUpdatePageCountView', 'DocumentTransformationsClearView',
'DocumentTransformationsCloneView', 'DocumentPrint', 'DocumentTransformationsCloneView', 'DocumentPrint',
'DuplicatedDocumentListView', 'FavoriteDocumentListView', 'DuplicatedDocumentListView', 'RecentAccessDocumentListView',
'FavoriteAddView', 'FavoriteRemoveView', 'RecentAccessDocumentListView',
'RecentAddedDocumentListView' 'RecentAddedDocumentListView'
) )
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -106,7 +100,7 @@ class DocumentListView(SingleObjectListView):
class DocumentDocumentTypeEditView(MultipleObjectFormActionView): class DocumentDocumentTypeEditView(MultipleObjectFormActionView):
form_class = DocumentTypeSelectForm form_class = DocumentTypeFilteredSelectForm
model = Document model = Document
object_permission = permission_document_properties_edit object_permission = permission_document_properties_edit
success_message = _( success_message = _(
@@ -702,88 +696,6 @@ class DuplicatedDocumentListView(DocumentListView):
return context 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): class RecentAccessDocumentListView(DocumentListView):
def get_document_queryset(self): def get_document_queryset(self):
return RecentDocument.objects.get_for_user(user=self.request.user) return RecentDocument.objects.get_for_user(user=self.request.user)

View File

@@ -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