diff --git a/apps/document_indexing/__init__.py b/apps/document_indexing/__init__.py index 492b1f165a..61050644ec 100644 --- a/apps/document_indexing/__init__.py +++ b/apps/document_indexing/__init__.py @@ -6,16 +6,14 @@ from django.db.models.signals import post_save, pre_delete, post_delete from django.dispatch import receiver from django.utils.translation import ugettext_lazy as _ -from app_registry.models import App from documents.models import Document -from maintenance.api import MaintenanceNamespace +#from maintenance.api import MaintenanceNamespace from metadata.models import DocumentMetadata -from navigation.api import (register_top_menu, register_sidebar_template, - bind_links, Link) -from project_setup.api import register_setup +from navigation.api import (register_sidebar_template, + bind_links) from .api import update_indexes, delete_indexes -from .links import (index_setup, index_setup_list, index_setup_create, +from .links import (index_setup_list, index_setup_create, index_setup_edit, index_setup_delete, index_setup_view, template_node_create, template_node_edit, template_node_delete, index_parent, document_index_list, rebuild_index_instances, @@ -24,10 +22,8 @@ from .models import (Index, IndexTemplateNode, IndexInstanceNode) logger = logging.getLogger(__name__) -register_top_menu('indexes', link=Link(text=_('indexes'), sprite='tab', view='index_list', children_view_regex=[r'^index_[i,l]'])) - -namespace = MaintenanceNamespace(_(u'indexes')) -namespace.create_tool(rebuild_index_instances) +#namespace = MaintenanceNamespace(_(u'indexes')) +#namespace.create_tool(rebuild_index_instances) register_sidebar_template(['index_instance_list'], 'indexing_help.html') @@ -37,8 +33,6 @@ bind_links([Index, 'index_setup_list', 'index_setup_create', 'template_node_edit bind_links([Index], [index_setup_edit, index_setup_delete, index_setup_view, index_setup_document_types]) bind_links([IndexTemplateNode], [template_node_create, template_node_edit, template_node_delete]) -register_setup(index_setup) - @receiver(post_save, dispatch_uid='document_index_update', sender=Document) def document_index_update(sender, **kwargs): @@ -70,12 +64,3 @@ def document_metadata_index_delete(sender, **kwargs): def document_metadata_index_post_delete(sender, **kwargs): # TODO: save result in index log update_indexes(kwargs['instance'].document) - -try: - app = App.register('document_indexing', _(u'Document indexing')) -except App.UnableToRegister: - pass -else: - app.set_dependencies(['app_registry', 'documents']) -#aelse: -# AppBackup(app, [ModelBackup()]) diff --git a/apps/document_indexing/api.py b/apps/document_indexing/api.py index 861b50a6e4..af8909152b 100644 --- a/apps/document_indexing/api.py +++ b/apps/document_indexing/api.py @@ -8,18 +8,18 @@ from django.db.models import Q from metadata.classes import MetadataClass from .models import Index, IndexInstanceNode, DocumentRenameCount -from .conf.settings import (AVAILABLE_INDEXING_FUNCTIONS, - MAX_SUFFIX_COUNT, SLUGIFY_PATHS) +#from .conf.settings import (AVAILABLE_INDEXING_FUNCTIONS, + # MAX_SUFFIX_COUNT, SLUGIFY_PATHS) from .filesystem import (fs_create_index_directory, fs_create_document_link, fs_delete_document_link, fs_delete_index_directory, assemble_suffixed_filename) from .exceptions import MaxSuffixCountReached -if SLUGIFY_PATHS == False: - # Do not slugify path or filenames and extensions - SLUGIFY_FUNCTION = lambda x: x -else: - SLUGIFY_FUNCTION = slugify +#if SLUGIFY_PATHS == False: +# # Do not slugify path or filenames and extensions +# SLUGIFY_FUNCTION = lambda x: x +#else: +SLUGIFY_FUNCTION = slugify # External functions diff --git a/apps/document_indexing/conf/settings.py b/apps/document_indexing/conf/settings.py index db210db513..8b13789179 100644 --- a/apps/document_indexing/conf/settings.py +++ b/apps/document_indexing/conf/settings.py @@ -1,52 +1 @@ -"""Configuration options for the document_indexing app""" -from django.utils.translation import ugettext_lazy as _ - -from common.utils import proper_name -from smart_settings.api import Setting, SettingNamespace - -available_indexing_functions = { - 'proper_name': proper_name -} - -namespace = SettingNamespace('document_indexing', _(u'Indexing'), module='document_indexing.conf.settings', sprite='tab') - -# Definition - -Setting( - namespace=namespace, - name='AVAILABLE_INDEXING_FUNCTIONS', - global_name='DOCUMENT_INDEXING_AVAILABLE_INDEXING_FUNCTIONS', - default=available_indexing_functions, -) - -Setting( - namespace=namespace, - name='SUFFIX_SEPARATOR', - global_name='DOCUMENT_INDEXING_SUFFIX_SEPARATOR', - default=u'_', -) - -# Filesystem serving - -Setting( - namespace=namespace, - name='SLUGIFY_PATHS', - global_name='DOCUMENT_INDEXING_FILESYSTEM_SLUGIFY_PATHS', - default=False, -) - -Setting( - namespace=namespace, - name='MAX_SUFFIX_COUNT', - global_name='DOCUMENT_INDEXING_FILESYSTEM_MAX_SUFFIX_COUNT', - default=1000, -) - -Setting( - namespace=namespace, - name='FILESYSTEM_SERVING', - global_name='DOCUMENT_INDEXING_FILESYSTEM_SERVING', - default={}, - description=_(u'A dictionary that maps the index name and where on the filesystem that index will be mirrored.'), -) diff --git a/apps/document_indexing/filesystem.py b/apps/document_indexing/filesystem.py index bf6ead9655..8dc3f471f5 100644 --- a/apps/document_indexing/filesystem.py +++ b/apps/document_indexing/filesystem.py @@ -5,7 +5,7 @@ import os from django.utils.translation import ugettext_lazy as _ -from .conf.settings import (FILESYSTEM_SERVING, SUFFIX_SEPARATOR) +#from .conf.settings import (FILESYSTEM_SERVING, SUFFIX_SEPARATOR) def assemble_suffixed_filename(filename, suffix=0): diff --git a/apps/document_indexing/icons.py b/apps/document_indexing/icons.py new file mode 100644 index 0000000000..7e09bbdde9 --- /dev/null +++ b/apps/document_indexing/icons.py @@ -0,0 +1,24 @@ +from __future__ import absolute_import + +from icons.literals import (FOLDER_PAGE, TAB, TAB_ADD, TAB_EDIT, + TAB_DELETE, TAB_VIEW, INDEX, NODE, TEXTFIELD, TEXTFIELD_DELETE, + ARROW_UP) +from icons import Icon + +icon_index_setup = Icon(TAB) +icon_index_setup_list = Icon(TAB) +icon_index_setup_create = Icon(TAB_ADD) +icon_index_setup_edit = Icon(TAB_EDIT) +icon_index_setup_delete = Icon(TAB_DELETE) +icon_index_setup_view = Icon(TAB_VIEW) +icon_index_setup_document_types = Icon(INDEX) + +icon_template_node_create = Icon(NODE) +icon_template_node_edit = Icon(TEXTFIELD) +icon_template_node_delete = Icon(TEXTFIELD_DELETE) + +icon_index_list = Icon(TAB) +icon_index_parent = Icon(ARROW_UP) +icon_document_index_list = Icon(FOLDER_PAGE) + +icon_rebuild_index_instances = Icon(FOLDER_PAGE) diff --git a/apps/document_indexing/links.py b/apps/document_indexing/links.py index 6ad82a695d..f3a1801f6e 100644 --- a/apps/document_indexing/links.py +++ b/apps/document_indexing/links.py @@ -12,6 +12,11 @@ from .permissions import (PERMISSION_DOCUMENT_INDEXING_VIEW, PERMISSION_DOCUMENT_INDEXING_EDIT, PERMISSION_DOCUMENT_INDEXING_DELETE ) +from .icons import (icon_index_setup, icon_index_setup_list, icon_index_setup_create, + icon_index_setup_edit, icon_index_setup_delete, icon_index_setup_view, + icon_index_setup_document_types, icon_template_node_create, + icon_template_node_edit, icon_template_node_delete, icon_index_list, + icon_index_parent, icon_document_index_list, icon_rebuild_index_instances) def is_root_node(context): @@ -21,21 +26,23 @@ def is_root_node(context): def is_not_instance_root_node(context): return context['object'].parent is not None -index_setup = Link(text=_(u'indexes'), view='index_setup_list', icon='tab.png', permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP]) # children_view_regex=[r'^index_setup', r'^template_node']) -index_setup_list = Link(text=_(u'index list'), view='index_setup_list', sprite='tab', permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP]) -index_setup_create = Link(text=_(u'create index'), view='index_setup_create', sprite='tab_add', permissions=[PERMISSION_DOCUMENT_INDEXING_CREATE]) -index_setup_edit = Link(text=_(u'edit'), view='index_setup_edit', args='index.pk', sprite='tab_edit', permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT]) -index_setup_delete = Link(text=_(u'delete'), view='index_setup_delete', args='index.pk', sprite='tab_delete', permissions=[PERMISSION_DOCUMENT_INDEXING_DELETE]) -index_setup_view = Link(text=_(u'tree template'), view='index_setup_view', args='index.pk', sprite='textfield', permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP]) -index_setup_document_types = Link(text=_(u'document types'), view='index_setup_document_types', args='index.pk', sprite='layout', permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT]) # children_view_regex=[r'^index_setup', r'^template_node']) -template_node_create = Link(text=_(u'new child node'), view='template_node_create', args='node.pk', sprite='textfield_add', permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT]) -template_node_edit = Link(text=_(u'edit'), view='template_node_edit', args='node.pk', sprite='textfield', permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT], conditional_disable=is_root_node) -template_node_delete = Link(text=_(u'delete'), view='template_node_delete', args='node.pk', sprite='textfield_delete', permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT], conditional_disable=is_root_node) +link_menu = Link(text=_('indexes'), icon=icon_index_setup, view='index_list', children_view_regex=[r'^index_[i,l]']) +index_setup = Link(text=_(u'indexes'), view='index_setup_list', icon=icon_index_setup, permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP]) # children_view_regex=[r'^index_setup', r'^template_node']) +index_setup_list = Link(text=_(u'index list'), view='index_setup_list', icon=icon_index_setup_list, permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP]) +index_setup_create = Link(text=_(u'create index'), view='index_setup_create', icon=icon_index_setup_create, permissions=[PERMISSION_DOCUMENT_INDEXING_CREATE]) +index_setup_edit = Link(text=_(u'edit'), view='index_setup_edit', args='index.pk', icon=icon_index_setup_edit, permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT]) +index_setup_delete = Link(text=_(u'delete'), view='index_setup_delete', args='index.pk', icon=icon_index_setup_delete, permissions=[PERMISSION_DOCUMENT_INDEXING_DELETE]) +index_setup_view = Link(text=_(u'tree template'), view='index_setup_view', args='index.pk', icon=icon_index_setup_view, permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP]) +index_setup_document_types = Link(text=_(u'document types'), view='index_setup_document_types', args='index.pk', icon=icon_index_setup_document_types, permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT]) # children_view_regex=[r'^index_setup', r'^template_node']) -index_list = Link(text=_(u'index list'), view='index_list', sprite='tab', permissions=[PERMISSION_DOCUMENT_INDEXING_VIEW]) +template_node_create = Link(text=_(u'new child node'), view='template_node_create', args='node.pk', icon=icon_template_node_create, permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT]) +template_node_edit = Link(text=_(u'edit'), view='template_node_edit', args='node.pk', icon=icon_template_node_edit, permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT], conditional_disable=is_root_node) +template_node_delete = Link(text=_(u'delete'), view='template_node_delete', args='node.pk', icon=icon_template_node_delete, permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT], conditional_disable=is_root_node) -index_parent = Link(text=_(u'go up one level'), view='index_instance_node_view', args='object.parent.pk', sprite='arrow_up', permissions=[PERMISSION_DOCUMENT_INDEXING_VIEW], dont_mark_active=True, condition=is_not_instance_root_node) -document_index_list = Link(text=_(u'indexes'), view='document_index_list', args='object.pk', sprite='folder_page', permissions=[PERMISSION_DOCUMENT_INDEXING_VIEW, PERMISSION_DOCUMENT_VIEW]) +index_list = Link(text=_(u'index list'), view='index_list', icon=icon_index_list, permissions=[PERMISSION_DOCUMENT_INDEXING_VIEW]) -rebuild_index_instances = Link(text=_('rebuild indexes'), view='rebuild_index_instances', sprite='folder_page', permissions=[PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES], description=_(u'Deletes and creates from scratch all the document indexes.')) +index_parent = Link(text=_(u'go up one level'), view='index_instance_node_view', args='object.parent.pk', icon=icon_index_parent, permissions=[PERMISSION_DOCUMENT_INDEXING_VIEW], dont_mark_active=True, condition=is_not_instance_root_node) +document_index_list = Link(text=_(u'indexes'), view='document_index_list', args='object.pk', icon=icon_document_index_list, permissions=[PERMISSION_DOCUMENT_INDEXING_VIEW, PERMISSION_DOCUMENT_VIEW]) + +rebuild_index_instances = Link(text=_('rebuild indexes'), view='rebuild_index_instances', icon=icon_rebuild_index_instances, permissions=[PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES], description=_(u'Deletes and creates from scratch all the document indexes.')) diff --git a/apps/document_indexing/models.py b/apps/document_indexing/models.py index 5c943d9dbf..9cb455637d 100644 --- a/apps/document_indexing/models.py +++ b/apps/document_indexing/models.py @@ -8,10 +8,12 @@ from mptt.fields import TreeForeignKey from documents.models import Document, DocumentType -from .conf.settings import AVAILABLE_INDEXING_FUNCTIONS +#from .conf.settings import AVAILABLE_INDEXING_FUNCTIONS -available_indexing_functions_string = (_(u'Available functions: %s') % u','.join([u'%s()' % name for name, function in AVAILABLE_INDEXING_FUNCTIONS.items()])) if AVAILABLE_INDEXING_FUNCTIONS else u'' +#available_indexing_functions_string = (_(u'Available functions: %s') % u','.join([u'%s()' % name for name, function in AVAILABLE_INDEXING_FUNCTIONS.items()])) if AVAILABLE_INDEXING_FUNCTIONS else u'' +#TODO: fix settings +#TODO: add natural key support class Index(models.Model): name = models.CharField(unique=True, max_length=64, verbose_name=_(u'name'), help_text=_(u'Internal name used to reference this index.')) diff --git a/apps/document_indexing/registry.py b/apps/document_indexing/registry.py new file mode 100644 index 0000000000..6176df34b2 --- /dev/null +++ b/apps/document_indexing/registry.py @@ -0,0 +1,68 @@ +from __future__ import absolute_import + +from django.utils.translation import ugettext_lazy as _ + +from .icons import icon_index_setup +from .links import index_setup, link_menu + +label = _(u'Document indexing') +description = _(u'Handles organization indexing for documents.') +dependencies = ['app_registry', 'icons', 'navigation', 'metadata'] +icon = icon_index_setup +setup_links = [index_setup] +menu_links = [link_menu] +bootstrap_models = ['index', 'indextemplatenode'] + +""" + +from django.utils.translation import ugettext_lazy as _ + +from common.utils import proper_name +from smart_settings.api import Setting, SettingNamespace + +available_indexing_functions = { + 'proper_name': proper_name +} + +namespace = SettingNamespace('document_indexing', _(u'Indexing'), module='document_indexing.conf.settings', sprite='tab') + +# Definition + +Setting( + namespace=namespace, + name='AVAILABLE_INDEXING_FUNCTIONS', + global_name='DOCUMENT_INDEXING_AVAILABLE_INDEXING_FUNCTIONS', + default=available_indexing_functions, +) + +Setting( + namespace=namespace, + name='SUFFIX_SEPARATOR', + global_name='DOCUMENT_INDEXING_SUFFIX_SEPARATOR', + default=u'_', +) + +# Filesystem serving + +Setting( + namespace=namespace, + name='SLUGIFY_PATHS', + global_name='DOCUMENT_INDEXING_FILESYSTEM_SLUGIFY_PATHS', + default=False, +) + +Setting( + namespace=namespace, + name='MAX_SUFFIX_COUNT', + global_name='DOCUMENT_INDEXING_FILESYSTEM_MAX_SUFFIX_COUNT', + default=1000, +) + +Setting( + namespace=namespace, + name='FILESYSTEM_SERVING', + global_name='DOCUMENT_INDEXING_FILESYSTEM_SERVING', + default={}, + description=_(u'A dictionary that maps the index name and where on the filesystem that index will be mirrored.'), +) +""" diff --git a/settings.py b/settings.py index b9c03c7907..c6413338d1 100644 --- a/settings.py +++ b/settings.py @@ -181,7 +181,7 @@ INSTALLED_APPS = ( 'ocr', 'main', #'installation', - #'document_indexing', + 'document_indexing', #'sources', #'mailer', #'document_acls', diff --git a/urls.py b/urls.py index baa28f928b..19e445d856 100644 --- a/urls.py +++ b/urls.py @@ -21,7 +21,7 @@ urlpatterns = patterns('', (r'^user_management/', include('user_management.urls')), (r'^metadata/', include('metadata.urls')), (r'^linking/', include('linking.urls')), - #(r'^document_indexing/', include('document_indexing.urls')), + (r'^document_indexing/', include('document_indexing.urls')), (r'^history/', include('history.urls')), (r'^converter/', include('converter.urls')), #(r'^sources/', include('sources.urls')),