diff --git a/apps/common/conf/settings.py b/apps/common/conf/settings.py index 7a9edfefce..2ebac90201 100644 --- a/apps/common/conf/settings.py +++ b/apps/common/conf/settings.py @@ -1,8 +1,14 @@ from django.conf import settings from django.utils.translation import ugettext_lazy as _ +from common.literals import PAGE_SIZE_LETTER, PAGE_ORIENTATION_PORTRAIT + TEMPORARY_DIRECTORY = getattr(settings, 'COMMON_TEMPORARY_DIRECTORY', u'/tmp') setting_description = { 'COMMON_TEMPORARY_DIRECTORY': _(u'Temporary directory used site wide to store thumbnails, previews and temporary files. If none is specified, one will be created using tempfile.mkdtemp()') } + +# Printing +DEFAULT_PAPER_SIZE = getattr(settings, 'COMMON_DEFAULT_PAPER_SIZE', PAGE_SIZE_LETTER) +DEFAULT_PAGE_ORIENTATION = getattr(settings, 'COMMON_DEFAULT_PAGE_ORIENTATION', PAGE_ORIENTATION_PORTRAIT) diff --git a/apps/common/literals.py b/apps/common/literals.py new file mode 100644 index 0000000000..96a7737ceb --- /dev/null +++ b/apps/common/literals.py @@ -0,0 +1,40 @@ +from django.utils.translation import ugettext_lazy as _ + +PAGE_SIZE_A5 = u'a5' +PAGE_SIZE_A4 = u'a4' +PAGE_SIZE_A3 = u'a3' +PAGE_SIZE_B5 = u'b5' +PAGE_SIZE_B4 = u'b4' +PAGE_SIZE_LETTER = u'letter' +PAGE_SIZE_LEGAL = u'legal' +PAGE_SIZE_LEDGER = u'ledger' + +PAGE_SIZE_DIMENSIONS = ( + (PAGE_SIZE_A5, (u'148mm', u'210mm')), + (PAGE_SIZE_A4, (u'210mm', u'297mm')), + (PAGE_SIZE_A3, (u'297mm', u'420mm')), + (PAGE_SIZE_B5, (u'176mm', u'250mm')), + (PAGE_SIZE_B4, (u'250mm', u'353mm')), + (PAGE_SIZE_LETTER, (u'8.5in', u'11in')), + (PAGE_SIZE_LEGAL, (u'8.5in', u'14in')), + (PAGE_SIZE_LEDGER, (u'11in', u'17in')) +) + +PAGE_SIZE_CHOICES = ( + (PAGE_SIZE_A5, _(u'A5')), + (PAGE_SIZE_A4, _(u'A4')), + (PAGE_SIZE_A3, _(u'A3')), + (PAGE_SIZE_B5, _(u'B5')), + (PAGE_SIZE_B4, _(u'B4')), + (PAGE_SIZE_LETTER, _(u'Letter')), + (PAGE_SIZE_LEGAL, _(u'Legal')), + (PAGE_SIZE_LEDGER, _(u'Ledger')) +) + +PAGE_ORIENTATION_PORTRAIT = u'portrait' +PAGE_ORIENTATION_LANDSCAPE = u'landscape' + +PAGE_ORIENTATION_CHOICES = ( + (PAGE_ORIENTATION_PORTRAIT, _(u'Portrait')), + (PAGE_ORIENTATION_LANDSCAPE, _(u'Landscape')), +) diff --git a/apps/common/utils.py b/apps/common/utils.py index ca99aba72d..4853e93e4d 100644 --- a/apps/common/utils.py +++ b/apps/common/utils.py @@ -302,3 +302,12 @@ def return_type(value): return ','.join(list(value)) else: return value + + +# http://stackoverflow.com/questions/4248399/page-range-for-printing-algorithm +def parse_range(astr): + result=set() + for part in astr.split(u','): + x=part.split(u'-') + result.update(range(int(x[0]),int(x[-1])+1)) + return sorted(result) diff --git a/apps/documents/__init__.py b/apps/documents/__init__.py index d0b4c5db09..d6d1da3810 100644 --- a/apps/documents/__init__.py +++ b/apps/documents/__init__.py @@ -119,6 +119,7 @@ register_diagnostic('documents', _(u'Documents'), document_missing_list) register_tool(document_find_all_duplicates, namespace='documents', title=_(u'documents')) + def document_exists(document): try: if document.exists(): @@ -150,7 +151,7 @@ if ENABLE_SINGLE_DOCUMENT_UPLOAD: {'text': _(u'documents'), 'view': 'document_list_recent', 'links': [ document_list_recent, document_list, document_create, \ document_create_multiple - + ], 'famfam': 'page', 'position': 1}]) else: register_menu([ diff --git a/apps/documents/forms.py b/apps/documents/forms.py index 6b743c0cd3..257a147f64 100644 --- a/apps/documents/forms.py +++ b/apps/documents/forms.py @@ -12,6 +12,9 @@ from django.conf import settings from tags.widgets import get_tags_inline_widget from common.wizard import BoundFormWizard from common.forms import DetailForm +from common.literals import PAGE_SIZE_CHOICES, PAGE_ORIENTATION_CHOICES +from common.conf.settings import DEFAULT_PAPER_SIZE +from common.conf.settings import DEFAULT_PAGE_ORIENTATION from documents.staging import StagingFile from documents.models import Document, DocumentType, DocumentTypeMetadataType, \ @@ -42,8 +45,8 @@ class DocumentPageImageWidget(forms.widgets.Widget): %(string)s - + + ''' % { 'img': reverse('document_display', args=[value.document.id]), 'page': value.page_number, @@ -366,7 +369,7 @@ class MetaDataImageWidget(forms.widgets.Widget): output.append(u'
') for document in value['group_data']: tags_template = get_tags_inline_widget(document) - + output.append( u'''
%(document_name)s
@@ -423,3 +426,11 @@ class MetaDataGroupForm(forms.Form): 'links': links } ) + + +class PrintForm(forms.Form): + page_size = forms.ChoiceField(choices=PAGE_SIZE_CHOICES, initial=DEFAULT_PAPER_SIZE, label=_(u'Page size'), required=False) + custom_page_width = forms.CharField(label=_(u'Custom page width'), required=False) + custom_page_height = forms.CharField(label=_(u'Custom page height'), required=False) + page_orientation = forms.ChoiceField(choices=PAGE_ORIENTATION_CHOICES, initial=DEFAULT_PAGE_ORIENTATION, label=_(u'Page orientation'), required=True) + page_range = forms.CharField(label=_(u'Page range'), required=False) diff --git a/apps/documents/literals.py b/apps/documents/literals.py index f22c1cbe0f..5ab7c80556 100644 --- a/apps/documents/literals.py +++ b/apps/documents/literals.py @@ -2,23 +2,3 @@ PICTURE_ERROR_SMALL = u'picture_error.png' PICTURE_ERROR_MEDIUM = u'1297211435_error.png' PICTURE_UNKNOWN_SMALL = u'1299549572_unknown2.png' PICTURE_UNKNOWN_MEDIUM = u'1299549805_unknown.png' - -PAGE_SIZE_A5 = u'a5' -PAGE_SIZE_A4 = u'a4' -PAGE_SIZE_A3 = u'a3' -PAGE_SIZE_B5 = u'b5' -PAGE_SIZE_B4 = u'b4' -PAGE_SIZE_LETTER = u'letter' -PAGE_SIZE_LEGAL = u'legal' -PAGE_SIZE_LEDGER = u'ledger' - -PAGE_SIZE_DIMENSIONS = ( - (PAGE_SIZE_A5, (u'148mm', u'210mm')), - (PAGE_SIZE_A4, (u'210mm', u'297mm')), - (PAGE_SIZE_A3, (u'297mm', u'420mm')), - (PAGE_SIZE_B5, (u'176mm', u'250mm')), - (PAGE_SIZE_B4, (u'250mm', u'353mm')), - (PAGE_SIZE_LETTER, (u'8.5in', u'11in')), - (PAGE_SIZE_LEGAL, (u'8.5in', u'14in')), - (PAGE_SIZE_LEDGER, (u'11in', u'17in')) -) diff --git a/apps/documents/models.py b/apps/documents/models.py index c6845fff55..6f069f5f78 100644 --- a/apps/documents/models.py +++ b/apps/documents/models.py @@ -66,7 +66,7 @@ class Document(models.Model): description = models.TextField(blank=True, null=True, verbose_name=_(u'description'), db_index=True) tags = TaggableManager() - + comments = generic.GenericRelation( Comment, content_type_field='content_type', @@ -332,7 +332,7 @@ class DocumentPage(models.Model): except Exception, e: warnings.append(e) - return ' '.join(transformation_list), warnings + return ' '.join(transformation_list), warnings class MetadataGroupManager(models.Manager): diff --git a/apps/documents/templates/document_print.html b/apps/documents/templates/document_print.html index fb5acfc7ba..5702a39ce6 100644 --- a/apps/documents/templates/document_print.html +++ b/apps/documents/templates/document_print.html @@ -38,16 +38,16 @@ .break { page-break-after: always; } img { border: 1px solid black; } @page { - size: {{ page_size.0 }} {{ page_size.1 }}; + size: {{ page_width }} {{ page_height }}; margin-top: 1cm; margin-bottom: 1cm; margin-left: auto; margin-right: auto; } - + - {% for page in object.documentpage_set.all %} + {% for page in pages %} {% get_document_size object %}
page_aspect %}width="97%"{% else %}height="97%"{% endif %} /> diff --git a/apps/documents/templatetags/printing_tags.py b/apps/documents/templatetags/printing_tags.py index 4d03933c08..33f560bdf1 100644 --- a/apps/documents/templatetags/printing_tags.py +++ b/apps/documents/templatetags/printing_tags.py @@ -1,6 +1,7 @@ -from django.template import TemplateSyntaxError, Library, \ - VariableDoesNotExist, Node, Variable +from django.template import Library, Node, Variable + from converter.api import get_document_dimensions, QUALITY_PRINT + from documents.views import calculate_converter_arguments from documents.conf.settings import PRINT_SIZE @@ -18,7 +19,8 @@ class GetImageSizeNode(Node): context[u'document_width'], context['document_height'] = width, height context[u'document_aspect'] = float(width) / float(height) return u'' - + + @register.tag def get_document_size(parser, token): tag_name, arg = token.contents.split(None, 1) diff --git a/apps/documents/urls.py b/apps/documents/urls.py index c85e714815..ea53a547d2 100644 --- a/apps/documents/urls.py +++ b/apps/documents/urls.py @@ -24,6 +24,7 @@ urlpatterns = patterns('documents.views', url(r'^document/(?P\d+)/edit/metadata/$', 'document_edit_metadata', (), 'document_edit_metadata'), url(r'^document/multiple/edit/metadata/$', 'document_multiple_edit_metadata', (), 'document_multiple_edit_metadata'), url(r'^document/(?P\d+)/print/$', 'document_print', (), 'document_print'), + url(r'^document/(?P\d+)/hard_copy/$', 'document_hard_copy', (), 'document_hard_copy'), url(r'^document/(?P\d+)/display/preview/$', 'get_document_image', {'size': PREVIEW_SIZE}, 'document_preview'), url(r'^document/(?P\d+)/display/preview/multipage/$', 'get_document_image', {'size': MULTIPAGE_PREVIEW_SIZE}, 'document_preview_multipage'), diff --git a/apps/documents/views.py b/apps/documents/views.py index 24fa08a428..5d0abad979 100644 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -17,7 +17,7 @@ from django.core.files.uploadedfile import SimpleUploadedFile from django.contrib.comments.models import Comment import sendfile -from common.utils import pretty_size +from common.utils import pretty_size, parse_range, urlquote from converter.api import convert_document, QUALITY_DEFAULT from converter.exceptions import UnkownConvertError, UnknownFormat from filetransfers.api import serve_file @@ -28,8 +28,10 @@ from navigation.utils import resolve_to_name from tags.utils import get_tags_subtemplate from document_comments.utils import get_comments_subtemplate from converter.api import DEFAULT_ZOOM_LEVEL, DEFAULT_ROTATION, \ - DEFAULT_FILE_FORMAT -from converter.api import QUALITY_PRINT + DEFAULT_FILE_FORMAT, QUALITY_PRINT +from common.literals import PAGE_SIZE_DIMENSIONS, \ + PAGE_ORIENTATION_PORTRAIT, PAGE_ORIENTATION_LANDSCAPE +from common.conf.settings import DEFAULT_PAPER_SIZE from documents.conf.settings import DELETE_STAGING_FILE_AFTER_UPLOAD from documents.conf.settings import USE_STAGING_DIRECTORY @@ -57,7 +59,7 @@ from documents.forms import DocumentTypeSelectForm, DocumentCreateWizard, \ StagingDocumentForm, DocumentTypeMetadataType, DocumentPreviewForm, \ MetadataFormSet, DocumentPageForm, DocumentPageTransformationForm, \ DocumentContentForm, DocumentPageForm_edit, MetaDataGroupForm, \ - DocumentPageForm_text + DocumentPageForm_text, PrintForm from documents.metadata import save_metadata_list, \ decode_metadata_from_url, metadata_repr_as_list @@ -66,8 +68,7 @@ from documents.models import Document, DocumentType, DocumentPage, \ from documents.staging import StagingFile from documents import metadata_group_link from documents.literals import PICTURE_ERROR_SMALL, PICTURE_ERROR_MEDIUM, \ - PICTURE_UNKNOWN_SMALL, PICTURE_UNKNOWN_MEDIUM, PAGE_SIZE_DIMENSIONS, \ - PAGE_SIZE_LETTER, PAGE_SIZE_LEGAL + PICTURE_UNKNOWN_SMALL, PICTURE_UNKNOWN_MEDIUM def document_list(request, object_list=None, title=None): @@ -297,7 +298,7 @@ def document_view(request, document_id): if Comment.objects.for_model(document).count(): subtemplates_list.append(get_comments_subtemplate(document)) - + subtemplates_list.append( { 'name': 'generic_list_subtemplate.html', @@ -546,10 +547,10 @@ def calculate_converter_arguments(document, *args, **kwargs): file_format = kwargs.pop('file_format', DEFAULT_FILE_FORMAT) zoom = kwargs.pop('zoom', DEFAULT_ZOOM_LEVEL) rotation = kwargs.pop('rotation', DEFAULT_ROTATION) - + document_page = DocumentPage.objects.get(document=document, page_number=page) transformation_string, warnings = document_page.get_transformation_string() - + arguments = { 'size': size, 'file_format': file_format, @@ -561,7 +562,7 @@ def calculate_converter_arguments(document, *args, **kwargs): } return arguments, warnings - + def get_document_image(request, document_id, size=PREVIEW_SIZE, quality=QUALITY_DEFAULT): check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) @@ -579,9 +580,9 @@ def get_document_image(request, document_id, size=PREVIEW_SIZE, quality=QUALITY_ zoom = ZOOM_MAX_LEVEL rotation = int(request.GET.get('rotation', 0)) % 360 - + arguments, warnings = calculate_converter_arguments(document, size=size, file_format=DEFAULT_FILE_FORMAT, quality=quality, page=page, zoom=zoom, rotation=rotation) - + if warnings and (request.user.is_staff or request.user.is_superuser): for warning in warnings: messages.warning(request, _(u'Page transformation error: %s') % warning) @@ -872,11 +873,11 @@ def document_view_simple(request, document_id): 'object': document, }, ] - + subtemplates_list = [] if document.tags.count(): subtemplates_list.append(get_tags_subtemplate(document)) - + if Comment.objects.for_model(document).count(): subtemplates_list.append(get_comments_subtemplate(document)) @@ -1154,36 +1155,96 @@ def metadatagroup_view(request, document_id, metadata_group_id): }, context_instance=RequestContext(request)) -def document_print(request, document_id, page_size=PAGE_SIZE_LEGAL): +def document_print(request, document_id): check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) - document = get_object_or_404(Document.objects.select_related(), pk=document_id) + document = get_object_or_404(Document, pk=document_id) RecentDocument.objects.add_document_for_user(request.user, document) - #page = int(request.GET.get('page', 1)) - #zoom = int(request.GET.get('zoom', 100)) - #if zoom < ZOOM_MIN_LEVEL: - # zoom = ZOOM_MIN_LEVEL - #if zoom > ZOOM_MAX_LEVEL: - # zoom = ZOOM_MAX_LEVEL - #rotation = int(request.GET.get('rotation', 0)) % 360 - - arguments, warnings = calculate_converter_arguments(document, size=PRINT_SIZE, file_format=DEFAULT_FILE_FORMAT, quality=QUALITY_PRINT) - #, page=page, zoom=zoom, rotation=rotation) - - #Pre-generate - output_file = convert_document(document, **arguments) + post_redirect = None + next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', post_redirect or document.get_absolute_url()))) + + new_window_url = None + html_redirect = None + + if request.method == 'POST': + form = PrintForm(request.POST) + if form.is_valid(): + hard_copy_arguments = {} + # Get page range + if form.cleaned_data['page_range']: + hard_copy_arguments['page_range'] = form.cleaned_data['page_range'] + + # Compute page width and height + if form.cleaned_data['custom_page_width'] and form.cleaned_data['custom_page_height']: + page_width = form.cleaned_data['custom_page_width'] + page_height = form.cleaned_data['custom_page_height'] + elif form.cleaned_data['page_size']: + page_width, page_height = dict(PAGE_SIZE_DIMENSIONS)[form.cleaned_data['page_size']] + + # Page orientation + if form.cleaned_data['page_orientation'] == PAGE_ORIENTATION_LANDSCAPE: + page_width, page_height = page_height, page_width + + hard_copy_arguments['page_width'] = page_width + hard_copy_arguments['page_height'] = page_height + + new_url = [reverse('document_hard_copy', args=[document_id])] + if hard_copy_arguments: + new_url.append(urlquote(hard_copy_arguments)) + + new_window_url = u'?'.join(new_url) + #html_redirect = next + #messages.success(request, _(u'Preparing document hardcopy.')) + else: + form = PrintForm() + + return render_to_response('generic_form.html', { + 'form': form, + 'object': document, + 'title': _(u'print: %s') % document, + 'next': next, + 'html_redirect': html_redirect if html_redirect else html_redirect, + 'new_window_url': new_window_url if new_window_url else new_window_url + }, context_instance=RequestContext(request)) + + +def document_hard_copy(request, document_id): + check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) + + document = get_object_or_404(Document, pk=document_id) + + RecentDocument.objects.add_document_for_user(request.user, document) + + arguments, warnings = calculate_converter_arguments(document, size=PRINT_SIZE, file_format=DEFAULT_FILE_FORMAT, quality=QUALITY_PRINT) + + # Pre-generate + convert_document(document, **arguments) + + # Extract dimension values ignoring any unit + page_width = request.GET.get('page_width', dict(PAGE_SIZE_DIMENSIONS)[DEFAULT_PAPER_SIZE][0]) + page_height = request.GET.get('page_height', dict(PAGE_SIZE_DIMENSIONS)[DEFAULT_PAPER_SIZE][1]) + + width = float(page_width.split('i')[0].split('c')[0].split('m')[0]) + height = float(page_height.split('i')[0].split('c')[0].split('m')[0]) + + page_range = request.GET.get('page_range', u'') + if page_range: + page_range = parse_range(page_range) + + pages = document.documentpage_set.filter(page_number__in=page_range) + else: + pages = document.documentpage_set.all() - page_dimensions = dict(PAGE_SIZE_DIMENSIONS)[page_size] - width = float(page_dimensions[0].split('i')[0].split('c')[0].split('m')[0]) - height = float(page_dimensions[1].split('i')[0].split('c')[0].split('m')[0]) - return render_to_response('document_print.html', { 'object': document, - 'page_size': page_dimensions, 'page_aspect': width / height, - 'page_orientation': u'landscape' if width / height > 1 else u'portrait', + 'page_orientation': PAGE_ORIENTATION_LANDSCAPE if width / height > 1 else PAGE_ORIENTATION_PORTRAIT, 'page_orientation_landscape': True if width / height > 1 else False, 'page_orientation_portrait': False if width / height > 1 else True, + 'page_range': page_range, + 'page_width': page_width, + 'page_height': page_height, + 'pages': pages, }, context_instance=RequestContext(request)) diff --git a/apps/main/templates/base.html b/apps/main/templates/base.html index 8e0a99eb18..e3b51b9e0d 100644 --- a/apps/main/templates/base.html +++ b/apps/main/templates/base.html @@ -5,8 +5,22 @@ {% load settings %} {% load search_tags %} {% load main_settings_tags %} +{% block web_theme_head %} + {% if new_window_url %} + + + {% endif %} + + {% if html_redirect %} + + {% endif %} +{% endblock %} -{% block html_title %}{% project_name %}{% block title %}{% endblock %}{% endblock %} +{% block html_title %}{% project_name %}{{ request.new_window_url }}{% block title %}{% endblock %}{% endblock %} {% get_main_setting "SIDE_BAR_SEARCH" as debug %} {% block web_theme_project_name %}{% project_name %}{% if debug %} {% trans "(DEBUG Mode)" %} {% endif %}{% endblock %} diff --git a/apps/main/views.py b/apps/main/views.py index cb2ed77479..247106315a 100644 --- a/apps/main/views.py +++ b/apps/main/views.py @@ -64,6 +64,10 @@ def check_settings(request): {'name': 'COMMON_TEMPORARY_DIRECTORY', 'value': common_settings.TEMPORARY_DIRECTORY, 'exists': True, 'description': common_settings.setting_description}, + {'name': 'COMMON_DEFAULT_PAPER_SIZE', + 'value': common_settings.PAGE_SIZE_LETTER}, + {'name': 'COMMON_DEFAULT_PAGE_ORIENTATION', + 'value': common_settings.PAGE_ORIENTATION_PORTRAIT}, # Converter {'name': 'CONVERTER_UNPAPER_PATH', diff --git a/settings.py b/settings.py index 4bc101e69b..808666fbc5 100644 --- a/settings.py +++ b/settings.py @@ -162,6 +162,19 @@ TEMPLATE_CONTEXT_PROCESSORS = ( #WEB_THEME = 'default' #-------------- Main ----------------- #MAIN_SIDE_BAR_SEARCH = False +#------------ Common -------------- +# Printing +# from common.literals import PAGE_SIZE_LETTER, PAGE_ORIENTATION_PORTRAIT +#COMMON_DEFAULT_PAPER_SIZE = PAGE_SIZE_LETTER +#COMMON_DEFAULT_PAGE_ORIENTATION = PAGE_ORIENTATION_PORTRAIT +#------------ Storage -------------- +#DOCUMENTS_STORAGE_BACKEND = FileBasedStorage +# GridFS settings +#STORAGE_GRIDFS_HOST = 'localhost' # or list ['host a', 'host b'] +#STORAGE_GRIDFS_PORT = 27017 +#STORAGE_GRIDFS_DATABASE_NAME = u'document_storage' +# Filebased +#STORAGE_FILESTORAGE_LOCATION = u'document_storage' #---------- Documents ------------------ # Definition #DOCUMENTS_METADATA_AVAILABLE_FUNCTIONS = {} @@ -182,15 +195,6 @@ TEMPLATE_CONTEXT_PROCESSORS = ( #DOCUMENTS_UUID_FUNCTION = lambda:unicode(uuid.uuid4()) #DOCUMENTS_DEFAULT_TRANSFORMATIONS = [] -# Storage -#DOCUMENTS_STORAGE_BACKEND = FileBasedStorage -# Storage - GridFS settings -#STORAGE_GRIDFS_HOST = 'localhost' # or list ['host a', 'host b'] -#STORAGE_GRIDFS_PORT = 27017 -#STORAGE_GRIDFS_DATABASE_NAME = u'document_storage' -# Filebased -#STORAGE_FILESTORAGE_LOCATION = u'document_storage' - # Usage #DOCUMENTS_PREVIEW_SIZE = '640x480' #DOCUMENTS_THUMBNAIL_SIZE = '50x50' @@ -206,17 +210,12 @@ TEMPLATE_CONTEXT_PROCESSORS = ( # Groups #DOCUMENTS_GROUP_SHOW_EMPTY = True - -# Serving +#------------ Filesystem serving -------------- #FILESYSTEM_FILESERVING_ENABLE = True #FILESYSTEM_FILESERVING_PATH = u'/tmp/mayan/documents' #FILESYSTEM_SLUGIFY_PATHS = False #FILESYSTEM_MAX_RENAME_COUNT = 200 - -# Misc -#COMMON_TEMPORARY_DIRECTORY = u'/tmp' - -# Converter +#------------ Converter -------------- #CONVERTER_DEFAULT_OPTIONS = u'' #CONVERTER_LOW_QUALITY_OPTIONS = u'' #CONVERTER_HIGH_QUALITY_OPTIONS = u'-density 400' @@ -227,8 +226,7 @@ TEMPLATE_CONTEXT_PROCESSORS = ( #CONVERTER_GRAPHICS_BACKEND = u'converter.backends.imagemagick' #CONVERTER_GM_PATH = u'/usr/bin/gm' #CONVERTER_GM_SETTINGS = u'' - -# OCR +#------------ OCR -------------- #OCR_TESSERACT_PATH = u'/usr/bin/tesseract' #OCR_NODE_CONCURRENT_EXECUTION = 1 #OCR_TESSERACT_LANGUAGE = u'eng' @@ -236,17 +234,13 @@ TEMPLATE_CONTEXT_PROCESSORS = ( #OCR_AUTOMATIC_OCR = False #OCR_PDFTOTEXT_PATH = u'/usr/bin/pdftotext' #OCR_QUEUE_PROCESSING_INTERVAL = 10 # In seconds - -# Permissions +#------------ Permissions -------------- #ROLES_DEFAULT_ROLES = [] - -# Searching +#------------ Searching -------------- #SEARCH_LIMIT = 100 - -# django-sendfile +#------------ django-sendfile -------------- # Change to xsendfile for apache if x-sendfile is enabled SENDFILE_BACKEND = 'sendfile.backends.simple' - #----------- django-celery -------------- import djcelery djcelery.setup_loader()