diff --git a/apps/document_indexing/__init__.py b/apps/document_indexing/__init__.py index 04a32606da..6a4afd30cd 100644 --- a/apps/document_indexing/__init__.py +++ b/apps/document_indexing/__init__.py @@ -1,6 +1,6 @@ from django.utils.translation import ugettext_lazy as _ -from navigation.api import register_menu +from navigation.api import register_top_menu from permissions.api import register_permission, set_namespace_title from main.api import register_tool @@ -13,9 +13,7 @@ register_permission(PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES) index_list = {'text': _(u'index list'), 'view': 'index_instance_list', 'famfam': 'folder_page', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW]} -register_menu([ - {'text': _('indexes'), 'view': 'index_instance_list', 'links': [ - ], 'famfam': 'folder_page', 'position': 2, 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW]}]) +register_top_menu('indexes', link={'text': _('indexes'), 'famfam': 'folder_page', 'view': 'index_instance_list'}, children_path_regex=[r'^document_indexing'], position=10) 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.')} diff --git a/apps/documents/__init__.py b/apps/documents/__init__.py index 0321550a6e..55f26f96bc 100644 --- a/apps/documents/__init__.py +++ b/apps/documents/__init__.py @@ -2,7 +2,7 @@ from django.utils.translation import ugettext_lazy as _ from django.core.urlresolvers import reverse from django.conf import settings -from navigation.api import register_links, register_menu, \ +from navigation.api import register_links, register_top_menu, \ register_model_list_columns, register_multi_item_links from main.api import register_diagnostic, register_tool from permissions.api import register_permission, set_namespace_title @@ -39,7 +39,6 @@ register_history_type(HISTORY_DOCUMENT_DELETED) document_list = {'text': _(u'documents list'), 'view': 'document_list', 'famfam': 'page', 'permissions': [PERMISSION_DOCUMENT_VIEW]} document_list_recent = {'text': _(u'recent documents list'), 'view': 'document_list_recent', 'famfam': 'page', 'permissions': [PERMISSION_DOCUMENT_VIEW]} -document_create = {'text': _(u'upload a new document'), 'view': 'document_create', 'famfam': 'page_add', 'permissions': [PERMISSION_DOCUMENT_CREATE]} document_create_multiple = {'text': _(u'upload new documents'), 'view': 'document_create_multiple', 'famfam': 'page_add', 'permissions': [PERMISSION_DOCUMENT_CREATE]} document_create_siblings = {'text': _(u'upload new documents using same metadata'), 'view': 'document_create_siblings', 'args': 'object.id', 'famfam': 'page_copy', 'permissions': [PERMISSION_DOCUMENT_CREATE]} document_view_simple = {'text': _(u'details (simple)'), 'view': 'document_view_simple', 'args': 'object.id', 'famfam': 'page', 'permissions': [PERMISSION_DOCUMENT_VIEW]} @@ -90,7 +89,7 @@ register_links(Document, [document_create_siblings], menu_name='sidebar') register_multi_item_links(['search', 'results', 'document_group_view', 'document_list', 'document_list_recent'], [document_multiple_clear_transformations, document_multiple_delete]) -register_links(['document_list_recent', 'document_list', 'document_create', 'document_create_multiple', 'upload_document', 'upload_document_from_local', 'upload_document_from_staging', 'upload_document_from_user_staging'], [document_list_recent, document_list, document_create_multiple], menu_name='sidebar') +register_links(['document_list_recent', 'document_list', 'document_create', 'document_create_multiple', 'upload_document', 'upload_document_from_local', 'upload_document_from_staging', 'upload_document_from_user_staging', 'document_find_duplicates'], [document_list_recent, document_list, document_create_multiple], menu_name='secondary_menu') register_links(DocumentPage, [ document_page_transformation_list, document_page_view, @@ -146,7 +145,4 @@ register_model_list_columns(Document, [ }, ]) -register_menu([ - {'text': _(u'documents'), 'view': 'document_list_recent', 'links': [ - document_list_recent, document_list, document_create_multiple - ], 'famfam': 'page', 'position': 1}]) +register_top_menu('documents', link={'famfam': 'folder', 'text': _(u'documents'), 'view': 'document_list_recent'}, children_path_regex=[r'^documents/', r'^metadata/', r'comments'], position=0) diff --git a/apps/folders/__init__.py b/apps/folders/__init__.py index bf6aaba5da..e81ad20cd1 100644 --- a/apps/folders/__init__.py +++ b/apps/folders/__init__.py @@ -1,6 +1,6 @@ from django.utils.translation import ugettext_lazy as _ -from navigation.api import register_links, register_menu, \ +from navigation.api import register_links, register_top_menu, \ register_multi_item_links from navigation.api import register_sidebar_template @@ -11,16 +11,14 @@ folder_create = {'text': _('create folder'), 'view': 'folder_create', 'famfam': folder_edit = {'text': _('edit'), 'view': 'folder_edit', 'args': 'object.id', 'famfam': 'folder_edit'} folder_delete = {'text': _('delete'), 'view': 'folder_delete', 'args': 'object.id', 'famfam': 'folder_delete'} folder_document_multiple_remove = {'text': _('remove'), 'view': 'folder_document_multiple_remove', 'famfam': 'delete'} +folder_view = {'text': _(u'folder documents'), 'view': 'folder_view', 'args': 'object.id', 'famfam': 'folder_go'} register_multi_item_links(['folder_view'], [folder_document_multiple_remove]) -register_links(Folder, [folder_edit, folder_delete]) +register_links(Folder, [folder_view, folder_edit, folder_delete]) -register_links(['folder_edit', 'folder_delete', 'folder_list', 'folder_create'], [folder_list, folder_create], menu_name='sidebar') +register_links(['folder_edit', 'folder_delete', 'folder_list', 'folder_create', 'folder_view'], [folder_list, folder_create], menu_name='secondary_menu') -register_menu([ - {'text': _('folders'), 'view': 'folder_list', 'links': [ - folder_list, folder_create - ], 'famfam': 'folder_user', 'position': 2}]) +register_top_menu(name='folders', link={'text': _('folders'), 'famfam': 'folder_user', 'view': 'folder_list'}, children_path_regex=[r'^folders/']) register_sidebar_template(['document_view_advanced', 'document_view_simple'], 'folders_sidebar_template.html') diff --git a/apps/folders/views.py b/apps/folders/views.py index a24b1b02ca..a39d850d7c 100644 --- a/apps/folders/views.py +++ b/apps/folders/views.py @@ -74,6 +74,7 @@ def folder_edit(request, folder_id): 'title': _(u'edit folder: %s') % folder, 'form': form, 'object': folder, + 'object_name': _(u'folder'), }, context_instance=RequestContext(request)) diff --git a/apps/history/__init__.py b/apps/history/__init__.py index f00d07661e..21aa5a9e86 100644 --- a/apps/history/__init__.py +++ b/apps/history/__init__.py @@ -1,6 +1,6 @@ from django.utils.translation import ugettext_lazy as _ -from navigation.api import register_links, register_menu +from navigation.api import register_links from permissions.api import register_permission, set_namespace_title PERMISSION_HISTORY_VIEW = {'namespace': 'history', 'name': u'history_view', 'label': _(u'Access the history app')} @@ -11,4 +11,4 @@ register_permission(PERMISSION_HISTORY_VIEW) # TODO: support permissions AND operand history_list = {'text': _(u'history'), 'view': 'history_list', 'famfam': 'book', 'permissions': [PERMISSION_HISTORY_VIEW]} -register_links(['history_list'], [history_list], menu_name='sidebar') +#register_links(['history_view'], [history_list], menu_name='sidebar') diff --git a/apps/main/__init__.py b/apps/main/__init__.py index 926dc3a2fe..4b9a5bb6c2 100644 --- a/apps/main/__init__.py +++ b/apps/main/__init__.py @@ -1,8 +1,8 @@ from django.utils.translation import ugettext_lazy as _ -from navigation.api import register_menu -from permissions import role_list -from user_management import user_list, group_list +from navigation.api import register_top_menu +from permissions import role_list, permission_views +from user_management import user_list, group_list, user_management_views from navigation.api import register_links from history import history_list @@ -15,7 +15,7 @@ def is_superuser(context): check_settings = {'text': _(u'settings'), 'view': 'setting_list', 'famfam': 'cog'} statistics = {'text': _(u'statistics'), 'view': 'statistics', 'famfam': 'table'} diagnostics = {'text': _(u'diagnostics'), 'view': 'diagnostics', 'famfam': 'pill'} -tools = {'text': _(u'tools'), 'view': 'tools_menu', 'famfam': 'wrench'} +tools_menu = {'text': _(u'tools'), 'view': 'tools_menu', 'famfam': 'wrench'} admin_site = {'text': _(u'admin site'), 'url': '/admin', 'famfam': 'keyboard', 'condition': is_superuser} sentry = {'text': _(u'sentry'), 'url': '/sentry', 'famfam': 'bug', 'condition': is_superuser} @@ -23,33 +23,32 @@ sentry = {'text': _(u'sentry'), 'url': '/sentry', 'famfam': 'bug', 'condition': __version_info__ = { 'major': 0, 'minor': 7, - 'micro': 1, + 'micro': 2, 'releaselevel': 'final', 'serial': 0 } -main_menu = [ - {'text': _(u'home'), 'view': 'home', 'famfam': 'house', 'position': 0}, - {'text': _(u'tools'), 'view': 'tools_menu', 'links': [ - tools, statistics, diagnostics, history_list, sentry, - ], 'famfam': 'wrench', 'name': 'tools', 'position': 7}, - - {'text': _(u'setup'), 'view': 'setting_list', 'links': [ - check_settings, role_list, user_list, group_list, admin_site - ], 'famfam': 'cog', 'name': 'setup', 'position': 8}, - - {'text': _(u'about'), 'view': 'about', 'famfam': 'information', 'position': 9}, -] +#setup_views = [] +#setup_views.extend(permission_views) +#setup_views.extend(user_management_views) +#setup_views.extend(['setting_list']) +register_top_menu('home', link={'text': _(u'home'), 'view': 'home', 'famfam': 'house'}, position=0) if not SIDE_BAR_SEARCH: - main_menu.insert(1, {'text': _(u'search'), 'view': 'search', 'famfam': 'zoom', 'position': 2}) + register_top_menu('search', link={'text': _(u'search'), 'view': 'search', 'famfam': 'zoom'}) +register_top_menu('tools', link=tools_menu, children_views=['statistics', 'history_list']) +#register_top_menu('setup_menu', link={'text': _(u'setup'), 'view': 'setting_list', 'famfam': 'cog'}, children=setup_views) +register_top_menu('setup_menu', link={'text': _(u'setup'), 'view': 'setting_list', 'famfam': 'cog'}, children_path_regex=[r'^settings/', r'^user_management/', r'permissions']) +register_top_menu('about', link={'text': _(u'about'), 'view': 'about', 'famfam': 'information'}) -register_menu(main_menu) - -register_links(['tools_menu', 'statistics', 'diagnostics', 'history_list'], [tools, statistics, diagnostics, history_list, sentry], menu_name='sidebar') -#register_links(['setting_list'], [check_settings, role_list, user_list, group_list, admin_site], menu_name='sidebar') +register_links(['tools_menu', 'statistics', 'history_list', 'history_view'], [tools_menu, statistics, history_list, sentry], menu_name='secondary_menu') +tool_links = [check_settings, role_list, user_list, group_list, admin_site] +register_links(['setting_list'], tool_links, menu_name='secondary_menu') +register_links(permission_views, tool_links, menu_name='secondary_menu') +register_links(user_management_views, tool_links, menu_name='secondary_menu') + def get_version(): """ Return the formatted version information diff --git a/apps/ocr/__init__.py b/apps/ocr/__init__.py index 821360e0e0..90b4562eda 100644 --- a/apps/ocr/__init__.py +++ b/apps/ocr/__init__.py @@ -3,7 +3,7 @@ from django.utils.translation import ugettext from django.db.utils import DatabaseError from django.db.models.signals import post_save -from navigation.api import register_links, register_menu, register_multi_item_links +from navigation.api import register_links, register_top_menu, register_multi_item_links from permissions.api import register_permission, set_namespace_title from documents.models import Document from main.api import register_tool @@ -43,17 +43,13 @@ register_links(DocumentQueue, [document_queue_disable, document_queue_enable]) register_multi_item_links(['queue_document_list'], [re_queue_multiple_document, queue_document_multiple_delete]) -register_links(['queue_document_list', 'node_active_list'], [queue_document_list, node_active_list], menu_name='sidebar') +register_links(['queue_document_list', 'node_active_list'], [queue_document_list, node_active_list], menu_name='secondary_menu') register_tool(all_document_ocr_cleanup, namespace='ocr', title=_(u'OCR')) #Menus -register_menu([ - {'text': _('OCR'), 'view': 'queue_document_list', 'links':[ - queue_document_list, node_active_list - ], 'famfam': 'hourglass', 'position': 5}]) - +register_top_menu('ocr', link={'text': _('OCR'), 'famfam': 'hourglass', 'view': 'queue_document_list'}, children_path_regex=[r'^ocr/']) try: default_queue, created = DocumentQueue.objects.get_or_create(name='default') diff --git a/apps/permissions/__init__.py b/apps/permissions/__init__.py index 96b594de84..008e4a17bb 100644 --- a/apps/permissions/__init__.py +++ b/apps/permissions/__init__.py @@ -24,8 +24,9 @@ role_permissions = {'text': _(u'role permissions'), 'view': 'role_permissions', role_delete = {'text': _(u'delete'), 'view': 'role_delete', 'args': 'object.id', 'famfam': 'medal_gold_delete', 'permissions': [PERMISSION_ROLE_DELETE]} register_links(Role, [role_edit, role_delete, role_permissions, role_members]) -register_links(['role_members', 'role_list', 'role_view', 'role_create', 'role_edit', 'role_permissions', 'role_delete'], [role_create, role_list], menu_name='sidebar') +register_links(['role_members', 'role_list', 'role_view', 'role_create', 'role_edit', 'role_permissions', 'role_delete'], [role_create], menu_name='sidebar') +permission_views = ['role_list', 'role_create', 'role_edit', 'role_members', 'role_permissions', 'role_delete'] def user_post_save(sender, instance, **kwargs): if kwargs.get('created', False): diff --git a/apps/tags/__init__.py b/apps/tags/__init__.py index 1e88ddf934..0961c3202b 100644 --- a/apps/tags/__init__.py +++ b/apps/tags/__init__.py @@ -1,6 +1,6 @@ from django.utils.translation import ugettext_lazy as _ -from navigation.api import register_links, register_menu, \ +from navigation.api import register_links, register_top_menu, \ register_model_list_columns, register_multi_item_links from permissions.api import register_permission, set_namespace_title from navigation.api import register_sidebar_template @@ -20,11 +20,11 @@ register_permission(PERMISSION_TAG_REMOVE) register_permission(PERMISSION_TAG_DELETE) register_permission(PERMISSION_TAG_EDIT) -tag_list = {'text': _(u'tags'), 'view': 'tag_list', 'famfam': 'tag_blue'} +tag_list = {'text': _(u'tag list'), 'view': 'tag_list', 'famfam': 'tag_blue'} tag_document_remove = {'text': _(u'remove'), 'view': 'tag_remove', 'args': ['object.id', 'document.id'], 'famfam': 'tag_blue_delete', 'permissions': [PERMISSION_TAG_REMOVE]} tag_delete = {'text': _(u'delete'), 'view': 'tag_delete', 'args': 'object.id', 'famfam': 'tag_blue_delete', 'permissions': [PERMISSION_TAG_DELETE]} tag_edit = {'text': _(u'edit'), 'view': 'tag_edit', 'args': 'object.id', 'famfam': 'tag_blue_edit', 'permissions': [PERMISSION_TAG_EDIT]} -tag_tagged_item_list = {'text': _(u'tagged documents'), 'view': 'tag_tagged_item_list', 'args': 'object.id', 'famfam': 'tag_blue'} +tag_tagged_item_list = {'text': _(u'tagged documents'), 'view': 'tag_tagged_item_list', 'args': 'object.id', 'famfam': 'page'} tag_multiple_delete = {'text': _(u'delete'), 'view': 'tag_multiple_delete', 'famfam': 'tag_blue_delete', 'permissions': [PERMISSION_TAG_DELETE]} register_model_list_columns(Tag, [ @@ -39,17 +39,12 @@ register_model_list_columns(Tag, [ } ]) -register_links(Tag, [tag_tagged_item_list, tag_edit]) +register_links(Tag, [tag_tagged_item_list, tag_edit, tag_delete]) register_multi_item_links(['tag_list'], [tag_multiple_delete]) +register_links(['tag_list', 'tag_remove', 'tag_delete', 'tag_edit', 'tag_tagged_item_list', 'tag_multiple_delete'], [tag_list], menu_name='secondary_menu') + register_sidebar_template(['document_view_advanced', 'document_view_simple'], 'tags_sidebar_template.html') -tags_menu = [ - { - 'text': _(u'tags'), 'view': 'tag_list', 'famfam': 'tag_blue', 'position': 4, 'links': [ - tag_list - ] - }, -] -register_menu(tags_menu) +register_top_menu('tags', link={'text': _(u'tags'), 'view': 'tag_list', 'famfam': 'tag_blue'}, children_path_regex=[r'^tags/']) diff --git a/apps/tags/views.py b/apps/tags/views.py index 302b208524..f0a72d240f 100644 --- a/apps/tags/views.py +++ b/apps/tags/views.py @@ -168,4 +168,11 @@ def tag_tagged_item_list(request, tag_id): tag = get_object_or_404(Tag, pk=tag_id) object_list = [tagged_item.content_object for tagged_item in tag.taggit_taggeditem_items.all()] - return document_list(request, object_list=object_list, title=_('documents with the tag "%s"') % tag) + return document_list( + request, + object_list=object_list, + title=_('documents with the tag "%s"') % tag, + extra_context={ + 'object': tag + } + ) diff --git a/apps/user_management/__init__.py b/apps/user_management/__init__.py index 2338336058..52d37e5f68 100644 --- a/apps/user_management/__init__.py +++ b/apps/user_management/__init__.py @@ -40,9 +40,16 @@ group_multiple_delete = {u'text': _('delete'), 'view': 'group_multiple_delete', group_members = {'text': _(u'members'), 'view': 'group_members', 'args': 'object.id', 'famfam': 'group_link', 'permissions': [PERMISSION_GROUP_EDIT]} register_links(User, [user_edit, user_set_password, user_delete]) -register_links(['user_multiple_set_password', 'user_set_password', 'user_multiple_delete', 'user_delete', 'user_edit', 'user_list', 'user_add'], [user_add, user_list], menu_name=u'sidebar') +register_links(['user_multiple_set_password', 'user_set_password', 'user_multiple_delete', 'user_delete', 'user_edit', 'user_list', 'user_add'], [user_add], menu_name=u'sidebar') register_multi_item_links(['user_list'], [user_multiple_set_password, user_multiple_delete]) register_links(Group, [group_edit, group_members, group_delete]) -register_links(['group_multiple_delete', 'group_delete', 'group_edit', 'group_list', 'group_add', 'group_members'], [group_add, group_list], menu_name=u'sidebar') +register_links(['group_multiple_delete', 'group_delete', 'group_edit', 'group_list', 'group_add', 'group_members'], [group_add], menu_name=u'sidebar') register_multi_item_links(['group_list'], [group_multiple_delete]) + +user_management_views = [ + 'user_list', 'user_edit', 'user_add', 'user_delete', + 'user_multiple_delete', 'user_set_password', + 'user_multiple_set_password', 'group_list', 'group_edit', 'group_add', + 'group_delete', 'group_multiple_delete', 'group_members' +]