Update the index information colums to show the
total number of documents and nodes contained in a level. Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -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
|
||||
)
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(
|
||||
'<a href="{url}" class="list-group-item {active}"><span class="badge">{count}</span><i class="{icon}"></i>{space} {text}</a>'.format(
|
||||
'<a href="{url}" class="list-group-item {active}"><span class="badge">{count}</span><i class="{icon}"></i> {text}</a>'.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)
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user