diff --git a/apps/document_indexing/api.py b/apps/document_indexing/api.py index 6837f2f9c7..4b3a40e075 100644 --- a/apps/document_indexing/api.py +++ b/apps/document_indexing/api.py @@ -3,7 +3,6 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext from django.core.urlresolvers import reverse -from django.utils.safestring import mark_safe from django.template.defaultfilters import slugify from documents.models import Document @@ -17,6 +16,8 @@ from .filesystem import (fs_create_index_directory, fs_create_document_link, fs_delete_document_link, fs_delete_index_directory, fs_delete_directory_recusive, assemble_suffixed_filename) +from .widgets import get_instance_link +from .exceptions import MaxSuffixCountReached if SLUGIFY_PATHS == False: # Do not slugify path or filenames and extensions @@ -25,10 +26,6 @@ else: SLUGIFY_FUNCTION = slugify -class MaxSuffixCountReached(Exception): - pass - - # External functions def update_indexes(document): """ @@ -63,55 +60,6 @@ def delete_indexes(document): return warnings -def get_instance_link(index_instance_node, text=None, simple=False): - """ - Return an HTML anchor to an index instance - """ - - if simple: - # Just display the instance's value or overrided text, no - # HTML anchor - template = u'%(value)s' - else: - template = u'%(value)s' - - return template % { - 'url': index_instance_node.get_absolute_url(), - 'value': text if text else (index_instance_node if index_instance_node.parent else index_instance_node.index_template_node.index) - } - - -def get_breadcrumbs(index_instance, simple=False, single_link=False, include_count=False): - """ - Return a joined string of HTML anchors to every index instance's - parent from the root of the tree to the index instance - """ - result = [] - if single_link: - # Return the entire breadcrumb path as a single HTML anchor - simple = True - - #result.append(get_instance_link(index_instance.get_root(), simple=simple)) - - for instance in index_instance.get_ancestors(): - result.append(get_instance_link(instance, simple=simple)) - - result.append(get_instance_link(index_instance, simple=simple)) - - output = [] - - if include_count: - output.append(u'(%d)' % index_instance.documents.count()) - - if single_link: - # Return the entire breadcrumb path as a single HTML anchor - output.insert(0, get_instance_link(index_instance_node=index_instance, text=(u' / '.join(result)))) - return mark_safe(u' '.join(output)) - else: - output.insert(0, u' / '.join(result)) - return mark_safe(u' '.join(output)) - - def do_rebuild_all_indexes(): fs_delete_directory_recusive() IndexInstanceNone.objects.delete() diff --git a/apps/document_indexing/views.py b/apps/document_indexing/views.py index bba139670f..2e3f02a57b 100644 --- a/apps/document_indexing/views.py +++ b/apps/document_indexing/views.py @@ -21,9 +21,9 @@ from acls.utils import apply_default_acls from .forms import IndexForm, IndexTemplateNodeForm from .models import (Index, IndexTemplateNode, IndexInstanceNode) -from .api import (get_breadcrumbs, get_instance_link, - do_rebuild_all_indexes) -from .widgets import index_instance_item_link +from .api import do_rebuild_all_indexes +from .widgets import (index_instance_item_link, get_instance_link, + get_breadcrumbs) from .permissions import (PERMISSION_DOCUMENT_INDEXING_VIEW, PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES, PERMISSION_DOCUMENT_INDEXING_SETUP, diff --git a/apps/document_indexing/widgets.py b/apps/document_indexing/widgets.py index fd4629564a..4448c63e0b 100644 --- a/apps/document_indexing/widgets.py +++ b/apps/document_indexing/widgets.py @@ -22,3 +22,52 @@ def index_instance_item_link(index_instance_item): 'icon_template': icon_template, 'text': index_instance_item }) + + +def get_instance_link(index_instance_node, text=None, simple=False): + """ + Return an HTML anchor to an index instance + """ + + if simple: + # Just display the instance's value or overrided text, no + # HTML anchor + template = u'%(value)s' + else: + template = u'%(value)s' + + return template % { + 'url': index_instance_node.get_absolute_url(), + 'value': text if text else (index_instance_node if index_instance_node.parent else index_instance_node.index_template_node.index) + } + + +def get_breadcrumbs(index_instance, simple=False, single_link=False, include_count=False): + """ + Return a joined string of HTML anchors to every index instance's + parent from the root of the tree to the index instance + """ + result = [] + if single_link: + # Return the entire breadcrumb path as a single HTML anchor + simple = True + + #result.append(get_instance_link(index_instance.get_root(), simple=simple)) + + for instance in index_instance.get_ancestors(): + result.append(get_instance_link(instance, simple=simple)) + + result.append(get_instance_link(index_instance, simple=simple)) + + output = [] + + if include_count: + output.append(u'(%d)' % index_instance.documents.count()) + + if single_link: + # Return the entire breadcrumb path as a single HTML anchor + output.insert(0, get_instance_link(index_instance_node=index_instance, text=(u' / '.join(result)))) + return mark_safe(u' '.join(output)) + else: + output.insert(0, u' / '.join(result)) + return mark_safe(u' '.join(output))