Small updates and fixes

This commit is contained in:
Roberto Rosario
2012-02-02 09:33:28 -04:00
parent 1eabbf90cd
commit 2c6339b56a
6 changed files with 37 additions and 41 deletions
+1 -8
View File
@@ -8,20 +8,13 @@ from .models import (Index, IndexTemplateNode, IndexInstanceNode,
DocumentRenameCount) DocumentRenameCount)
#class IndexInstanceInline(admin.StackedInline):
# model = IndexInstance
# extra = 1#
# classes = ('collapse-open',)
# allow_add = True
class IndexTemplateNodeAdmin(MPTTModelAdmin): class IndexTemplateNodeAdmin(MPTTModelAdmin):
list_display = ('expression', 'enabled', 'link_documents') list_display = ('expression', 'enabled', 'link_documents')
class IndexInstanceNodeAdmin(MPTTModelAdmin): class IndexInstanceNodeAdmin(MPTTModelAdmin):
model = IndexInstanceNode model = IndexInstanceNode
list_display = ('value',)# 'get_document_list_display') list_display = ('value',)
admin.site.register(Index) admin.site.register(Index)
+12 -26
View File
@@ -5,7 +5,6 @@ from django.utils.translation import ugettext
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.template.defaultfilters import slugify from django.template.defaultfilters import slugify
from documents.models import Document
from metadata.classes import MetadataObject from metadata.classes import MetadataObject
from .models import (Index, IndexTemplateNode, IndexInstanceNode, from .models import (Index, IndexTemplateNode, IndexInstanceNode,
@@ -14,9 +13,7 @@ from .conf.settings import (AVAILABLE_INDEXING_FUNCTIONS,
MAX_SUFFIX_COUNT, SLUGIFY_PATHS) MAX_SUFFIX_COUNT, SLUGIFY_PATHS)
from .filesystem import (fs_create_index_directory, from .filesystem import (fs_create_index_directory,
fs_create_document_link, fs_delete_document_link, fs_create_document_link, fs_delete_document_link,
fs_delete_index_directory, fs_delete_directory_recusive, fs_delete_index_directory, assemble_suffixed_filename)
assemble_suffixed_filename)
from .widgets import get_instance_link
from .exceptions import MaxSuffixCountReached from .exceptions import MaxSuffixCountReached
if SLUGIFY_PATHS == False: if SLUGIFY_PATHS == False:
@@ -41,7 +38,7 @@ def update_indexes(document):
for index in Index.objects.filter(enabled=True): for index in Index.objects.filter(enabled=True):
root_instance, created = IndexInstanceNode.objects.get_or_create(index_template_node=index.template_root, parent=None) root_instance, created = IndexInstanceNode.objects.get_or_create(index_template_node=index.template_root, parent=None)
for template_node in index.template_root.get_children(): for template_node in index.template_root.get_children():
index_warnings = _evaluate_index(eval_dict, document, template_node, root_instance) index_warnings = cascade_eval(eval_dict, document, template_node, root_instance)
warnings.extend(index_warnings) warnings.extend(index_warnings)
return warnings return warnings
@@ -54,26 +51,15 @@ def delete_indexes(document):
warnings = [] warnings = []
for index_instance in document.indexinstancenode_set.all(): for index_instance in document.indexinstancenode_set.all():
index_warnings = _remove_document_from_index_instance(document, index_instance) index_warnings = cascade_document_remove(document, index_instance)
warnings.extend(index_warnings) warnings.extend(index_warnings)
return warnings return warnings
def do_rebuild_all_indexes():
fs_delete_directory_recusive()
IndexInstanceNone.objects.delete()
DocumentRenameCount.objects.delete()
for document in Document.objects.all():
update_indexes(document)
return [] # Warnings - None
# Internal functions # Internal functions
def find_lowest_available_suffix(index_instance, document): def find_lowest_available_suffix(index_instance, document):
# TODO: verify extension's role in query index_instance_documents = DocumentRenameCount.objects.filter(index_instance_node=index_instance)
index_instance_documents = DocumentRenameCount.objects.filter(index_instance_node=index_instance)#.filter(document__file_extension=document.file_extension)
files_list = [] files_list = []
for index_instance_document in index_instance_documents: for index_instance_document in index_instance_documents:
files_list.append(assemble_suffixed_filename(index_instance_document.document.file_filename, index_instance_document.suffix)) files_list.append(assemble_suffixed_filename(index_instance_document.document.file_filename, index_instance_document.suffix))
@@ -85,7 +71,7 @@ def find_lowest_available_suffix(index_instance, document):
raise MaxSuffixCountReached(ugettext(u'Maximum suffix (%s) count reached.') % MAX_SUFFIX_COUNT) raise MaxSuffixCountReached(ugettext(u'Maximum suffix (%s) count reached.') % MAX_SUFFIX_COUNT)
def _evaluate_index(eval_dict, document, template_node, parent_index_instance=None): def cascade_eval(eval_dict, document, template_node, parent_index_instance=None):
""" """
Evaluate an enabled index expression and update or create all the Evaluate an enabled index expression and update or create all the
related index instances also recursively calling itself to evaluate related index instances also recursively calling itself to evaluate
@@ -101,7 +87,7 @@ def _evaluate_index(eval_dict, document, template_node, parent_index_instance=No
index_instance.parent = parent_index_instance index_instance.parent = parent_index_instance
index_instance.save() index_instance.save()
#if created: #if created:
#fs_create_index_directory(index_instance) fs_create_index_directory(index_instance)
if template_node.link_documents: if template_node.link_documents:
suffix = find_lowest_available_suffix(index_instance, document) suffix = find_lowest_available_suffix(index_instance, document)
document_count = DocumentRenameCount( document_count = DocumentRenameCount(
@@ -111,11 +97,11 @@ def _evaluate_index(eval_dict, document, template_node, parent_index_instance=No
) )
document_count.save() document_count.save()
#fs_create_document_link(index_instance, document, suffix) fs_create_document_link(index_instance, document, suffix)
index_instance.documents.add(document) index_instance.documents.add(document)
for child in template_node.get_children(): for child in template_node.get_children():
children_warnings = _evaluate_index( children_warnings = cascade_eval(
eval_dict, document, child, index_instance eval_dict, document, child, index_instance
) )
warnings.extend(children_warnings) warnings.extend(children_warnings)
@@ -130,7 +116,7 @@ def _evaluate_index(eval_dict, document, template_node, parent_index_instance=No
return warnings return warnings
def _remove_document_from_index_instance(document, index_instance): def cascade_document_remove(document, index_instance):
""" """
Delete a documents reference from an index instance and call itself Delete a documents reference from an index instance and call itself
recusively deleting documents and empty index instances up to the recusively deleting documents and empty index instances up to the
@@ -139,16 +125,16 @@ def _remove_document_from_index_instance(document, index_instance):
warnings = [] warnings = []
try: try:
document_rename_count = DocumentRenameCount.objects.get(index_instance_node=index_instance, document=document) document_rename_count = DocumentRenameCount.objects.get(index_instance_node=index_instance, document=document)
#fs_delete_document_link(index_instance, document, document_rename_count.suffix) fs_delete_document_link(index_instance, document, document_rename_count.suffix)
document_rename_count.delete() document_rename_count.delete()
index_instance.documents.remove(document) index_instance.documents.remove(document)
if index_instance.documents.count() == 0 and index_instance.get_children().count() == 0: if index_instance.documents.count() == 0 and index_instance.get_children().count() == 0:
# if there are no more documents and no children, delete # if there are no more documents and no children, delete
# node and check parent for the same conditions # node and check parent for the same conditions
parent = index_instance.parent parent = index_instance.parent
#fs_delete_index_directory(index_instance) fs_delete_index_directory(index_instance)
index_instance.delete() index_instance.delete()
parent_warnings = _remove_document_from_index_instance( parent_warnings = cascade_document_remove(
document, parent document, parent
) )
warnings.extend(parent_warnings) warnings.extend(parent_warnings)
+17
View File
@@ -0,0 +1,17 @@
from __future__ import absolute_import
from documents.models import Document
from .models import IndexInstanceNode, DocumentRenameCount
from .filesystem import fs_delete_directory_recusive
from .api import update_indexes
def do_rebuild_all_indexes():
fs_delete_directory_recusive()
IndexInstanceNode.objects.delete()
DocumentRenameCount.objects.delete()
for document in Document.objects.all():
update_indexes(document)
return [] # Warnings - None
+4 -4
View File
@@ -7,7 +7,6 @@ from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response, get_object_or_404 from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext from django.template import RequestContext
from django.contrib import messages from django.contrib import messages
#from django.utils.safestring import mark_safe
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.utils.html import conditional_escape, mark_safe from django.utils.html import conditional_escape, mark_safe
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
@@ -18,12 +17,12 @@ from documents.models import Document
from documents.views import document_list from documents.views import document_list
from common.utils import encapsulate from common.utils import encapsulate
from acls.utils import apply_default_acls from acls.utils import apply_default_acls
from acls.models import AccessEntry
from .forms import IndexForm, IndexTemplateNodeForm from .forms import IndexForm, IndexTemplateNodeForm
from .models import (Index, IndexTemplateNode, IndexInstanceNode) from .models import (Index, IndexTemplateNode, IndexInstanceNode)
from .api import do_rebuild_all_indexes from .tools import do_rebuild_all_indexes
from .widgets import (index_instance_item_link, get_instance_link, from .widgets import (index_instance_item_link, get_breadcrumbs)
get_breadcrumbs)
from .permissions import (PERMISSION_DOCUMENT_INDEXING_VIEW, from .permissions import (PERMISSION_DOCUMENT_INDEXING_VIEW,
PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES, PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES,
PERMISSION_DOCUMENT_INDEXING_SETUP, PERMISSION_DOCUMENT_INDEXING_SETUP,
@@ -32,6 +31,7 @@ from .permissions import (PERMISSION_DOCUMENT_INDEXING_VIEW,
PERMISSION_DOCUMENT_INDEXING_DELETE PERMISSION_DOCUMENT_INDEXING_DELETE
) )
# Setup views # Setup views
def index_setup_list(request): def index_setup_list(request):
context = { context = {