Add smart document count to folder list and document folder list views. Add user column to folder list views.
This commit is contained in:
@@ -60,4 +60,4 @@ class FoldersApp(MayanAppConfig):
|
||||
menu_sidebar.bind_links(links=[link_folder_add_document], sources=['folders:document_folder_list', 'folders:folder_add_document'])
|
||||
|
||||
SourceColumn(source=Folder, label=_('Created'), attribute='datetime_created')
|
||||
SourceColumn(source=Folder, label=_('Document'), attribute=encapsulate(lambda x: x.documents.count()))
|
||||
SourceColumn(source=Folder, label=_('User'), attribute='user')
|
||||
|
||||
@@ -12,6 +12,7 @@ from django.template import RequestContext
|
||||
from django.utils.translation import ugettext_lazy as _, ungettext
|
||||
|
||||
from acls.models import AccessControlList
|
||||
from common.utils import encapsulate
|
||||
from common.views import SingleObjectListView
|
||||
from documents.permissions import permission_document_view
|
||||
from documents.models import Document
|
||||
@@ -30,6 +31,17 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class FolderListView(SingleObjectListView):
|
||||
@staticmethod
|
||||
def get_document_count(instance, user):
|
||||
queryset = instance.documents
|
||||
|
||||
try:
|
||||
Permission.check_permissions(user, [permission_document_view])
|
||||
except PermissionDenied:
|
||||
queryset = AccessControlList.objects.filter_by_access(permission_document_view, user, queryset)
|
||||
|
||||
return queryset.count()
|
||||
|
||||
object_permission = permission_folder_view
|
||||
|
||||
def get_queryset(self):
|
||||
@@ -41,6 +53,9 @@ class FolderListView(SingleObjectListView):
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
'extra_columns': [
|
||||
{'name': _('Documents'), 'attribute': encapsulate(lambda instance: FolderListView.get_document_count(instance=instance, user=self.request.user))},
|
||||
],
|
||||
'title': _('Folders'),
|
||||
'hide_link': True,
|
||||
}
|
||||
@@ -222,6 +237,9 @@ class DocumentFolderListView(FolderListView):
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
'extra_columns': [
|
||||
{'name': _('Documents'), 'attribute': encapsulate(lambda instance: FolderListView.get_document_count(instance=instance, user=self.request.user))},
|
||||
],
|
||||
'hide_link': True,
|
||||
'object': self.document,
|
||||
'title': _('Folders containing document: %s') % self.document,
|
||||
|
||||
Reference in New Issue
Block a user