diff --git a/apps/acls/links.py b/apps/acls/links.py index 9b3a076da8..63fd6199ec 100644 --- a/apps/acls/links.py +++ b/apps/acls/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .permissions import (ACLS_EDIT_ACL, ACLS_VIEW_ACL, ACLS_CLASS_EDIT_ACL, ACLS_CLASS_VIEW_ACL) diff --git a/apps/app_registry/links.py b/apps/app_registry/links.py index 7e9f412bbe..0bd6ff456e 100644 --- a/apps/app_registry/links.py +++ b/apps/app_registry/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .icons import icon_app diff --git a/apps/backups/links.py b/apps/backups/links.py index 536a0f94a2..9b0fa925d1 100644 --- a/apps/backups/links.py +++ b/apps/backups/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .icons import icon_app from .permissions import PERMISSION_BACKUP_JOB_VIEW, PERMISSION_BACKUP_JOB_CREATE, PERMISSION_BACKUP_JOB_EDIT, PERMISSION_BACKUP_JOB_DELETE diff --git a/apps/bootstrap/links.py b/apps/bootstrap/links.py index d6f76800d5..7d5cdeb8d2 100644 --- a/apps/bootstrap/links.py +++ b/apps/bootstrap/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .permissions import PERMISSION_BOOTSTRAP_EXECUTE, PERMISSION_NUKE_DATABASE diff --git a/apps/checkouts/links.py b/apps/checkouts/links.py index eea20d9ac0..5357b95ea9 100644 --- a/apps/checkouts/links.py +++ b/apps/checkouts/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .permissions import (PERMISSION_DOCUMENT_CHECKOUT, PERMISSION_DOCUMENT_CHECKIN, PERMISSION_DOCUMENT_CHECKIN_OVERRIDE) diff --git a/apps/clustering/links.py b/apps/clustering/links.py index 4585cbcfc8..a1f69a9263 100644 --- a/apps/clustering/links.py +++ b/apps/clustering/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .permissions import PERMISSION_NODES_VIEW, PERMISSION_EDIT_CLUSTER_CONFIGURATION from .icons import icon_tool_link, icon_node_link diff --git a/apps/common/__init__.py b/apps/common/__init__.py index a462a8c144..c3a1f02cbc 100644 --- a/apps/common/__init__.py +++ b/apps/common/__init__.py @@ -12,9 +12,9 @@ from django.conf import settings from django.db.models.signals import post_save from django.contrib.auth.models import User -from navigation.api import bind_links, register_top_menu, Link +from navigation import Link +from navigation.api import bind_links, register_top_menu from project_setup.api import register_setup -#from project_tools.api import register_tool from .settings import (AUTO_CREATE_ADMIN, AUTO_ADMIN_USERNAME, AUTO_ADMIN_PASSWORD, TEMPORARY_DIRECTORY) diff --git a/apps/common/links.py b/apps/common/links.py index 1801485186..eaf93b2d6c 100644 --- a/apps/common/links.py +++ b/apps/common/links.py @@ -1,6 +1,6 @@ from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .icons import (icon_password_change, icon_current_user_details, icon_current_user_edit, icon_about, icon_license, icon_admin_site) diff --git a/apps/converter/links.py b/apps/converter/links.py index 497871d667..c5c92676d3 100644 --- a/apps/converter/links.py +++ b/apps/converter/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .icons import icon_format_list diff --git a/apps/diagnostics/links.py b/apps/diagnostics/links.py index cc622edd94..d254bdf2ec 100644 --- a/apps/diagnostics/links.py +++ b/apps/diagnostics/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .icons import icon_diagnostic, icon_diagnostic_execute diff --git a/apps/django_gpg/links.py b/apps/django_gpg/links.py index 8508d1b477..e08fb53b82 100644 --- a/apps/django_gpg/links.py +++ b/apps/django_gpg/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .icons import (icon_private_keys, icon_public_keys, icon_key_delete, icon_key_query, icon_key_receive, icon_key_setup) diff --git a/apps/document_comments/links.py b/apps/document_comments/links.py index 91c35b915e..20ac38fe3e 100644 --- a/apps/document_comments/links.py +++ b/apps/document_comments/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .permissions import (PERMISSION_COMMENT_CREATE, PERMISSION_COMMENT_DELETE, PERMISSION_COMMENT_VIEW) diff --git a/apps/document_indexing/links.py b/apps/document_indexing/links.py index 861cd24a9f..6ad82a695d 100644 --- a/apps/document_indexing/links.py +++ b/apps/document_indexing/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from documents.permissions import PERMISSION_DOCUMENT_VIEW from .permissions import (PERMISSION_DOCUMENT_INDEXING_VIEW, diff --git a/apps/document_signatures/links.py b/apps/document_signatures/links.py index 655d8fb813..5fd7ad0911 100644 --- a/apps/document_signatures/links.py +++ b/apps/document_signatures/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .models import DocumentVersionSignature from .permissions import ( diff --git a/apps/documents/__init__.py b/apps/documents/__init__.py index c1f3792bf9..03cff32466 100644 --- a/apps/documents/__init__.py +++ b/apps/documents/__init__.py @@ -9,7 +9,7 @@ from history.permissions import PERMISSION_HISTORY_VIEW from maintenance.api import MaintenanceNamespace from navigation.api import (bind_links, register_top_menu, register_model_list_columns, - register_sidebar_template, Link, register_multi_item_links) + register_sidebar_template, register_multi_item_links) # Register document type links from .models import (Document, DocumentPage, diff --git a/apps/folders/__init__.py b/apps/folders/__init__.py index e4ba110e9a..66d72713d1 100644 --- a/apps/folders/__init__.py +++ b/apps/folders/__init__.py @@ -6,7 +6,7 @@ from acls.api import class_permissions from acls.permissions import ACLS_EDIT_ACL, ACLS_VIEW_ACL from documents.models import Document from navigation.api import (bind_links, register_multi_item_links, - register_sidebar_template, Link) + register_sidebar_template) from .links import (folder_list, folder_create, folder_edit, folder_delete, folder_document_multiple_remove, folder_view, diff --git a/apps/folders/links.py b/apps/folders/links.py index 2595e81bcf..2ead8c279d 100644 --- a/apps/folders/links.py +++ b/apps/folders/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from documents.permissions import PERMISSION_DOCUMENT_VIEW from acls.permissions import ACLS_VIEW_ACL diff --git a/apps/history/links.py b/apps/history/links.py index 6e7ee1664d..ffcf5e1fae 100644 --- a/apps/history/links.py +++ b/apps/history/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .permissions import PERMISSION_HISTORY_VIEW from .icons import icon_history_list, icon_history_details diff --git a/apps/installation/links.py b/apps/installation/links.py index a3d63cdac0..0ea8ddb3a9 100644 --- a/apps/installation/links.py +++ b/apps/installation/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .permissions import PERMISSION_INSTALLATION_DETAILS diff --git a/apps/job_processor/links.py b/apps/job_processor/links.py index 6dab62521d..9a22a2252a 100644 --- a/apps/job_processor/links.py +++ b/apps/job_processor/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from clustering.permissions import PERMISSION_NODES_VIEW diff --git a/apps/linking/links.py b/apps/linking/links.py index 4b60f1338a..bc03f6de48 100644 --- a/apps/linking/links.py +++ b/apps/linking/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from documents.permissions import PERMISSION_DOCUMENT_VIEW from acls.permissions import ACLS_VIEW_ACL diff --git a/apps/mailer/links.py b/apps/mailer/links.py index 7f5db9e169..185060b566 100644 --- a/apps/mailer/links.py +++ b/apps/mailer/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .permissions import PERMISSION_MAILING_LINK, PERMISSION_MAILING_SEND_DOCUMENT diff --git a/apps/main/__init__.py b/apps/main/__init__.py index c905bd193f..9dc57821eb 100644 --- a/apps/main/__init__.py +++ b/apps/main/__init__.py @@ -2,7 +2,9 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link, register_top_menu +from navigation.api import register_top_menu + +from .links import link_home __author__ = 'Roberto Rosario' __copyright__ = 'Copyright 2011 Roberto Rosario' @@ -37,4 +39,4 @@ def get_version(): __version__ = get_version() -register_top_menu('home', link=Link(text=_(u'home'), view='home', sprite='house'), position=0) +register_top_menu('home', link=link_home, position=0) diff --git a/apps/main/links.py b/apps/main/links.py new file mode 100644 index 0000000000..ff06aaf315 --- /dev/null +++ b/apps/main/links.py @@ -0,0 +1,9 @@ +from __future__ import absolute_import + +from django.utils.translation import ugettext_lazy as _ + +from navigation import Link + +from .icons import icon_home + +link_home = Link(text=_(u'home'), view='home', icon=icon_home) diff --git a/apps/maintenance/links.py b/apps/maintenance/links.py index 386861f558..854f1769b9 100644 --- a/apps/maintenance/links.py +++ b/apps/maintenance/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .icons import icon_maintenance_menu, icon_maintenance_execute diff --git a/apps/metadata/links.py b/apps/metadata/links.py index e80035a53b..8ea4710e46 100644 --- a/apps/metadata/links.py +++ b/apps/metadata/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from documents.permissions import PERMISSION_DOCUMENT_TYPE_EDIT diff --git a/apps/navigation/__init__.py b/apps/navigation/__init__.py index 5b5faffadc..29e10cc652 100644 --- a/apps/navigation/__init__.py +++ b/apps/navigation/__init__.py @@ -1,5 +1,3 @@ from __future__ import absolute_import -from elementtree.ElementTree import Element - -main_menu = Element('root') +from .classes import Link diff --git a/apps/navigation/api.py b/apps/navigation/api.py index 6d10a95baf..f90cdd2622 100644 --- a/apps/navigation/api.py +++ b/apps/navigation/api.py @@ -1,155 +1,24 @@ from __future__ import absolute_import -import urlparse -import urllib import logging -import re + +from elementtree.ElementTree import Element from django.template import (VariableDoesNotExist, Variable) from django.utils.encoding import smart_str, smart_unicode from django.core.urlresolvers import reverse, NoReverseMatch from django.utils.http import urlquote, urlencode -from django.utils.translation import ugettext_lazy as _ from elementtree.ElementTree import SubElement -from .utils import (resolve_to_name, resolve_arguments, - get_navigation_objects) -from . import main_menu +from .utils import resolve_to_name, get_navigation_objects multi_object_navigation = {} model_list_columns = {} sidebar_templates = {} - bound_links = {} - logger = logging.getLogger(__name__) - - -class ResolvedLink(object): - active = False - url = '#' - text = _('Unnamed link') - - -class Link(object): - def __init__(self, text, view, klass=None, args=None, sprite=None, - icon=None, permissions=None, condition=None, conditional_disable=None, - description=None, dont_mark_active=False, children_view_regex=None, - keep_query=False, children_classes=None, children_url_regex=None, - children_views=None, conditional_highlight=None): - - self.text = text - self.view = view - self.args = args or {} - #self.kwargs = kwargs or {} - self.sprite = sprite - self.icon = icon - self.permissions = permissions or [] - self.condition = condition - self.conditional_disable = conditional_disable - self.description = description - self.dont_mark_active = dont_mark_active - self.klass = klass - self.keep_query = keep_query - self.conditional_highlight = conditional_highlight # Used by dynamic sources - self.children_views = children_views or [] - self.children_classes = children_classes or [] - self.children_url_regex = children_url_regex or [] - self.children_view_regex = children_view_regex or [] - - def resolve(self, context, request=None, current_path=None, current_view=None): - # Don't calculate these if passed in an argument - request = request or Variable('request').resolve(context) - current_path = current_path or request.META['PATH_INFO'] - current_view = current_view or resolve_to_name(current_path) - - # Preserve unicode data in URL query - previous_path = smart_unicode(urllib.unquote_plus(smart_str(request.get_full_path()) or smart_str(request.META.get('HTTP_REFERER', u'/')))) - query_string = urlparse.urlparse(previous_path).query - parsed_query_string = urlparse.parse_qs(query_string) - - logger.debug('condition: %s', self.condition) - - # Check to see if link has conditional display - if self.condition: - self.condition_result = self.condition(context) - else: - self.condition_result = True - - logger.debug('self.condition_result: %s', self.condition_result) - - if self.condition_result: - resolved_link = ResolvedLink() - resolved_link.text = self.text - resolved_link.sprite = self.sprite - resolved_link.icon = self.icon - resolved_link.permissions = self.permissions - resolved_link.condition_result = self.condition_result - - try: - #args, kwargs = resolve_arguments(context, self.get('args', {})) - args, kwargs = resolve_arguments(context, self.args) - except VariableDoesNotExist: - args = [] - kwargs = {} - - if self.view: - if not self.dont_mark_active: - resolved_link.active = self.view == current_view - - try: - if kwargs: - resolved_link.url = reverse(self.view, kwargs=kwargs) - else: - resolved_link.url = reverse(self.view, args=args) - if self.keep_query: - resolved_link.url = u'%s?%s' % (urlquote(resolved_link.url), urlencode(parsed_query_string, doseq=True)) - - except NoReverseMatch, exc: - resolved_link.url = '#' - resolved_link.error = exc - elif self.url: - if not self.dont_mark_active: - resolved_link.url.active = self.url == current_path - - if kwargs: - resolved_link.url = self.url % kwargs - else: - resolved_link.url = self.url % args - if self.keep_query: - resolved_link.url = u'%s?%s' % (urlquote(resolved_link.url), urlencode(parsed_query_string, doseq=True)) - else: - resolved_link.active = False - - if self.conditional_highlight: - resolved_link.active = self.conditional_highlight(context) - - if self.conditional_disable: - resolved_link.disabled = self.conditional_disable(context) - else: - resolved_link.disabled = False - - if current_view in self.children_views: - resolved_link.active = True - - # TODO: eliminate url_regexes and use new tree base main menu - for child_url_regex in self.children_url_regex: - if re.compile(child_url_regex).match(current_path.lstrip('/')): - resolved_link.active = True - - for children_view_regex in self.children_view_regex: - if re.compile(children_view_regex).match(current_view): - resolved_link.active = True - - for cls in self.children_classes: - object_list = get_navigation_objects(context) - if object_list: - if type(object_list[0]['object']) == cls or object_list[0]['object'] == cls: - #new_link['active'] = True - resolved_link.active = True - - return resolved_link +main_menu = Element('root') def bind_links(sources, links, menu_name=None, position=0): @@ -219,20 +88,6 @@ def get_context_navigation_links(context, menu_name=None, links_dict=bound_links # TODO: fix this links_dict = links_dict.copy() - # TODO: doesn't appear to be used - ''' - try: - """ - Override the navigation links dictionary with the provided - link list - """ - navigation_object_links = Variable('overrided_object_links').resolve(context) - if navigation_object_links: - return [link.resolve(context) for link in navigation_object_links] - except VariableDoesNotExist: - pass - ''' - # TODO: who uses this? Remove if no one. # Dynamic sources # TODO: improve name to 'injected...' try: diff --git a/apps/navigation/classes.py b/apps/navigation/classes.py new file mode 100644 index 0000000000..f577af4116 --- /dev/null +++ b/apps/navigation/classes.py @@ -0,0 +1,142 @@ +from __future__ import absolute_import + +import urlparse +import urllib +import logging +import re + +from django.utils.translation import ugettext_lazy as _ +from django.template import VariableDoesNotExist, Variable +from django.utils.encoding import smart_str, smart_unicode +from django.core.urlresolvers import reverse, NoReverseMatch +from django.utils.http import urlquote, urlencode + +from .utils import resolve_to_name, resolve_arguments + +logger = logging.getLogger(__name__) + + +class ResolvedLink(object): + active = False + url = '#' + text = _('Unnamed link') + + +class Link(object): + def __init__(self, text, view, klass=None, args=None, sprite=None, + icon=None, permissions=None, condition=None, conditional_disable=None, + description=None, dont_mark_active=False, children_view_regex=None, + keep_query=False, children_classes=None, children_url_regex=None, + children_views=None, conditional_highlight=None): + + self.text = text + self.view = view + self.args = args or {} + #self.kwargs = kwargs or {} + self.sprite = sprite + self.icon = icon + self.permissions = permissions or [] + self.condition = condition + self.conditional_disable = conditional_disable + self.description = description + self.dont_mark_active = dont_mark_active + self.klass = klass + self.keep_query = keep_query + self.conditional_highlight = conditional_highlight # Used by dynamic sources + self.children_views = children_views or [] + self.children_classes = children_classes or [] + self.children_url_regex = children_url_regex or [] + self.children_view_regex = children_view_regex or [] + + def resolve(self, context, request=None, current_path=None, current_view=None): + # Don't calculate these if passed in an argument + request = request or Variable('request').resolve(context) + current_path = current_path or request.META['PATH_INFO'] + current_view = current_view or resolve_to_name(current_path) + + # Preserve unicode data in URL query + previous_path = smart_unicode(urllib.unquote_plus(smart_str(request.get_full_path()) or smart_str(request.META.get('HTTP_REFERER', u'/')))) + query_string = urlparse.urlparse(previous_path).query + parsed_query_string = urlparse.parse_qs(query_string) + + logger.debug('condition: %s', self.condition) + + # Check to see if link has conditional display + if self.condition: + self.condition_result = self.condition(context) + else: + self.condition_result = True + + logger.debug('self.condition_result: %s', self.condition_result) + + if self.condition_result: + resolved_link = ResolvedLink() + resolved_link.text = self.text + resolved_link.sprite = self.sprite + resolved_link.icon = self.icon + resolved_link.permissions = self.permissions + resolved_link.condition_result = self.condition_result + + try: + #args, kwargs = resolve_arguments(context, self.get('args', {})) + args, kwargs = resolve_arguments(context, self.args) + except VariableDoesNotExist: + args = [] + kwargs = {} + + if self.view: + if not self.dont_mark_active: + resolved_link.active = self.view == current_view + + try: + if kwargs: + resolved_link.url = reverse(self.view, kwargs=kwargs) + else: + resolved_link.url = reverse(self.view, args=args) + if self.keep_query: + resolved_link.url = u'%s?%s' % (urlquote(resolved_link.url), urlencode(parsed_query_string, doseq=True)) + + except NoReverseMatch, exc: + resolved_link.url = '#' + resolved_link.error = exc + elif self.url: + if not self.dont_mark_active: + resolved_link.url.active = self.url == current_path + + if kwargs: + resolved_link.url = self.url % kwargs + else: + resolved_link.url = self.url % args + if self.keep_query: + resolved_link.url = u'%s?%s' % (urlquote(resolved_link.url), urlencode(parsed_query_string, doseq=True)) + else: + resolved_link.active = False + + if self.conditional_highlight: + resolved_link.active = self.conditional_highlight(context) + + if self.conditional_disable: + resolved_link.disabled = self.conditional_disable(context) + else: + resolved_link.disabled = False + + if current_view in self.children_views: + resolved_link.active = True + + # TODO: eliminate url_regexes and use new tree base main menu + for child_url_regex in self.children_url_regex: + if re.compile(child_url_regex).match(current_path.lstrip('/')): + resolved_link.active = True + + for children_view_regex in self.children_view_regex: + if re.compile(children_view_regex).match(current_view): + resolved_link.active = True + + for cls in self.children_classes: + object_list = get_navigation_objects(context) + if object_list: + if type(object_list[0]['object']) == cls or object_list[0]['object'] == cls: + #new_link['active'] = True + resolved_link.active = True + + return resolved_link diff --git a/apps/navigation/templatetags/navigation_tags.py b/apps/navigation/templatetags/navigation_tags.py index 92a596cb1c..efa21869c8 100644 --- a/apps/navigation/templatetags/navigation_tags.py +++ b/apps/navigation/templatetags/navigation_tags.py @@ -13,7 +13,7 @@ from ..api import (bound_links, multi_object_navigation, sidebar_templates, get_context_navigation_links) from ..forms import MultiItemForm from ..utils import resolve_to_name, resolve_template_variable -from .. import main_menu +from ..api import main_menu register = Library() logger = logging.getLogger(__name__) diff --git a/apps/ocr/links.py b/apps/ocr/links.py index 26184428a1..5c5bc3a6ce 100644 --- a/apps/ocr/links.py +++ b/apps/ocr/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .permissions import (PERMISSION_OCR_DOCUMENT, PERMISSION_OCR_DOCUMENT_DELETE, PERMISSION_OCR_QUEUE_ENABLE_DISABLE, diff --git a/apps/permissions/links.py b/apps/permissions/links.py index de024b8ffe..5a7ed45c87 100644 --- a/apps/permissions/links.py +++ b/apps/permissions/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .permissions import (PERMISSION_ROLE_VIEW, PERMISSION_ROLE_EDIT, PERMISSION_ROLE_CREATE, PERMISSION_ROLE_DELETE, diff --git a/apps/project_setup/links.py b/apps/project_setup/links.py index 21a3bb4f0c..35e30fb46d 100644 --- a/apps/project_setup/links.py +++ b/apps/project_setup/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import register_top_menu, Link +from navigation import Link from .icons import icon_setup diff --git a/apps/project_tools/links.py b/apps/project_tools/links.py new file mode 100644 index 0000000000..0233bcb22c --- /dev/null +++ b/apps/project_tools/links.py @@ -0,0 +1,9 @@ +from __future__ import absolute_import + +from django.utils.translation import ugettext_lazy as _ + +from navigation import Link + +from .icons import icon_tool + +link_tools = Link(text=_(u'tools'), view='tools_list', icon=icon_tool) diff --git a/apps/scheduler/links.py b/apps/scheduler/links.py index 8ab7e44ea2..891682d596 100644 --- a/apps/scheduler/links.py +++ b/apps/scheduler/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .permissions import PERMISSION_VIEW_JOB_LIST, PERMISSION_VIEW_SCHEDULER_LIST from .icons import icon_scheduler_tool_link, icon_scheduler_list, icon_job_list diff --git a/apps/smart_settings/links.py b/apps/smart_settings/links.py index 5fcaaf7ab1..dc02331258 100644 --- a/apps/smart_settings/links.py +++ b/apps/smart_settings/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .icons import icon_settings diff --git a/apps/smart_settings/views.py b/apps/smart_settings/views.py index 394b2bfee4..af017e913f 100644 --- a/apps/smart_settings/views.py +++ b/apps/smart_settings/views.py @@ -7,7 +7,7 @@ from django.utils.safestring import mark_safe from common.utils import return_type, encapsulate from common.widgets import exists_with_famfam -from navigation.api import Link +from navigation import Link from app_registry.models import App from .classes import SettingsNamespace diff --git a/apps/sources/links.py b/apps/sources/links.py index 2d43fafa69..35ada815a8 100644 --- a/apps/sources/links.py +++ b/apps/sources/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from documents.permissions import (PERMISSION_DOCUMENT_NEW_VERSION, PERMISSION_DOCUMENT_CREATE) from .permissions import (PERMISSION_SOURCES_SETUP_VIEW, diff --git a/apps/sources/views.py b/apps/sources/views.py index 67c6bf44f3..2e76b2a769 100644 --- a/apps/sources/views.py +++ b/apps/sources/views.py @@ -26,7 +26,7 @@ from common.utils import encapsulate from common.widgets import two_state_template import sendfile from acls.models import AccessEntry -from navigation.api import Link +from navigation import Link from .models import (WebForm, StagingFolder, SourceTransformation, WatchFolder, POP3Email, SourceLog, IMAPEmail, LocalScanner) diff --git a/apps/statistics/links.py b/apps/statistics/links.py index 453f476209..43afaaae94 100644 --- a/apps/statistics/links.py +++ b/apps/statistics/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .icons import icon_statistics diff --git a/apps/tags/__init__.py b/apps/tags/__init__.py index b063a64d78..76c4e23905 100644 --- a/apps/tags/__init__.py +++ b/apps/tags/__init__.py @@ -6,7 +6,7 @@ from acls.api import class_permissions from common.utils import encapsulate from documents.models import Document from navigation.api import (bind_links, register_top_menu, - register_model_list_columns, register_multi_item_links, Link) + register_model_list_columns, register_multi_item_links) from taggit.models import Tag from taggit.managers import TaggableManager diff --git a/apps/tags/links.py b/apps/tags/links.py index 087d604824..9a6e7e60a1 100644 --- a/apps/tags/links.py +++ b/apps/tags/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from acls.permissions import ACLS_VIEW_ACL from .permissions import (PERMISSION_TAG_CREATE, PERMISSION_TAG_ATTACH, diff --git a/apps/trash/links.py b/apps/trash/links.py index 1452ca69c0..82a2af302e 100644 --- a/apps/trash/links.py +++ b/apps/trash/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .icons import (icon_trash_cans, icon_trash_can_items, icon_trash_can_item_restore, icon_trash_can_item_delete) diff --git a/apps/user_management/links.py b/apps/user_management/links.py index 4bb31d669c..c970d0a2b8 100644 --- a/apps/user_management/links.py +++ b/apps/user_management/links.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ -from navigation.api import Link +from navigation import Link from .permissions import (PERMISSION_GROUP_CREATE, PERMISSION_GROUP_EDIT, PERMISSION_GROUP_VIEW, PERMISSION_GROUP_DELETE, PERMISSION_GROUP_CREATE, diff --git a/apps/workflows/__init__.py b/apps/workflows/__init__.py index c06c85ad8c..09b7570e00 100644 --- a/apps/workflows/__init__.py +++ b/apps/workflows/__init__.py @@ -3,7 +3,8 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ from project_setup.api import register_setup -from navigation.api import Link, bind_links +from navigation import Link +from navigation.api import bind_links from .permissions import (PERMISSION_WORKFLOW_SETUP_VIEW, PERMISSION_WORKFLOW_SETUP_CREATE, PERMISSION_WORKFLOW_SETUP_EDIT, diff --git a/settings.py b/settings.py index 32193487ad..7a19af41ad 100644 --- a/settings.py +++ b/settings.py @@ -146,9 +146,9 @@ INSTALLED_APPS = ( 'compressor', 'djangorestframework', # Base generic + 'navigation', 'permissions', 'acls', - 'navigation', 'icons', 'project_setup', 'project_tools',