Improved tools menu using horizontal button widget just like the project_setup app

This commit is contained in:
Roberto Rosario
2011-08-18 11:24:25 -04:00
parent 531332a5bf
commit 18899f78f2
23 changed files with 91 additions and 29 deletions

View File

@@ -2,11 +2,12 @@ from django.utils.translation import ugettext_lazy as _
from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import ImproperlyConfigured
from navigation.api import register_sidebar_template from navigation.api import register_sidebar_template
from project_tools.api import register_tool
from converter.utils import load_backend from converter.utils import load_backend
from converter.conf.settings import GRAPHICS_BACKEND from converter.conf.settings import GRAPHICS_BACKEND
formats_list = {'text': _('file formats'), 'view': 'formats_list', 'famfam': 'pictures'} formats_list = {'text': _('file formats'), 'view': 'formats_list', 'famfam': 'pictures', 'icon': 'pictures.png'}
register_sidebar_template(['formats_list'], 'converter_file_formats_help.html') register_sidebar_template(['formats_list'], 'converter_file_formats_help.html')
@@ -14,3 +15,5 @@ try:
backend = load_backend().ConverterClass() backend = load_backend().ConverterClass()
except ImproperlyConfigured: except ImproperlyConfigured:
raise ImproperlyConfigured(u'Missing or incorrect converter backend: %s' % GRAPHICS_BACKEND) raise ImproperlyConfigured(u'Missing or incorrect converter backend: %s' % GRAPHICS_BACKEND)
register_tool(formats_list)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -3,7 +3,7 @@ from django.utils.translation import ugettext_lazy as _
from navigation.api import register_top_menu, register_sidebar_template, \ from navigation.api import register_top_menu, register_sidebar_template, \
register_links register_links
from permissions.api import register_permission, set_namespace_title from permissions.api import register_permission, set_namespace_title
from main.api import register_tool from main.api import register_maintenance
from documents.literals import PERMISSION_DOCUMENT_VIEW from documents.literals import PERMISSION_DOCUMENT_VIEW
from documents.models import Document from documents.models import Document
@@ -24,7 +24,7 @@ register_top_menu('indexes', link={'text': _('indexes'), 'famfam': 'folder_page'
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 = {'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.')}
register_tool(rebuild_index_instances, namespace='document_indexing', title=_(u'Indexes')) register_maintenance(rebuild_index_instances, namespace='document_indexing', title=_(u'Indexes'))
register_sidebar_template(['index_instance_list'], 'indexing_help.html') register_sidebar_template(['index_instance_list'], 'indexing_help.html')

View File

@@ -6,7 +6,7 @@ from common.utils import validate_path, encapsulate
from navigation.api import register_links, register_top_menu, \ from navigation.api import register_links, register_top_menu, \
register_model_list_columns, register_multi_item_links, \ register_model_list_columns, register_multi_item_links, \
register_sidebar_template register_sidebar_template
from main.api import register_diagnostic, register_tool from main.api import register_diagnostic, register_maintenance
from permissions.api import register_permission, set_namespace_title from permissions.api import register_permission, set_namespace_title
from tags.widgets import get_tags_inline_widget_simple from tags.widgets import get_tags_inline_widget_simple
from history.api import register_history_type from history.api import register_history_type
@@ -158,7 +158,7 @@ register_links(['document_page_transformation_edit', 'document_page_transformati
register_diagnostic('documents', _(u'Documents'), document_missing_list) register_diagnostic('documents', _(u'Documents'), document_missing_list)
register_tool(document_find_all_duplicates, namespace='documents', title=_(u'documents')) register_maintenance(document_find_all_duplicates, namespace='documents', title=_(u'documents'))
def document_exists(document): def document_exists(document):

View File

@@ -1,6 +1,7 @@
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from permissions.api import register_permission, set_namespace_title from permissions.api import register_permission, set_namespace_title
from project_tools.api import register_tool
PERMISSION_HISTORY_VIEW = {'namespace': 'history', 'name': u'history_view', 'label': _(u'Access the history app')} PERMISSION_HISTORY_VIEW = {'namespace': 'history', 'name': u'history_view', 'label': _(u'Access the history app')}
@@ -8,6 +9,6 @@ set_namespace_title('history', _(u'History'))
register_permission(PERMISSION_HISTORY_VIEW) register_permission(PERMISSION_HISTORY_VIEW)
# TODO: support permissions AND operand # TODO: support permissions AND operand
history_list = {'text': _(u'history'), 'view': 'history_list', 'famfam': 'book', 'permissions': [PERMISSION_HISTORY_VIEW], 'children_views': ['history_view']} history_list = {'text': _(u'history'), 'view': 'history_list', 'famfam': 'book', 'icon': 'book.png', 'permissions': [PERMISSION_HISTORY_VIEW], 'children_views': ['history_view']}
#register_links(['history_view'], [history_list], menu_name='sidebar') register_tool(history_list)

Binary file not shown.

After

Width:  |  Height:  |  Size: 858 B

View File

@@ -2,9 +2,8 @@ from django.utils.translation import ugettext_lazy as _
from navigation.api import register_top_menu from navigation.api import register_top_menu
from navigation.api import register_links from navigation.api import register_links
from history import history_list
from converter import formats_list
from project_setup.api import register_setup from project_setup.api import register_setup
from project_tools.api import register_tool
from main.conf.settings import SIDE_BAR_SEARCH from main.conf.settings import SIDE_BAR_SEARCH
from main.conf.settings import DISABLE_HOME_VIEW from main.conf.settings import DISABLE_HOME_VIEW
@@ -13,13 +12,11 @@ from main.conf.settings import DISABLE_HOME_VIEW
def is_superuser(context): def is_superuser(context):
return context['request'].user.is_staff or context['request'].user.is_superuser return context['request'].user.is_staff or context['request'].user.is_superuser
check_settings = {'text': _(u'settings'), 'view': 'setting_list', 'famfam': 'cog'} maintenance_menu = {'text': _(u'maintenance'), 'view': 'maintenance_menu', 'famfam': 'wrench', 'icon': 'wrench.png'}
statistics = {'text': _(u'statistics'), 'view': 'statistics', 'famfam': 'table'} statistics = {'text': _(u'statistics'), 'view': 'statistics', 'famfam': 'table', 'icon': 'blackboard_sum.png'}
diagnostics = {'text': _(u'diagnostics'), 'view': 'diagnostics', 'famfam': 'pill'} diagnostics = {'text': _(u'diagnostics'), 'view': 'diagnostics', 'famfam': 'pill', 'icon': 'pill.png'}
tools_menu = {'text': _(u'tools'), 'view': 'tools_menu', 'famfam': 'wrench'} sentry = {'text': _(u'sentry'), 'url': '/sentry', 'famfam': 'bug', 'icon': 'bug.png', 'condition': is_superuser}
admin_site = {'text': _(u'admin site'), 'url': '/admin', 'famfam': 'keyboard', 'icon': 'keyboard.png', 'condition': is_superuser} admin_site = {'text': _(u'admin site'), 'url': '/admin', 'famfam': 'keyboard', 'icon': 'keyboard.png', 'condition': is_superuser}
sentry = {'text': _(u'sentry'), 'url': '/sentry', 'famfam': 'bug', 'condition': is_superuser}
document_types = {'text': _(u'document types'), 'view': 'document_type_list', 'famfam': 'layout', 'children_view_regex': ['document_type', 'setup_document_type']}
__version_info__ = { __version_info__ = {
'major': 0, 'major': 0,
@@ -29,19 +26,11 @@ __version_info__ = {
'serial': 0 'serial': 0
} }
#setup_views = []
#setup_views.extend(permission_views)
#setup_views.extend(user_management_views)
#setup_views.extend(['setting_list'])
if not DISABLE_HOME_VIEW: if not DISABLE_HOME_VIEW:
register_top_menu('home', link={'text': _(u'home'), 'view': 'home', 'famfam': 'house'}, position=0) register_top_menu('home', link={'text': _(u'home'), 'view': 'home', 'famfam': 'house'}, position=0)
if not SIDE_BAR_SEARCH: if not SIDE_BAR_SEARCH:
register_top_menu('search', link={'text': _(u'search'), 'view': 'search', 'famfam': 'zoom'}, children_path_regex=[r'^search/']) register_top_menu('search', link={'text': _(u'search'), 'view': 'search', 'famfam': 'zoom'}, children_path_regex=[r'^search/'])
register_top_menu('tools', link=tools_menu, children_views=['statistics', 'history_list', 'formats_list'], position=-3)
register_links(['tools_menu', 'statistics', 'history_list', 'history_view', 'formats_list'], [tools_menu, statistics, history_list, formats_list, sentry], menu_name='secondary_menu')
def get_version(): def get_version():
""" """
@@ -58,3 +47,7 @@ def get_version():
__version__ = get_version() __version__ = get_version()
register_setup(admin_site) register_setup(admin_site)
register_tool(maintenance_menu)
register_tool(statistics)
register_tool(diagnostics)
register_tool(sentry)

View File

@@ -14,7 +14,7 @@ def register_diagnostic(namespace, title, link):
diagnostics[namespace] = namespace_dict diagnostics[namespace] = namespace_dict
def register_tool(link, title=None, namespace=None): def register_maintenance(link, title=None, namespace=None):
namespace_dict = tools.get(namespace, {'title': None, 'links': []}) namespace_dict = tools.get(namespace, {'title': None, 'links': []})
namespace_dict['title'] = title namespace_dict['title'] = title
link['url'] = link.get('url', reverse_lazy(link['view'])) link['url'] = link.get('url', reverse_lazy(link['view']))

Binary file not shown.

After

Width:  |  Height:  |  Size: 1021 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -2,7 +2,7 @@ from django.conf.urls.defaults import patterns, url
urlpatterns = patterns('main.views', urlpatterns = patterns('main.views',
url(r'^$', 'home', (), 'home'), url(r'^$', 'home', (), 'home'),
url(r'^tools_menu/$', 'tools_menu', (), 'tools_menu'), url(r'^maintenance_menu/$', 'maintenance_menu', (), 'maintenance_menu'),
url(r'^statistics/$', 'statistics', (), 'statistics'), url(r'^statistics/$', 'statistics', (), 'statistics'),
url(r'^diagnostics/$', 'diagnostics_view', (), 'diagnostics'), url(r'^diagnostics/$', 'diagnostics_view', (), 'diagnostics'),
) )

View File

@@ -21,7 +21,7 @@ def home(request):
context_instance=RequestContext(request)) context_instance=RequestContext(request))
def tools_menu(request): def maintenance_menu(request):
user_tools = {} user_tools = {}
for namespace, values in tools.items(): for namespace, values in tools.items():
for link in values['links']: for link in values['links']:
@@ -38,7 +38,7 @@ def tools_menu(request):
return render_to_response('tools.html', { return render_to_response('tools.html', {
'blocks': user_tools, 'blocks': user_tools,
'title': _(u'tools menu') 'title': _(u'maintenance menu')
}, },
context_instance=RequestContext(request)) context_instance=RequestContext(request))

View File

@@ -14,7 +14,7 @@ from django.db.models.signals import post_save
from navigation.api import register_links, register_top_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 permissions.api import register_permission, set_namespace_title
from documents.models import Document from documents.models import Document
from main.api import register_tool from main.api import register_maintenance
from scheduler.api import register_interval_job from scheduler.api import register_interval_job
@@ -68,7 +68,7 @@ register_multi_item_links(['queue_document_list'], [re_queue_multiple_document,
register_links(['setup_queue_transformation_create', 'setup_queue_transformation_edit', 'setup_queue_transformation_delete', 'document_queue_disable', 'document_queue_enable', 'queue_document_list', 'node_active_list', 'setup_queue_transformation_list'], [queue_document_list, node_active_list], menu_name='secondary_menu') register_links(['setup_queue_transformation_create', 'setup_queue_transformation_edit', 'setup_queue_transformation_delete', 'document_queue_disable', 'document_queue_enable', 'queue_document_list', 'node_active_list', 'setup_queue_transformation_list'], [queue_document_list, node_active_list], menu_name='secondary_menu')
register_links(['setup_queue_transformation_edit', 'setup_queue_transformation_delete', 'setup_queue_transformation_list', 'setup_queue_transformation_create'], [setup_queue_transformation_create], menu_name='sidebar') register_links(['setup_queue_transformation_edit', 'setup_queue_transformation_delete', 'setup_queue_transformation_list', 'setup_queue_transformation_create'], [setup_queue_transformation_create], menu_name='sidebar')
register_tool(all_document_ocr_cleanup, namespace='ocr', title=_(u'OCR')) register_maintenance(all_document_ocr_cleanup, namespace='ocr', title=_(u'OCR'))
#Menus #Menus
register_top_menu('ocr', link={'text': _('OCR'), 'famfam': 'hourglass', 'view': 'queue_document_list'}, children_path_regex=[r'^ocr/']) register_top_menu('ocr', link={'text': _('OCR'), 'famfam': 'hourglass', 'view': 'queue_document_list'}, children_path_regex=[r'^ocr/'])

View File

@@ -0,0 +1,11 @@
from django.utils.translation import ugettext_lazy as _
from navigation.api import register_top_menu
#TODO: FIXME dynamic children_path_regext on api register_setup
#register_top_menu('setup_menu', link={'text': _(u'setup'), 'view': 'setup_list', 'famfam': 'cog'}, children_path_regex=[r'^settings/', r'^user_management/', r'^permissions', r'^documents/type', r'^metadata/setup', r'sources/setup'], position=-2)
register_top_menu('tools', link={'text': _(u'tools'), 'view': 'tools_list', 'famfam': 'wrench'}, children_views=['statistics', 'history_list', 'formats_list'], position=-3)
#register_links(['tools_menu', 'statistics', 'history_list', 'history_view', 'formats_list'], [tools_menu, statistics, history_list, formats_list, sentry], menu_name='secondary_menu')

View File

@@ -0,0 +1,5 @@
tool_items = []
def register_tool(link):
tool_items.append(link)

View File

@@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

View File

@@ -0,0 +1,23 @@
"""
This file demonstrates two different styles of tests (one doctest and one
unittest). These will both pass when you run "manage.py test".
Replace these with more appropriate tests for your application.
"""
from django.test import TestCase
class SimpleTest(TestCase):
def test_basic_addition(self):
"""
Tests that 1 + 1 always equals 2.
"""
self.failUnlessEqual(1 + 1, 2)
__test__ = {"doctest": """
Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}

View File

@@ -0,0 +1,5 @@
from django.conf.urls.defaults import patterns, url
urlpatterns = patterns('project_tools.views',
url(r'^list/$', 'tools_list', (), 'tools_list'),
)

View File

@@ -0,0 +1,16 @@
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.utils.translation import ugettext_lazy as _
from project_tools.api import tool_items
from project_setup.widgets import setup_button_widget
def tools_list(request):
context = {
'object_list': [setup_button_widget(request, item) for item in tool_items],
'title': _(u'tools'),
}
return render_to_response('generic_list_horizontal.html', context,
context_instance=RequestContext(request))

View File

@@ -126,6 +126,7 @@ INSTALLED_APPS = (
'django.contrib.comments', 'django.contrib.comments',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'project_setup', 'project_setup',
'project_tools',
'smart_settings', 'smart_settings',
'navigation', 'navigation',
'web_theme', 'web_theme',

View File

@@ -27,6 +27,7 @@ urlpatterns = patterns('',
(r'^converter/', include('converter.urls')), (r'^converter/', include('converter.urls')),
(r'^sources/', include('sources.urls')), (r'^sources/', include('sources.urls')),
(r'^project_setup/', include('project_setup.urls')), (r'^project_setup/', include('project_setup.urls')),
(r'^project_tools/', include('project_tools.urls')),
) )