Improved tools menu using horizontal button widget just like the project_setup app
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
BIN
apps/converter/static/images/icons/pictures.png
Normal file
BIN
apps/converter/static/images/icons/pictures.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
@@ -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')
|
||||||
|
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
BIN
apps/history/static/images/icons/book.png
Normal file
BIN
apps/history/static/images/icons/book.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 858 B |
@@ -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)
|
||||||
|
|||||||
@@ -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']))
|
||||||
|
|||||||
BIN
apps/main/static/images/icons/blackboard_sum.png
Normal file
BIN
apps/main/static/images/icons/blackboard_sum.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1021 B |
BIN
apps/main/static/images/icons/bug.png
Normal file
BIN
apps/main/static/images/icons/bug.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.0 KiB |
BIN
apps/main/static/images/icons/pill.png
Normal file
BIN
apps/main/static/images/icons/pill.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
BIN
apps/main/static/images/icons/wrench.png
Normal file
BIN
apps/main/static/images/icons/wrench.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
@@ -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'),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|
||||||
|
|||||||
@@ -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/'])
|
||||||
|
|||||||
11
apps/project_tools/__init__.py
Normal file
11
apps/project_tools/__init__.py
Normal 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')
|
||||||
5
apps/project_tools/api.py
Normal file
5
apps/project_tools/api.py
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
tool_items = []
|
||||||
|
|
||||||
|
|
||||||
|
def register_tool(link):
|
||||||
|
tool_items.append(link)
|
||||||
3
apps/project_tools/models.py
Normal file
3
apps/project_tools/models.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
from django.db import models
|
||||||
|
|
||||||
|
# Create your models here.
|
||||||
23
apps/project_tools/tests.py
Normal file
23
apps/project_tools/tests.py
Normal 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
|
||||||
|
"""}
|
||||||
|
|
||||||
5
apps/project_tools/urls.py
Normal file
5
apps/project_tools/urls.py
Normal 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'),
|
||||||
|
)
|
||||||
16
apps/project_tools/views.py
Normal file
16
apps/project_tools/views.py
Normal 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))
|
||||||
@@ -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',
|
||||||
|
|||||||
1
urls.py
1
urls.py
@@ -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')),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user