# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.apps import apps from django.utils.html import mark_safe, escape from django.utils.translation import ugettext def get_instance_link(index_instance_node): """ Return an HTML anchor to an index node instance """ return mark_safe( '{text}'.format( url=index_instance_node.get_absolute_url(), text=escape(index_instance_node.get_full_path()) ) ) def index_instance_item_link(index_instance_item): IndexInstanceNode = apps.get_model( app_label='document_indexing', model_name='IndexInstanceNode' ) if isinstance(index_instance_item, IndexInstanceNode): if index_instance_item.index_template_node.link_documents: icon_template = '' else: icon_template = '' else: icon_template = '' return mark_safe( '%(icon_template)s %(text)s' % { 'url': index_instance_item.get_absolute_url(), 'icon_template': icon_template, 'text': index_instance_item } ) def node_level(node): """ Render an indented tree like output for a specific node """ return mark_safe( ''.join( [ '     ' * ( getattr(node, node._mptt_meta.level_attr) - 1 ), '' if node.is_root_node() else ' ', ugettext('Root') if node.is_root_node() else unicode(node) ] ) ) def node_tree(node, user): result = [] result.append('
') 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 = getattr(element, element._mptt_meta.level_attr) 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( 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) ) ) result.append('
') return mark_safe(''.join(result))