Add recently added document list view. The setting DOCUMENTS_RECENT_COUNT has been renamed to DOCUMENTS_RECENT_ACCESS_COUNT. New setting DOCUMENTS_RECENT_ADDED_COUNT added.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2018-08-22 04:06:46 -04:00
parent 2787a1c395
commit 9a7e95f5b7
8 changed files with 91 additions and 43 deletions

View File

@@ -87,6 +87,10 @@
- Add support for the fillcolor argument to the rotate
transformation.
- Sort documents by label.
- Add recently added document list view. The setting
DOCUMENTS_RECENT_COUNT has been renamed to
DOCUMENTS_RECENT_ACCESS_COUNT. New setting
DOCUMENTS_RECENT_ADDED_COUNT added.
3.0.3 (2018-08-17)
==================

View File

@@ -56,8 +56,9 @@ from .links import (
link_document_document_type_edit, link_document_duplicates_list,
link_document_multiple_document_type_edit, link_document_download,
link_document_edit, link_document_list, link_document_list_deleted,
link_document_list_recent, link_document_multiple_delete,
link_document_multiple_trash, link_document_multiple_clear_transformations,
link_document_list_recent_access, link_document_list_recent_added,
link_document_multiple_delete, link_document_multiple_trash,
link_document_multiple_clear_transformations,
link_document_multiple_download, link_document_multiple_restore,
link_document_multiple_update_page_count,
link_document_page_navigation_first, link_document_page_navigation_last,
@@ -393,7 +394,8 @@ class DocumentsApp(MayanAppConfig):
menu_documents.bind_links(
links=(
link_document_list_recent, link_document_list,
link_document_list_recent_access,
link_document_list_recent_added, link_document_list,
link_document_list_deleted, link_duplicated_document_list
)
)

View File

@@ -23,7 +23,12 @@ icon_document_duplicates_list = Icon(
)
icon_document_list = Icon(driver_name='fontawesome', symbol='file')
icon_document_list_deleted = Icon(driver_name='fontawesome', symbol='trash')
icon_document_list_recent = Icon(driver_name='fontawesome', symbol='clock')
icon_document_list_recent_access = Icon(
driver_name='fontawesome', symbol='clock'
)
icon_document_list_recent_added = Icon(
driver_name='fontawesome', symbol='asterisk'
)
icon_document_page_navigation_first = Icon(
driver_name='fontawesome', symbol='step-backward'
)

View File

@@ -9,16 +9,16 @@ from navigation import Link
from .icons import (
icon_clear_image_cache, icon_document_duplicates_list, icon_document_list,
icon_document_list_deleted, icon_document_list_recent,
icon_document_page_navigation_first, icon_document_page_navigation_last,
icon_document_page_navigation_next, icon_document_page_navigation_previous,
icon_document_page_return, icon_document_page_rotate_left,
icon_document_page_rotate_right, icon_document_page_zoom_in,
icon_document_page_zoom_out, icon_document_pages, icon_document_preview,
icon_document_properties, icon_document_type_setup,
icon_document_version_list, icon_document_version_return_document,
icon_document_version_return_list, icon_duplicated_document_list,
icon_duplicated_document_scan
icon_document_list_deleted, icon_document_list_recent_access,
icon_document_list_recent_added, icon_document_page_navigation_first,
icon_document_page_navigation_last, icon_document_page_navigation_next,
icon_document_page_navigation_previous, icon_document_page_return,
icon_document_page_rotate_left, icon_document_page_rotate_right,
icon_document_page_zoom_in, icon_document_page_zoom_out,
icon_document_pages, icon_document_preview, icon_document_properties,
icon_document_type_setup, icon_document_version_list,
icon_document_version_return_document, icon_document_version_return_list,
icon_duplicated_document_list, icon_duplicated_document_scan
)
from .permissions import (
permission_document_delete, permission_document_download,
@@ -189,9 +189,13 @@ link_document_list = Link(
icon_class=icon_document_list, text=_('All documents'),
view='documents:document_list'
)
link_document_list_recent = Link(
icon_class=icon_document_list_recent, text=_('Recent documents'),
view='documents:document_list_recent'
link_document_list_recent_access = Link(
icon_class=icon_document_list_recent_access, text=_('Recently accessed'),
view='documents:document_list_recent_access'
)
link_document_list_recent_added = Link(
icon_class=icon_document_list_recent_added, text=_('Recently added'),
view='documents:document_list_recent_added'
)
link_document_list_deleted = Link(
icon_class=icon_document_list_deleted, text=_('Trash can'),

View File

@@ -11,7 +11,7 @@ from django.utils.encoding import force_text
from django.utils.timezone import now
from .literals import STUB_EXPIRATION_INTERVAL
from .settings import setting_recent_count
from .settings import setting_recent_access_count
logger = logging.getLogger(__name__)
@@ -199,7 +199,7 @@ class RecentDocumentManager(models.Manager):
# accessed date and time update
new_recent.save()
recent_to_delete = self.filter(user=user).values_list('pk', flat=True)[setting_recent_count.value:]
recent_to_delete = self.filter(user=user).values_list('pk', flat=True)[setting_recent_access_count.value:]
self.filter(pk__in=list(recent_to_delete)).delete()
return new_recent

View File

@@ -83,11 +83,17 @@ setting_print_height = namespace.add_setting(
setting_print_width = namespace.add_setting(
global_name='DOCUMENTS_PRINT_WIDTH', default='3600'
)
setting_recent_count = namespace.add_setting(
global_name='DOCUMENTS_RECENT_COUNT', default=40,
setting_recent_access_count = namespace.add_setting(
global_name='DOCUMENTS_RECENT_ACCESS_COUNT', default=40,
help_text=_(
'Maximum number of recent (created, edited, viewed) documents to '
'remember per user.'
'Maximum number of recently accessed (created, edited, viewed) '
'documents to remember per user.'
)
)
setting_recent_added_count = namespace.add_setting(
global_name='DOCUMENTS_RECENT_ADDED_COUNT', default=40,
help_text=_(
'Maximum number of recently created documents to show.'
)
)
setting_rotation_step = namespace.add_setting(

View File

@@ -32,15 +32,20 @@ from .views import (
DocumentVersionDownloadFormView, DocumentVersionDownloadView,
DocumentVersionListView, DocumentVersionRevertView, DocumentVersionView,
DocumentView, DuplicatedDocumentListView, EmptyTrashCanView,
RecentDocumentListView, ScanDuplicatedDocuments
RecentAccessDocumentListView, RecentAddedDocumentListView,
ScanDuplicatedDocuments
)
urlpatterns = [
url(r'^list/$', DocumentListView.as_view(), name='document_list'),
url(
r'^list/recent/$', RecentDocumentListView.as_view(),
name='document_list_recent'
r'^list/recent_access/$', RecentAccessDocumentListView.as_view(),
name='document_list_recent_access'
),
url(
r'^list/recent_added/$', RecentAddedDocumentListView.as_view(),
name='document_list_recent_added'
),
url(
r'^list/deleted/$', DeletedDocumentListView.as_view(),

View File

@@ -41,7 +41,9 @@ from ..permissions import (
permission_document_trash, permission_document_view,
permission_empty_trash
)
from ..settings import setting_print_width, setting_print_height
from ..settings import (
setting_print_width, setting_print_height, setting_recent_added_count
)
from ..tasks import task_delete_document, task_update_page_count
from ..utils import parse_range
@@ -50,6 +52,7 @@ logger = logging.getLogger(__name__)
class DocumentListView(SingleObjectListView):
object_permission = permission_document_view
queryset_slice = None
def get_document_queryset(self):
return Document.objects.defer(
@@ -65,8 +68,11 @@ class DocumentListView(SingleObjectListView):
}
def get_object_list(self):
return self.get_document_queryset().filter(is_stub=False)
queryset = self.get_document_queryset().filter(is_stub=False)
if self.queryset_slice:
return queryset.__getitem__(slice(*self.queryset_slice))
else:
return queryset
class DeletedDocumentDeleteView(ConfirmView):
extra_context = {
@@ -384,20 +390,6 @@ class EmptyTrashCanView(ConfirmView):
messages.success(self.request, _('Trash emptied successfully'))
class RecentDocumentListView(DocumentListView):
def get_document_queryset(self):
return RecentDocument.objects.get_for_user(self.request.user)
def get_extra_context(self):
context = super(RecentDocumentListView, self).get_extra_context()
context.update(
{
'title': _('Recent documents'),
}
)
return context
class DocumentDownloadFormView(FormView):
form_class = DocumentDownloadForm
model = Document
@@ -819,3 +811,33 @@ class DuplicatedDocumentListView(DocumentListView):
}
)
return context
class RecentAccessDocumentListView(DocumentListView):
def get_document_queryset(self):
return RecentDocument.objects.get_for_user(self.request.user)
def get_extra_context(self):
context = super(RecentAccessDocumentListView, self).get_extra_context()
context.update(
{
'title': _('Recently accessed'),
}
)
return context
class RecentAddedDocumentListView(DocumentListView):
queryset_slice = (0, setting_recent_added_count.value)
def get_document_queryset(self):
return Document.objects.order_by('-date_added')
def get_extra_context(self):
context = super(RecentAddedDocumentListView, self).get_extra_context()
context.update(
{
'title': _('Recently added'),
}
)
return context