Code cleanup

This commit is contained in:
Roberto Rosario
2011-07-21 11:46:15 -04:00
parent 46aa89d924
commit 90e876ca93
36 changed files with 125 additions and 169 deletions

View File

@@ -29,6 +29,7 @@ if common_settings.AUTO_CREATE_ADMIN:
# the "syncdb" command during database creation.) # the "syncdb" command during database creation.)
# #
# Create our own test user automatically. # Create our own test user automatically.
def create_testuser(app, created_models, verbosity, **kwargs): def create_testuser(app, created_models, verbosity, **kwargs):
USERNAME = common_settings.AUTO_ADMIN_USERNAME USERNAME = common_settings.AUTO_ADMIN_USERNAME
PASSWORD = common_settings.AUTO_ADMIN_PASSWORD PASSWORD = common_settings.AUTO_ADMIN_PASSWORD

View File

@@ -111,4 +111,3 @@ class UserForm(forms.ModelForm):
class Meta: class Meta:
model = User model = User
fields = ('first_name', 'last_name') fields = ('first_name', 'last_name')

View File

@@ -20,7 +20,7 @@ except:
import mimetypes import mimetypes
mimetypes.init() mimetypes.init()
USE_PYTHON_MAGIC = False USE_PYTHON_MAGIC = False
def urlquote(link=None, get=None): def urlquote(link=None, get=None):
u''' u'''
@@ -357,7 +357,7 @@ def get_mimetype(filepath):
""" """
file_mimetype = u'' file_mimetype = u''
file_mime_encoding = u'' file_mime_encoding = u''
if USE_PYTHON_MAGIC: if USE_PYTHON_MAGIC:
if os.path.exists(filepath): if os.path.exists(filepath):
try: try:
@@ -373,7 +373,7 @@ def get_mimetype(filepath):
else: else:
path, filename = os.path.split(filepath) path, filename = os.path.split(filepath)
file_mimetype, file_mime_encoding = mimetypes.guess_type(filename) file_mimetype, file_mime_encoding = mimetypes.guess_type(filename)
return file_mimetype, file_mime_encoding return file_mimetype, file_mime_encoding
@@ -384,7 +384,7 @@ def validate_path(path):
os.mkdir(path) os.mkdir(path)
except: except:
return False return False
# Check if it is writable # Check if it is writable
try: try:
fd, test_filepath = tempfile.mkstemp(dir=path) fd, test_filepath = tempfile.mkstemp(dir=path)
@@ -392,5 +392,5 @@ def validate_path(path):
os.unlink(test_filepath) os.unlink(test_filepath)
except: except:
return False return False
return True return True

View File

@@ -105,7 +105,7 @@ def assign_remove(request, left_list, right_list, add_method, remove_method, lef
'form': unselected_list, 'form': unselected_list,
'title': left_list_title, 'title': left_list_title,
'submit_label': _(u'Add'), 'submit_label': _(u'Add'),
'submit_icon_famfam': 'add' 'submit_icon_famfam': 'add'
} }
}, },
{ {
@@ -145,7 +145,7 @@ def current_user_details(request):
Display the current user's details Display the current user's details
""" """
form = UserForm_view(instance=request.user) form = UserForm_view(instance=request.user)
return render_to_response( return render_to_response(
'generic_form.html', { 'generic_form.html', {
'form': form, 'form': form,
@@ -153,15 +153,15 @@ def current_user_details(request):
'read_only': True, 'read_only': True,
}, },
context_instance=RequestContext(request)) context_instance=RequestContext(request))
def current_user_edit(request): def current_user_edit(request):
""" """
Allow an user to edit his own details Allow an user to edit his own details
""" """
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse('current_user_details')))) next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse('current_user_details'))))
if request.method == 'POST': if request.method == 'POST':
form = UserForm(instance=request.user, data=request.POST) form = UserForm(instance=request.user, data=request.POST)
if form.is_valid(): if form.is_valid():
@@ -170,11 +170,11 @@ def current_user_edit(request):
return HttpResponseRedirect(next) return HttpResponseRedirect(next)
else: else:
form = UserForm(instance=request.user) form = UserForm(instance=request.user)
return render_to_response( return render_to_response(
'generic_form.html', { 'generic_form.html', {
'form': form, 'form': form,
'next': next, 'next': next,
'title': _(u'edit current user details'), 'title': _(u'edit current user details'),
}, },
context_instance=RequestContext(request)) context_instance=RequestContext(request))

View File

@@ -129,6 +129,9 @@ class ConverterClass(ConverterBase):
for format_name in Image.ID: for format_name in Image.ID:
formats.append((format_name, u'')) formats.append((format_name, u''))
#if USE_GHOSTSCRIPT:
#PDF, PS
return formats return formats
def get_available_transformations(self): def get_available_transformations(self):
@@ -147,30 +150,30 @@ class ConverterClass(ConverterBase):
''' '''
#preresize image with factor 2, 4, 8 and fast algorithm #preresize image with factor 2, 4, 8 and fast algorithm
factor = 1 factor = 1
while img.size[0]/factor > 2*box[0] and img.size[1]*2/factor > 2*box[1]: while img.size[0]/factor > 2 * box[0] and img.size[1] * 2/factor > 2 * box[1]:
factor *=2 factor *=2
if factor > 1: if factor > 1:
img.thumbnail((img.size[0]/factor, img.size[1]/factor), Image.NEAREST) img.thumbnail((img.size[0] / factor, img.size[1] / factor), Image.NEAREST)
#calculate the cropping box and get the cropped part #calculate the cropping box and get the cropped part
if fit: if fit:
x1 = y1 = 0 x1 = y1 = 0
x2, y2 = img.size x2, y2 = img.size
wRatio = 1.0 * x2/box[0] wRatio = 1.0 * x2 / box[0]
hRatio = 1.0 * y2/box[1] hRatio = 1.0 * y2 / box[1]
if hRatio > wRatio: if hRatio > wRatio:
y1 = y2/2-box[1]*wRatio/2 y1 = y2 / 2 - box[1] * wRatio / 2
y2 = y2/2+box[1]*wRatio/2 y2 = y2 / 2 + box[1] * wRatio / 2
else: else:
x1 = x2/2-box[0]*hRatio/2 x1 = x2 / 2 - box[0] * hRatio / 2
x2 = x2/2+box[0]*hRatio/2 x2 = x2 / 2 + box[0] * hRatio / 2
img = img.crop((x1,y1,x2,y2)) img = img.crop((x1, y1, x2, y2))
#Resize the image with best quality algorithm ANTI-ALIAS #Resize the image with best quality algorithm ANTI-ALIAS
img.thumbnail(box, Image.ANTIALIAS) img.thumbnail(box, Image.ANTIALIAS)
if out: if out:
#save it into a file-like object #save it into a file-like object
img.save(out, "JPEG", quality=75) img.save(out, 'JPEG', quality=75)
else: else:
return img return img

View File

@@ -1,5 +1,5 @@
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.conf import settings from django.conf import settings
from django.contrib.comments.models import Comment from django.contrib.comments.models import Comment
from navigation.api import register_links, \ from navigation.api import register_links, \

View File

@@ -4,6 +4,6 @@ urlpatterns = patterns('document_indexing.views',
url(r'^(?P<index_id>\d+)/list/$', 'index_instance_list', (), 'index_instance_list'), url(r'^(?P<index_id>\d+)/list/$', 'index_instance_list', (), 'index_instance_list'),
url(r'^list/$', 'index_instance_list', (), 'index_instance_list'), url(r'^list/$', 'index_instance_list', (), 'index_instance_list'),
url(r'^rebuild/all/$', 'rebuild_index_instances', (), 'rebuild_index_instances'), url(r'^rebuild/all/$', 'rebuild_index_instances', (), 'rebuild_index_instances'),
url(r'^list/for/document/(?P<document_id>\d+)/$', 'document_index_list', (), 'document_index_list'), url(r'^list/for/document/(?P<document_id>\d+)/$', 'document_index_list', (), 'document_index_list'),
) )

View File

@@ -32,7 +32,7 @@ def index_instance_list(request, index_id=None):
index_instance_list = IndexInstance.objects.filter(parent=None) index_instance_list = IndexInstance.objects.filter(parent=None)
breadcrumbs = get_instance_link() breadcrumbs = get_instance_link()
index_instance = None index_instance = None
show_multi_select_buttons = False show_multi_select_buttons = False
if index_instance: if index_instance:
if index_instance.index.link_documents: if index_instance.index.link_documents:
@@ -87,7 +87,7 @@ def rebuild_index_instances(request):
def document_index_list(request, document_id): def document_index_list(request, document_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW, PERMISSION_DOCUMENT_INDEXING_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW, PERMISSION_DOCUMENT_INDEXING_VIEW])
document = get_object_or_404(Document, pk=document_id) document = get_object_or_404(Document, pk=document_id)
object_list = [] object_list = []
for index_instance in document.indexinstance_set.all(): for index_instance in document.indexinstance_set.all():

View File

@@ -1,6 +1,4 @@
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse
from django.conf import settings
from common.utils import validate_path from common.utils import validate_path
from navigation.api import register_links, register_top_menu, \ from navigation.api import register_links, register_top_menu, \
@@ -28,6 +26,7 @@ from documents.conf.settings import ZOOM_MIN_LEVEL
from documents.conf.settings import CACHE_PATH from documents.conf.settings import CACHE_PATH
from documents.widgets import document_thumbnail from documents.widgets import document_thumbnail
# Document page links expressions # Document page links expressions
def is_first_page(context): def is_first_page(context):
return context['object'].page_number <= 1 return context['object'].page_number <= 1
@@ -35,7 +34,7 @@ def is_first_page(context):
def is_last_page(context): def is_last_page(context):
return context['object'].page_number >= context['object'].document.documentpage_set.count() return context['object'].page_number >= context['object'].document.documentpage_set.count()
def is_min_zoom(context): def is_min_zoom(context):
return context['zoom'] <= ZOOM_MIN_LEVEL return context['zoom'] <= ZOOM_MIN_LEVEL
@@ -129,7 +128,7 @@ register_links(['setup_document_type_metadata', 'document_type_filename_delete',
register_links(['document_type_filename_create', 'document_type_filename_list', 'document_type_filename_edit', 'document_type_filename_delete'], [document_type_filename_create], menu_name='sidebar') register_links(['document_type_filename_create', 'document_type_filename_list', 'document_type_filename_edit', 'document_type_filename_delete'], [document_type_filename_create], menu_name='sidebar')
register_links(['document_type_filename_edit', 'document_type_filename_delete'], [document_type_filename_return_to_document_type], menu_name='sidebar') register_links(['document_type_filename_edit', 'document_type_filename_delete'], [document_type_filename_return_to_document_type], menu_name='sidebar')
# Register document links # Register document links
register_links(Document, [document_edit, document_print, document_delete, document_download, document_find_duplicates, document_clear_transformations, document_create_siblings]) register_links(Document, [document_edit, document_print, document_delete, document_download, document_find_duplicates, document_clear_transformations, document_create_siblings])
register_multi_item_links(['document_find_duplicates', 'folder_view', 'index_instance_list', 'document_type_document_list', 'search', 'results', 'document_group_view', 'document_list', 'document_list_recent'], [document_multiple_clear_transformations, document_multiple_delete]) register_multi_item_links(['document_find_duplicates', 'folder_view', 'index_instance_list', 'document_type_document_list', 'search', 'results', 'document_group_view', 'document_list', 'document_list_recent'], [document_multiple_clear_transformations, document_multiple_delete])
@@ -185,8 +184,8 @@ register_model_list_columns(Document, [
]) ])
register_top_menu( register_top_menu(
'documents', 'documents',
link={'famfam': 'page', 'text': _(u'documents'), 'view': 'document_list_recent'}, link={'famfam': 'page', 'text': _(u'documents'), 'view': 'document_list_recent'},
children_path_regex=[ children_path_regex=[
r'^documents/[^t]', r'^metadata/[^s]', r'comments', r'tags/document', r'grouping/[^s]', r'history/list/for_object/documents' r'^documents/[^t]', r'^metadata/[^s]', r'comments', r'tags/document', r'grouping/[^s]', r'history/list/for_object/documents'
], ],

View File

@@ -178,7 +178,7 @@ class DocumentForm(forms.ModelForm):
if instance: if instance:
if hasattr(instance, 'document_type'): if hasattr(instance, 'document_type'):
document_type = instance.document_type document_type = instance.document_type
if document_type: if document_type:
filenames_qs = document_type.documenttypefilename_set.filter(enabled=True) filenames_qs = document_type.documenttypefilename_set.filter(enabled=True)
if filenames_qs.count() > 0: if filenames_qs.count() > 0:
@@ -190,7 +190,7 @@ class DocumentForm(forms.ModelForm):
new_filename = forms.CharField( new_filename = forms.CharField(
label=_('New document filename'), required=False label=_('New document filename'), required=False
) )
class DocumentForm_edit(DocumentForm): class DocumentForm_edit(DocumentForm):
""" """
@@ -199,7 +199,7 @@ class DocumentForm_edit(DocumentForm):
class Meta: class Meta:
model = Document model = Document
exclude = ('file', 'document_type', 'tags') exclude = ('file', 'document_type', 'tags')
class DocumentPropertiesForm(DetailForm): class DocumentPropertiesForm(DetailForm):
""" """

View File

@@ -32,5 +32,5 @@ class DocumentPageTransformationManager(models.Manager):
) )
except Exception, e: except Exception, e:
warnings.append(e) warnings.append(e)
return transformations, warnings return transformations, warnings

View File

@@ -13,7 +13,7 @@ from taggit.managers import TaggableManager
from dynamic_search.api import register from dynamic_search.api import register
from converter.api import get_page_count from converter.api import get_page_count
from converter.api import get_available_transformations_choices from converter.api import get_available_transformations_choices
from converter.api import create_image_cache_filename, convert from converter.api import convert
from converter.exceptions import UnknownFormat, UnkownConvertError from converter.exceptions import UnknownFormat, UnkownConvertError
from documents.utils import get_document_mimetype from documents.utils import get_document_mimetype
@@ -21,7 +21,6 @@ from documents.conf.settings import CHECKSUM_FUNCTION
from documents.conf.settings import UUID_FUNCTION from documents.conf.settings import UUID_FUNCTION
from documents.conf.settings import STORAGE_BACKEND from documents.conf.settings import STORAGE_BACKEND
from documents.conf.settings import PREVIEW_SIZE from documents.conf.settings import PREVIEW_SIZE
from documents.conf.settings import THUMBNAIL_SIZE
from documents.conf.settings import CACHE_PATH from documents.conf.settings import CACHE_PATH
from documents.managers import RecentDocumentManager, \ from documents.managers import RecentDocumentManager, \
@@ -30,8 +29,8 @@ from documents.utils import document_save_to_temp_dir
from documents.literals import PICTURE_ERROR_SMALL, PICTURE_ERROR_MEDIUM, \ from documents.literals import PICTURE_ERROR_SMALL, PICTURE_ERROR_MEDIUM, \
PICTURE_UNKNOWN_SMALL, PICTURE_UNKNOWN_MEDIUM PICTURE_UNKNOWN_SMALL, PICTURE_UNKNOWN_MEDIUM
from converter.literals import DEFAULT_ZOOM_LEVEL, DEFAULT_ROTATION, \ from converter.literals import DEFAULT_ZOOM_LEVEL, DEFAULT_ROTATION, \
DEFAULT_FILE_FORMAT, DEFAULT_PAGE_NUMBER DEFAULT_PAGE_NUMBER
# document image cache name hash function # document image cache name hash function
HASH_FUNCTION = lambda x: hashlib.sha256(x).hexdigest() HASH_FUNCTION = lambda x: hashlib.sha256(x).hexdigest()
@@ -63,7 +62,7 @@ class DocumentType(models.Model):
class Meta: class Meta:
verbose_name = _(u'document type') verbose_name = _(u'document type')
verbose_name_plural = _(u'documents types') verbose_name_plural = _(u'documents types')
ordering = ['name'] ordering = ['name']
class Document(models.Model): class Document(models.Model):
@@ -84,7 +83,7 @@ class Document(models.Model):
description = models.TextField(blank=True, null=True, verbose_name=_(u'description'), db_index=True) description = models.TextField(blank=True, null=True, verbose_name=_(u'description'), db_index=True)
tags = TaggableManager() tags = TaggableManager()
comments = generic.GenericRelation( comments = generic.GenericRelation(
Comment, Comment,
content_type_field='content_type', content_type_field='content_type',
@@ -209,7 +208,7 @@ class Document(models.Model):
exists in storage exists in storage
""" """
return self.file.storage.exists(self.file.path) return self.file.storage.exists(self.file.path)
def apply_default_transformations(self, transformations): def apply_default_transformations(self, transformations):
#Only apply default transformations on new documents #Only apply default transformations on new documents
if reduce(lambda x, y: x + y, [page.documentpagetransformation_set.count() for page in self.documentpage_set.all()]) == 0: if reduce(lambda x, y: x + y, [page.documentpagetransformation_set.count() for page in self.documentpage_set.all()]) == 0:
@@ -223,7 +222,7 @@ class Document(models.Model):
) )
page_transformation.save() page_transformation.save()
def get_image_cache_name(self, page): def get_image_cache_name(self, page):
document_page = self.documentpage_set.get(page_number=page) document_page = self.documentpage_set.get(page_number=page)
transformations, warnings = document_page.get_transformation_list() transformations, warnings = document_page.get_transformation_list()
@@ -234,16 +233,16 @@ class Document(models.Model):
else: else:
document_file = document_save_to_temp_dir(self, self.checksum) document_file = document_save_to_temp_dir(self, self.checksum)
return convert(document_file, output_filepath=cache_file_path, page=page, transformations=transformations) return convert(document_file, output_filepath=cache_file_path, page=page, transformations=transformations)
def get_image(self, size=PREVIEW_SIZE, page=DEFAULT_PAGE_NUMBER, zoom=DEFAULT_ZOOM_LEVEL, rotation=DEFAULT_ROTATION): def get_image(self, size=PREVIEW_SIZE, page=DEFAULT_PAGE_NUMBER, zoom=DEFAULT_ZOOM_LEVEL, rotation=DEFAULT_ROTATION):
try: try:
image_cache_name = self.get_image_cache_name(page=page) image_cache_name = self.get_image_cache_name(page=page)
output_file = convert(image_cache_name, cleanup_files=False, size=size, zoom=zoom, rotation=rotation) output_file = convert(image_cache_name, cleanup_files=False, size=size, zoom=zoom, rotation=rotation)
except UnknownFormat: except UnknownFormat:
output_file = os.path.join(settings.MEDIA_ROOT, u'images', PICTURE_UNKNOWN_SMALL) output_file = os.path.join(settings.MEDIA_ROOT, u'images', PICTURE_UNKNOWN_SMALL)
except UnkownConvertError: except UnkownConvertError:
output_file = os.path.join(settings.MEDIA_ROOT, u'images', PICTURE_ERROR_SMALL) output_file = os.path.join(settings.MEDIA_ROOT, u'images', PICTURE_ERROR_SMALL)
except Exception, e: except:
output_file = os.path.join(settings.MEDIA_ROOT, u'images', PICTURE_ERROR_SMALL) output_file = os.path.join(settings.MEDIA_ROOT, u'images', PICTURE_ERROR_SMALL)
return output_file return output_file

View File

@@ -2,7 +2,6 @@ from django.template import Library, Node, Variable
from converter.api import get_document_dimensions from converter.api import get_document_dimensions
from documents.views import calculate_converter_arguments
from documents.conf.settings import PRINT_SIZE from documents.conf.settings import PRINT_SIZE
register = Library() register = Library()

View File

@@ -59,7 +59,7 @@ urlpatterns = patterns('documents.views',
url(r'^type/(?P<document_type_id>\d+)/list/documents/$', 'document_type_document_list', (), 'document_type_document_list'), url(r'^type/(?P<document_type_id>\d+)/list/documents/$', 'document_type_document_list', (), 'document_type_document_list'),
url(r'^type/(?P<document_type_id>\d+)/edit/$', 'document_type_edit', (), 'document_type_edit'), url(r'^type/(?P<document_type_id>\d+)/edit/$', 'document_type_edit', (), 'document_type_edit'),
url(r'^type/(?P<document_type_id>\d+)/delete/$', 'document_type_delete', (), 'document_type_delete'), url(r'^type/(?P<document_type_id>\d+)/delete/$', 'document_type_delete', (), 'document_type_delete'),
url(r'^type/(?P<document_type_id>\d+)/filename/list/$', 'document_type_filename_list', (), 'document_type_filename_list'), url(r'^type/(?P<document_type_id>\d+)/filename/list/$', 'document_type_filename_list', (), 'document_type_filename_list'),
url(r'^type/filename/(?P<document_type_filename_id>\d+)/edit/$', 'document_type_filename_edit', (), 'document_type_filename_edit'), url(r'^type/filename/(?P<document_type_filename_id>\d+)/edit/$', 'document_type_filename_edit', (), 'document_type_filename_edit'),
url(r'^type/filename/(?P<document_type_filename_id>\d+)/delete/$', 'document_type_filename_delete', (), 'document_type_filename_delete'), url(r'^type/filename/(?P<document_type_filename_id>\d+)/delete/$', 'document_type_filename_delete', (), 'document_type_filename_delete'),

View File

@@ -46,8 +46,8 @@ def get_document_mimetype(document):
library library
""" """
file_mimetype = u'' file_mimetype = u''
file_mime_encoding = u'' file_mime_encoding = u''
if USE_PYTHON_MAGIC: if USE_PYTHON_MAGIC:
if document.exists(): if document.exists():
try: try:
@@ -62,5 +62,5 @@ def get_document_mimetype(document):
source.close() source.close()
else: else:
file_mimetype, file_mime_encoding = mimetypes.guess_type(document.get_fullname()) file_mimetype, file_mime_encoding = mimetypes.guess_type(document.get_fullname())
return file_mimetype, file_mime_encoding return file_mimetype, file_mime_encoding

View File

@@ -1,4 +1,3 @@
import os
import urlparse import urlparse
import copy import copy
@@ -10,7 +9,6 @@ from django.contrib import messages
from django.views.generic.list_detail import object_list from django.views.generic.list_detail import object_list
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.views.generic.create_update import delete_object, update_object from django.views.generic.create_update import delete_object, update_object
from django.conf import settings
from django.utils.http import urlencode from django.utils.http import urlencode
import sendfile import sendfile
@@ -24,8 +22,6 @@ from converter.literals import DEFAULT_ZOOM_LEVEL, DEFAULT_ROTATION, \
DEFAULT_FILE_FORMAT, DEFAULT_PAGE_NUMBER DEFAULT_FILE_FORMAT, DEFAULT_PAGE_NUMBER
from filetransfers.api import serve_file from filetransfers.api import serve_file
from grouping.utils import get_document_group_subtemplate from grouping.utils import get_document_group_subtemplate
from metadata.api import save_metadata_list, \
decode_metadata_from_url, metadata_repr_as_list
from metadata.forms import MetadataFormSet, MetadataSelectionForm from metadata.forms import MetadataFormSet, MetadataSelectionForm
from navigation.utils import resolve_to_name from navigation.utils import resolve_to_name
from permissions.api import check_permissions from permissions.api import check_permissions
@@ -33,7 +29,6 @@ from document_indexing.api import update_indexes, delete_indexes
from history.api import create_history from history.api import create_history
from documents.conf.settings import PREVIEW_SIZE from documents.conf.settings import PREVIEW_SIZE
from documents.conf.settings import THUMBNAIL_SIZE
from documents.conf.settings import STORAGE_BACKEND from documents.conf.settings import STORAGE_BACKEND
from documents.conf.settings import ZOOM_PERCENT_STEP from documents.conf.settings import ZOOM_PERCENT_STEP
from documents.conf.settings import ZOOM_MAX_LEVEL from documents.conf.settings import ZOOM_MAX_LEVEL
@@ -52,7 +47,7 @@ from documents.literals import HISTORY_DOCUMENT_CREATED, \
HISTORY_DOCUMENT_EDITED, HISTORY_DOCUMENT_DELETED HISTORY_DOCUMENT_EDITED, HISTORY_DOCUMENT_DELETED
from documents.forms import DocumentTypeSelectForm, \ from documents.forms import DocumentTypeSelectForm, \
DocumentForm, DocumentForm_edit, DocumentPropertiesForm, \ DocumentForm_edit, DocumentPropertiesForm, \
DocumentPreviewForm, \ DocumentPreviewForm, \
DocumentPageForm, DocumentPageTransformationForm, \ DocumentPageForm, DocumentPageTransformationForm, \
DocumentContentForm, DocumentPageForm_edit, \ DocumentContentForm, DocumentPageForm_edit, \
@@ -61,9 +56,7 @@ from documents.forms import DocumentTypeSelectForm, \
from documents.wizards import DocumentCreateWizard from documents.wizards import DocumentCreateWizard
from documents.models import Document, DocumentType, DocumentPage, \ from documents.models import Document, DocumentType, DocumentPage, \
DocumentPageTransformation, RecentDocument, DocumentTypeFilename DocumentPageTransformation, RecentDocument, DocumentTypeFilename
from documents.literals import PICTURE_ERROR_SMALL, PICTURE_ERROR_MEDIUM, \
PICTURE_UNKNOWN_SMALL, PICTURE_UNKNOWN_MEDIUM
# Document type permissions # Document type permissions
from documents.literals import PERMISSION_DOCUMENT_TYPE_EDIT, \ from documents.literals import PERMISSION_DOCUMENT_TYPE_EDIT, \
PERMISSION_DOCUMENT_TYPE_DELETE, PERMISSION_DOCUMENT_TYPE_CREATE PERMISSION_DOCUMENT_TYPE_DELETE, PERMISSION_DOCUMENT_TYPE_CREATE
@@ -446,10 +439,10 @@ def _find_duplicate_list(request, source_document_list=Document.objects.all(), i
'hide_links': True, 'hide_links': True,
'multi_select_as_buttons': True, 'multi_select_as_buttons': True,
} }
if extra_context: if extra_context:
context.update(extra_context) context.update(extra_context)
return render_to_response('generic_list.html', context, return render_to_response('generic_list.html', context,
context_instance=RequestContext(request)) context_instance=RequestContext(request))
@@ -548,7 +541,7 @@ def document_page_view(request, document_page_id):
zoom_text = u'(%d%%)' % zoom zoom_text = u'(%d%%)' % zoom
else: else:
zoom_text = u'' zoom_text = u''
if rotation != 0 and rotation != 360: if rotation != 0 and rotation != 360:
rotation_text = u'(%d&deg;)' % rotation rotation_text = u'(%d&deg;)' % rotation
else: else:
@@ -779,10 +772,10 @@ def document_hard_copy(request, document_id):
RecentDocument.objects.add_document_for_user(request.user, document) RecentDocument.objects.add_document_for_user(request.user, document)
arguments, warnings = calculate_converter_arguments(document, size=PRINT_SIZE, file_format=DEFAULT_FILE_FORMAT) #arguments, warnings = calculate_converter_arguments(document, size=PRINT_SIZE, file_format=DEFAULT_FILE_FORMAT)
# Pre-generate # Pre-generate
convert_document(document, **arguments) #convert_document(document, **arguments)
# Extract dimension values ignoring any unit # Extract dimension values ignoring any unit
page_width = request.GET.get('page_width', dict(PAGE_SIZE_DIMENSIONS)[DEFAULT_PAPER_SIZE][0]) page_width = request.GET.get('page_width', dict(PAGE_SIZE_DIMENSIONS)[DEFAULT_PAPER_SIZE][0])
@@ -828,9 +821,9 @@ def document_type_list(request):
def document_type_document_list(request, document_type_id): def document_type_document_list(request, document_type_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document_type = get_object_or_404(DocumentType, pk=document_type_id) document_type = get_object_or_404(DocumentType, pk=document_type_id)
return document_list( return document_list(
request, request,
object_list=Document.objects.filter(document_type=document_type), object_list=Document.objects.filter(document_type=document_type),
@@ -867,7 +860,7 @@ def document_type_edit(request, document_type_id):
'object_name': _(u'document type'), 'object_name': _(u'document type'),
'next': next 'next': next
}, },
context_instance=RequestContext(request)) context_instance=RequestContext(request))
def document_type_delete(request, document_type_id): def document_type_delete(request, document_type_id):
@@ -907,7 +900,7 @@ def document_type_delete(request, document_type_id):
def document_type_create(request): def document_type_create(request):
check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_CREATE]) check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_CREATE])
if request.method == 'POST': if request.method == 'POST':
form = DocumentTypeForm(request.POST) form = DocumentTypeForm(request.POST)
if form.is_valid(): if form.is_valid():
@@ -948,7 +941,7 @@ def document_type_filename_list(request, document_type_id):
} }
return render_to_response('generic_list.html', context, return render_to_response('generic_list.html', context,
context_instance=RequestContext(request)) context_instance=RequestContext(request))
def document_type_filename_edit(request, document_type_filename_id): def document_type_filename_edit(request, document_type_filename_id):
@@ -982,7 +975,7 @@ def document_type_filename_edit(request, document_type_filename_id):
'document_type': document_type_filename.document_type, 'document_type': document_type_filename.document_type,
}, },
context_instance=RequestContext(request)) context_instance=RequestContext(request))
def document_type_filename_delete(request, document_type_filename_id): def document_type_filename_delete(request, document_type_filename_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT]) check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT])
@@ -1017,14 +1010,14 @@ def document_type_filename_delete(request, document_type_filename_id):
} }
return render_to_response('generic_confirm.html', context, return render_to_response('generic_confirm.html', context,
context_instance=RequestContext(request)) context_instance=RequestContext(request))
def document_type_filename_create(request, document_type_id): def document_type_filename_create(request, document_type_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT]) check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT])
document_type = get_object_or_404(DocumentType, pk=document_type_id) document_type = get_object_or_404(DocumentType, pk=document_type_id)
if request.method == 'POST': if request.method == 'POST':
form = DocumentTypeFilenameForm_create(request.POST) form = DocumentTypeFilenameForm_create(request.POST)
if form.is_valid(): if form.is_valid():

View File

@@ -11,7 +11,7 @@ class SearchForm(forms.Form):
required=False, required=False,
widget=forms.widgets.HiddenInput() widget=forms.widgets.HiddenInput()
) )
class AdvancedSearchForm(forms.Form): class AdvancedSearchForm(forms.Form):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):

View File

@@ -1,5 +1,4 @@
import urlparse import urlparse
from datetime import datetime
from django.db import models from django.db import models
from django.utils.http import urlencode from django.utils.http import urlencode
@@ -12,7 +11,7 @@ class RecentSearchManager(models.Manager):
parsed_query = urlparse.parse_qs(query) parsed_query = urlparse.parse_qs(query)
for key, value in parsed_query.items(): for key, value in parsed_query.items():
parsed_query[key] = u' '.join(value) parsed_query[key] = u' '.join(value)
if 'q=' in query: if 'q=' in query:
# Is a simple query # Is a simple query
if not parsed_query.get('q'): if not parsed_query.get('q'):

View File

@@ -10,7 +10,7 @@ from django.core.urlresolvers import reverse
from dynamic_search.managers import RecentSearchManager from dynamic_search.managers import RecentSearchManager
from dynamic_search.api import registered_search_dict from dynamic_search.api import registered_search_dict
class RecentSearch(models.Model): class RecentSearch(models.Model):
""" """
Keeps a list of the n most recent search keywords for a given user Keeps a list of the n most recent search keywords for a given user
@@ -46,15 +46,15 @@ class RecentSearch(models.Model):
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
self.datetime_created = datetime.now() self.datetime_created = datetime.now()
super(RecentSearch, self).save(*args, **kwargs) super(RecentSearch, self).save(*args, **kwargs)
def url(self): def url(self):
view = 'results' if self.is_advanced() else 'search' view = 'results' if self.is_advanced() else 'search'
return '%s?%s' % (reverse(view), self.query) return '%s?%s' % (reverse(view), self.query)
def is_advanced(self): def is_advanced(self):
return 'q' not in urlparse.parse_qs(self.query) return 'q' not in urlparse.parse_qs(self.query)
class Meta: class Meta:
ordering = ('-datetime_created',) ordering = ('-datetime_created',)
verbose_name = _(u'recent search') verbose_name = _(u'recent search')
verbose_name_plural = _(u'recent searches') verbose_name_plural = _(u'recent searches')

View File

@@ -39,10 +39,10 @@ def results(request, extra_context=None):
if extra_context: if extra_context:
context.update(extra_context) context.update(extra_context)
query = urlencode(dict(request.GET.items())) query = urlencode(dict(request.GET.items()))
if query: if query:
RecentSearch.objects.add_query_for_user(request.user, query, response['result_count']) RecentSearch.objects.add_query_for_user(request.user, query, response['result_count'])
context.update({ context.update({
'found_entries': response['model_list'], 'found_entries': response['model_list'],
'object_list': response['flat_list'], 'object_list': response['flat_list'],

View File

@@ -43,7 +43,7 @@ if not DISABLE_HOME_VIEW:
register_top_menu('home', link={'text': _(u'home'), 'view': 'home', 'famfam': 'house'}, position=0) register_top_menu('home', link={'text': _(u'home'), 'view': 'home', 'famfam': 'house'}, position=0)
if not SIDE_BAR_SEARCH: if not SIDE_BAR_SEARCH:
register_top_menu('search', link={'text': _(u'search'), 'view': 'search', 'famfam': 'zoom'}, children_path_regex=[r'^search/']) register_top_menu('search', link={'text': _(u'search'), 'view': 'search', 'famfam': 'zoom'}, children_path_regex=[r'^search/'])
register_top_menu('tools', link=tools_menu, children_views=['statistics', 'history_list', 'formats_list']) register_top_menu('tools', link=tools_menu, children_views=['statistics', 'history_list', 'formats_list'])
#register_top_menu('setup_menu', link={'text': _(u'setup'), 'view': 'setting_list', 'famfam': 'cog'}, children=setup_views) #register_top_menu('setup_menu', link={'text': _(u'setup'), 'view': 'setting_list', 'famfam': 'cog'}, children=setup_views)
register_top_menu('setup_menu', link={'text': _(u'setup'), 'view': 'setting_list', 'famfam': 'cog'}, children_path_regex=[r'^settings/', r'^user_management/', r'^permissions', r'^documents/type', r'^metadata/setup', r'sources/setup']) register_top_menu('setup_menu', link={'text': _(u'setup'), 'view': 'setting_list', 'famfam': 'cog'}, children_path_regex=[r'^settings/', r'^user_management/', r'^permissions', r'^documents/type', r'^metadata/setup', r'sources/setup'])

View File

@@ -33,14 +33,14 @@ def register_links(src, links, menu_name=None, position=None):
if position is not None: if position is not None:
for link in reversed(links): for link in reversed(links):
object_navigation[menu_name][one_src]['links'].insert(position, link) object_navigation[menu_name][one_src]['links'].insert(position, link)
else: else:
object_navigation[menu_name][one_src]['links'].extend(links) object_navigation[menu_name][one_src]['links'].extend(links)
else: else:
object_navigation[menu_name].setdefault(src, {'links': []}) object_navigation[menu_name].setdefault(src, {'links': []})
if position is not None: if position is not None:
for link in reversed(links): for link in reversed(links):
object_navigation[menu_name][src]['links'].insert(position, link) object_navigation[menu_name][src]['links'].insert(position, link)
else: else:
object_navigation[menu_name][src]['links'].extend(links) object_navigation[menu_name][src]['links'].extend(links)

View File

@@ -8,8 +8,6 @@ from django.template import TemplateSyntaxError, Library, \
from django.utils.text import unescape_string_literal from django.utils.text import unescape_string_literal
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.template import Context
from common.utils import urlquote from common.utils import urlquote
from navigation.api import object_navigation, multi_object_navigation, \ from navigation.api import object_navigation, multi_object_navigation, \
@@ -80,7 +78,7 @@ def resolve_links(context, links, current_view, current_path, parsed_query_strin
condition_result = link['condition'](context) condition_result = link['condition'](context)
else: else:
condition_result = True condition_result = True
if condition_result: if condition_result:
new_link = copy.copy(link) new_link = copy.copy(link)
try: try:
@@ -106,7 +104,7 @@ def resolve_links(context, links, current_view, current_path, parsed_query_strin
elif 'url' in link: elif 'url' in link:
if not link.get('dont_mark_active', False): if not link.get('dont_mark_active', False):
new_link['active'] = link['url'] == current_path new_link['active'] = link['url'] == current_path
if kwargs: if kwargs:
new_link['url'] = link['url'] % kwargs new_link['url'] = link['url'] % kwargs
else: else:
@@ -118,24 +116,24 @@ def resolve_links(context, links, current_view, current_path, parsed_query_strin
if 'conditional_highlight' in link: if 'conditional_highlight' in link:
new_link['active'] = link['conditional_highlight'](context) new_link['active'] = link['conditional_highlight'](context)
if 'conditional_disable' in link: if 'conditional_disable' in link:
new_link['disabled'] = link['conditional_disable'](context) new_link['disabled'] = link['conditional_disable'](context)
else: else:
new_link['disabled'] = False new_link['disabled'] = False
if current_view in link.get('children_views', []): if current_view in link.get('children_views', []):
new_link['active'] = True new_link['active'] = True
for child_url_regex in link.get('children_url_regex', []): for child_url_regex in link.get('children_url_regex', []):
if re.compile(child_url_regex).match(current_path.lstrip('/')): if re.compile(child_url_regex).match(current_path.lstrip('/')):
new_link['active'] = True new_link['active'] = True
for cls in link.get('children_classes', []): for cls in link.get('children_classes', []):
obj, object_name = get_navigation_object(context) obj, object_name = get_navigation_object(context)
if type(obj) == cls or obj == cls: if type(obj) == cls or obj == cls:
new_link['active'] = True new_link['active'] = True
context_links.append(new_link) context_links.append(new_link)
return context_links return context_links
@@ -150,9 +148,9 @@ def get_navigation_object(context):
obj = Variable(object_name).resolve(context) obj = Variable(object_name).resolve(context)
except VariableDoesNotExist: except VariableDoesNotExist:
obj = None obj = None
return obj, object_name return obj, object_name
def _get_object_navigation_links(context, menu_name=None, links_dict=object_navigation): def _get_object_navigation_links(context, menu_name=None, links_dict=object_navigation):
request = Variable('request').resolve(context) request = Variable('request').resolve(context)
@@ -203,7 +201,6 @@ def _get_object_navigation_links(context, menu_name=None, links_dict=object_navi
except KeyError: except KeyError:
pass pass
return context_links return context_links

View File

@@ -56,7 +56,7 @@ def run_tesseract(input_filename, lang=None):
os.close(fd) os.close(fd)
ocr_output = os.extsep.join([filepath, u'txt']) ocr_output = os.extsep.join([filepath, u'txt'])
command = [unicode(TESSERACT_PATH), unicode(input_filename), unicode(filepath)] command = [unicode(TESSERACT_PATH), unicode(input_filename), unicode(filepath)]
# TODO: Tesseract 3.0 segfaults # TODO: Tesseract 3.0 segfaults
#if lang is not None: #if lang is not None:
# command.extend([u'-l', lang]) # command.extend([u'-l', lang])
@@ -68,15 +68,15 @@ def run_tesseract(input_filename, lang=None):
cleanup(filepath) cleanup(filepath)
cleanup(ocr_output) cleanup(ocr_output)
raise TesseractError(error_text) raise TesseractError(error_text)
fd = codecs.open(ocr_output, 'r', 'utf-8') fd = codecs.open(ocr_output, 'r', 'utf-8')
text = fd.read().strip() text = fd.read().strip()
fd.close() fd.close()
os.unlink(filepath) os.unlink(filepath)
return text return text
def do_document_ocr(queue_document): def do_document_ocr(queue_document):
""" """
@@ -91,12 +91,12 @@ def do_document_ocr(queue_document):
except (ParserError, ParserUnknownFile): except (ParserError, ParserUnknownFile):
# Fall back to doing visual OCR # Fall back to doing visual OCR
##ocr_transformations, warnings = queue_document.get_transformation_list() ##ocr_transformations, warnings = queue_document.get_transformation_list()
document_filepath = document_page.document.get_image_cache_name(page=document_page.page_number) document_filepath = document_page.document.get_image_cache_name(page=document_page.page_number)
unpaper_output_filename = u'%s_unpaper_out_page_%s%s%s' % (document_page.document.uuid, document_page.page_number, os.extsep, UNPAPER_FILE_FORMAT) unpaper_output_filename = u'%s_unpaper_out_page_%s%s%s' % (document_page.document.uuid, document_page.page_number, os.extsep, UNPAPER_FILE_FORMAT)
unpaper_output_filepath = os.path.join(TEMPORARY_DIRECTORY, unpaper_output_filename) unpaper_output_filepath = os.path.join(TEMPORARY_DIRECTORY, unpaper_output_filename)
unpaper_input=convert(document_filepath, file_format=UNPAPER_FILE_FORMAT) unpaper_input = convert(document_filepath, file_format=UNPAPER_FILE_FORMAT)
execute_unpaper(input_filepath=unpaper_input, output_filepath=unpaper_output_filepath) execute_unpaper(input_filepath=unpaper_input, output_filepath=unpaper_output_filepath)
#from PIL import Image, ImageOps #from PIL import Image, ImageOps
@@ -108,7 +108,7 @@ def do_document_ocr(queue_document):
#im.save(unpaper_output_filepath) #im.save(unpaper_output_filepath)
# Convert to TIFF # Convert to TIFF
pre_ocr_filepath = output_filepath=convert(input_filepath=unpaper_output_filepath, file_format=DEFAULT_OCR_FILE_FORMAT) pre_ocr_filepath = convert(input_filepath=unpaper_output_filepath, file_format=DEFAULT_OCR_FILE_FORMAT)
# Tesseract needs an explicit file extension # Tesseract needs an explicit file extension
pre_ocr_filepath_w_ext = os.extsep.join([pre_ocr_filepath, DEFAULT_OCR_FILE_EXTENSION]) pre_ocr_filepath_w_ext = os.extsep.join([pre_ocr_filepath, DEFAULT_OCR_FILE_EXTENSION])
os.rename(pre_ocr_filepath, pre_ocr_filepath_w_ext) os.rename(pre_ocr_filepath, pre_ocr_filepath_w_ext)

View File

@@ -1,6 +1,4 @@
from django import forms from django import forms
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext
from ocr.models import QueueTransformation from ocr.models import QueueTransformation

View File

@@ -37,5 +37,5 @@ class QueueTransformationManager(models.Manager):
) )
except Exception, e: except Exception, e:
warnings.append(e) warnings.append(e)
return transformations, warnings return transformations, warnings

View File

@@ -48,7 +48,7 @@ class QueueDocument(models.Model):
ordering = ('datetime_submitted',) ordering = ('datetime_submitted',)
verbose_name = _(u'queue document') verbose_name = _(u'queue document')
verbose_name_plural = _(u'queue documents') verbose_name_plural = _(u'queue documents')
def get_transformation_list(self): def get_transformation_list(self):
return QueueTransformation.objects.get_for_object_as_list(self) return QueueTransformation.objects.get_for_object_as_list(self)

View File

@@ -1,9 +1,3 @@
import codecs
import os
import subprocess
import tempfile
import sys
import slate import slate
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
@@ -21,14 +15,14 @@ def pdf_parser(document_page):
fd = document_page.document.open() fd = document_page.document.open()
pdf_pages = slate.PDF(fd) pdf_pages = slate.PDF(fd)
fd.close() fd.close()
if pdf_pages[document_page.page_number - 1] == '\x0c': if pdf_pages[document_page.page_number - 1] == '\x0c':
raise ParserError raise ParserError
document_page.content = pdf_pages[document_page.page_number - 1] document_page.content = pdf_pages[document_page.page_number - 1]
document_page.page_label = _(u'Text extracted from PDF') document_page.page_label = _(u'Text extracted from PDF')
document_page.save() document_page.save()
def parse_document_page(document_page): def parse_document_page(document_page):
try: try:
@@ -36,5 +30,5 @@ def parse_document_page(document_page):
except KeyError: except KeyError:
raise ParserUnknownFile raise ParserUnknownFile
register_parser('application/pdf', pdf_parser) register_parser('application/pdf', pdf_parser)

View File

@@ -13,10 +13,9 @@ urlpatterns = patterns('ocr.views',
url(r'^document/all/clean_up/$', 'all_document_ocr_cleanup', (), 'all_document_ocr_cleanup'), url(r'^document/all/clean_up/$', 'all_document_ocr_cleanup', (), 'all_document_ocr_cleanup'),
url(r'^node/active/list/$', 'node_active_list', (), 'node_active_list'), url(r'^node/active/list/$', 'node_active_list', (), 'node_active_list'),
url(r'^queue/(?P<document_queue_id>\d+)/transformation/list/$', 'setup_queue_transformation_list', (), 'setup_queue_transformation_list'), url(r'^queue/(?P<document_queue_id>\d+)/transformation/list/$', 'setup_queue_transformation_list', (), 'setup_queue_transformation_list'),
url(r'^queue/(?P<document_queue_id>\w+)/transformation/create/$', 'setup_queue_transformation_create', (), 'setup_queue_transformation_create'), url(r'^queue/(?P<document_queue_id>\w+)/transformation/create/$', 'setup_queue_transformation_create', (), 'setup_queue_transformation_create'),
url(r'^queue/transformation/(?P<transformation_id>\w+)/edit/$', 'setup_queue_transformation_edit', (), 'setup_queue_transformation_edit'), url(r'^queue/transformation/(?P<transformation_id>\w+)/edit/$', 'setup_queue_transformation_edit', (), 'setup_queue_transformation_edit'),
url(r'^queue/transformation/(?P<transformation_id>\w+)/delete/$', 'setup_queue_transformation_delete', (), 'setup_queue_transformation_delete'), url(r'^queue/transformation/(?P<transformation_id>\w+)/delete/$', 'setup_queue_transformation_delete', (), 'setup_queue_transformation_delete'),
) )

View File

@@ -41,7 +41,7 @@ def queue_document_list(request, queue_name='default'):
'queue': document_queue, 'queue': document_queue,
'object_name': _(u'document queue'), 'object_name': _(u'document queue'),
'navigation_object_name': 'queue', 'navigation_object_name': 'queue',
'list_object_variable_name': 'queue_document', 'list_object_variable_name': 'queue_document',
'extra_columns': [ 'extra_columns': [
{'name': 'document', 'attribute': lambda x: document_link(x.document) if hasattr(x, 'document') else _(u'Missing document.')}, {'name': 'document', 'attribute': lambda x: document_link(x.document) if hasattr(x, 'document') else _(u'Missing document.')},
{'name': _(u'thumbnail'), 'attribute': lambda x: document_thumbnail(x.document)}, {'name': _(u'thumbnail'), 'attribute': lambda x: document_thumbnail(x.document)},
@@ -325,7 +325,7 @@ def node_active_list(request):
def setup_queue_transformation_list(request, document_queue_id): def setup_queue_transformation_list(request, document_queue_id):
#check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT]) #check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
document_queue = get_object_or_404(DocumentQueue, pk=document_queue_id) document_queue = get_object_or_404(DocumentQueue, pk=document_queue_id)
context = { context = {
@@ -336,7 +336,7 @@ def setup_queue_transformation_list(request, document_queue_id):
'queue': document_queue, 'queue': document_queue,
'object_name': _(u'document queue'), 'object_name': _(u'document queue'),
'navigation_object_name': 'queue', 'navigation_object_name': 'queue',
'list_object_variable_name': 'transformation', 'list_object_variable_name': 'transformation',
'extra_columns': [ 'extra_columns': [
{'name': _(u'order'), 'attribute': 'order'}, {'name': _(u'order'), 'attribute': 'order'},
{'name': _(u'transformation'), 'attribute': lambda x: x.get_transformation_display()}, {'name': _(u'transformation'), 'attribute': lambda x: x.get_transformation_display()},
@@ -347,12 +347,12 @@ def setup_queue_transformation_list(request, document_queue_id):
} }
return render_to_response('generic_list.html', context, return render_to_response('generic_list.html', context,
context_instance=RequestContext(request)) context_instance=RequestContext(request))
def setup_queue_transformation_edit(request, transformation_id): def setup_queue_transformation_edit(request, transformation_id):
#check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT]) #check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
transformation = get_object_or_404(QueueTransformation, pk=transformation_id) transformation = get_object_or_404(QueueTransformation, pk=transformation_id)
redirect_view = reverse('setup_queue_transformation_list', args=[transformation.content_object.pk]) redirect_view = reverse('setup_queue_transformation_list', args=[transformation.content_object.pk])
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', redirect_view))) next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', redirect_view)))
@@ -386,7 +386,7 @@ def setup_queue_transformation_edit(request, transformation_id):
], ],
'next': next, 'next': next,
}, },
context_instance=RequestContext(request)) context_instance=RequestContext(request))
def setup_queue_transformation_delete(request, transformation_id): def setup_queue_transformation_delete(request, transformation_id):
@@ -413,24 +413,23 @@ def setup_queue_transformation_delete(request, transformation_id):
'navigation_object_list': [ 'navigation_object_list': [
{'object': 'queue', 'name': _(u'document queue')}, {'object': 'queue', 'name': _(u'document queue')},
{'object': 'transformation', 'name': _(u'transformation')} {'object': 'transformation', 'name': _(u'transformation')}
], ],
'title': _(u'Are you sure you wish to delete queue transformation "%(transformation)s"') % { 'title': _(u'Are you sure you wish to delete queue transformation "%(transformation)s"') % {
'transformation': transformation.get_transformation_display(), 'transformation': transformation.get_transformation_display(),
}, },
'previous': previous, 'previous': previous,
'form_icon': u'shape_square_delete.png', 'form_icon': u'shape_square_delete.png',
}, },
context_instance=RequestContext(request)) context_instance=RequestContext(request))
def setup_queue_transformation_create(request, document_queue_id): def setup_queue_transformation_create(request, document_queue_id):
#check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT]) #check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
document_queue = get_object_or_404(DocumentQueue, pk=document_queue_id) document_queue = get_object_or_404(DocumentQueue, pk=document_queue_id)
redirect_view = reverse('setup_queue_transformation_list', args=[document_queue.pk]) redirect_view = reverse('setup_queue_transformation_list', args=[document_queue.pk])
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', redirect_view)))
if request.method == 'POST': if request.method == 'POST':
form = QueueTransformationForm_create(request.POST) form = QueueTransformationForm_create(request.POST)
if form.is_valid(): if form.is_valid():
@@ -439,7 +438,7 @@ def setup_queue_transformation_create(request, document_queue_id):
eval(form.cleaned_data['arguments'], {}) eval(form.cleaned_data['arguments'], {})
except: except:
messages.error(request, _(u'Queue transformation argument error.')) messages.error(request, _(u'Queue transformation argument error.'))
else: else:
try: try:
queue_tranformation = form.save(commit=False) queue_tranformation = form.save(commit=False)
queue_tranformation.content_object = document_queue queue_tranformation.content_object = document_queue
@@ -450,7 +449,7 @@ def setup_queue_transformation_create(request, document_queue_id):
messages.error(request, _(u'Error creating queue transformation; %s') % e) messages.error(request, _(u'Error creating queue transformation; %s') % e)
else: else:
form = QueueTransformationForm_create() form = QueueTransformationForm_create()
return render_to_response('generic_form.html', { return render_to_response('generic_form.html', {
'form': form, 'form': form,
'queue': document_queue, 'queue': document_queue,
@@ -458,4 +457,3 @@ def setup_queue_transformation_create(request, document_queue_id):
'navigation_object_name': 'queue', 'navigation_object_name': 'queue',
'title': _(u'Create new transformation for queue: %s') % document_queue, 'title': _(u'Create new transformation for queue: %s') % document_queue,
}, context_instance=RequestContext(request)) }, context_instance=RequestContext(request))

View File

@@ -1,5 +1,4 @@
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext
from django.http import HttpResponseRedirect 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

View File

@@ -4,7 +4,6 @@ from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic from django.contrib.contenttypes import generic
from documents.models import DocumentType from documents.models import DocumentType
from documents.managers import RecentDocumentManager
from metadata.models import MetadataType from metadata.models import MetadataType
from converter.api import get_available_transformations_choices from converter.api import get_available_transformations_choices
from converter.literals import DIMENSION_SEPARATOR from converter.literals import DIMENSION_SEPARATOR

View File

@@ -5,7 +5,6 @@ import hashlib
from django.core.files.base import File from django.core.files.base import File
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.utils.translation import ugettext from django.utils.translation import ugettext
from django.contrib import messages
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from converter.api import convert, cache_cleanup from converter.api import convert, cache_cleanup

View File

@@ -595,25 +595,8 @@ def setup_source_transformation_create(request, source_type, source_id):
cls = StagingFolder cls = StagingFolder
source = get_object_or_404(cls, pk=source_id) source = get_object_or_404(cls, pk=source_id)
context = {
'object_list': SourceTransformation.objects.get_for_object(source),
'title': _(u'transformations for: %s') % source.fullname(),
'source': source,
'object_name': _(u'source'),
'navigation_object_name': 'source',
'list_object_variable_name': 'transformation',
'extra_columns': [
{'name': _(u'order'), 'attribute': 'order'},
{'name': _(u'transformation'), 'attribute': lambda x: x.get_transformation_display()},
{'name': _(u'arguments'), 'attribute': 'arguments'}
],
'hide_link': True,
'hide_object': True,
}
redirect_view = reverse('setup_source_transformation_list', args=[source.source_type, source.pk]) redirect_view = reverse('setup_source_transformation_list', args=[source.source_type, source.pk])
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', redirect_view)))
if request.method == 'POST': if request.method == 'POST':
form = SourceTransformationForm_create(request.POST) form = SourceTransformationForm_create(request.POST)

View File

@@ -3,7 +3,6 @@ from django.utils.translation import ugettext_lazy as _
from navigation.api import register_links, register_top_menu, \ from navigation.api import register_links, register_top_menu, \
register_model_list_columns, register_multi_item_links register_model_list_columns, register_multi_item_links
from permissions.api import register_permission, set_namespace_title from permissions.api import register_permission, set_namespace_title
from navigation.api import register_sidebar_template
from documents.models import Document from documents.models import Document

View File

@@ -62,7 +62,7 @@ def tag_add_attach(request, document_id):
document = get_object_or_404(Document, pk=document_id) document = get_object_or_404(Document, pk=document_id)
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse('document_tags', args=[document.pk])))) next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse('document_tags', args=[document.pk]))))
if request.method == 'POST': if request.method == 'POST':
form = AddTagForm(request.POST) form = AddTagForm(request.POST)
if form.is_valid(): if form.is_valid():
@@ -97,14 +97,14 @@ def tag_add_attach(request, document_id):
return HttpResponseRedirect(next) return HttpResponseRedirect(next)
else: else:
form = AddTagForm() form = AddTagForm()
return render_to_response('generic_form.html', { return render_to_response('generic_form.html', {
'title': _(u'attach tag to: %s') % document, 'title': _(u'attach tag to: %s') % document,
'form': form, 'form': form,
'object': document, 'object': document,
'next': next, 'next': next,
}, },
context_instance=RequestContext(request)) context_instance=RequestContext(request))
def tag_list(request): def tag_list(request):
@@ -222,7 +222,7 @@ def tag_tagged_item_list(request, tag_id):
def document_tags(request, document_id): def document_tags(request, document_id):
check_permissions(request.user, [PERMISSION_TAG_VIEW]) check_permissions(request.user, [PERMISSION_TAG_VIEW])
document = get_object_or_404(Document, pk=document_id) document = get_object_or_404(Document, pk=document_id)
return render_to_response('generic_list.html', { return render_to_response('generic_list.html', {
'title': _(u'tags for: %s') % document, 'title': _(u'tags for: %s') % document,
'object_list': document.tags.all(), 'object_list': document.tags.all(),
@@ -265,7 +265,7 @@ def tag_remove(request, document_id, tag_id=None, tag_id_list=None):
}) })
return HttpResponseRedirect(next) return HttpResponseRedirect(next)
context = { context = {
'previous': previous, 'previous': previous,
'next': next, 'next': next,
@@ -284,4 +284,3 @@ def tag_remove(request, document_id, tag_id=None, tag_id_list=None):
def tag_multiple_remove(request, document_id): def tag_multiple_remove(request, document_id):
return tag_remove(request, document_id=document_id, tag_id_list=request.GET.get('id_list', [])) return tag_remove(request, document_id=document_id, tag_id_list=request.GET.get('id_list', []))