Move favorite document views to their own module
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -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)
|
||||||
===================
|
===================
|
||||||
|
|||||||
@@ -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
|
||||||
--------
|
--------
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
102
mayan/apps/documents/views/favorite_document_views.py
Normal file
102
mayan/apps/documents/views/favorite_document_views.py
Normal 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
|
||||||
Reference in New Issue
Block a user