diff --git a/mayan/apps/document_indexing/apps.py b/mayan/apps/document_indexing/apps.py
index acb6e73b2b..a98e51f5e1 100644
--- a/mayan/apps/document_indexing/apps.py
+++ b/mayan/apps/document_indexing/apps.py
@@ -86,8 +86,16 @@ class DocumentIndexingApp(MayanAppConfig):
)
SourceColumn(
- source=IndexInstance, label=_('Items'),
- func=lambda context: context['object'].get_item_count(
+ source=IndexInstance, label=_('Total nodes'),
+ func=lambda context: context[
+ 'object'
+ ].instance_root.get_descendants_count()
+ )
+ SourceColumn(
+ source=IndexInstance, label=_('Total documents'),
+ func=lambda context: context[
+ 'object'
+ ].instance_root.get_descendants_document_count(
user=context['request'].user
)
)
@@ -116,8 +124,14 @@ class DocumentIndexingApp(MayanAppConfig):
func=lambda context: index_instance_item_link(context['object'])
)
SourceColumn(
- source=IndexInstanceNode, label=_('Items'),
- func=lambda context: context['object'].get_item_count(
+ source=IndexInstanceNode, label=_('Nodes'),
+ func=lambda context: context['object'].get_descendants_count()
+ )
+ SourceColumn(
+ source=IndexInstanceNode, label=_('Documents'),
+ func=lambda context: context[
+ 'object'
+ ].get_descendants_document_count(
user=context['request'].user
)
)
@@ -129,8 +143,14 @@ class DocumentIndexingApp(MayanAppConfig):
)
)
SourceColumn(
- source=DocumentIndexInstanceNode, label=_('Items'),
- func=lambda context: context['object'].get_item_count(
+ source=DocumentIndexInstanceNode, label=_('Nodes'),
+ func=lambda context: context['object'].get_descendants_count()
+ )
+ SourceColumn(
+ source=DocumentIndexInstanceNode, label=_('Documents'),
+ func=lambda context: context[
+ 'object'
+ ].get_descendants_document_count(
user=context['request'].user
)
)
diff --git a/mayan/apps/document_indexing/models.py b/mayan/apps/document_indexing/models.py
index 3e9bf1fcdd..cecbc307e1 100644
--- a/mayan/apps/document_indexing/models.py
+++ b/mayan/apps/document_indexing/models.py
@@ -308,8 +308,21 @@ class IndexInstanceNode(MPTTModel):
# Convenience method for serializer
return self.get_children()
- def index(self):
- return IndexInstance.objects.get(pk=self.index_template_node.index.pk)
+ def get_children_count(self):
+ return self.get_children().count()
+
+ def get_descendants_count(self):
+ return self.get_descendants().count()
+
+ def get_descendants_document_count(self, user):
+ return AccessControlList.objects.filter_by_access(
+ permission=permission_document_view, user=user,
+ queryset=Document.objects.filter(
+ index_instance_nodes__in=self.get_descendants(
+ include_self=True
+ )
+ )
+ ).count()
def get_item_count(self, user):
if self.index_template_node.link_documents:
@@ -356,6 +369,9 @@ class IndexInstanceNode(MPTTModel):
if acquire_lock:
lock.release()
+ def index(self):
+ return IndexInstance.objects.get(pk=self.index_template_node.index.pk)
+
def remove_document(self, document, acquire_lock=True):
"""
The argument `acquire_lock` controls whether or not this method
diff --git a/mayan/apps/document_indexing/widgets.py b/mayan/apps/document_indexing/widgets.py
index 0e75c4f661..52aaf64195 100644
--- a/mayan/apps/document_indexing/widgets.py
+++ b/mayan/apps/document_indexing/widgets.py
@@ -65,23 +65,20 @@ def node_tree(node, user):
for ancestor in node.get_ancestors(include_self=True):
if ancestor.is_root_node():
element = node.index()
- level = 0
icon = 'fa fa-list-ul'
else:
element = ancestor
- level = element.get_level()
if element.index_template_node.link_documents:
icon = 'fa fa-folder'
else:
icon = 'fa fa-level-up fa-rotate-90'
result.append(
- '{count}{space} {text}'.format(
+ '{count} {text}'.format(
url=element.get_absolute_url(),
active='active' if element == node or node.get_ancestors(include_self=True).count() == 1 else '',
count=element.get_item_count(user=user),
icon=icon,
- space=' ' * level,
text=escape(element)
)
)