From 568611927ba8d56d12bdbe6bcdb7fc4a2590ed4d Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Fri, 16 Mar 2012 16:20:09 -0400 Subject: [PATCH] Updated all link references to the new class based links --- apps/document_indexing/__init__.py | 46 +++---- apps/documents/__init__.py | 11 +- apps/linking/forms.py | 4 +- apps/main/api.py | 4 +- apps/main/views.py | 2 +- apps/navigation/api.py | 84 ++++++++----- .../templatetags/navigation_tags.py | 116 +++--------------- apps/navigation/widgets.py | 2 +- apps/ocr/__init__.py | 38 +++--- apps/project_tools/api.py | 4 +- apps/sources/__init__.py | 28 ++--- 11 files changed, 137 insertions(+), 202 deletions(-) diff --git a/apps/document_indexing/__init__.py b/apps/document_indexing/__init__.py index 3111fe4412..b27687c221 100644 --- a/apps/document_indexing/__init__.py +++ b/apps/document_indexing/__init__.py @@ -7,7 +7,7 @@ from django.db.models.signals import pre_save, post_save, pre_delete from django.dispatch import receiver from navigation.api import (register_top_menu, register_sidebar_template, - bind_links) + bind_links, Link) from main.api import register_maintenance_links from documents.permissions import PERMISSION_DOCUMENT_VIEW @@ -34,42 +34,36 @@ def is_not_instance_root_node(context): logger = logging.getLogger(__name__) -index_setup = {'text': _(u'indexes'), 'view': 'index_setup_list', 'icon': 'tab.png', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP], 'children_view_regex': [r'^index_setup', r'^template_node']} -index_setup_list = {'text': _(u'index list'), 'view': 'index_setup_list', 'famfam': 'tab', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP]} -index_setup_create = {'text': _(u'create index'), 'view': 'index_setup_create', 'famfam': 'tab_add', 'permissions': [PERMISSION_DOCUMENT_INDEXING_CREATE]} -index_setup_edit = {'text': _(u'edit'), 'view': 'index_setup_edit', 'args': 'index.pk', 'famfam': 'tab_edit', 'permissions': [PERMISSION_DOCUMENT_INDEXING_EDIT]} -index_setup_delete = {'text': _(u'delete'), 'view': 'index_setup_delete', 'args': 'index.pk', 'famfam': 'tab_delete', 'permissions': [PERMISSION_DOCUMENT_INDEXING_DELETE]} -index_setup_view = {'text': _(u'tree template'), 'view': 'index_setup_view', 'args': 'index.pk', 'famfam': 'textfield', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP]} +index_setup = Link(text=_(u'indexes'), view='index_setup_list', icon='tab.png', permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP])#, children_view_regex=[r'^index_setup', r'^template_node']) +index_setup_list = Link(text=_(u'index list'), view='index_setup_list', sprite='tab', permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP]) +index_setup_create = Link(text=_(u'create index'), view='index_setup_create', sprite='tab_add', permissions=[PERMISSION_DOCUMENT_INDEXING_CREATE]) +index_setup_edit = Link(text=_(u'edit'), view='index_setup_edit', args='index.pk', sprite='tab_edit', permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT]) +index_setup_delete = Link(text=_(u'delete'), view='index_setup_delete', args='index.pk', sprite='tab_delete', permissions=[PERMISSION_DOCUMENT_INDEXING_DELETE]) +index_setup_view = Link(text=_(u'tree template'), view='index_setup_view', args='index.pk', sprite='textfield', permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP]) -template_node_create = {'text': _(u'new child node'), 'view': 'template_node_create', 'args': 'node.pk', 'famfam': 'textfield_add', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP]} -template_node_edit = {'text': _(u'edit'), 'view': 'template_node_edit', 'args': 'node.pk', 'famfam': 'textfield', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP], 'conditional_disable': is_root_node} -template_node_delete = {'text': _(u'delete'), 'view': 'template_node_delete', 'args': 'node.pk', 'famfam': 'textfield_delete', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP], 'conditional_disable': is_root_node} +template_node_create = Link(text=_(u'new child node'), view='template_node_create', args='node.pk', sprite='textfield_add', permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP]) +template_node_edit = Link(text=_(u'edit'), view='template_node_edit', args='node.pk', sprite='textfield', permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], conditional_disable=is_root_node) +template_node_delete = Link(text=_(u'delete'), view='template_node_delete', args='node.pk', sprite='textfield_delete', permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], conditional_disable=is_root_node) -index_list = {'text': _(u'index list'), 'view': 'index_list', 'famfam': 'tab', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW]} +index_list = Link(text=_(u'index list'), view='index_list', sprite='tab', permissions=[PERMISSION_DOCUMENT_INDEXING_VIEW]) -index_parent = {'text': _(u'go up one level'), 'view': 'index_instance_node_view', 'args': 'object.parent.pk', 'famfam': 'arrow_up', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW], 'dont_mark_active': True, 'condition': is_not_instance_root_node} -document_index_list = {'text': _(u'indexes'), 'view': 'document_index_list', 'args': 'object.pk', 'famfam': 'folder_page', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW, PERMISSION_DOCUMENT_VIEW]} +index_parent = Link(text=_(u'go up one level'), view='index_instance_node_view', args='object.parent.pk', sprite='arrow_up', permissions=[PERMISSION_DOCUMENT_INDEXING_VIEW], dont_mark_active=True, condition=is_not_instance_root_node) +document_index_list = Link(text= _(u'indexes'), view='document_index_list', args='object.pk', sprite='folder_page', permissions=[PERMISSION_DOCUMENT_INDEXING_VIEW, PERMISSION_DOCUMENT_VIEW]) -register_top_menu('indexes', link={'text': _('indexes'), 'famfam': 'tab', 'view': 'index_list', 'children_view_regex': [r'^index_[i,l]']}) - -rebuild_index_instances = {'text': _('rebuild indexes'), 'view': 'rebuild_index_instances', 'famfam': 'folder_page', 'permissions': [PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES], 'description': _(u'Deletes and creates from scratch all the document indexes.')} +rebuild_index_instances = Link(text=_('rebuild indexes'), view='rebuild_index_instances', sprite='folder_page', permissions=[PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES], description=_(u'Deletes and creates from scratch all the document indexes.')) +register_top_menu('indexes', link={'text': _('indexes'), 'sprite': 'tab', 'view': 'index_list', 'children_view_regex': [r'^index_[i,l]']}) register_maintenance_links([rebuild_index_instances], namespace='document_indexing', title=_(u'Indexes')) - register_sidebar_template(['index_instance_list'], 'indexing_help.html') -bind_links(IndexInstanceNode, [index_parent]) - -bind_links(Document, [document_index_list], menu_name='form_header') +bind_links([IndexInstanceNode], [index_parent]) +bind_links([Document], [document_index_list], menu_name='form_header') +bind_links([Index, 'index_setup_list', 'index_setup_create', 'template_node_edit', 'template_node_delete'], [index_setup_list, index_setup_create], menu_name='secondary_menu') +bind_links([Index], [index_setup_edit, index_setup_delete, index_setup_view]) +bind_links([IndexTemplateNode], [template_node_create, template_node_edit, template_node_delete]) register_setup(index_setup) -bind_links([Index, 'index_setup_list', 'index_setup_create', 'template_node_edit', 'template_node_delete'], [index_setup_list, index_setup_create], menu_name='secondary_menu') - -bind_links(Index, [index_setup_edit, index_setup_delete, index_setup_view]) - -bind_links(IndexTemplateNode, [template_node_create, template_node_edit, template_node_delete]) - def delete_indexes_handler(sender, instance, **kwargs): if isinstance(instance, DocumentVersion): diff --git a/apps/documents/__init__.py b/apps/documents/__init__.py index 7ef10fecfb..75701f5623 100644 --- a/apps/documents/__init__.py +++ b/apps/documents/__init__.py @@ -121,7 +121,8 @@ document_type_filename_create = Link(text=_(u'add filename to document type'), v document_type_filename_edit = Link(text=_(u'edit'), view='document_type_filename_edit', args='filename.id', sprite='database_edit', permissions=[PERMISSION_DOCUMENT_TYPE_EDIT]) document_type_filename_delete = Link(text=_(u'delete'), view='document_type_filename_delete', args='filename.id', sprite='database_delete', permissions=[PERMISSION_DOCUMENT_TYPE_EDIT]) -document_type_views =['setup_document_type_metadata', document_type_list', document_type_document_list', document_type_edit', document_type_delete', document_type_create', document_type_filename_list', document_type_filename_create', document_type_filename_edit', document_type_filename_delete'] +# TODO: remove this +document_type_views=['setup_document_type_metadata', 'document_type_list', 'document_type_document_list', 'document_type_edit', 'document_type_delete', 'document_type_create', 'document_type_filename_list', 'document_type_filename_create', 'document_type_filename_edit', 'document_type_filename_delete'] # Register document type links bind_links([DocumentType], [document_type_document_list, document_type_filename_list, document_type_edit, document_type_delete]) @@ -188,10 +189,10 @@ register_top_menu( register_sidebar_template(['document_list_recent'], 'recent_document_list_help.html') register_sidebar_template(['document_type_list'], 'document_types_help.html') -bind_links(Document, [document_view_simple], menu_name='form_header', position=0) -bind_links(Document, [document_view_advanced], menu_name='form_header', position=1) -bind_links(Document, [document_history_view], menu_name='form_header') -bind_links(Document, [document_version_list], menu_name='form_header') +bind_links([Document], [document_view_simple], menu_name='form_header', position=0) +bind_links([Document], [document_view_advanced], menu_name='form_header', position=1) +bind_links([Document], [document_history_view], menu_name='form_header') +bind_links([Document], [document_version_list], menu_name='form_header') if (validate_path(document_settings.CACHE_PATH) == False) or (not document_settings.CACHE_PATH): setattr(document_settings, 'CACHE_PATH', tempfile.mkdtemp()) diff --git a/apps/linking/forms.py b/apps/linking/forms.py index 16400ece57..8801d0b574 100644 --- a/apps/linking/forms.py +++ b/apps/linking/forms.py @@ -35,9 +35,9 @@ class SmartLinkImageWidget(forms.widgets.Widget): %(text)s ''' % { - 'famfam': link.get('famfam', u'link'), + 'famfam': link.getattr('famfam', u'link'), 'text': capfirst(link['text']), - 'action': reverse(link.get('view'), args=[value['current_document'].pk, value['smart_link_instance'].pk]) + 'action': reverse(link.view, args=[value['current_document'].pk, value['smart_link_instance'].pk]) }) output.append(u'') diff --git a/apps/main/api.py b/apps/main/api.py index f8a48ce78e..f22e0150c3 100644 --- a/apps/main/api.py +++ b/apps/main/api.py @@ -7,7 +7,7 @@ tools = {} def register_diagnostic(namespace, title, link): namespace_dict = diagnostics.get(namespace, {'title': None, 'links': []}) namespace_dict['title'] = title - link['url'] = link.get('url', reverse_lazy(link['view'])) + link.url = getattr(link, 'url', reverse_lazy(link.view)) namespace_dict['links'].append(link) diagnostics[namespace] = namespace_dict @@ -16,6 +16,6 @@ def register_maintenance_links(links, title=None, namespace=None): namespace_dict = tools.get(namespace, {'title': None, 'links': []}) namespace_dict['title'] = title for link in links: - link['url'] = link.get('url', reverse_lazy(link['view'])) + link.url = getattr(link, 'url', reverse_lazy(link.view)) namespace_dict['links'].append(link) tools[namespace] = namespace_dict diff --git a/apps/main/views.py b/apps/main/views.py index 12aabda9e5..75d04971ff 100644 --- a/apps/main/views.py +++ b/apps/main/views.py @@ -32,7 +32,7 @@ def maintenance_menu(request): user_tools[namespace].setdefault('links', []) for link in values['links']: try: - permissions = link.get('permissions', []) + permissions = link.permissions Permission.objects.check_permissions(request.user, permissions) user_tools[namespace]['links'].append(link) except PermissionDenied: diff --git a/apps/navigation/api.py b/apps/navigation/api.py index bce7e4b865..1f65adb245 100644 --- a/apps/navigation/api.py +++ b/apps/navigation/api.py @@ -1,7 +1,12 @@ from __future__ import absolute_import +import urlparse +import urllib +import logging + from django.template import (TemplateSyntaxError, Library, VariableDoesNotExist, Node, Variable) +from django.utils.encoding import smart_str, force_unicode, smart_unicode from common.utils import urlquote @@ -16,21 +21,28 @@ top_menu_entries = [] link_binding = {} +logger = logging.getLogger(__name__) + class ResolvedLink(object): active = False - class Link(object): - def __init__(self, text, view, args=None, kwargs=None, sprite=None, icon=None, permissions=None, condition=None): + 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): self.text = text self.view = view - self.args = args or [] - self.kwargs = kwargs or {} + 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.children_view_regex = children_view_regex + self.klass = klass + self.keep_query = keep_query def resolve(self, context): request = Variable('request').resolve(context) @@ -52,62 +64,63 @@ class Link(object): #new_link = {}#copy.copy(link) resolved_link = ResolvedLink() try: - args, kwargs = resolve_arguments(context, link.get('args', {})) + #args, kwargs = resolve_arguments(context, self.get('args', {})) + args, kwargs = resolve_arguments(context, self.args) except VariableDoesNotExist: args = [] kwargs = {} - if 'view' in link: - if not link.get('dont_mark_active', False): + if self.view: + if not self.dont_mark_active: #new_link['active'] = link['view'] == current_view - resolved_link.active = link['view'] == current_view + resolved_link.active = self.view == current_view try: if kwargs: #new_link['url'] = reverse(link['view'], kwargs=kwargs) - resolved_link.url = reverse(link['view'], kwargs=kwargs) + resolved_link.url = reverse(self.view, kwargs=kwargs) else: # new_link['url'] = reverse(link['view'], args=args) - resolved_link.url = reverse(link['view'], args=args) - if link.get('keep_query', False): + resolved_link.url = reverse(self.view, args=args) + if self.keep_query: #print 'parsed_query_string', parsed_query_string #new_link['url'] = urlquote(new_link['url'], parsed_query_string) - resolved_link.url = urlquote(new_link['url'], parsed_query_string) + resolved_link.url = urlquote(resolved_link.url, parsed_query_string) except NoReverseMatch, exc: #new_link['url'] = '#' resolved_link.url = '#' #new_link['error'] = err resolved_link.error = exc - elif 'url' in link: - if not link.get('dont_mark_active', False): + elif self.url: + if not self.dont_mark_active: #new_link['active'] = link['url'] == current_path - resolved_link.url.active = link['url'] == current_path + resolved_link.url.active = self.url == current_path if kwargs: #new_link['url'] = link['url'] % kwargs - resolved_link.url = link['url'] % kwargs + resolved_link.url = self.url % kwargs else: #new_link['url'] = link['url'] % args - resolved_link.url = link['url'] % args - if link.get('keep_query', False): + resolved_link.url = self.url % args + if link.keep_query: #new_link['url'] = urlquote(new_link['url'], parsed_query_string) - resolved_link.url = urlquote(new_link['url'], parsed_query_string) + resolved_link.url = urlquote(resolved_link.url, parsed_query_string) else: #new_link['active'] = False resolved_link.active = False - if 'conditional_highlight' in link: + if self.conditional_highlight: #new_link['active'] = link['conditional_highlight'](context) - resolved_link.active = link['conditional_highlight'](context) + resolved_link.active = self.conditional_highlight(context) - if 'conditional_disable' in link: + if self.conditional_disable: #new_link['disabled'] = link['conditional_disable'](context) - resolved_link.disabled = link['conditional_disable'](context) + resolved_link.disabled = self.conditional_disable(context) else: #new_link['disabled'] = False resolved_link.disabled = False - if current_view in link.get('children_views', []): + if current_view in self.children_views: #new_link['active'] = True resolved_link.active = True @@ -121,7 +134,7 @@ class Link(object): # #new_link['active'] = True # resolved_link.active = True - for cls in link.get('children_classes', []): + 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: @@ -132,7 +145,7 @@ class Link(object): #context_links.append(new_link) -def bind_links(sources, links, menu_name=None): +def bind_links(sources, links, menu_name=None, position=0): """ Associate a link to a model, a view, or an url """ @@ -207,7 +220,7 @@ def register_sidebar_template(source_list, template_name): sidebar_templates[source].append(template_name) -def get_object_navigation_links(context, menu_name=None, links_dict=object_navigation): +def get_context_object_navigation_links(context, menu_name=None, links_dict=object_navigation): request = Variable('request').resolve(context) current_path = request.META['PATH_INFO'] current_view = resolve_to_name(current_path) @@ -226,9 +239,10 @@ def get_object_navigation_links(context, menu_name=None, links_dict=object_navig 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 for link in resolve_links(context, navigation_object_links, current_view, current_path, parsed_query_string)] + #navigation_object_links = Variable('overrided_object_links').resolve(context) + return Variable('overrided_object_links').resolve(context) + #if navigation_object_links: + # return [link for link in resolve_links(context, navigation_object_links, current_view, current_path, parsed_query_string)] except VariableDoesNotExist: pass @@ -244,16 +258,18 @@ def get_object_navigation_links(context, menu_name=None, links_dict=object_navig try: links = links_dict[menu_name][current_view]['links'] - for link in resolve_links(context, links, current_view, current_path, parsed_query_string): - context_links.append(link) + #for link in resolve_links(context, links, current_view, current_path, parsed_query_string): + # context_links.append(link) + context_links.extend(links) except KeyError: pass for resolved_object in get_navigation_objects(context): try: links = links_dict[menu_name][type(resolved_object['object'])]['links'] - for link in resolve_links(context, links, current_view, current_path, parsed_query_string): - context_links.append(link) + #for link in resolve_links(context, links, current_view, current_path, parsed_query_string): + # context_links.append(link) + context_links.extend(links) except KeyError: pass diff --git a/apps/navigation/templatetags/navigation_tags.py b/apps/navigation/templatetags/navigation_tags.py index 633f76c3c5..ebd55723fa 100644 --- a/apps/navigation/templatetags/navigation_tags.py +++ b/apps/navigation/templatetags/navigation_tags.py @@ -15,10 +15,10 @@ from django.utils.encoding import smart_str, force_unicode, smart_unicode from common.utils import urlquote from ..api import (object_navigation, multi_object_navigation, - top_menu_entries, sidebar_templates) + top_menu_entries, sidebar_templates, get_context_object_navigation_links) from ..forms import MultiItemForm from ..utils import (resolve_to_name, resolve_arguments, resolve_template_variable, - get_navigation_objects, get_object_navigation_links) + get_navigation_objects) register = Library() logger = logging.getLogger(__name__) @@ -30,22 +30,23 @@ class TopMenuNavigationNode(Node): current_path = request.META['PATH_INFO'] current_view = resolve_to_name(current_path) - all_menu_links = [entry.get('link', {}) for entry in top_menu_entries] - menu_links = resolve_links(context, all_menu_links, current_view, current_path) + #all_menu_links = []#[entry.get('link', {}) for entry in top_menu_entries] + #menu_links = resolve_links(context, all_menu_links, current_view, current_path) for index, link in enumerate(top_menu_entries): - if current_view in link.get('children_views', []): - menu_links[index]['active'] = True + #if current_view in link.get('children_views', []): + # menu_links[index]['active'] = True - for child_path_regex in link.get('children_path_regex', []): - if re.compile(child_path_regex).match(current_path.lstrip('/')): - menu_links[index]['active'] = True + #for child_path_regex in link.get('children_path_regex', []): + # if re.compile(child_path_regex).match(current_path.lstrip('/')): + # menu_links[index]['active'] = True - for children_view_regex in link.get('children_view_regex', []): - if re.compile(children_view_regex).match(current_view): - menu_links[index]['active'] = True + #for children_view_regex in link.get('children_view_regex', []): + # if re.compile(children_view_regex).match(current_view): + # menu_links[index]['active'] = True + pass - context['menu_links'] = menu_links + context['menu_links'] = []#menu_links return '' @@ -53,83 +54,6 @@ class TopMenuNavigationNode(Node): def get_top_menu_links(parser, token): return TopMenuNavigationNode() -""" -def resolve_links(context, links, current_view, current_path, parsed_query_string=None): - """ - Express a list of links from definition to final values - """ - context_links = [] - for link in links: - # Check to see if link has conditional display - if 'condition' in link: - condition_result = link['condition'](context) - else: - condition_result = True - - if condition_result: - new_link = copy.copy(link) - try: - args, kwargs = resolve_arguments(context, link.get('args', {})) - except VariableDoesNotExist: - args = [] - kwargs = {} - - if 'view' in link: - if not link.get('dont_mark_active', False): - new_link['active'] = link['view'] == current_view - - try: - if kwargs: - new_link['url'] = reverse(link['view'], kwargs=kwargs) - else: - new_link['url'] = reverse(link['view'], args=args) - if link.get('keep_query', False): - print 'parsed_query_string', parsed_query_string - new_link['url'] = urlquote(new_link['url'], parsed_query_string) - except NoReverseMatch, err: - new_link['url'] = '#' - new_link['error'] = err - elif 'url' in link: - if not link.get('dont_mark_active', False): - new_link['active'] = link['url'] == current_path - - if kwargs: - new_link['url'] = link['url'] % kwargs - else: - new_link['url'] = link['url'] % args - if link.get('keep_query', False): - new_link['url'] = urlquote(new_link['url'], parsed_query_string) - else: - new_link['active'] = False - - if 'conditional_highlight' in link: - new_link['active'] = link['conditional_highlight'](context) - - if 'conditional_disable' in link: - new_link['disabled'] = link['conditional_disable'](context) - else: - new_link['disabled'] = False - - if current_view in link.get('children_views', []): - new_link['active'] = True - - for child_url_regex in link.get('children_url_regex', []): - if re.compile(child_url_regex).match(current_path.lstrip('/')): - new_link['active'] = True - - for children_view_regex in link.get('children_view_regex', []): - if re.compile(children_view_regex).match(current_view): - new_link['active'] = True - - for cls in link.get('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 - - context_links.append(new_link) - return context_links -""" class GetNavigationLinks(Node): def __init__(self, menu_name=None, links_dict=object_navigation, var_name='object_navigation_links'): @@ -139,7 +63,7 @@ class GetNavigationLinks(Node): def render(self, context): menu_name = resolve_template_variable(context, self.menu_name) - context[self.var_name] = get_object_navigation_links(context, menu_name, links_dict=self.links_dict) + context[self.var_name] = get_context_object_navigation_links(context, menu_name, links_dict=self.links_dict) object_list = get_navigation_objects(context) if object_list: context['navigation_object'] = object_list[0]['object'] @@ -161,10 +85,10 @@ def get_object_navigation_links(parser, token): @register.inclusion_tag('generic_navigation.html', takes_context=True) def object_navigation_template(context): new_context = copy.copy(context) - new_context.update({ - 'horizontal': True, - 'object_navigation_links': _get_object_navigation_links(context) - }) + #new_context.update({ + # 'horizontal': True, + # 'object_navigation_links': get_object_navigation_links(context) + #}) return new_context @@ -183,7 +107,7 @@ def get_multi_item_links(parser, token): def get_multi_item_links_form(context): new_context = copy.copy(context) new_context.update({ - 'form': MultiItemForm(actions=[(link['url'], link['text']) for link in _get_object_navigation_links(context, links_dict=multi_object_navigation)]), + 'form': MultiItemForm(actions=[(link['url'], link['text']) for link in get_context_object_navigation_links(context, links_dict=multi_object_navigation)]), 'title': _(u'Selected item actions:'), 'form_action': reverse('multi_object_action_view'), 'submit_method': 'get', diff --git a/apps/navigation/widgets.py b/apps/navigation/widgets.py index f587fc6ebb..702b1b0a32 100644 --- a/apps/navigation/widgets.py +++ b/apps/navigation/widgets.py @@ -42,7 +42,7 @@ def render_widget(request, link): link = links[0] return mark_safe(u'' % { 'url': reverse(link['view']) if 'view' in link else link['url'], - 'icon': link.get('icon', 'link_button.png'), + 'icon': link.getattr('icon', 'link_button.png'), 'static_url': settings.STATIC_URL, 'string': capfirst(link['text']), 'image_alt': _(u'icon'), diff --git a/apps/ocr/__init__.py b/apps/ocr/__init__.py index ac29a340f9..a1141f19c7 100644 --- a/apps/ocr/__init__.py +++ b/apps/ocr/__init__.py @@ -9,7 +9,7 @@ from django.db.models.signals import post_save, post_syncdb from django.dispatch import receiver from django.db.utils import DatabaseError -from navigation.api import bind_links, register_multi_item_links +from navigation.api import bind_links, register_multi_item_links, Link from documents.models import Document, DocumentVersion from main.api import register_maintenance_links from project_tools.api import register_tool @@ -29,31 +29,31 @@ from . import models as ocr_models logger = logging.getLogger(__name__) #Links -submit_document = {'text': _('submit to OCR queue'), 'view': 'submit_document', 'args': 'object.id', 'famfam': 'hourglass_add', 'permissions': [PERMISSION_OCR_DOCUMENT]} -submit_document_multiple = {'text': _('submit to OCR queue'), 'view': 'submit_document_multiple', 'famfam': 'hourglass_add', 'permissions': [PERMISSION_OCR_DOCUMENT]} -re_queue_document = {'text': _('re-queue'), 'view': 're_queue_document', 'args': 'object.id', 'famfam': 'hourglass_add', 'permissions': [PERMISSION_OCR_DOCUMENT]} -re_queue_multiple_document = {'text': _('re-queue'), 'view': 're_queue_multiple_document', 'famfam': 'hourglass_add', 'permissions': [PERMISSION_OCR_DOCUMENT]} -queue_document_delete = {'text': _(u'delete'), 'view': 'queue_document_delete', 'args': 'object.id', 'famfam': 'hourglass_delete', 'permissions': [PERMISSION_OCR_DOCUMENT_DELETE]} -queue_document_multiple_delete = {'text': _(u'delete'), 'view': 'queue_document_multiple_delete', 'famfam': 'hourglass_delete', 'permissions': [PERMISSION_OCR_DOCUMENT_DELETE]} +submit_document = Link(text=_('submit to OCR queue'),view='submit_document',args='object.id',sprite='hourglass_add',permissions=[PERMISSION_OCR_DOCUMENT]) +submit_document_multiple = Link(text=_('submit to OCR queue'),view='submit_document_multiple',sprite='hourglass_add',permissions=[PERMISSION_OCR_DOCUMENT]) +re_queue_document = Link(text=_('re-queue'),view='re_queue_document',args='object.id',sprite='hourglass_add',permissions=[PERMISSION_OCR_DOCUMENT]) +re_queue_multiple_document = Link(text=_('re-queue'),view='re_queue_multiple_document',sprite='hourglass_add',permissions=[PERMISSION_OCR_DOCUMENT]) +queue_document_delete = Link(text=_(u'delete'),view='queue_document_delete',args='object.id',sprite='hourglass_delete',permissions=[PERMISSION_OCR_DOCUMENT_DELETE]) +queue_document_multiple_delete = Link(text=_(u'delete'),view='queue_document_multiple_delete',sprite='hourglass_delete',permissions=[PERMISSION_OCR_DOCUMENT_DELETE]) -document_queue_disable = {'text': _(u'stop queue'), 'view': 'document_queue_disable', 'args': 'queue.id', 'famfam': 'control_stop_blue', 'permissions': [PERMISSION_OCR_QUEUE_ENABLE_DISABLE]} -document_queue_enable = {'text': _(u'activate queue'), 'view': 'document_queue_enable', 'args': 'queue.id', 'famfam': 'control_play_blue', 'permissions': [PERMISSION_OCR_QUEUE_ENABLE_DISABLE]} +document_queue_disable = Link(text=_(u'stop queue'),view='document_queue_disable',args='queue.id',sprite='control_stop_blue',permissions=[PERMISSION_OCR_QUEUE_ENABLE_DISABLE]) +document_queue_enable = Link(text=_(u'activate queue'),view='document_queue_enable',args='queue.id',sprite='control_play_blue',permissions=[PERMISSION_OCR_QUEUE_ENABLE_DISABLE]) -all_document_ocr_cleanup = {'text': _(u'clean up pages content'), 'view': 'all_document_ocr_cleanup', 'famfam': 'text_strikethrough', 'permissions': [PERMISSION_OCR_CLEAN_ALL_PAGES], 'description': _(u'Runs a language filter to remove common OCR mistakes from document pages content.')} +all_document_ocr_cleanup = Link(text=_(u'clean up pages content'),view='all_document_ocr_cleanup',sprite='text_strikethrough',permissions=[PERMISSION_OCR_CLEAN_ALL_PAGES],description=_(u'Runs a language filter to remove common OCR mistakes from document pages content.')) -queue_document_list = {'text': _(u'queue document list'), 'view': 'queue_document_list', 'famfam': 'hourglass', 'permissions': [PERMISSION_OCR_DOCUMENT]} -ocr_tool_link = {'text': _(u'OCR'), 'view': 'queue_document_list', 'famfam': 'hourglass', 'icon': 'text.png', 'permissions': [PERMISSION_OCR_DOCUMENT], 'children_view_regex': [r'queue_', r'document_queue']} +queue_document_list = Link(text=_(u'queue document list'),view='queue_document_list',sprite='hourglass',permissions=[PERMISSION_OCR_DOCUMENT]) +ocr_tool_link = Link(text=_(u'OCR'),view='queue_document_list',sprite='hourglass',icon='text.png',permissions=[PERMISSION_OCR_DOCUMENT],children_view_regex=[r'queue_', r'document_queue']) -setup_queue_transformation_list = {'text': _(u'transformations'), 'view': 'setup_queue_transformation_list', 'args': 'queue.pk', 'famfam': 'shape_move_front'} -setup_queue_transformation_create = {'text': _(u'add transformation'), 'view': 'setup_queue_transformation_create', 'args': 'queue.pk', 'famfam': 'shape_square_add'} -setup_queue_transformation_edit = {'text': _(u'edit'), 'view': 'setup_queue_transformation_edit', 'args': 'transformation.pk', 'famfam': 'shape_square_edit'} -setup_queue_transformation_delete = {'text': _(u'delete'), 'view': 'setup_queue_transformation_delete', 'args': 'transformation.pk', 'famfam': 'shape_square_delete'} +setup_queue_transformation_list = Link(text=_(u'transformations'),view='setup_queue_transformation_list',args='queue.pk',sprite='shape_move_front') +setup_queue_transformation_create = Link(text=_(u'add transformation'),view='setup_queue_transformation_create',args='queue.pk',sprite='shape_square_add') +setup_queue_transformation_edit = Link(text=_(u'edit'),view='setup_queue_transformation_edit',args='transformation.pk',sprite='shape_square_edit') +setup_queue_transformation_delete = Link(text=_(u'delete'),view='setup_queue_transformation_delete',args='transformation.pk',sprite='shape_square_delete') -bind_links(Document, [submit_document]) +bind_links([Document], [submit_document]) register_multi_item_links(['document_find_duplicates', 'folder_view', 'index_instance_list', 'document_type_document_list', 'search', 'results', 'document_group_view', 'document_list', 'document_list_recent'], [submit_document_multiple]) -bind_links(DocumentQueue, [document_queue_disable, document_queue_enable, setup_queue_transformation_list]) -bind_links(QueueTransformation, [setup_queue_transformation_edit, setup_queue_transformation_delete]) +bind_links([DocumentQueue], [document_queue_disable, document_queue_enable, setup_queue_transformation_list]) +bind_links([QueueTransformation], [setup_queue_transformation_edit, setup_queue_transformation_delete]) register_multi_item_links(['queue_document_list'], [re_queue_multiple_document, queue_document_multiple_delete]) diff --git a/apps/project_tools/api.py b/apps/project_tools/api.py index d8e66ab7d0..a8a20d92ec 100644 --- a/apps/project_tools/api.py +++ b/apps/project_tools/api.py @@ -8,5 +8,5 @@ def register_tool(link): tool_items.append(link) # Append the link's children_view_regex to the tool main menu children view regex - tool_link.setdefault('children_view_regex', []) - tool_link['children_view_regex'].extend(link.get('children_view_regex', [])) + #tool_link.setdefault('children_view_regex', []) + #tool_link['children_view_regex'].extend(link.get('children_view_regex', [])) diff --git a/apps/sources/__init__.py b/apps/sources/__init__.py index acfa2708b4..b5de48de59 100644 --- a/apps/sources/__init__.py +++ b/apps/sources/__init__.py @@ -44,29 +44,29 @@ source_list = {'text': _(u'Document sources'), 'view': 'setup_web_form_list', 'f upload_version = {'text': _(u'upload new version'), 'view': 'upload_version', 'args': 'object.pk', 'famfam': 'page_add', 'permissions': [PERMISSION_DOCUMENT_NEW_VERSION]} -bind_links(StagingFile, [staging_file_delete]) +bind_links([StagingFile], [staging_file_delete]) -bind_links(SourceTransformation, [setup_source_transformation_edit, setup_source_transformation_delete]) +bind_links([SourceTransformation], [setup_source_transformation_edit, setup_source_transformation_delete]) bind_links(['setup_imap_email_list', 'setup_pop3_email_list', 'setup_web_form_list', 'setup_staging_folder_list', 'setup_watch_folder_list', 'setup_source_create'], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list], menu_name='form_header') bind_links([WebForm, StagingFolder, POP3Email, IMAPEmail, 'setup_web_form_list', 'setup_staging_folder_list', 'setup_watch_folder_list', 'setup_source_create', 'setup_pop3_email_list', 'setup_imap_email_list'], [setup_source_create], menu_name='secondary_menu') -bind_links(WebForm, [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list], menu_name='form_header') -bind_links(WebForm, [setup_source_transformation_list, setup_source_edit, setup_source_delete]) +bind_links([WebForm], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list], menu_name='form_header') +bind_links([WebForm], [setup_source_transformation_list, setup_source_edit, setup_source_delete]) -bind_links(StagingFolder, [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list], menu_name='form_header') -bind_links(StagingFolder, [setup_source_transformation_list, setup_source_edit, setup_source_delete]) +bind_links([StagingFolder], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list], menu_name='form_header') +bind_links([StagingFolder], [setup_source_transformation_list, setup_source_edit, setup_source_delete]) -bind_links(POP3Email, [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list], menu_name='form_header') -bind_links(POP3Email, [setup_source_transformation_list, setup_source_edit, setup_source_delete]) -bind_links(POP3Email, [setup_source_log_list]) +bind_links([POP3Email], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list], menu_name='form_header') +bind_links([POP3Email], [setup_source_transformation_list, setup_source_edit, setup_source_delete]) +bind_links([POP3Email], [setup_source_log_list]) -bind_links(IMAPEmail, [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list], menu_name='form_header') -bind_links(IMAPEmail, [setup_source_transformation_list, setup_source_edit, setup_source_delete]) -bind_links(IMAPEmail, [setup_source_log_list]) +bind_links([IMAPEmail], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list], menu_name='form_header') +bind_links([IMAPEmail], [setup_source_transformation_list, setup_source_edit, setup_source_delete]) +bind_links([IMAPEmail], [setup_source_log_list]) -bind_links(WatchFolder, [setup_web_form_list, setup_staging_folder_list, setup_watch_folder_list, setup_imap_email_list], menu_name='form_header') -bind_links(WatchFolder, [setup_source_transformation_list, setup_source_edit, setup_source_delete]) +bind_links([WatchFolder], [setup_web_form_list, setup_staging_folder_list, setup_watch_folder_list, setup_imap_email_list], menu_name='form_header') +bind_links([WatchFolder], [setup_source_transformation_list, setup_source_edit, setup_source_delete]) # Document version bind_links(['document_version_list', 'upload_version', 'document_version_revert'], [upload_version], menu_name='sidebar')