Add from __future__ import unicode_literals, issue #37
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from __future__ import absolute_import
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django.db.models.signals import post_save, post_delete
|
||||
from django.dispatch import receiver
|
||||
@@ -36,7 +36,7 @@ def document_metadata_index_post_delete(sender, **kwargs):
|
||||
task_index_document.apply_async(kwargs=dict(document_id=kwargs['instance'].document.pk), queue='indexing')
|
||||
|
||||
|
||||
register_maintenance_links([rebuild_index_instances], namespace='document_indexing', title=_(u'Indexes'))
|
||||
register_maintenance_links([rebuild_index_instances], namespace='document_indexing', title=_('Indexes'))
|
||||
|
||||
register_links(Document, [document_index_list], menu_name='form_header')
|
||||
register_links([Index, 'indexing:index_setup_list', 'indexing:index_setup_create'], [index_setup_list, index_setup_create], menu_name='secondary_menu')
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from __future__ import absolute_import
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.contrib import admin
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from __future__ import absolute_import
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import logging
|
||||
|
||||
@@ -47,7 +47,7 @@ def cascade_eval(document, template_node, parent_index_instance=None):
|
||||
try:
|
||||
result = eval(template_node.expression, {'document': document}, AVAILABLE_INDEXING_FUNCTIONS)
|
||||
except Exception as exception:
|
||||
error_message = _(u'Error indexing document: %(document)s; expression: %(expression)s; %(exception)s') % {
|
||||
error_message = _('Error indexing document: %(document)s; expression: %(expression)s; %(exception)s') % {
|
||||
'document': document, 'expression': template_node.expression, 'exception': exception}
|
||||
warnings.append(error_message)
|
||||
logger.debug(error_message)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from __future__ import absolute_import
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from __future__ import absolute_import
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django import forms
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
from __future__ import absolute_import
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from documents.permissions import PERMISSION_DOCUMENT_VIEW
|
||||
|
||||
from .permissions import (PERMISSION_DOCUMENT_INDEXING_CREATE,
|
||||
PERMISSION_DOCUMENT_INDEXING_EDIT,
|
||||
PERMISSION_DOCUMENT_INDEXING_DELETE,
|
||||
PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES,
|
||||
PERMISSION_DOCUMENT_INDEXING_SETUP,
|
||||
PERMISSION_DOCUMENT_INDEXING_VIEW)
|
||||
from .permissions import (
|
||||
PERMISSION_DOCUMENT_INDEXING_CREATE, PERMISSION_DOCUMENT_INDEXING_EDIT,
|
||||
PERMISSION_DOCUMENT_INDEXING_DELETE,
|
||||
PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES,
|
||||
PERMISSION_DOCUMENT_INDEXING_SETUP, PERMISSION_DOCUMENT_INDEXING_VIEW
|
||||
)
|
||||
|
||||
|
||||
def is_not_instance_root_node(context):
|
||||
@@ -20,23 +20,23 @@ def is_not_root_node(context):
|
||||
return not context['node'].is_root_node()
|
||||
|
||||
|
||||
index_setup = {'text': _(u'Indexes'), 'view': 'indexing:index_setup_list', 'icon': 'tab.png', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP]}
|
||||
index_setup_list = {'text': _(u'Indexes'), 'view': 'indexing:index_setup_list', 'famfam': 'tab', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP]}
|
||||
index_setup_create = {'text': _(u'Create index'), 'view': 'indexing:index_setup_create', 'famfam': 'tab_add', 'permissions': [PERMISSION_DOCUMENT_INDEXING_CREATE]}
|
||||
index_setup_edit = {'text': _(u'Edit'), 'view': 'indexing:index_setup_edit', 'args': 'index.pk', 'famfam': 'tab_edit', 'permissions': [PERMISSION_DOCUMENT_INDEXING_EDIT]}
|
||||
index_setup_delete = {'text': _(u'Delete'), 'view': 'indexing:index_setup_delete', 'args': 'index.pk', 'famfam': 'tab_delete', 'permissions': [PERMISSION_DOCUMENT_INDEXING_DELETE]}
|
||||
index_setup_view = {'text': _(u'Tree template'), 'view': 'indexing:index_setup_view', 'args': 'index.pk', 'famfam': 'textfield', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP]}
|
||||
index_setup_document_types = {'text': _(u'Document types'), 'view': 'indexing:index_setup_document_types', 'args': 'index.pk', 'famfam': 'layout', 'permissions': [PERMISSION_DOCUMENT_INDEXING_EDIT]}
|
||||
index_setup = {'text': _('Indexes'), 'view': 'indexing:index_setup_list', 'icon': 'tab.png', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP]}
|
||||
index_setup_list = {'text': _('Indexes'), 'view': 'indexing:index_setup_list', 'famfam': 'tab', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP]}
|
||||
index_setup_create = {'text': _('Create index'), 'view': 'indexing:index_setup_create', 'famfam': 'tab_add', 'permissions': [PERMISSION_DOCUMENT_INDEXING_CREATE]}
|
||||
index_setup_edit = {'text': _('Edit'), 'view': 'indexing:index_setup_edit', 'args': 'index.pk', 'famfam': 'tab_edit', 'permissions': [PERMISSION_DOCUMENT_INDEXING_EDIT]}
|
||||
index_setup_delete = {'text': _('Delete'), 'view': 'indexing:index_setup_delete', 'args': 'index.pk', 'famfam': 'tab_delete', 'permissions': [PERMISSION_DOCUMENT_INDEXING_DELETE]}
|
||||
index_setup_view = {'text': _('Tree template'), 'view': 'indexing:index_setup_view', 'args': 'index.pk', 'famfam': 'textfield', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP]}
|
||||
index_setup_document_types = {'text': _('Document types'), 'view': 'indexing:index_setup_document_types', 'args': 'index.pk', 'famfam': 'layout', 'permissions': [PERMISSION_DOCUMENT_INDEXING_EDIT]}
|
||||
|
||||
template_node_create = {'text': _(u'New child node'), 'view': 'indexing:template_node_create', 'args': 'node.pk', 'famfam': 'textfield_add', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP]}
|
||||
template_node_edit = {'text': _(u'Edit'), 'view': 'indexing:template_node_edit', 'args': 'node.pk', 'famfam': 'textfield', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP], 'condition': is_not_root_node}
|
||||
template_node_delete = {'text': _(u'Delete'), 'view': 'indexing:template_node_delete', 'args': 'node.pk', 'famfam': 'textfield_delete', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP], 'condition': is_not_root_node}
|
||||
template_node_create = {'text': _('New child node'), 'view': 'indexing:template_node_create', 'args': 'node.pk', 'famfam': 'textfield_add', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP]}
|
||||
template_node_edit = {'text': _('Edit'), 'view': 'indexing:template_node_edit', 'args': 'node.pk', 'famfam': 'textfield', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP], 'condition': is_not_root_node}
|
||||
template_node_delete = {'text': _('Delete'), 'view': 'indexing:template_node_delete', 'args': 'node.pk', 'famfam': 'textfield_delete', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP], 'condition': is_not_root_node}
|
||||
|
||||
index_list = {'text': _(u'Index list'), 'view': 'indexing:index_list', 'famfam': 'tab', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW]}
|
||||
index_list = {'text': _('Index list'), 'view': 'indexing:index_list', 'famfam': 'tab', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW]}
|
||||
|
||||
index_parent = {'text': _(u'Go up one level'), 'view': 'indexing:index_instance_node_view', 'args': 'object.parent.pk', 'famfam': 'arrow_up', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW], 'dont_mark_active': True, 'condition': is_not_instance_root_node}
|
||||
document_index_list = {'text': _(u'Indexes'), 'view': 'indexing:document_index_list', 'args': 'object.pk', 'famfam': 'folder_page', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW, PERMISSION_DOCUMENT_VIEW]}
|
||||
index_parent = {'text': _('Go up one level'), 'view': 'indexing:index_instance_node_view', 'args': 'object.parent.pk', 'famfam': 'arrow_up', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW], 'dont_mark_active': True, 'condition': is_not_instance_root_node}
|
||||
document_index_list = {'text': _('Indexes'), 'view': 'indexing:document_index_list', 'args': 'object.pk', 'famfam': 'folder_page', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW, PERMISSION_DOCUMENT_VIEW]}
|
||||
|
||||
document_index_main_menu_link = {'text': _('Indexes'), 'famfam': 'tab', 'view': 'indexing:index_list'}
|
||||
|
||||
rebuild_index_instances = {'text': _('Rebuild indexes'), 'view': 'indexing: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': 'indexing:rebuild_index_instances', 'famfam': 'folder_page', 'permissions': [PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES], 'description': _('Deletes and creates from scratch all the document indexes.')}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.db import models
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from __future__ import absolute_import
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
@@ -12,11 +12,11 @@ from .managers import IndexManager
|
||||
|
||||
|
||||
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.'))
|
||||
name = models.CharField(unique=True, max_length=64, verbose_name=_('Name'), help_text=_('Internal name used to reference this index.'))
|
||||
# TODO: normalize 'title' to 'label'
|
||||
title = models.CharField(unique=True, max_length=128, verbose_name=_(u'Title'), help_text=_(u'The name that will be visible to users.'))
|
||||
enabled = models.BooleanField(default=True, verbose_name=_(u'Enabled'), help_text=_(u'Causes this index to be visible and updated when document data changes.'))
|
||||
document_types = models.ManyToManyField(DocumentType, verbose_name=_(u'Document types'))
|
||||
title = models.CharField(unique=True, max_length=128, verbose_name=_('Title'), help_text=_('The name that will be visible to users.'))
|
||||
enabled = models.BooleanField(default=True, verbose_name=_('Enabled'), help_text=_('Causes this index to be visible and updated when document data changes.'))
|
||||
document_types = models.ManyToManyField(DocumentType, verbose_name=_('Document types'))
|
||||
|
||||
objects = IndexManager()
|
||||
|
||||
@@ -44,7 +44,7 @@ class Index(models.Model):
|
||||
IndexTemplateNode.objects.get_or_create(parent=None, index=self)
|
||||
|
||||
def get_document_types_names(self):
|
||||
return u', '.join([unicode(document_type) for document_type in self.document_types.all()] or [u'None'])
|
||||
return ', '.join([unicode(document_type) for document_type in self.document_types.all()] or ['None'])
|
||||
|
||||
def natural_key(self):
|
||||
return (self.name,)
|
||||
@@ -56,30 +56,30 @@ class Index(models.Model):
|
||||
return 0
|
||||
|
||||
class Meta:
|
||||
verbose_name = _(u'Index')
|
||||
verbose_name_plural = _(u'Indexes')
|
||||
verbose_name = _('Index')
|
||||
verbose_name_plural = _('Indexes')
|
||||
|
||||
|
||||
class IndexTemplateNode(MPTTModel):
|
||||
parent = TreeForeignKey('self', null=True, blank=True)
|
||||
index = models.ForeignKey(Index, verbose_name=_(u'Index'), related_name='node_templates')
|
||||
expression = models.CharField(max_length=128, verbose_name=_(u'Indexing expression'), help_text=_(u'Enter a python string expression to be evaluated.'))
|
||||
enabled = models.BooleanField(default=True, verbose_name=_(u'Enabled'), help_text=_(u'Causes this node to be visible and updated when document data changes.'))
|
||||
link_documents = models.BooleanField(default=False, verbose_name=_(u'Link documents'), help_text=_(u'Check this option to have this node act as a container for documents and not as a parent for further nodes.'))
|
||||
index = models.ForeignKey(Index, verbose_name=_('Index'), related_name='node_templates')
|
||||
expression = models.CharField(max_length=128, verbose_name=_('Indexing expression'), help_text=_('Enter a python string expression to be evaluated.'))
|
||||
enabled = models.BooleanField(default=True, verbose_name=_('Enabled'), help_text=_('Causes this node to be visible and updated when document data changes.'))
|
||||
link_documents = models.BooleanField(default=False, verbose_name=_('Link documents'), help_text=_('Check this option to have this node act as a container for documents and not as a parent for further nodes.'))
|
||||
|
||||
def __unicode__(self):
|
||||
return self.expression
|
||||
|
||||
class Meta:
|
||||
verbose_name = _(u'Index node template')
|
||||
verbose_name_plural = _(u'Indexes node template')
|
||||
verbose_name = _('Index node template')
|
||||
verbose_name_plural = _('Indexes node template')
|
||||
|
||||
|
||||
class IndexInstanceNode(MPTTModel):
|
||||
parent = TreeForeignKey('self', null=True, blank=True)
|
||||
index_template_node = models.ForeignKey(IndexTemplateNode, related_name='node_instance', verbose_name=_(u'Index template node'))
|
||||
value = models.CharField(max_length=128, blank=True, verbose_name=_(u'Value'))
|
||||
documents = models.ManyToManyField(Document, related_name='node_instances', verbose_name=_(u'Documents'))
|
||||
index_template_node = models.ForeignKey(IndexTemplateNode, related_name='node_instance', verbose_name=_('Index template node'))
|
||||
value = models.CharField(max_length=128, blank=True, verbose_name=_('Value'))
|
||||
documents = models.ManyToManyField(Document, related_name='node_instances', verbose_name=_('Documents'))
|
||||
|
||||
def __unicode__(self):
|
||||
return self.value
|
||||
@@ -97,5 +97,5 @@ class IndexInstanceNode(MPTTModel):
|
||||
return self.get_children()
|
||||
|
||||
class Meta:
|
||||
verbose_name = _(u'Index node instance')
|
||||
verbose_name_plural = _(u'Indexes node instances')
|
||||
verbose_name = _('Index node instance')
|
||||
verbose_name_plural = _('Indexes node instances')
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
from __future__ import absolute_import
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from permissions.models import PermissionNamespace, Permission
|
||||
|
||||
document_indexing_namespace = PermissionNamespace('document_indexing', _(u'Indexing'))
|
||||
document_indexing_namespace = PermissionNamespace('document_indexing', _('Indexing'))
|
||||
|
||||
PERMISSION_DOCUMENT_INDEXING_SETUP = Permission.objects.register(document_indexing_namespace, 'document_index_setup', _(u'Configure document indexes'))
|
||||
PERMISSION_DOCUMENT_INDEXING_CREATE = Permission.objects.register(document_indexing_namespace, 'document_index_create', _(u'Create new document indexes'))
|
||||
PERMISSION_DOCUMENT_INDEXING_EDIT = Permission.objects.register(document_indexing_namespace, 'document_index_edit', _(u'Edit document indexes'))
|
||||
PERMISSION_DOCUMENT_INDEXING_DELETE = Permission.objects.register(document_indexing_namespace, 'document_index_delete', _(u'Delete document indexes'))
|
||||
PERMISSION_DOCUMENT_INDEXING_SETUP = Permission.objects.register(document_indexing_namespace, 'document_index_setup', _('Configure document indexes'))
|
||||
PERMISSION_DOCUMENT_INDEXING_CREATE = Permission.objects.register(document_indexing_namespace, 'document_index_create', _('Create new document indexes'))
|
||||
PERMISSION_DOCUMENT_INDEXING_EDIT = Permission.objects.register(document_indexing_namespace, 'document_index_edit', _('Edit document indexes'))
|
||||
PERMISSION_DOCUMENT_INDEXING_DELETE = Permission.objects.register(document_indexing_namespace, 'document_index_delete', _('Delete document indexes'))
|
||||
|
||||
PERMISSION_DOCUMENT_INDEXING_VIEW = Permission.objects.register(document_indexing_namespace, 'document_index_view', _(u'View document indexes'))
|
||||
PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES = Permission.objects.register(document_indexing_namespace, 'document_rebuild_indexes', _(u'Rebuild document indexes'))
|
||||
PERMISSION_DOCUMENT_INDEXING_VIEW = Permission.objects.register(document_indexing_namespace, 'document_index_view', _('View document indexes'))
|
||||
PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES = Permission.objects.register(document_indexing_namespace, 'document_rebuild_indexes', _('Rebuild document indexes'))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from __future__ import absolute_import
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Configuration options for the document_indexing app"""
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from smart_settings.api import register_settings
|
||||
|
||||
@@ -6,10 +6,10 @@ available_indexing_functions = {
|
||||
}
|
||||
|
||||
register_settings(
|
||||
namespace=u'document_indexing',
|
||||
module=u'document_indexing.settings',
|
||||
namespace='document_indexing',
|
||||
module='document_indexing.settings',
|
||||
settings=[
|
||||
# Definition
|
||||
{'name': u'AVAILABLE_INDEXING_FUNCTIONS', 'global_name': u'DOCUMENT_INDEXING_AVAILABLE_INDEXING_FUNCTIONS', 'default': available_indexing_functions},
|
||||
{'name': 'AVAILABLE_INDEXING_FUNCTIONS', 'global_name': 'DOCUMENT_INDEXING_AVAILABLE_INDEXING_FUNCTIONS', 'default': available_indexing_functions},
|
||||
]
|
||||
)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import logging
|
||||
|
||||
from mayan.celery import app
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from __future__ import absolute_import
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.core.files.base import File
|
||||
from django.test import TestCase
|
||||
@@ -32,11 +32,11 @@ class IndexTestCase(TestCase):
|
||||
# Create simple index template
|
||||
root = index.template_root
|
||||
index.node_templates.create(parent=root, expression='document.metadata_value_of.test', link_documents=True)
|
||||
self.failUnlessEqual(list(IndexTemplateNode.objects.values_list('expression', flat=True)), [u'', u'document.metadata_value_of.test'])
|
||||
self.failUnlessEqual(list(IndexTemplateNode.objects.values_list('expression', flat=True)), ['', 'document.metadata_value_of.test'])
|
||||
|
||||
# Add document metadata value to trigger index node instance creation
|
||||
self.document.metadata.create(metadata_type=metadata_type, value='0001')
|
||||
self.failUnlessEqual(list(IndexInstanceNode.objects.values_list('value', flat=True)), [u'', u'0001'])
|
||||
self.failUnlessEqual(list(IndexInstanceNode.objects.values_list('value', flat=True)), ['', '0001'])
|
||||
|
||||
# Check that document is in instance node
|
||||
instance_node = IndexInstanceNode.objects.get(value='0001')
|
||||
@@ -46,7 +46,7 @@ class IndexTestCase(TestCase):
|
||||
document_metadata = self.document.metadata.get(metadata_type=metadata_type)
|
||||
document_metadata.value = '0002'
|
||||
document_metadata.save()
|
||||
self.failUnlessEqual(list(IndexInstanceNode.objects.values_list('value', flat=True)), [u'', u'0002'])
|
||||
self.failUnlessEqual(list(IndexInstanceNode.objects.values_list('value', flat=True)), ['', '0002'])
|
||||
|
||||
# Check that document is in new instance node
|
||||
instance_node = IndexInstanceNode.objects.get(value='0002')
|
||||
@@ -54,12 +54,12 @@ class IndexTestCase(TestCase):
|
||||
|
||||
# Check node instance is destoyed when no metadata is available
|
||||
self.document.metadata.get(metadata_type=metadata_type).delete()
|
||||
self.failUnlessEqual(list(IndexInstanceNode.objects.values_list('value', flat=True)), [u''])
|
||||
self.failUnlessEqual(list(IndexInstanceNode.objects.values_list('value', flat=True)), [''])
|
||||
|
||||
# Add document metadata value again to trigger index node instance creation
|
||||
self.document.metadata.create(metadata_type=metadata_type, value='0003')
|
||||
self.failUnlessEqual(list(IndexInstanceNode.objects.values_list('value', flat=True)), [u'', u'0003'])
|
||||
self.failUnlessEqual(list(IndexInstanceNode.objects.values_list('value', flat=True)), ['', '0003'])
|
||||
|
||||
# Check node instance is destroyed when no documents are contained
|
||||
self.document.delete()
|
||||
self.failUnlessEqual(list(IndexInstanceNode.objects.values_list('value', flat=True)), [u''])
|
||||
self.failUnlessEqual(list(IndexInstanceNode.objects.values_list('value', flat=True)), [''])
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from documents.models import Document
|
||||
|
||||
from .api import index_document
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.conf.urls import patterns, url
|
||||
|
||||
from .api_views import (APIDocumentIndexListView,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from __future__ import absolute_import
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django.contrib import messages
|
||||
from django.core.exceptions import PermissionDenied
|
||||
@@ -35,13 +35,13 @@ from .widgets import index_instance_item_link, get_breadcrumbs, node_level
|
||||
|
||||
def index_setup_list(request):
|
||||
context = {
|
||||
'title': _(u'Indexes'),
|
||||
'title': _('Indexes'),
|
||||
'hide_object': True,
|
||||
'list_object_variable_name': 'index',
|
||||
'extra_columns': [
|
||||
{'name': _(u'Name'), 'attribute': 'name'},
|
||||
{'name': _(u'Title'), 'attribute': 'title'},
|
||||
{'name': _(u'Enabled'), 'attribute': encapsulate(lambda x: two_state_template(x.enabled))},
|
||||
{'name': _('Name'), 'attribute': 'name'},
|
||||
{'name': _('Title'), 'attribute': 'title'},
|
||||
{'name': _('Enabled'), 'attribute': encapsulate(lambda x: two_state_template(x.enabled))},
|
||||
]
|
||||
}
|
||||
|
||||
@@ -66,13 +66,13 @@ def index_setup_create(request):
|
||||
if form.is_valid():
|
||||
index = form.save()
|
||||
apply_default_acls(index, request.user)
|
||||
messages.success(request, _(u'Index created successfully.'))
|
||||
messages.success(request, _('Index created successfully.'))
|
||||
return HttpResponseRedirect(reverse('indexing:index_setup_list'))
|
||||
else:
|
||||
form = IndexForm()
|
||||
|
||||
return render_to_response('main/generic_form.html', {
|
||||
'title': _(u'Create index'),
|
||||
'title': _('Create index'),
|
||||
'form': form,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
@@ -89,13 +89,13 @@ def index_setup_edit(request, index_pk):
|
||||
form = IndexForm(request.POST, instance=index)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
messages.success(request, _(u'Index edited successfully'))
|
||||
messages.success(request, _('Index edited successfully'))
|
||||
return HttpResponseRedirect(reverse('indexing:index_setup_list'))
|
||||
else:
|
||||
form = IndexForm(instance=index)
|
||||
|
||||
return render_to_response('main/generic_form.html', {
|
||||
'title': _(u'Edit index: %s') % index,
|
||||
'title': _('Edit index: %s') % index,
|
||||
'form': form,
|
||||
'index': index,
|
||||
'navigation_object_name': 'index',
|
||||
@@ -118,9 +118,9 @@ def index_setup_delete(request, index_pk):
|
||||
if request.method == 'POST':
|
||||
try:
|
||||
index.delete()
|
||||
messages.success(request, _(u'Index: %s deleted successfully.') % index)
|
||||
messages.success(request, _('Index: %s deleted successfully.') % index)
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Index: %(index)s delete error: %(error)s') % {
|
||||
messages.error(request, _('Index: %(index)s delete error: %(error)s') % {
|
||||
'index': index, 'error': exception})
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
@@ -131,7 +131,7 @@ def index_setup_delete(request, index_pk):
|
||||
'delete_view': True,
|
||||
'previous': previous,
|
||||
'next': next,
|
||||
'title': _(u'Are you sure you with to delete the index: %s?') % index,
|
||||
'title': _('Are you sure you with to delete the index: %s?') % index,
|
||||
}
|
||||
|
||||
return render_to_response('main/generic_confirm.html', context,
|
||||
@@ -153,12 +153,12 @@ def index_setup_view(request, index_pk):
|
||||
'index': index,
|
||||
'list_object_variable_name': 'node',
|
||||
'navigation_object_name': 'index',
|
||||
'title': _(u'Tree template nodes for index: %s') % index,
|
||||
'title': _('Tree template nodes for index: %s') % index,
|
||||
'hide_object': True,
|
||||
'extra_columns': [
|
||||
{'name': _(u'Level'), 'attribute': encapsulate(lambda x: node_level(x))},
|
||||
{'name': _(u'Enabled'), 'attribute': encapsulate(lambda x: two_state_template(x.enabled))},
|
||||
{'name': _(u'Has document links?'), 'attribute': encapsulate(lambda x: two_state_template(x.link_documents))},
|
||||
{'name': _('Level'), 'attribute': encapsulate(lambda x: node_level(x))},
|
||||
{'name': _('Enabled'), 'attribute': encapsulate(lambda x: two_state_template(x.enabled))},
|
||||
{'name': _('Has document links?'), 'attribute': encapsulate(lambda x: two_state_template(x.link_documents))},
|
||||
],
|
||||
}
|
||||
|
||||
@@ -180,8 +180,8 @@ def index_setup_document_types(request, index_pk):
|
||||
right_list=lambda: generate_choices_w_labels(index.document_types.all(), display_object_type=False),
|
||||
add_method=lambda x: index.document_types.add(x),
|
||||
remove_method=lambda x: index.document_types.remove(x),
|
||||
left_list_title=_(u'Document types not in index: %s') % index,
|
||||
right_list_title=_(u'Document types for index: %s') % index,
|
||||
left_list_title=_('Document types not in index: %s') % index,
|
||||
right_list_title=_('Document types for index: %s') % index,
|
||||
decode_content_type=True,
|
||||
extra_context={
|
||||
'navigation_object_name': 'index',
|
||||
@@ -203,13 +203,13 @@ def template_node_create(request, parent_pk):
|
||||
form = IndexTemplateNodeForm(request.POST)
|
||||
if form.is_valid():
|
||||
node = form.save()
|
||||
messages.success(request, _(u'Index template node created successfully.'))
|
||||
messages.success(request, _('Index template node created successfully.'))
|
||||
return HttpResponseRedirect(reverse('indexing:index_setup_view', args=[node.index.pk]))
|
||||
else:
|
||||
form = IndexTemplateNodeForm(initial={'index': parent_node.index, 'parent': parent_node})
|
||||
|
||||
return render_to_response('main/generic_form.html', {
|
||||
'title': _(u'Create child node'),
|
||||
'title': _('Create child node'),
|
||||
'form': form,
|
||||
'index': parent_node.index,
|
||||
'navigation_object_name': 'index',
|
||||
@@ -228,20 +228,20 @@ def template_node_edit(request, node_pk):
|
||||
form = IndexTemplateNodeForm(request.POST, instance=node)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
messages.success(request, _(u'Index template node edited successfully'))
|
||||
messages.success(request, _('Index template node edited successfully'))
|
||||
return HttpResponseRedirect(reverse('indexing:index_setup_view', args=[node.index.pk]))
|
||||
else:
|
||||
form = IndexTemplateNodeForm(instance=node)
|
||||
|
||||
return render_to_response('main/generic_form.html', {
|
||||
'title': _(u'Edit index template node: %s') % node,
|
||||
'title': _('Edit index template node: %s') % node,
|
||||
'form': form,
|
||||
'index': node.index,
|
||||
'node': node,
|
||||
|
||||
'navigation_object_list': [
|
||||
{'object': 'index', 'name': _(u'Index')},
|
||||
{'object': 'node', 'name': _(u'Node')}
|
||||
{'object': 'index', 'name': _('Index')},
|
||||
{'object': 'node', 'name': _('Node')}
|
||||
],
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
@@ -262,9 +262,9 @@ def template_node_delete(request, node_pk):
|
||||
if request.method == 'POST':
|
||||
try:
|
||||
node.delete()
|
||||
messages.success(request, _(u'Node: %s deleted successfully.') % node)
|
||||
messages.success(request, _('Node: %s deleted successfully.') % node)
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Node: %(node)s delete error: %(error)s') % {
|
||||
messages.error(request, _('Node: %(node)s delete error: %(error)s') % {
|
||||
'node': node, 'error': exception})
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
@@ -273,13 +273,13 @@ def template_node_delete(request, node_pk):
|
||||
'delete_view': True,
|
||||
'previous': previous,
|
||||
'next': next,
|
||||
'title': _(u'Are you sure you with to delete the index template node: %s?') % node,
|
||||
'title': _('Are you sure you with to delete the index template node: %s?') % node,
|
||||
'index': node.index,
|
||||
'node': node,
|
||||
|
||||
'navigation_object_list': [
|
||||
{'object': 'index', 'name': _(u'Index')},
|
||||
{'object': 'node', 'name': _(u'Node')}
|
||||
{'object': 'index', 'name': _('Index')},
|
||||
{'object': 'node', 'name': _('Node')}
|
||||
],
|
||||
}
|
||||
|
||||
@@ -293,11 +293,11 @@ def index_list(request):
|
||||
Show a list of enabled indexes
|
||||
"""
|
||||
context = {
|
||||
'title': _(u'Indexes'),
|
||||
'title': _('Indexes'),
|
||||
'hide_links': True,
|
||||
'extra_columns': [
|
||||
{'name': _(u'Nodes'), 'attribute': 'get_instance_node_count'},
|
||||
{'name': _(u'Document types'), 'attribute': 'get_document_types_names'},
|
||||
{'name': _('Nodes'), 'attribute': 'get_instance_node_count'},
|
||||
{'name': _('Document types'), 'attribute': 'get_document_types_names'},
|
||||
],
|
||||
}
|
||||
|
||||
@@ -328,7 +328,7 @@ def index_instance_node_view(request, index_instance_node_pk):
|
||||
except PermissionDenied:
|
||||
AccessEntry.objects.check_access(PERMISSION_DOCUMENT_INDEXING_VIEW, request.user, index_instance.index)
|
||||
|
||||
title = mark_safe(_(u'Contents for index: %s') % breadcrumbs)
|
||||
title = mark_safe(_('Contents for index: %s') % breadcrumbs)
|
||||
|
||||
if index_instance:
|
||||
if index_instance.index_template_node.link_documents:
|
||||
@@ -346,11 +346,11 @@ def index_instance_node_view(request, index_instance_node_pk):
|
||||
'object_list': index_instance_list,
|
||||
'extra_columns_preffixed': [
|
||||
{
|
||||
'name': _(u'Node'),
|
||||
'name': _('Node'),
|
||||
'attribute': encapsulate(lambda x: index_instance_item_link(x))
|
||||
},
|
||||
{
|
||||
'name': _(u'Items'),
|
||||
'name': _('Items'),
|
||||
'attribute': encapsulate(lambda x: x.documents.count() if x.index_template_node.link_documents else x.get_children().count())
|
||||
}
|
||||
],
|
||||
@@ -375,12 +375,12 @@ def rebuild_index_instances(request):
|
||||
return render_to_response('main/generic_confirm.html', {
|
||||
'previous': previous,
|
||||
'next': next,
|
||||
'title': _(u'Are you sure you wish to rebuild all indexes?'),
|
||||
'message': _(u'On large databases this operation may take some time to execute.'),
|
||||
'title': _('Are you sure you wish to rebuild all indexes?'),
|
||||
'message': _('On large databases this operation may take some time to execute.'),
|
||||
}, context_instance=RequestContext(request))
|
||||
else:
|
||||
task_do_rebuild_all_indexes.apply_async(queue='tools')
|
||||
messages.success(request, _(u'Index rebuild queued successfully.'))
|
||||
messages.success(request, _('Index rebuild queued successfully.'))
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
|
||||
@@ -402,7 +402,7 @@ def document_index_list(request, document_id):
|
||||
object_list.append(get_breadcrumbs(index_instance, single_link=True, include_count=True))
|
||||
|
||||
return render_to_response('main/generic_list.html', {
|
||||
'title': _(u'Indexes containing this document'),
|
||||
'title': _('Indexes containing this document'),
|
||||
'object_list': object_list,
|
||||
'hide_link': True,
|
||||
'object': document
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import absolute_import
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.utils.html import mark_safe
|
||||
from django.utils.translation import ugettext
|
||||
|
||||
from .models import IndexInstanceNode
|
||||
|
||||
FOLDER_W_DOCUMENTS = u'folder_page'
|
||||
FOLDER_ICON = u'folder'
|
||||
FOLDER_W_DOCUMENTS = 'folder_page'
|
||||
FOLDER_ICON = 'folder'
|
||||
|
||||
|
||||
def index_instance_item_link(index_instance_item):
|
||||
@@ -17,8 +17,8 @@ def index_instance_item_link(index_instance_item):
|
||||
else:
|
||||
icon = FOLDER_ICON
|
||||
else:
|
||||
icon = u''
|
||||
icon_template = u'<span class="famfam active famfam-%s"></span>' % icon if icon else u''
|
||||
icon = ''
|
||||
icon_template = '<span class="famfam active famfam-%s"></span>' % icon if icon else ''
|
||||
return mark_safe('%(icon_template)s<a href="%(url)s">%(text)s</a>' % {
|
||||
'url': index_instance_item.get_absolute_url(),
|
||||
'icon_template': icon_template,
|
||||
@@ -34,9 +34,9 @@ def get_instance_link(index_instance_node, text=None, simple=False):
|
||||
if simple:
|
||||
# Just display the instance's value or overrided text, no
|
||||
# HTML anchor
|
||||
template = u'%(value)s'
|
||||
template = '%(value)s'
|
||||
else:
|
||||
template = u'<a href="%(url)s">%(value)s</a>'
|
||||
template = '<a href="%(url)s">%(value)s</a>'
|
||||
|
||||
return template % {
|
||||
'url': index_instance_node.get_absolute_url(),
|
||||
@@ -62,15 +62,15 @@ def get_breadcrumbs(index_instance, simple=False, single_link=False, include_cou
|
||||
output = []
|
||||
|
||||
if include_count:
|
||||
output.append(u'(%d)' % index_instance.documents.count())
|
||||
output.append('(%d)' % index_instance.documents.count())
|
||||
|
||||
if single_link:
|
||||
# Return the entire breadcrumb path as a single HTML anchor
|
||||
output.insert(0, get_instance_link(index_instance_node=index_instance, text=(u' / '.join(result))))
|
||||
return mark_safe(u' '.join(output))
|
||||
output.insert(0, get_instance_link(index_instance_node=index_instance, text=(' / '.join(result))))
|
||||
return mark_safe(' '.join(output))
|
||||
else:
|
||||
output.insert(0, u' / '.join(result))
|
||||
return mark_safe(u' '.join(output))
|
||||
output.insert(0, ' / '.join(result))
|
||||
return mark_safe(' '.join(output))
|
||||
|
||||
|
||||
def node_level(x):
|
||||
@@ -78,10 +78,10 @@ def node_level(x):
|
||||
Render an indented tree like output for a specific node
|
||||
"""
|
||||
return mark_safe(
|
||||
u''.join(
|
||||
''.join(
|
||||
[
|
||||
u' ' * (getattr(x, x._mptt_meta.level_attr) - 1),
|
||||
u'' if x.is_root_node() else u'',
|
||||
' ' * (getattr(x, x._mptt_meta.level_attr) - 1),
|
||||
'' if x.is_root_node() else '',
|
||||
ugettext('Root') if x.is_root_node() else unicode(x)
|
||||
]
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user