PEP8 cleanups

This commit is contained in:
Roberto Rosario
2014-10-08 19:39:16 -04:00
parent 50e143e754
commit 8bac1525be
35 changed files with 162 additions and 204 deletions

View File

@@ -4,8 +4,8 @@ from django.contrib import admin
from mptt.admin import MPTTModelAdmin
from .models import (Index, IndexTemplateNode, IndexInstanceNode,
DocumentRenameCount)
from .models import (DocumentRenameCount, Index, IndexInstanceNode,
IndexTemplateNode)
class IndexTemplateNodeAdmin(MPTTModelAdmin):
@@ -17,7 +17,7 @@ class IndexInstanceNodeAdmin(MPTTModelAdmin):
list_display = ('value',)
admin.site.register(DocumentRenameCount)
admin.site.register(Index)
admin.site.register(IndexTemplateNode, IndexTemplateNodeAdmin)
admin.site.register(IndexInstanceNode, IndexInstanceNodeAdmin)
admin.site.register(DocumentRenameCount)

View File

@@ -4,22 +4,22 @@ from django.utils.translation import ugettext_lazy as _
from documents.permissions import PERMISSION_DOCUMENT_VIEW
from .permissions import (PERMISSION_DOCUMENT_INDEXING_VIEW,
PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES,
PERMISSION_DOCUMENT_INDEXING_SETUP,
PERMISSION_DOCUMENT_INDEXING_CREATE,
PERMISSION_DOCUMENT_INDEXING_EDIT,
PERMISSION_DOCUMENT_INDEXING_DELETE)
def is_not_root_node(context):
return not context['node'].is_root_node()
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):
return not context['object'].is_root_node()
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], 'children_view_regex': [r'^index_setup', r'^template_node']}
index_setup_list = {'text': _(u'Index list'), '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]}

View File

@@ -1,6 +1,8 @@
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
from document_indexing.api import get_breadcrumbs
from .api import get_breadcrumbs
def get_document_indexing_subtemplate(document):
@@ -14,10 +16,10 @@ def get_document_indexing_subtemplate(document):
object_list.append(get_breadcrumbs(index_instance, single_link=True, include_count=True))
return {
'name': 'main/generic_list_subtemplate.html',
'context': {
'title': _(u'document indexes'),
'object_list': object_list,
'hide_link': True
}
'name': 'main/generic_list_subtemplate.html',
'context': {
'title': _(u'document indexes'),
'object_list': object_list,
'hide_link': True
}
}

View File

@@ -5,7 +5,7 @@ from django.contrib import messages
from django.core.exceptions import PermissionDenied
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response, get_object_or_404
from django.shortcuts import get_object_or_404, render_to_response
from django.template import RequestContext
from django.utils.html import mark_safe
from django.utils.translation import ugettext_lazy as _
@@ -15,19 +15,19 @@ from acls.utils import apply_default_acls
from common.utils import encapsulate, generate_choices_w_labels
from common.views import assign_remove
from common.widgets import two_state_template
from documents.permissions import PERMISSION_DOCUMENT_VIEW
from documents.models import Document
from documents.permissions import PERMISSION_DOCUMENT_VIEW
from documents.views import document_list
from permissions.models import Permission
from .forms import IndexForm, IndexTemplateNodeForm
from .models import Index, IndexTemplateNode, IndexInstanceNode
from .permissions import (PERMISSION_DOCUMENT_INDEXING_VIEW,
from .models import Index, IndexInstanceNode, IndexTemplateNode
from .permissions import (PERMISSION_DOCUMENT_INDEXING_CREATE,
PERMISSION_DOCUMENT_INDEXING_DELETE,
PERMISSION_DOCUMENT_INDEXING_EDIT,
PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES,
PERMISSION_DOCUMENT_INDEXING_SETUP,
PERMISSION_DOCUMENT_INDEXING_CREATE,
PERMISSION_DOCUMENT_INDEXING_EDIT,
PERMISSION_DOCUMENT_INDEXING_DELETE)
PERMISSION_DOCUMENT_INDEXING_VIEW)
from .tools import do_rebuild_all_indexes
from .widgets import index_instance_item_link, get_breadcrumbs, node_level
@@ -57,7 +57,7 @@ def index_setup_list(request):
context['object_list'] = queryset
return render_to_response('main/generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def index_setup_create(request):
@@ -140,7 +140,7 @@ def index_setup_delete(request, index_pk):
}
return render_to_response('main/generic_confirm.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def index_setup_view(request, index_pk):
@@ -169,7 +169,7 @@ def index_setup_view(request, index_pk):
}
return render_to_response('main/generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def index_setup_document_types(request, index_pk):
@@ -293,7 +293,7 @@ def template_node_delete(request, node_pk):
}
return render_to_response('main/generic_confirm.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
# User views
@@ -320,7 +320,7 @@ def index_list(request):
context['object_list'] = queryset
return render_to_response('main/generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def index_instance_node_view(request, index_instance_node_pk):

View File

@@ -11,7 +11,7 @@ from history.api import register_history_type
from history.permissions import PERMISSION_HISTORY_VIEW
from main.api import register_diagnostic, register_maintenance_links
from navigation.api import (register_links, register_model_list_columns,
register_multi_item_links,register_top_menu)
register_multi_item_links, register_top_menu)
from project_setup.api import register_setup
from rest_api.classes import APIEndPoint
from statistics.classes import StatisticNamespace
@@ -70,7 +70,6 @@ register_history_type(HISTORY_DOCUMENT_DELETED)
# Register document type links
register_links(DocumentType, [document_type_edit, document_type_delete, document_type_filename_list])
register_links(DocumentTypeFilename, [document_type_filename_edit, document_type_filename_delete])
register_links(['documents:setup_document_type_metadata', 'documents:document_type_filename_delete', 'documents:document_type_create', 'documents:document_type_filename_create', 'documents:document_type_filename_edit', 'documents:document_type_filename_list', 'documents:document_type_list', 'documents:document_type_edit', 'documents:document_type_delete'], [document_type_list, document_type_create], menu_name='secondary_menu')
register_links([DocumentTypeFilename, 'documents:document_type_filename_list', 'documents:document_type_filename_create'], [document_type_filename_create], menu_name='sidebar')
@@ -80,9 +79,7 @@ register_multi_item_links(['documents:document_find_duplicates', 'folders:folder
# Document Version links
register_links(DocumentVersion, [document_version_revert, document_version_download])
secondary_menu_links = [document_list_recent, document_list]
register_links(['documents:document_list_recent', 'documents:document_list', 'sources:document_create', 'sources:document_create_multiple', 'sources:upload_interactive', 'sources:staging_file_delete'], secondary_menu_links, menu_name='secondary_menu')
register_links(Document, secondary_menu_links, menu_name='secondary_menu')
@@ -99,16 +96,13 @@ register_links(DocumentPage, [
], menu_name='related')
register_links(['documents:document_page_view'], [document_page_rotate_left, document_page_rotate_right, document_page_zoom_in, document_page_zoom_out, document_page_view_reset], menu_name='form_header')
register_links(DocumentPageTransformation, [document_page_transformation_edit, document_page_transformation_delete])
register_links('documents:document_page_transformation_list', [document_page_transformation_create], menu_name='sidebar')
register_links('documents:document_page_transformation_create', [document_page_transformation_create], menu_name='sidebar')
register_links(['documents:document_page_transformation_edit', 'documents:document_page_transformation_delete'], [document_page_transformation_create], menu_name='sidebar')
register_diagnostic('documents', _(u'Documents'), document_missing_list)
register_maintenance_links([document_find_all_duplicates, document_update_page_count, document_clear_image_cache], namespace='documents', title=_(u'documents'))
register_model_list_columns(Document, [
{
'name': _(u'Thumbnail'), 'attribute':
@@ -137,17 +131,15 @@ if (not validate_path(document_settings.CACHE_PATH)) or (not document_settings.C
register_setup(document_type_setup)
class_permissions(Document, [
PERMISSION_DOCUMENT_PROPERTIES_EDIT,
PERMISSION_DOCUMENT_EDIT,
PERMISSION_DOCUMENT_VIEW,
PERMISSION_DOCUMENT_DELETE,
PERMISSION_DOCUMENT_DOWNLOAD,
PERMISSION_DOCUMENT_TRANSFORM,
PERMISSION_DOCUMENT_NEW_VERSION,
PERMISSION_DOCUMENT_VERSION_REVERT,
PERMISSION_HISTORY_VIEW
])
class_permissions(Document, [PERMISSION_DOCUMENT_DELETE,
PERMISSION_DOCUMENT_DOWNLOAD,
PERMISSION_DOCUMENT_EDIT,
PERMISSION_DOCUMENT_NEW_VERSION,
PERMISSION_DOCUMENT_PROPERTIES_EDIT,
PERMISSION_DOCUMENT_TRANSFORM,
PERMISSION_DOCUMENT_VERSION_REVERT,
PERMISSION_DOCUMENT_VIEW,
PERMISSION_HISTORY_VIEW])
document_search = SearchModel('documents', 'Document')
document_search.add_model_field('document_type__name', label=_(u'Document type'))

View File

@@ -2,10 +2,9 @@ from __future__ import absolute_import
from django.contrib import admin
from .models import (DocumentType, Document,
DocumentTypeFilename, DocumentPage,
DocumentPageTransformation, RecentDocument,
DocumentVersion)
from .models import (Document, DocumentPage, DocumentPageTransformation,
DocumentType, DocumentTypeFilename, DocumentVersion,
RecentDocument)
class DocumentPageInline(admin.StackedInline):
@@ -54,8 +53,8 @@ class RecentDocumentAdmin(admin.ModelAdmin):
date_hierarchy = 'datetime_accessed'
admin.site.register(DocumentType, DocumentTypeAdmin)
admin.site.register(Document, DocumentAdmin)
admin.site.register(DocumentPageTransformation,
DocumentPageTransformationAdmin)
DocumentPageTransformationAdmin)
admin.site.register(DocumentType, DocumentTypeAdmin)
admin.site.register(RecentDocument, RecentDocumentAdmin)

View File

@@ -152,9 +152,6 @@ class APIDocumentImageView(generics.GenericAPIView):
version = int(request.GET.get('version', document.latest_version.pk))
if request.GET.get('as_base64', False):
base64_version = True
if zoom < ZOOM_MIN_LEVEL:
zoom = ZOOM_MIN_LEVEL

View File

@@ -1,6 +1,5 @@
# encoding: utf-8
import os
from south.db import db
from south.v2 import DataMigration
from django.db import models

View File

@@ -68,7 +68,7 @@ class DocumentUsageStatistics(Statistic):
try:
total_storage_documents, storage_used_space = storage_count()
results.append(_(u'Documents in storage: %d') %
total_storage_documents)
total_storage_documents)
results.append(_(u'Space used in storage: %(base_2)s (base 2), %(base_10)s (base 10), %(bytes)d bytes') % {
'base_2': pretty_size(storage_used_space),
'base_10': pretty_size_10(storage_used_space),

View File

@@ -93,7 +93,7 @@ def document_list(request, object_list=None, title=None, extra_context=None):
context.update(extra_context)
return render_to_response('main/generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def document_view(request, document_id, advanced=False):
@@ -218,7 +218,7 @@ def document_delete(request, document_id=None, document_id_list=None):
context['title'] = _(u'Are you sure you wish to delete the documents: %s?') % ', '.join([unicode(d) for d in documents])
return render_to_response('main/generic_confirm.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def document_multiple_delete(request):
@@ -533,7 +533,7 @@ def document_clear_transformations(request, document_id=None, document_id_list=N
context['title'] = _(u'Are you sure you wish to clear all the page transformations for documents: %s?') % ', '.join([unicode(d) for d in documents])
return render_to_response('main/generic_confirm.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def document_multiple_clear_transformations(request):
@@ -817,7 +817,6 @@ def document_print(request, document_id):
new_url.append(urlquote(hard_copy_arguments))
new_window_url = u'?'.join(new_url)
new_window_url_name = u'document_hard_copy'
else:
form = PrintForm()
@@ -882,7 +881,7 @@ def document_type_list(request):
}
return render_to_response('main/generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def document_type_edit(request, document_type_id):
@@ -910,8 +909,7 @@ def document_type_edit(request, document_type_id):
'navigation_object_name': 'document_type',
'document_type': document_type,
'next': next
},
context_instance=RequestContext(request))
}, context_instance=RequestContext(request))
def document_type_delete(request, document_type_id):
@@ -947,7 +945,7 @@ def document_type_delete(request, document_type_id):
}
return render_to_response('main/generic_confirm.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def document_type_create(request):
@@ -969,8 +967,7 @@ def document_type_create(request):
return render_to_response('main/generic_form.html', {
'title': _(u'Create document type'),
'form': form,
},
context_instance=RequestContext(request))
}, context_instance=RequestContext(request))
def document_type_filename_list(request, document_type_id):
@@ -994,7 +991,7 @@ def document_type_filename_list(request, document_type_id):
}
return render_to_response('main/generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def document_type_filename_edit(request, document_type_filename_id):
@@ -1029,8 +1026,7 @@ def document_type_filename_edit(request, document_type_filename_id):
{'object': 'document_type', 'name': _(u'Document type')},
{'object': 'filename', 'name': _(u'Document type filename')}
],
},
context_instance=RequestContext(request))
}, context_instance=RequestContext(request))
def document_type_filename_delete(request, document_type_filename_id):
@@ -1070,7 +1066,7 @@ def document_type_filename_delete(request, document_type_filename_id):
}
return render_to_response('main/generic_confirm.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def document_type_filename_create(request, document_type_id):
@@ -1103,8 +1099,7 @@ def document_type_filename_create(request, document_type_id):
'navigation_object_list': [
{'object': 'document_type', 'name': _(u'Document type')},
],
},
context_instance=RequestContext(request))
}, context_instance=RequestContext(request))
def document_clear_image_cache(request):
@@ -1173,7 +1168,7 @@ def document_version_list(request, document_pk):
}
return render_to_response('main/generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def document_version_revert(request, document_version_pk):

View File

@@ -66,7 +66,7 @@ def results(request, extra_context=None):
[{'name': _(u'Type'), 'attribute': lambda x: x._meta.verbose_name[0].upper() + x._meta.verbose_name[1:]}]})
return render_to_response('search_results.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def search(request, advanced=False):
@@ -81,8 +81,7 @@ def search(request, advanced=False):
'search_results_limit': LIMIT,
'submit_label': _(u'Search'),
'submit_icon_famfam': 'zoom',
},
context_instance=RequestContext(request)
}, context_instance=RequestContext(request)
)
else:
if request.GET.get('source') != 'sidebar':

View File

@@ -5,6 +5,7 @@ from django.shortcuts import get_object_or_404
from rest_framework import generics
from acls.models import AccessEntry
from documents.models import Document
from documents.permissions import PERMISSION_DOCUMENT_VIEW
from permissions.models import Permission
@@ -12,9 +13,8 @@ from rest_api.filters import MayanObjectPermissionsFilter
from rest_api.permissions import MayanPermission
from .models import Folder
from .permissions import (PERMISSION_FOLDER_CREATE,
PERMISSION_FOLDER_DELETE, PERMISSION_FOLDER_EDIT,
PERMISSION_FOLDER_VIEW)
from .permissions import (PERMISSION_FOLDER_CREATE, PERMISSION_FOLDER_DELETE,
PERMISSION_FOLDER_EDIT, PERMISSION_FOLDER_VIEW)
from .serializers import FolderSerializer
@@ -71,6 +71,7 @@ class APIFolderDocumentListView(generics.ListAPIView):
queryset = folder.documents.all()
return queryset
class APIDocumentFolderListView(generics.ListAPIView):
"""
Returns a list of all the folders to which a document belongs.

View File

@@ -5,10 +5,10 @@ from django.utils.translation import ugettext_lazy as _
from acls.permissions import ACLS_VIEW_ACL
from documents.permissions import PERMISSION_DOCUMENT_VIEW
from .permissions import (PERMISSION_FOLDER_CREATE,
PERMISSION_FOLDER_EDIT, PERMISSION_FOLDER_DELETE,
PERMISSION_FOLDER_REMOVE_DOCUMENT, PERMISSION_FOLDER_VIEW,
PERMISSION_FOLDER_ADD_DOCUMENT)
from .permissions import (PERMISSION_FOLDER_ADD_DOCUMENT,
PERMISSION_FOLDER_CREATE, PERMISSION_FOLDER_DELETE,
PERMISSION_FOLDER_EDIT, PERMISSION_FOLDER_VIEW,
PERMISSION_FOLDER_REMOVE_DOCUMENT)
folder_list = {'text': _(u'Folder list'), 'view': 'folders:folder_list', 'famfam': 'folder_user'}
folder_create = {'text': _('Create folder'), 'view': 'folders:folder_create', 'famfam': 'folder_add', 'permissions': [PERMISSION_FOLDER_CREATE]}

View File

@@ -6,14 +6,13 @@ from django.contrib import messages
from django.core.exceptions import PermissionDenied
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response, get_object_or_404
from django.shortcuts import get_object_or_404, render_to_response
from django.template import RequestContext
from django.utils.translation import ugettext_lazy as _
from acls.models import AccessEntry
from acls.utils import apply_default_acls
from acls.views import acl_list_for
from common.utils import encapsulate
from common.views import SingleObjectListView
from documents.permissions import PERMISSION_DOCUMENT_VIEW
from documents.models import Document
@@ -22,16 +21,16 @@ from permissions.models import Permission
from .forms import FolderForm, FolderListForm
from .models import Folder
from .permissions import (PERMISSION_FOLDER_CREATE,
PERMISSION_FOLDER_EDIT, PERMISSION_FOLDER_DELETE,
PERMISSION_FOLDER_REMOVE_DOCUMENT, PERMISSION_FOLDER_VIEW,
PERMISSION_FOLDER_ADD_DOCUMENT)
from .permissions import (PERMISSION_FOLDER_ADD_DOCUMENT,
PERMISSION_FOLDER_CREATE, PERMISSION_FOLDER_DELETE,
PERMISSION_FOLDER_EDIT, PERMISSION_FOLDER_VIEW,
PERMISSION_FOLDER_REMOVE_DOCUMENT)
logger = logging.getLogger(__name__)
class FolderListView(SingleObjectListView):
model = Folder
model = Folder
object_permission = PERMISSION_FOLDER_VIEW
def get_extra_context(self):
@@ -61,8 +60,7 @@ def folder_create(request):
return render_to_response('main/generic_form.html', {
'title': _(u'Create folder'),
'form': form,
},
context_instance=RequestContext(request))
}, context_instance=RequestContext(request))
def folder_edit(request, folder_id):
@@ -91,8 +89,7 @@ def folder_edit(request, folder_id):
'form': form,
'object': folder,
'object_name': _(u'Folder'),
},
context_instance=RequestContext(request))
}, context_instance=RequestContext(request))
def folder_delete(request, folder_id):
@@ -129,7 +126,7 @@ def folder_delete(request, folder_id):
}
return render_to_response('main/generic_confirm.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
class FolderDetailView(DocumentListView):
@@ -205,7 +202,7 @@ def folder_add_document(request, document_id=None, document_id_list=None):
context['title'] = _(u'Add documents: %s to folder.') % ', '.join([unicode(d) for d in documents])
return render_to_response('main/generic_form.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def document_folder_list(request, document_id):
@@ -233,7 +230,7 @@ def document_folder_list(request, document_id):
context['object_list'] = queryset
return render_to_response('main/generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def folder_document_remove(request, folder_id, document_id=None, document_id_list=None):
@@ -287,7 +284,7 @@ def folder_document_remove(request, folder_id, document_id=None, document_id_lis
'documents': ', '.join([unicode(d) for d in folder_documents]), 'folder': folder}
return render_to_response('main/generic_confirm.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def folder_document_multiple_remove(request, folder_id):

View File

@@ -2,7 +2,6 @@ from __future__ import absolute_import
from collections import namedtuple
from json import dumps
import os
import sh
@@ -12,8 +11,6 @@ try:
except sh.CommandNotFound:
PIP = False
from django.conf import settings
class PIPNotFound(Exception):
pass

View File

@@ -29,11 +29,11 @@ from solo.models import SingletonModel
from common.utils import pretty_size
from mayan import __version__ as mayan_version
from lock_manager import Lock, LockError
from ocr.settings import TESSERACT_PATH, UNPAPER_PATH, PDFTOTEXT_PATH
from ocr.settings import PDFTOTEXT_PATH, TESSERACT_PATH, UNPAPER_PATH
from .classes import Property, PropertyNamespace, VirtualEnv, PIPNotFound
from .literals import (FORM_SUBMIT_URL, FORM_KEY, FORM_RECEIVER_FIELD,
TIMEOUT, FABFILE_MARKER)
from .classes import PIPNotFound, Property, PropertyNamespace, VirtualEnv
from .literals import (FABFILE_MARKER, FORM_KEY, FORM_RECEIVER_FIELD,
FORM_SUBMIT_URL, TIMEOUT)
class Installation(SingletonModel):

View File

@@ -3,7 +3,6 @@ from __future__ import absolute_import
from django.contrib import messages
from django.contrib.sites.models import Site
from django.core.exceptions import PermissionDenied
from django.core.mail import EmailMultiAlternatives
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, render_to_response
@@ -88,4 +87,4 @@ def send_document_link(request, document_id=None, document_id_list=None, as_atta
context['title'] = _('Email links for documents: %s') % ', '.join([unicode(d) for d in documents])
return render_to_response('main/generic_form.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))

View File

@@ -1,16 +1,10 @@
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
from django.conf import settings as django_settings
from navigation.api import register_top_menu
from project_setup.api import register_setup
from project_tools.api import register_tool
from .links import admin_site, diagnostics, maintenance_menu
if 'django.contrib.admin' in django_settings.INSTALLED_APPS:
register_setup(admin_site)
register_setup(admin_site)
register_tool(diagnostics)
register_tool(maintenance_menu)

View File

@@ -1,9 +1,7 @@
from __future__ import absolute_import
import re
from django.conf import settings
from django.template import Library, Node, TemplateSyntaxError
from django.template import Library, Node
from django.utils.safestring import mark_safe
register = Library()

View File

@@ -2,8 +2,12 @@ from __future__ import absolute_import
from django.contrib import admin
from .models import (MetadataType, MetadataSet, MetadataSetItem,
DocumentMetadata, DocumentTypeDefaults)
from .models import (DocumentMetadata, DocumentTypeDefaults, MetadataSet,
MetadataSetItem, MetadataType)
class DocumentTypeDefaultsAdmin(admin.ModelAdmin):
filter_horizontal = ('default_metadata_sets', 'default_metadata')
class MetadataTypeAdmin(admin.ModelAdmin):
@@ -28,10 +32,6 @@ class MetadataSetAdmin(admin.ModelAdmin):
inlines = [MetadataSetItemInline]
class DocumentTypeDefaultsAdmin(admin.ModelAdmin):
filter_horizontal = ('default_metadata_sets', 'default_metadata')
admin.site.register(MetadataType, MetadataTypeAdmin)
admin.site.register(MetadataSet, MetadataSetAdmin)
admin.site.register(DocumentTypeDefaults, DocumentTypeDefaultsAdmin)
admin.site.register(MetadataSet, MetadataSetAdmin)
admin.site.register(MetadataType, MetadataTypeAdmin)

View File

@@ -16,12 +16,11 @@ class MetadataForm(forms.Form):
value = self.cleaned_data['value']
metadata_id = self.cleaned_data['id']
metadata_type = MetadataType.objects.get(pk=metadata_id)
if ( metadata_type.lookup
and AVAILABLE_VALIDATORS.has_key(metadata_type.lookup) ):
val_func=AVAILABLE_VALIDATORS[metadata_type.lookup]
new_value = val_func(value)
if new_value:
value = new_value
if metadata_type.lookup and metadata_type.lookup in AVAILABLE_VALIDATORS:
val_func = AVAILABLE_VALIDATORS[metadata_type.lookup]
new_value = val_func(value)
if new_value:
value = new_value
return value
def __init__(self, *args, **kwargs):
@@ -45,9 +44,7 @@ class MetadataForm(forms.Form):
self.fields['name'].initial = '%s%s' % ((self.metadata_type.title if self.metadata_type.title else self.metadata_type.name), required_string)
self.fields['id'].initial = self.metadata_type.pk
if ( self.metadata_type.lookup
and not AVAILABLE_VALIDATORS.has_key(self.metadata_type.lookup)):
if self.metadata_type.lookup and self.metadata_type.lookup not in AVAILABLE_VALIDATORS:
try:
choices = eval(self.metadata_type.lookup, AVAILABLE_MODELS)
self.fields['value'] = forms.ChoiceField(label=self.fields['value'].label)
@@ -66,16 +63,12 @@ class MetadataForm(forms.Form):
except Exception as exception:
self.fields['value'].initial = exception
id = forms.CharField(label=_(u'id'), widget=forms.HiddenInput)
name = forms.CharField(label=_(u'Name'),
required=False, widget=forms.TextInput(attrs={'readonly': 'readonly'}))
name = forms.CharField(label=_(u'Name'), required=False, widget=forms.TextInput(attrs={'readonly': 'readonly'}))
value = forms.CharField(label=_(u'Value'), required=False)
update = forms.BooleanField(initial=True, label=_(u'Update'), required=False)
MetadataFormSet = formset_factory(MetadataForm, extra=0)

View File

@@ -4,13 +4,19 @@ from django.utils.translation import ugettext_lazy as _
from documents.permissions import PERMISSION_DOCUMENT_TYPE_EDIT
from .permissions import (PERMISSION_METADATA_DOCUMENT_EDIT,
PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_REMOVE,
PERMISSION_METADATA_DOCUMENT_VIEW, PERMISSION_METADATA_TYPE_EDIT,
PERMISSION_METADATA_TYPE_CREATE, PERMISSION_METADATA_TYPE_DELETE,
PERMISSION_METADATA_TYPE_VIEW, PERMISSION_METADATA_SET_EDIT,
PERMISSION_METADATA_SET_CREATE, PERMISSION_METADATA_SET_DELETE,
PERMISSION_METADATA_SET_VIEW)
from .permissions import (PERMISSION_METADATA_DOCUMENT_ADD,
PERMISSION_METADATA_DOCUMENT_EDIT,
PERMISSION_METADATA_DOCUMENT_REMOVE,
PERMISSION_METADATA_DOCUMENT_VIEW,
PERMISSION_METADATA_SET_CREATE,
PERMISSION_METADATA_SET_DELETE,
PERMISSION_METADATA_SET_EDIT,
PERMISSION_METADATA_SET_VIEW,
PERMISSION_METADATA_TYPE_CREATE,
PERMISSION_METADATA_TYPE_DELETE,
PERMISSION_METADATA_TYPE_EDIT,
PERMISSION_METADATA_TYPE_VIEW)
metadata_edit = {'text': _(u'Edit metadata'), 'view': 'metadata:metadata_edit', 'args': 'object.pk', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]}
metadata_view = {'text': _(u'Metadata'), 'view': 'metadata:metadata_view', 'args': 'object.pk', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_VIEW], 'children_view_regex': ['metadata']}
@@ -20,10 +26,7 @@ metadata_multiple_add = {'text': _(u'Add metadata'), 'view': 'metadata:metadata_
metadata_remove = {'text': _(u'Remove metadata'), 'view': 'metadata:metadata_remove', 'args': 'object.pk', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]}
metadata_multiple_remove = {'text': _(u'Remove metadata'), 'view': 'metadata:metadata_multiple_remove', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]}
setup_metadata_type_list = {'text': _(u'Metadata types'), 'view': 'metadata:setup_metadata_type_list', 'famfam': 'xhtml_go', 'icon': 'xhtml.png', 'permissions': [PERMISSION_METADATA_TYPE_VIEW]}
setup_metadata_type_edit = {'text': _(u'Edit'), 'view': 'metadata:setup_metadata_type_edit', 'args': 'object.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_METADATA_TYPE_EDIT]}
setup_metadata_type_delete = {'text': _(u'Delete'), 'view': 'metadata:setup_metadata_type_delete', 'args': 'object.pk', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_TYPE_DELETE]}
setup_metadata_type_create = {'text': _(u'Create new'), 'view': 'metadata:setup_metadata_type_create', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_TYPE_CREATE]}
setup_document_type_metadata = {'text': _(u'Default metadata'), 'view': 'metadata:setup_document_type_metadata', 'args': 'document_type.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]}
setup_metadata_set_list = {'text': _(u'Metadata sets'), 'view': 'metadata:setup_metadata_set_list', 'famfam': 'table', 'icon': 'table.png', 'permissions': [PERMISSION_METADATA_SET_VIEW]}
setup_metadata_set_edit = {'text': _(u'Edit'), 'view': 'metadata:setup_metadata_set_edit', 'args': 'object.pk', 'famfam': 'table_edit', 'permissions': [PERMISSION_METADATA_SET_EDIT]}
@@ -31,4 +34,7 @@ setup_metadata_set_members = {'text': _(u'Members'), 'view': 'metadata:setup_met
setup_metadata_set_delete = {'text': _(u'Delete'), 'view': 'metadata:setup_metadata_set_delete', 'args': 'object.pk', 'famfam': 'table_delete', 'permissions': [PERMISSION_METADATA_SET_DELETE]}
setup_metadata_set_create = {'text': _(u'Create new'), 'view': 'metadata:setup_metadata_set_create', 'famfam': 'table_add', 'permissions': [PERMISSION_METADATA_SET_CREATE]}
setup_document_type_metadata = {'text': _(u'Default metadata'), 'view': 'metadata:setup_document_type_metadata', 'args': 'document_type.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]}
setup_metadata_type_list = {'text': _(u'Metadata types'), 'view': 'metadata:setup_metadata_type_list', 'famfam': 'xhtml_go', 'icon': 'xhtml.png', 'permissions': [PERMISSION_METADATA_TYPE_VIEW]}
setup_metadata_type_edit = {'text': _(u'Edit'), 'view': 'metadata:setup_metadata_type_edit', 'args': 'object.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_METADATA_TYPE_EDIT]}
setup_metadata_type_delete = {'text': _(u'Delete'), 'view': 'metadata:setup_metadata_type_delete', 'args': 'object.pk', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_TYPE_DELETE]}
setup_metadata_type_create = {'text': _(u'Create new'), 'view': 'metadata:setup_metadata_type_create', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_TYPE_CREATE]}

View File

@@ -15,13 +15,13 @@ class MetadataType(models.Model):
name = models.CharField(unique=True, max_length=48, verbose_name=_(u'Name'), help_text=_(u'Do not use python reserved words, or spaces.'))
title = models.CharField(max_length=48, verbose_name=_(u'Title'), blank=True, null=True)
default = models.CharField(max_length=128, blank=True, null=True,
verbose_name=_(u'Default'),
help_text=_(u'Enter a string to be evaluated.'))
verbose_name=_(u'Default'),
help_text=_(u'Enter a string to be evaluated.'))
# TODO: Add enable_lookup boolean to allow users to switch the lookup on and
# off without losing the lookup expression
lookup = models.TextField(blank=True, null=True,
verbose_name=_(u'Lookup'),
help_text=_(u'Enter a string to be evaluated that returns an iterable.'))
verbose_name=_(u'Lookup'),
help_text=_(u'Enter a string to be evaluated that returns an iterable.'))
# TODO: Add datatype choice: Date, Time, String, Number
# TODO: Find a different way to let users know what models and functions are
# available now that we removed these from the help_text

View File

@@ -113,7 +113,7 @@ def metadata_edit(request, document_id=None, document_id_list=None):
context['title'] = _(u'Edit metadata for documents: %s') % ', '.join([unicode(d) for d in documents])
return render_to_response('main/generic_form.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def metadata_multiple_edit(request):
@@ -180,7 +180,7 @@ def metadata_add(request, document_id=None, document_id_list=None):
context['title'] = _(u'Add metadata type to documents: %s') % ', '.join([unicode(d) for d in documents])
return render_to_response('main/generic_form.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def metadata_multiple_add(request):
@@ -261,7 +261,7 @@ def metadata_remove(request, document_id=None, document_id_list=None):
context['title'] = _(u'Remove metadata types from documents: %s') % ', '.join([unicode(d) for d in documents])
return render_to_response('main/generic_form.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def metadata_multiple_remove(request):
@@ -302,7 +302,7 @@ def setup_metadata_type_list(request):
}
return render_to_response('main/generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def setup_metadata_type_edit(request, metadatatype_id):
@@ -380,7 +380,7 @@ def setup_metadata_type_delete(request, metadatatype_id):
}
return render_to_response('main/generic_confirm.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def setup_metadata_set_list(request):
@@ -399,7 +399,7 @@ def setup_metadata_set_list(request):
}
return render_to_response('main/generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def setup_metadata_set_edit(request, metadata_set_id):
@@ -520,7 +520,7 @@ def setup_metadata_set_delete(request, metadata_set_id):
}
return render_to_response('main/generic_confirm.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def _as_choice_list(items):

View File

@@ -1,16 +1,15 @@
from __future__ import absolute_import
import inspect
import logging
import re
import urllib
import urlparse
import inspect
from django.core.urlresolvers import NoReverseMatch, resolve, reverse
from django.template import VariableDoesNotExist, Variable
from django.template import (VariableDoesNotExist, Variable)
from django.utils.encoding import smart_str, smart_unicode
from django.utils.http import urlquote, urlencode
from django.utils.http import urlencode, urlquote
from django.utils.text import unescape_string_literal
from django.utils.translation import ugettext_lazy as _
@@ -44,10 +43,10 @@ class Link(object):
raise Exception('The bind_links source argument must be a list, even for single element sources.')
def __init__(self, text, view, klass=None, args=None, icon=None,
permissions=None, condition=None, conditional_disable=None,
description=None, dont_mark_active=False, children_view_regex=None,
keep_query=False, children_classes=None, children_views=None,
conditional_highlight=None):
permissions=None, condition=None, conditional_disable=None,
description=None, dont_mark_active=False, children_view_regex=None,
keep_query=False, children_classes=None, children_views=None,
conditional_highlight=None):
self.text = text
self.view = view

View File

@@ -2,7 +2,6 @@ from __future__ import absolute_import
import logging
from django.db import DatabaseError
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.utils.translation import ugettext_lazy as _

View File

@@ -15,26 +15,26 @@ class LanguageBackend(BackendBase):
TOO_MANY_CONSONANTS = re.compile('[bcdfghjklmnpqrstvwxyz]{4}', re.I)
# SINGLE_LETTER_WORDS = re.compile('^$', re.I)
#(L) If a string is longer than 40 characters, it is considered as garbage
# (L) If a string is longer than 40 characters, it is considered as garbage
# http://www.duden.de/sprachwissen/sprachratgeber/die-laengsten-woerter-im-dudenkorpus
# http://www.duden.de/sprachwissen/sprachratgeber/durchschnittliche-laenge-eines-deutschen-wortes
if len(word) > 40:
return None
#(A) If a string's ratio of alphanumeric characters to total
#characters is less than 50%, the string is garbage
# (A) If a string's ratio of alphanumeric characters to total
# characters is less than 50%, the string is garbage
if len(ALL_ALPHANUM.findall(word)) < len(word) / 2:
return None
#Remove word if all the letters in the word are non alphanumeric
# Remove word if all the letters in the word are non alphanumeric
if len(NON_ALPHANUM.findall(word)) == len(word):
return None
#Removed words with too many consecutie vowels
# Removed words with too many consecutie vowels
if TOO_MANY_VOWELS.findall(word):
return None
#Removed words with too many consecutie consonants
# Removed words with too many consecutie consonants
if TOO_MANY_CONSONANTS.findall(word):
return None

View File

@@ -15,28 +15,28 @@ class LanguageBackend(BackendBase):
TOO_MANY_CONSONANTS = re.compile('[bcdfghjklmnñpqrstvwxyz]{5}', re.I)
SINGLE_LETTER_WORDS = re.compile('^[aeoóuy]$', re.I)
#(L) If a string is longer than 20 characters, it is garbage
# (L) If a string is longer than 20 characters, it is garbage
if len(word) > 20:
return None
#(A) If a strings ratio of alphanumeric characters to total
#characters is less than 50%, the string is garbage
# (A) If a strings ratio of alphanumeric characters to total
# characters is less than 50%, the string is garbage
if len(ALL_ALPHANUM.findall(word)) < len(word) / 2:
return None
#Remove word if all the letters in the word are non alphanumeric
# Remove word if all the letters in the word are non alphanumeric
if len(NON_ALPHANUM.findall(word)) == len(word):
return None
#Removed words with too many consecutie vowels
# Removed words with too many consecutie vowels
if TOO_MANY_VOWELS.findall(word):
return None
#Removed words with too many consecutie consonants
# Removed words with too many consecutie consonants
if TOO_MANY_CONSONANTS.findall(word):
return None
#Only allow specific single letter words
# Only allow specific single letter words
if len(word) == 1 and not SINGLE_LETTER_WORDS.findall(word):
return None

View File

@@ -1,5 +1,3 @@
from django.utils.translation import ugettext_lazy as _
DEFAULT_OCR_FILE_FORMAT = u'tiff'
DEFAULT_OCR_FILE_EXTENSION = u'tif'
UNPAPER_FILE_FORMAT = u'ppm'

View File

@@ -1,5 +1,4 @@
# -*- coding: utf-8 -*-
from south.utils import datetime_utils as datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
@@ -30,7 +29,6 @@ class Migration(SchemaMigration):
))
db.send_create_signal(u'ocr', ['QueueDocument'])
def backwards(self, orm):
# Deleting model 'DocumentQueue'
db.delete_table(u'ocr_documentqueue')
@@ -38,7 +36,6 @@ class Migration(SchemaMigration):
# Deleting model 'QueueDocument'
db.delete_table(u'ocr_queuedocument')
models = {
u'documents.document': {
'Meta': {'ordering': "['-date_added']", 'object_name': 'Document'},
@@ -73,4 +70,4 @@ class Migration(SchemaMigration):
}
}
complete_apps = ['ocr']
complete_apps = ['ocr']

View File

@@ -1,5 +1,4 @@
# -*- coding: utf-8 -*-
from south.utils import datetime_utils as datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
@@ -17,7 +16,6 @@ class Migration(SchemaMigration):
# Deleting field 'QueueDocument.state'
db.delete_column(u'ocr_queuedocument', 'state')
def backwards(self, orm):
# Adding field 'DocumentQueue.state'
db.add_column(u'ocr_documentqueue', 'state',
@@ -34,7 +32,6 @@ class Migration(SchemaMigration):
self.gf('django.db.models.fields.CharField')(default='p', max_length=4),
keep_default=False)
models = {
u'documents.document': {
'Meta': {'ordering': "['-date_added']", 'object_name': 'Document'},
@@ -66,4 +63,4 @@ class Migration(SchemaMigration):
}
}
complete_apps = ['ocr']
complete_apps = ['ocr']

View File

@@ -36,6 +36,7 @@ class QueueDocument(models.Model):
verbose_name_plural = _(u'Queue documents')
def requeue(self):
# TODO: Fix properly using Celery tasks
if self.state == QUEUEDOCUMENT_STATE_PROCESSING:
raise ReQueueError
else:

View File

@@ -7,8 +7,6 @@ import sys
import traceback
from django.conf import settings
from django.db.models import Q
from django.utils.timezone import now
from documents.models import Document
from lock_manager import Lock, LockError

View File

@@ -46,7 +46,7 @@ def queue_document_list(request, queue_name='default'):
}
return render_to_response('main/generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def queue_document_delete(request, queue_document_id=None, queue_document_id_list=None):
@@ -89,7 +89,7 @@ def queue_document_delete(request, queue_document_id=None, queue_document_id_lis
context['title'] = _(u'Are you sure you wish to delete queue documents: %s?') % ', '.join([unicode(d) for d in queue_documents])
return render_to_response('main/generic_confirm.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def queue_document_multiple_delete(request):
@@ -112,7 +112,7 @@ def submit_document(request, document_id):
AccessEntry.objects.check_access(PERMISSION_OCR_DOCUMENT, request.user, document)
return submit_document_to_queue(request, document=document,
post_submit_redirect=request.META.get('HTTP_REFERER', '/'))
post_submit_redirect=request.META.get('HTTP_REFERER', '/'))
def submit_document_to_queue(request, document, post_submit_redirect=None):
@@ -176,7 +176,7 @@ def re_queue_document(request, queue_document_id=None, queue_document_id_list=No
context['title'] = _(u'Are you sure you wish to re-queue documents: %s?') % ', '.join([unicode(d) for d in queue_documents])
return render_to_response('main/generic_confirm.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def re_queue_multiple_document(request):

View File

@@ -7,6 +7,7 @@ import operator
from django.contrib import messages
from django.contrib.auth.models import Group, User
from django.contrib.contenttypes.models import ContentType
from django.core.urlresolvers import reverse
from django.core.urlresolvers import reverse_lazy
from django.conf import settings
from django.http import Http404, HttpResponseRedirect