Add smart document count to folder list and document folder list views. Add user column to folder list views.

This commit is contained in:
Roberto Rosario
2015-07-02 02:14:55 -04:00
parent 01203b2531
commit 18178404c2
2 changed files with 19 additions and 1 deletions

View File

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

View File

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