Issue #92, Make register_multi_item_links class aware
This commit is contained in:
@@ -4,7 +4,7 @@ from django.dispatch import receiver
|
||||
|
||||
from south.signals import post_migrate
|
||||
|
||||
from navigation.api import register_links, register_multi_item_links
|
||||
from navigation.api import register_links
|
||||
from project_setup.api import register_setup
|
||||
|
||||
from .classes import (AccessHolder, AccessObject, AccessObjectClass,
|
||||
@@ -20,8 +20,8 @@ register_links(AccessObjectClass, [acl_class_acl_list, acl_class_new_holder_for]
|
||||
register_links(AccessHolder, [acl_detail])
|
||||
register_links(['acls:acl_setup_valid_classes', 'acls:acl_class_acl_list', 'acls:acl_class_new_holder_for', 'acls:acl_class_acl_detail', 'acls:acl_class_multiple_grant', 'acls:acl_class_multiple_revoke'], [acl_class_list], menu_name='secondary_menu')
|
||||
register_links(ClassAccessHolder, [acl_class_acl_detail])
|
||||
register_multi_item_links(['acls:acl_detail'], [acl_grant, acl_revoke])
|
||||
register_multi_item_links(['acls:acl_class_acl_detail'], [acl_class_grant, acl_class_revoke])
|
||||
register_links(['acls:acl_detail'], [acl_grant, acl_revoke], menu_name='multi_item_links')
|
||||
register_links(['acls:acl_class_acl_detail'], [acl_class_grant, acl_class_revoke], menu_name='multi_item_links')
|
||||
register_setup(acl_setup_valid_classes)
|
||||
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ from history.api import register_history_type
|
||||
from history.permissions import PERMISSION_HISTORY_VIEW
|
||||
from main.api import register_diagnostic, register_maintenance_links
|
||||
from navigation.api import (register_links, register_model_list_columns,
|
||||
register_multi_item_links, register_top_menu)
|
||||
register_top_menu)
|
||||
from navigation.links import link_spacer
|
||||
from project_setup.api import register_setup
|
||||
from rest_api.classes import APIEndPoint
|
||||
@@ -77,7 +77,7 @@ register_links([DocumentTypeFilename, 'documents:document_type_filename_list', '
|
||||
|
||||
# Register document links
|
||||
register_links(Document, [document_view_simple, document_edit, document_print, document_delete, document_download, document_clear_transformations, document_update_page_count])
|
||||
register_multi_item_links(['folders:folder_view', 'index_instance_node_view', 'search', 'results', 'document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [link_spacer, document_multiple_clear_transformations, document_multiple_delete, document_multiple_download, document_multiple_update_page_count])
|
||||
register_links([Document], [link_spacer, document_multiple_clear_transformations, document_multiple_delete, document_multiple_download, document_multiple_update_page_count], menu_name='multi_item_links')
|
||||
|
||||
# Document Version links
|
||||
register_links(DocumentVersion, [document_version_revert, document_version_download])
|
||||
|
||||
@@ -7,7 +7,7 @@ from acls.permissions import ACLS_EDIT_ACL, ACLS_VIEW_ACL
|
||||
from common.utils import encapsulate
|
||||
from documents.models import Document
|
||||
from navigation.api import (register_links, register_model_list_columns,
|
||||
register_multi_item_links, register_top_menu)
|
||||
register_top_menu)
|
||||
from navigation.links import link_spacer
|
||||
from rest_api.classes import APIEndPoint
|
||||
|
||||
@@ -23,13 +23,11 @@ from .permissions import (PERMISSION_FOLDER_ADD_DOCUMENT,
|
||||
PERMISSION_FOLDER_VIEW)
|
||||
from .urls import api_urls
|
||||
|
||||
register_links(Document, [document_folder_list], menu_name='form_header')
|
||||
register_links(Folder, [folder_view, folder_edit, folder_acl_list, folder_delete])
|
||||
register_links([Folder, 'folders:folder_list', 'folders:folder_create'], [folder_list, folder_create], menu_name='secondary_menu')
|
||||
register_links(['folders:document_folder_list', 'folders:folder_add_document'], [folder_add_document], menu_name="sidebar")
|
||||
|
||||
register_multi_item_links(['folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'indexing:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [link_spacer, folder_add_multiple_documents])
|
||||
register_multi_item_links(['folders:folder_view'], [folder_document_multiple_remove])
|
||||
register_links(Document, [document_folder_list], menu_name='form_header')
|
||||
register_links([Document], [link_spacer, folder_add_multiple_documents, folder_document_multiple_remove], menu_name='multi_item_links')
|
||||
|
||||
register_top_menu(name='folders', link=folders_main_menu_link, children_views=['folders:folder_list', 'folders:folder_create', 'folders:folder_edit', 'folders:folder_delete', 'folders:folder_view', 'folders:folder_document_multiple_remove'])
|
||||
|
||||
|
||||
@@ -30,20 +30,18 @@
|
||||
{% endif %}
|
||||
|
||||
<form action="{% url 'common:multi_object_action_view' %}" class="form multi_select" method="get">
|
||||
{% get_multi_item_links_form %}
|
||||
{% get_multi_item_links_form object_list %}
|
||||
{% if multi_item_actions %}
|
||||
<div>
|
||||
<div style="float: left;">
|
||||
{% with multi_item_form as form %}
|
||||
{% include 'main/generic_form_instance.html' %}
|
||||
{% endwith %}
|
||||
{% with multi_item_form as form %}
|
||||
{% include 'main/generic_form_instance.html' %}
|
||||
{% endwith %}
|
||||
</div>
|
||||
<div style="float: left; padding-top:10px; padding-left:10px;" >
|
||||
|
||||
<button class="button" type="submit" name="{{ form.prefix }}-submit">
|
||||
<img src="{% static 'web_theme_media/images/icons/tick.png' %}" alt="{% if object %}{% trans 'Save' %}{% else %}{% trans 'Submit' %}{% endif %}" /> {% if object %}{% trans 'Save' %}{% else %}{% trans 'Submit' %}{% endif %}
|
||||
<img src="{% static 'web_theme_media/images/icons/tick.png' %}" alt="{% trans 'Submit' %}" /> {% trans 'Submit' %}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@@ -5,8 +5,7 @@ from django.utils.translation import ugettext_lazy as _
|
||||
from acls.api import class_permissions
|
||||
from common.utils import encapsulate
|
||||
from documents.models import Document, DocumentType
|
||||
from navigation.api import (register_links, register_model_list_columns,
|
||||
register_multi_item_links)
|
||||
from navigation.api import register_links, register_model_list_columns
|
||||
from navigation.links import link_spacer
|
||||
from project_setup.api import register_setup
|
||||
from rest_api.classes import APIEndPoint
|
||||
@@ -41,7 +40,8 @@ register_links(Document, [metadata_view], menu_name='form_header')
|
||||
register_links(DocumentType, [setup_document_type_metadata])
|
||||
register_links(MetadataType, [setup_metadata_type_edit, setup_metadata_type_delete])
|
||||
register_links([MetadataType, 'metadata:setup_metadata_type_list', 'metadata:setup_metadata_type_create'], [setup_metadata_type_list, setup_metadata_type_create], menu_name='secondary_menu')
|
||||
register_multi_item_links(['folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [link_spacer, metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove])
|
||||
register_links([Document], [link_spacer, metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove], menu_name='multi_item_links')
|
||||
|
||||
|
||||
register_setup(setup_metadata_type_list)
|
||||
|
||||
|
||||
@@ -1,26 +1,8 @@
|
||||
object_navigation = {}
|
||||
multi_object_navigation = {}
|
||||
model_list_columns = {}
|
||||
sidebar_templates = {}
|
||||
top_menu_entries = []
|
||||
|
||||
|
||||
def register_multi_item_links(src, links, menu_name=None):
|
||||
"""
|
||||
Register a multiple item action action to be displayed in the
|
||||
generic list template
|
||||
"""
|
||||
|
||||
multi_object_navigation.setdefault(menu_name, {})
|
||||
if hasattr(src, '__iter__'):
|
||||
for one_src in src:
|
||||
multi_object_navigation[menu_name].setdefault(one_src, {'links': []})
|
||||
multi_object_navigation[menu_name][one_src]['links'].extend(links)
|
||||
else:
|
||||
multi_object_navigation[menu_name].setdefault(src, {'links': []})
|
||||
multi_object_navigation[menu_name][src]['links'].extend(links)
|
||||
|
||||
|
||||
def register_links(src, links, menu_name=None, position=None):
|
||||
"""
|
||||
Associate a link to a model a view, or an url
|
||||
|
||||
@@ -11,12 +11,10 @@ from django.template import (TemplateSyntaxError, Library,
|
||||
VariableDoesNotExist, Node, Variable)
|
||||
from django.utils.encoding import smart_str, smart_unicode
|
||||
from django.utils.text import unescape_string_literal
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from common.utils import urlquote
|
||||
|
||||
from ..api import (object_navigation, multi_object_navigation,
|
||||
top_menu_entries, sidebar_templates)
|
||||
from ..api import object_navigation, top_menu_entries
|
||||
from ..forms import MultiItemForm
|
||||
from ..utils import resolve_to_name
|
||||
|
||||
@@ -164,7 +162,7 @@ def get_navigation_object(context):
|
||||
return obj, object_name
|
||||
|
||||
|
||||
def _get_object_navigation_links(context, menu_name=None, links_dict=object_navigation):
|
||||
def _get_object_navigation_links(context, menu_name=None, links_dict=object_navigation, obj=None):
|
||||
request = Variable('request').resolve(context)
|
||||
current_path = request.META['PATH_INFO']
|
||||
current_view = resolve_to_name(current_path)
|
||||
@@ -197,7 +195,8 @@ def _get_object_navigation_links(context, menu_name=None, links_dict=object_navi
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
obj, object_name = get_navigation_object(context)
|
||||
if not obj:
|
||||
obj, object_name = get_navigation_object(context)
|
||||
|
||||
# Match context navigation object links
|
||||
for source, data in links_dict[menu_name].items():
|
||||
@@ -256,20 +255,13 @@ def object_navigation_template(context):
|
||||
return new_context
|
||||
|
||||
|
||||
@register.tag
|
||||
def get_multi_item_links(parser, token):
|
||||
tag_name, arg = token.contents.split(None, 1)
|
||||
m = re.search(r'("?\w+"?)?.?as (\w+)', arg)
|
||||
if not m:
|
||||
raise TemplateSyntaxError('%r tag had invalid arguments' % tag_name)
|
||||
|
||||
menu_name, var_name = m.groups()
|
||||
return GetNavigationLinks(menu_name=menu_name, links_dict=multi_object_navigation, var_name=var_name)
|
||||
|
||||
|
||||
@register.simple_tag(takes_context=True)
|
||||
def get_multi_item_links_form(context):
|
||||
actions = [(link['url'], link['text']) for link in _get_object_navigation_links(context, links_dict=multi_object_navigation)]
|
||||
def get_multi_item_links_form(context, object_list=None):
|
||||
if object_list:
|
||||
first_object = object_list[0]
|
||||
else:
|
||||
first_object = None
|
||||
actions = [(link['url'], link['text']) for link in _get_object_navigation_links(context, menu_name='multi_item_links', obj=first_object)]
|
||||
form = MultiItemForm(actions=actions)
|
||||
context.update({'multi_item_form': form, 'multi_item_actions': actions})
|
||||
return ''
|
||||
|
||||
@@ -11,7 +11,7 @@ from acls.api import class_permissions
|
||||
from documents.models import Document, DocumentVersion
|
||||
from documents.signals import post_version_upload
|
||||
from main.api import register_maintenance_links
|
||||
from navigation.api import register_links, register_multi_item_links
|
||||
from navigation.api import register_links
|
||||
from navigation.links import link_spacer
|
||||
from project_tools.api import register_tool
|
||||
|
||||
@@ -26,8 +26,8 @@ from .tasks import task_do_ocr
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_links(Document, [submit_document])
|
||||
register_multi_item_links(['folders:folder_view', 'indexing:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'document:document_list_recent', 'tags:tag_tagged_item_list'], [link_spacer, submit_document_multiple])
|
||||
register_multi_item_links(['ocr:queue_document_list'], [re_queue_multiple_document, queue_document_multiple_delete])
|
||||
register_links([Document], [link_spacer, submit_document_multiple], menu_name='multi_item_links')
|
||||
register_links(['ocr:queue_document_list'], [re_queue_multiple_document, queue_document_multiple_delete])
|
||||
register_links(['ocr:queue_document_list'], [queue_document_list], menu_name='secondary_menu')
|
||||
|
||||
register_maintenance_links([all_document_ocr_cleanup], namespace='ocr', title=_(u'OCR'))
|
||||
|
||||
@@ -4,7 +4,7 @@ from django.contrib.auth.models import User
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.db.models.signals import post_save
|
||||
|
||||
from navigation.api import register_links, register_multi_item_links
|
||||
from navigation.api import register_links
|
||||
from project_setup.api import register_setup
|
||||
|
||||
from .models import Role
|
||||
@@ -15,7 +15,7 @@ from .settings import DEFAULT_ROLES
|
||||
|
||||
register_links(Role, [role_edit, role_members, role_permissions, role_delete])
|
||||
register_links([Role, 'permissions:role_create', 'permissions:role_list'], [role_list, role_create], menu_name='secondary_menu')
|
||||
register_multi_item_links(['permissions:role_permissions'], [permission_grant, permission_revoke])
|
||||
register_links(['permissions:role_permissions'], [permission_grant, permission_revoke], menu_name='multi_item_links')
|
||||
|
||||
permission_views = ['permissions:role_list', 'permissions:role_create', 'permissions:role_edit', 'permissions:role_members', 'permissions:role_permissions', 'permissions:role_delete']
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ from common.utils import encapsulate
|
||||
from documents import document_search
|
||||
from documents.models import Document
|
||||
from navigation.api import (register_links, register_model_list_columns,
|
||||
register_multi_item_links, register_top_menu)
|
||||
register_top_menu)
|
||||
from navigation.links import link_spacer
|
||||
from rest_api.classes import APIEndPoint
|
||||
|
||||
@@ -52,15 +52,15 @@ register_model_list_columns(Document, [
|
||||
},
|
||||
])
|
||||
|
||||
register_links(Tag, [tag_tagged_item_list, tag_edit, tag_acl_list, tag_delete])
|
||||
register_multi_item_links(['tags:tag_list'], [link_spacer, tag_multiple_delete])
|
||||
register_links([Tag, 'tags:tag_list', 'tags:tag_create'], [tag_list, tag_create], menu_name='secondary_menu')
|
||||
register_top_menu('tags', link={'text': _(u'Tags'), 'view': 'tags:tag_list', 'famfam': 'tag_blue'}, children_view_regex=[r'^tag_(list|create|delete|edit|tagged|acl)'])
|
||||
|
||||
register_links(Document, [tag_document_list], menu_name='form_header')
|
||||
register_links(['tags:document_tags', 'tags:tag_remove', 'tag_multiple_remove', 'tag_attach'], [tag_attach], menu_name='sidebar')
|
||||
register_multi_item_links(['tags:document_tags'], [link_spacer, single_document_multiple_tag_remove])
|
||||
register_links(Tag, [tag_tagged_item_list, tag_edit, tag_acl_list, tag_delete])
|
||||
register_links([Tag], [link_spacer, tag_multiple_delete], menu_name='multi_item_links')
|
||||
register_links([Tag, 'tags:tag_list', 'tags:tag_create'], [tag_list, tag_create], menu_name='secondary_menu')
|
||||
|
||||
register_multi_item_links(['folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [link_spacer, tag_multiple_attach, multiple_documents_selection_tag_remove])
|
||||
register_links(Document, [tag_document_list], menu_name='form_header')
|
||||
register_links(['tags:document_tags', 'tags:tag_remove', 'tags:tag_multiple_remove', 'tags:tag_attach'], [tag_attach], menu_name='sidebar')
|
||||
register_links(['tags:document_tags'], [link_spacer, single_document_multiple_tag_remove], menu_name='multi_item_links')
|
||||
register_links([Document], [link_spacer, tag_multiple_attach, multiple_documents_selection_tag_remove], menu_name='multi_item_links')
|
||||
|
||||
document_search.add_model_field('tags__label', label=_(u'Tags'))
|
||||
|
||||
@@ -3,7 +3,7 @@ from __future__ import absolute_import
|
||||
from django.contrib.auth.models import User, Group
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from navigation.api import register_links, register_multi_item_links
|
||||
from navigation.api import register_links
|
||||
from navigation.links import link_spacer
|
||||
from project_setup.api import register_setup
|
||||
from rest_api.classes import APIEndPoint
|
||||
@@ -17,11 +17,11 @@ from .urls import api_urls
|
||||
|
||||
register_links(User, [user_edit, user_set_password, user_groups, user_delete])
|
||||
register_links([User, 'user_management:user_multiple_set_password', 'user_management:user_multiple_delete', 'user_management:user_list', 'user_management:user_add'], [user_list, user_add], menu_name=u'secondary_menu')
|
||||
register_multi_item_links(['user_management:user_list'], [link_spacer, user_multiple_set_password, user_multiple_delete])
|
||||
register_links(['user_management:user_list'], [link_spacer, user_multiple_set_password, user_multiple_delete], menu_name='multi_item_links')
|
||||
|
||||
register_links(Group, [group_edit, group_members, group_delete])
|
||||
register_links(['user_management:group_multiple_delete', 'user_management:group_delete', 'user_management:group_edit', 'user_management:group_list', 'user_management:group_add', 'user_management:group_members'], [group_list, group_add], menu_name=u'secondary_menu')
|
||||
register_multi_item_links(['user_management:group_list'], [link_spacer, group_multiple_delete])
|
||||
register_links(['user_management:group_list'], [link_spacer, group_multiple_delete], menu_name='multi_item_links')
|
||||
|
||||
user_management_views = [
|
||||
'user_management:user_list', 'user_management:user_edit', 'user_management:user_add', 'user_management:user_delete',
|
||||
|
||||
Reference in New Issue
Block a user