Converted project_setup and project_tools apps to use new elementtree based menus

This commit is contained in:
Roberto Rosario
2012-03-16 21:42:03 -04:00
parent dcf568ead5
commit 28a3e209ab
13 changed files with 60 additions and 97 deletions

View File

@@ -3,7 +3,7 @@ from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
from django.core.exceptions import ImproperlyConfigured
from navigation.api import register_sidebar_template
from navigation.api import register_sidebar_template, Link
from project_tools.api import register_tool
from .utils import load_backend
@@ -12,7 +12,7 @@ from .conf.settings import GRAPHICS_BACKEND
def is_superuser(context):
return context['request'].user.is_staff or context['request'].user.is_superuser
formats_list = {'text': _('file formats'), 'view': 'formats_list', 'famfam': 'pictures', 'icon': 'pictures.png', 'condition': is_superuser, 'children_view_regex': [r'formats_list']}
formats_list = Link(text=_('file formats'), view='formats_list', sprite='pictures', icon='pictures.png', condition=is_superuser, children_view_regex=[r'formats_list'])
register_sidebar_template(['formats_list'], 'converter_file_formats_help.html')

View File

@@ -177,12 +177,10 @@ register_model_list_columns(Document, [
register_top_menu(
'documents',
link=Link(sprite='page', text=_(u'documents'), view='document_list_recent'),
children_path_regex=[
r'^documents/[^t]', r'^metadata/[^s]', r'comments', r'tags/document', r'grouping/[^s]', r'history/list/for_object/documents',
],
link=Link(sprite='page', text=_(u'documents'), view='document_list_recent',
children_url_regex=[r'^documents/[^t]', r'^metadata/[^s]', r'comments', r'tags/document', r'grouping/[^s]', r'history/list/for_object/documents'],
children_view_regex=[r'document_acl', r'smart_link_instance'],
children_views=['document_folder_list', 'folder_add_document', 'document_index_list', 'upload_version', ],
children_views=['document_folder_list', 'folder_add_document', 'document_index_list', 'upload_version', ]),
position=1
)

View File

@@ -32,7 +32,7 @@ bind_links([Folder], [folder_view, folder_edit, folder_delete, folder_acl_list])
bind_links([Folder, 'folder_list', 'folder_create'], [folder_list, folder_create], menu_name='secondary_menu')
register_top_menu(name='folders', link=Link(text=_('folders'), sprite='folder_user', view='folder_list'), children_views=['folder_list', 'folder_create', 'folder_edit', 'folder_delete', 'folder_view', 'folder_document_multiple_remove'])
register_top_menu(name='folders', link=Link(text=_('folders'), sprite='folder_user', view='folder_list', children_views=['folder_list', 'folder_create', 'folder_edit', 'folder_delete', 'folder_view', 'folder_document_multiple_remove']))
bind_links([Document], [document_folder_list], menu_name='form_header')

View File

@@ -3,10 +3,8 @@ from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
from project_tools.api import register_tool
from navigation.api import Link
from .permissions import PERMISSION_HISTORY_VIEW
history_list = {'text': _(u'history'), 'view': 'history_list', 'famfam': 'book', 'icon': 'book.png', 'permissions': [PERMISSION_HISTORY_VIEW], 'children_view_regex': [r'history_[l,v]']}
register_tool(history_list)
register_tool(Link(text=_(u'history'), view='history_list', sprite='book', icon='book.png', permissions=[PERMISSION_HISTORY_VIEW], children_view_regex=[r'history_[l,v]']))

View File

@@ -38,7 +38,7 @@ admin_site = Link(text=_(u'admin site'), view='admin:index', sprite='keyboard',
if not DISABLE_HOME_VIEW:
register_top_menu('home', link=Link(text=_(u'home'), view='home', sprite='house'), position=0)
if not SIDE_BAR_SEARCH:
register_top_menu('search', link=Link(text=_(u'search'), view='search', sprite='zoom'), children_path_regex=[r'^search/'])
register_top_menu('search', link=Link(text=_(u'search'), view='search', sprite='zoom', children_url_regex=[r'^search/']))
def get_version():

View File

@@ -33,7 +33,7 @@ class ResolvedLink(object):
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):
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):
self.text = text
self.view = view
self.args = args or {}
@@ -172,7 +172,7 @@ def register_multi_item_links(src, links, menu_name=None):
Register a multiple item action action to be displayed in the
generic list template
"""
# TODO: simplify by removing __iter__ support
multi_object_navigation.setdefault(menu_name, {})
if hasattr(src, '__iter__'):
for one_src in src:
@@ -183,36 +183,21 @@ def register_multi_item_links(src, links, menu_name=None):
multi_object_navigation[menu_name][src]['links'].extend(links)
def register_top_menu(name, link, children_views=None, children_path_regex=None, children_view_regex=None, position=None):
#def register_top_menu(name, link, children_views=None, children_path_regex=None, children_view_regex=None, position=None):
def register_top_menu(name, link, children_view_regex=None, position=None):
"""
Register a new menu entry for the main menu displayed at the top
of the page
"""
menu = SubElement(main_menu, name, link=link)
#entry = {'link': link, 'name': name}
#if children_views:
# entry['children_views'] = children_views
#if children_path_regex:
# entry['children_path_regex'] = children_path_regex
#if children_view_regex:
# entry['children_view_regex'] = children_view_regex
#if position is not None:
# entry['position'] = position
# top_menu_entries.insert(position, entry)
#else:
# length = len(top_menu_entries)
# entry['position'] = length
# top_menu_entries.append(entry)
new_menu = SubElement(main_menu, name, link=link, position=position)
#sort_menu_entries()
#
#return entry
return menu
sorted_menus = sorted(main_menu.getchildren(), key=lambda k: (k.get('position') < 0, k.get('position')))
main_menu.clear()
for menu in sorted_menus:
main_menu.append(menu)
#def sort_menu_entries():
# global top_menu_entries
# top_menu_entries = sorted(top_menu_entries, key=lambda k: (k['position'] < 0, k['position']))
return new_menu
def register_model_list_columns(model, columns):

View File

@@ -4,13 +4,6 @@ from elementtree.ElementTree import Element, SubElement
from . import setup_menu
#setup_items = []
def register_setup(link):
#setup_items.append(link)
SubElement(setup_menu, 'a', link=link)
# Append the link's children_view_regex to the setup main menu children view regex
#setup_link.setdefault('children_view_regex', [])
#setup_link['children_view_regex'].extend(link.get('children_view_regex', []))
SubElement(setup_menu, 'setup_link', link=link)

View File

@@ -6,13 +6,11 @@ from django.utils.translation import ugettext_lazy as _
from navigation.widgets import button_navigation_widget
#from .api import setup_items
from . import setup_menu
def setup_list(request):
context = {
#'object_list': [button_navigation_widget(request, item) for item in setup_items],
'object_list': [button_navigation_widget(request, item.get('link')) for item in setup_menu.getchildren()],
'title': _(u'setup items'),
}

View File

@@ -4,12 +4,6 @@ from elementtree.ElementTree import Element, SubElement
from . import tool_menu
#tool_items = []
def register_tool(link):
#tool_items.append(link)
SubElement(tool_menu, 'a', link=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', []))
SubElement(tool_menu, 'tool_link', link=link)

View File

@@ -6,14 +6,12 @@ from django.utils.translation import ugettext_lazy as _
from navigation.widgets import button_navigation_widget
#from .api import tool_items
from . import tool_menu
def tools_list(request):
context = {
#'object_list': [button_navigation_widget(request, item) for item in tool_items],
'object_list': [button_navigation_widget(request, item) for item in tool_menu.getchildren()],
'object_list': [button_navigation_widget(request, item.get('link')) for item in tool_menu.getchildren()],
'title': _(u'tools'),
}

View File

@@ -3,7 +3,7 @@ from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
from navigation.api import (bind_links,
register_model_list_columns)
register_model_list_columns, Link)
from common.utils import encapsulate
from project_setup.api import register_setup
from documents.permissions import (PERMISSION_DOCUMENT_NEW_VERSION,
@@ -20,29 +20,29 @@ from .permissions import (PERMISSION_SOURCES_SETUP_VIEW,
from .tasks import task_fetch_pop3_emails, task_fetch_imap_emails
from .conf.settings import EMAIL_PROCESSING_INTERVAL
staging_file_preview = {'text': _(u'preview'), 'class': 'fancybox-noscaling', 'view': 'staging_file_preview', 'args': ['source.source_type', 'source.pk', 'object.id'], 'famfam': 'zoom', 'permissions': [PERMISSION_DOCUMENT_NEW_VERSION, PERMISSION_DOCUMENT_CREATE]}
staging_file_delete = {'text': _(u'delete'), 'view': 'staging_file_delete', 'args': ['source.source_type', 'source.pk', 'object.id'], 'famfam': 'delete', 'keep_query': True, 'permissions': [PERMISSION_DOCUMENT_NEW_VERSION, PERMISSION_DOCUMENT_CREATE]}
staging_file_preview = Link(text=_(u'preview'), klass='fancybox-noscaling', view='staging_file_preview', args=['source.source_type', 'source.pk', 'object.pk'], sprite='zoom', permissions=[PERMISSION_DOCUMENT_NEW_VERSION, PERMISSION_DOCUMENT_CREATE])
staging_file_delete = Link(text=_(u'delete'), view='staging_file_delete', args=['source.source_type', 'source.pk', 'object.pk'], sprite='delete', keep_query=True, permissions=[PERMISSION_DOCUMENT_NEW_VERSION, PERMISSION_DOCUMENT_CREATE])
setup_sources = {'text': _(u'sources'), 'view': 'setup_web_form_list', 'famfam': 'application_form', 'icon': 'application_form.png', 'children_classes': [WebForm], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW], 'children_view_regex': [r'setup_web_form', r'setup_staging_folder', r'setup_source_', r'setup_pop3', r'setup_imap']}
setup_web_form_list = {'text': _(u'web forms'), 'view': 'setup_web_form_list', 'famfam': 'application_form', 'icon': 'application_form.png', 'children_classes': [WebForm], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]}
setup_staging_folder_list = {'text': _(u'staging folders'), 'view': 'setup_staging_folder_list', 'famfam': 'folder_camera', 'children_classes': [StagingFolder], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]}
setup_watch_folder_list = {'text': _(u'watch folders'), 'view': 'setup_watch_folder_list', 'famfam': 'folder_magnify', 'children_classes': [WatchFolder], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]}
setup_pop3_email_list = {'text': _(u'POP3 email'), 'view': 'setup_pop3_email_list', 'famfam': 'email', 'children_classes': [POP3Email], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]}
setup_imap_email_list = {'text': _(u'IMAP email'), 'view': 'setup_imap_email_list', 'famfam': 'email', 'children_classes': [IMAPEmail], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]}
setup_sources = Link(text=_(u'sources'), view='setup_web_form_list', sprite='application_form', icon='application_form.png', children_classes=[WebForm], permissions=[PERMISSION_SOURCES_SETUP_VIEW], children_view_regex=[r'setup_web_form', r'setup_staging_folder', r'setup_source_', r'setup_pop3', r'setup_imap'])
setup_web_form_list = Link(text=_(u'web forms'), view='setup_web_form_list', sprite='application_form', icon='application_form.png', children_classes=[WebForm], permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_staging_folder_list = Link(text=_(u'staging folders'), view='setup_staging_folder_list', sprite='folder_camera', children_classes=[StagingFolder], permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_watch_folder_list = Link(text=_(u'watch folders'), view='setup_watch_folder_list', sprite='folder_magnify', children_classes=[WatchFolder], permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_pop3_email_list = Link(text=_(u'POP3 email'), view='setup_pop3_email_list', sprite='email', children_classes=[POP3Email], permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_imap_email_list = Link(text=_(u'IMAP email'), view='setup_imap_email_list', sprite='email', children_classes=[IMAPEmail], permissions=[PERMISSION_SOURCES_SETUP_VIEW])
setup_source_edit = {'text': _(u'edit'), 'view': 'setup_source_edit', 'args': ['source.source_type', 'source.pk'], 'famfam': 'application_form_edit', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
setup_source_delete = {'text': _(u'delete'), 'view': 'setup_source_delete', 'args': ['source.source_type', 'source.pk'], 'famfam': 'application_form_delete', 'permissions': [PERMISSION_SOURCES_SETUP_DELETE]}
setup_source_create = {'text': _(u'add new source'), 'view': 'setup_source_create', 'args': 'source_type', 'famfam': 'application_form_add', 'permissions': [PERMISSION_SOURCES_SETUP_CREATE]}
setup_source_log_list = {'text': _(u'logs'), 'view': 'setup_source_log_list', 'args': ['source.source_type', 'source.pk'], 'famfam': 'book', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
setup_source_edit = Link(text=_(u'edit'), view='setup_source_edit', args=['source.source_type', 'source.pk'], sprite='application_form_edit', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
setup_source_delete = Link(text=_(u'delete'), view='setup_source_delete', args=['source.source_type', 'source.pk'], sprite='application_form_delete', permissions=[PERMISSION_SOURCES_SETUP_DELETE])
setup_source_create = Link(text=_(u'add new source'), view='setup_source_create', args='source_type', sprite='application_form_add', permissions=[PERMISSION_SOURCES_SETUP_CREATE])
setup_source_log_list = Link(text=_(u'logs'), view='setup_source_log_list', args=['source.source_type', 'source.pk'], sprite='book', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
setup_source_transformation_list = {'text': _(u'transformations'), 'view': 'setup_source_transformation_list', 'args': ['source.source_type', 'source.pk'], 'famfam': 'shape_move_front', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
setup_source_transformation_create = {'text': _(u'add transformation'), 'view': 'setup_source_transformation_create', 'args': ['source.source_type', 'source.pk'], 'famfam': 'shape_square_add', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
setup_source_transformation_edit = {'text': _(u'edit'), 'view': 'setup_source_transformation_edit', 'args': 'transformation.pk', 'famfam': 'shape_square_edit', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
setup_source_transformation_delete = {'text': _(u'delete'), 'view': 'setup_source_transformation_delete', 'args': 'transformation.pk', 'famfam': 'shape_square_delete', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
setup_source_transformation_list = Link(text=_(u'transformations'), view='setup_source_transformation_list', args=['source.source_type', 'source.pk'], sprite='shape_move_front', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
setup_source_transformation_create = Link(text=_(u'add transformation'), view='setup_source_transformation_create', args=['source.source_type', 'source.pk'], sprite='shape_square_add', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
setup_source_transformation_edit = Link(text=_(u'edit'), view='setup_source_transformation_edit', args='transformation.pk', sprite='shape_square_edit', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
setup_source_transformation_delete = Link(text=_(u'delete'), view='setup_source_transformation_delete', args='transformation.pk', sprite='shape_square_delete', permissions=[PERMISSION_SOURCES_SETUP_EDIT])
source_list = {'text': _(u'Document sources'), 'view': 'setup_web_form_list', 'famfam': 'page_add', 'children_url_regex': [r'sources/setup'], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]}
source_list = Link(text=_(u'Document sources'), view='setup_web_form_list', sprite='page_add', children_url_regex=[r'sources/setup'], permissions=[PERMISSION_SOURCES_SETUP_VIEW])
upload_version = {'text': _(u'upload new version'), 'view': 'upload_version', 'args': 'object.pk', 'famfam': 'page_add', 'permissions': [PERMISSION_DOCUMENT_NEW_VERSION]}
upload_version = Link(text=_(u'upload new version'), view='upload_version', args='object.pk', sprite='page_add', permissions=[PERMISSION_DOCUMENT_NEW_VERSION])
bind_links([StagingFile], [staging_file_delete])

View File

@@ -3,29 +3,29 @@ from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User, Group
from navigation.api import bind_links, register_multi_item_links
from navigation.api import bind_links, register_multi_item_links, Link
from project_setup.api import register_setup
from .permissions import (PERMISSION_USER_CREATE, PERMISSION_USER_EDIT,
PERMISSION_USER_VIEW, PERMISSION_USER_DELETE, PERMISSION_GROUP_CREATE,
PERMISSION_GROUP_EDIT, PERMISSION_GROUP_VIEW, PERMISSION_GROUP_DELETE)
user_list = {'text': _(u'user list'), 'view': 'user_list', 'famfam': 'user', 'permissions': [PERMISSION_USER_VIEW]}
user_setup = {'text': _(u'users'), 'view': 'user_list', 'famfam': 'user', 'icon': 'user.png', 'permissions': [PERMISSION_USER_VIEW], 'children_view_regex': [r'^user_']}
user_edit = {'text': _(u'edit'), 'view': 'user_edit', 'args': 'object.id', 'famfam': 'user_edit', 'permissions': [PERMISSION_USER_EDIT]}
user_add = {'text': _(u'create new user'), 'view': 'user_add', 'famfam': 'user_add', 'permissions': [PERMISSION_USER_CREATE]}
user_delete = {u'text': _('delete'), 'view': 'user_delete', 'args': 'object.id', 'famfam': 'user_delete', 'permissions': [PERMISSION_USER_DELETE]}
user_multiple_delete = {u'text': _('delete'), 'view': 'user_multiple_delete', 'famfam': 'user_delete', 'permissions': [PERMISSION_USER_DELETE]}
user_set_password = {u'text': _('reset password'), 'view': 'user_set_password', 'args': 'object.id', 'famfam': 'lock_edit', 'permissions': [PERMISSION_USER_EDIT]}
user_multiple_set_password = {u'text': _('reset password'), 'view': 'user_multiple_set_password', 'famfam': 'lock_edit', 'permissions': [PERMISSION_USER_EDIT]}
user_list = Link(text=_(u'user list'), view='user_list', sprite='user', permissions=[PERMISSION_USER_VIEW])
user_setup = Link(text=_(u'users'), view='user_list', sprite='user', icon='user.png', permissions=[PERMISSION_USER_VIEW], children_view_regex=[r'^user_'])
user_edit = Link(text=_(u'edit'), view='user_edit', args='object.id', sprite='user_edit', permissions=[PERMISSION_USER_EDIT])
user_add = Link(text=_(u'create new user'), view='user_add', sprite='user_add', permissions=[PERMISSION_USER_CREATE])
user_delete = Link(text=_('delete'), view='user_delete', args='object.id', sprite='user_delete', permissions=[PERMISSION_USER_DELETE])
user_multiple_delete = Link(text=_('delete'), view='user_multiple_delete', sprite='user_delete', permissions=[PERMISSION_USER_DELETE])
user_set_password = Link(text=_('reset password'), view='user_set_password', args='object.id', sprite='lock_edit', permissions=[PERMISSION_USER_EDIT])
user_multiple_set_password = Link(text=_('reset password'), view='user_multiple_set_password', sprite='lock_edit', permissions=[PERMISSION_USER_EDIT])
group_list = {'text': _(u'group list'), 'view': 'group_list', 'famfam': 'group', 'permissions': [PERMISSION_GROUP_VIEW]}
group_setup = {'text': _(u'groups'), 'view': 'group_list', 'famfam': 'group', 'icon': 'group.png', 'permissions': [PERMISSION_GROUP_VIEW], 'children_view_regex': [r'^group_']}
group_edit = {'text': _(u'edit'), 'view': 'group_edit', 'args': 'object.id', 'famfam': 'group_edit', 'permissions': [PERMISSION_GROUP_EDIT]}
group_add = {'text': _(u'create new group'), 'view': 'group_add', 'famfam': 'group_add', 'permissions': [PERMISSION_GROUP_CREATE]}
group_delete = {u'text': _('delete'), 'view': 'group_delete', 'args': 'object.id', 'famfam': 'group_delete', 'permissions': [PERMISSION_GROUP_DELETE]}
group_multiple_delete = {u'text': _('delete'), 'view': 'group_multiple_delete', 'famfam': 'group_delete', 'permissions': [PERMISSION_GROUP_DELETE]}
group_members = {'text': _(u'members'), 'view': 'group_members', 'args': 'object.id', 'famfam': 'group_link', 'permissions': [PERMISSION_GROUP_EDIT]}
group_list = Link(text=_(u'group list'), view='group_list', sprite='group', permissions=[PERMISSION_GROUP_VIEW])
group_setup = Link(text=_(u'groups'), view='group_list', sprite='group', icon='group.png', permissions=[PERMISSION_GROUP_VIEW], children_view_regex=[r'^group_'])
group_edit = Link(text=_(u'edit'), view='group_edit', args='object.id', sprite='group_edit', permissions=[PERMISSION_GROUP_EDIT])
group_add = Link(text=_(u'create new group'), view='group_add', sprite='group_add', permissions=[PERMISSION_GROUP_CREATE])
group_delete = Link(text=_('delete'), view='group_delete', args='object.id', sprite='group_delete', permissions=[PERMISSION_GROUP_DELETE])
group_multiple_delete = Link(text=_('delete'), view='group_multiple_delete', sprite='group_delete', permissions=[PERMISSION_GROUP_DELETE])
group_members = Link(text=_(u'members'), view='group_members', args='object.id', sprite='group_link', permissions=[PERMISSION_GROUP_EDIT])
bind_links([User], [user_edit, user_set_password, user_delete])
bind_links(['user_multiple_set_password', 'user_set_password', 'user_multiple_delete', 'user_delete', 'user_edit', 'user_list', 'user_add'], [user_list, user_add], menu_name=u'secondary_menu')

View File

@@ -2,7 +2,6 @@ from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
#from navigation.api import bind_links, register_multi_item_links
from project_setup.api import register_setup
from navigation.api import Link, bind_links
@@ -41,4 +40,4 @@ bind_links([Workflow, 'setup_workflow_list', 'setup_workflow_create'], [setup_wo
#bind_links([WorkflowState], [setup_workflow_states_edit_link])
register_setup({'text': _(u'workflows'), 'view': 'setup_workflow_list', 'icon': 'chart_organisation.png', 'permissions': [PERMISSION_WORKFLOW_SETUP_VIEW]})
register_setup(Link(text=_(u'workflows'), view='setup_workflow_list', icon='chart_organisation.png', permissions=[PERMISSION_WORKFLOW_SETUP_VIEW]))