from django.shortcuts import render_to_response from django.template import RequestContext from django.utils.translation import ugettext_lazy as _ from django.core.exceptions import PermissionDenied from common.utils import exists_with_famfam, return_type from common.conf import settings as common_settings from documents.conf import settings as documents_settings from documents.statistics import get_statistics as documents_statistics from converter.conf import settings as converter_settings from ocr.conf import settings as ocr_settings from ocr.statistics import get_statistics as ocr_statistics from filesystem_serving.conf import settings as filesystem_serving_settings from dynamic_search.conf import settings as search_settings from permissions.api import check_permissions from main.conf import settings as main_settings from main.api import diagnostics, tools def home(request): return render_to_response('home.html', {}, context_instance=RequestContext(request)) def check_settings(request): settings = [ {'name': 'MAIN_SIDE_BAR_SEARCH', 'value': main_settings.SIDE_BAR_SEARCH, 'description': main_settings.setting_description}, {'name': 'DOCUMENTS_METADATA_AVAILABLE_FUNCTIONS', 'value': documents_settings.AVAILABLE_FUNCTIONS}, {'name': 'DOCUMENTS_METADATA_AVAILABLE_MODELS', 'value': documents_settings.AVAILABLE_MODELS}, {'name': 'DOCUMENTS_INDEXING_AVAILABLE_INDEXING_FUNCTIONS', 'value': documents_settings.AVAILABLE_INDEXING_FUNCTIONS}, {'name': 'DOCUMENTS_USE_STAGING_DIRECTORY', 'value': documents_settings.USE_STAGING_DIRECTORY}, {'name': 'DOCUMENTS_STAGING_DIRECTORY', 'value': documents_settings.STAGING_DIRECTORY, 'exists': True}, {'name': 'DOCUMENTS_DELETE_STAGING_FILE_AFTER_UPLOAD', 'value': documents_settings.DELETE_STAGING_FILE_AFTER_UPLOAD}, {'name': 'DOCUMENTS_STAGING_FILES_PREVIEW_SIZE', 'value': documents_settings.STAGING_FILES_PREVIEW_SIZE}, {'name': 'DOCUMENTS_CHECKSUM_FUNCTION', 'value': documents_settings.CHECKSUM_FUNCTION}, {'name': 'DOCUMENTS_UUID_FUNTION', 'value': documents_settings.UUID_FUNCTION}, {'name': 'DOCUMENTS_STORAGE_BACKEND', 'value': documents_settings.STORAGE_BACKEND}, {'name': 'DOCUMENTS_PREVIEW_SIZE', 'value': documents_settings.PREVIEW_SIZE}, {'name': 'DOCUMENTS_THUMBNAIL_SIZE', 'value': documents_settings.THUMBNAIL_SIZE}, {'name': 'DOCUMENTS_DISPLAY_SIZE', 'value': documents_settings.DISPLAY_SIZE}, {'name': 'DOCUMENTS_ENABLE_SINGLE_DOCUMENT_UPLOAD', 'value': documents_settings.ENABLE_SINGLE_DOCUMENT_UPLOAD}, {'name': 'DOCUMENTS_UNCOMPRESS_COMPRESSED_LOCAL_FILES', 'value': documents_settings.UNCOMPRESS_COMPRESSED_LOCAL_FILES}, {'name': 'DOCUMENTS_UNCOMPRESS_COMPRESSED_STAGING_FILES', 'value': documents_settings.UNCOMPRESS_COMPRESSED_STAGING_FILES}, {'name': 'DOCUMENTS_ZOOM_PERCENT_STEP', 'value': documents_settings.ZOOM_PERCENT_STEP}, {'name': 'DOCUMENTS_ZOOM_MAX_LEVEL', 'value': documents_settings.ZOOM_MAX_LEVEL}, {'name': 'DOCUMENTS_ZOOM_MIN_LEVEL', 'value': documents_settings.ZOOM_MIN_LEVEL}, {'name': 'DOCUMENTS_ROTATION_STEP', 'value': documents_settings.ROTATION_STEP}, #Groups {'name': 'DOCUMENTS_GROUP_SHOW_EMPTY', 'value': documents_settings.GROUP_SHOW_EMPTY}, {'name': 'DOCUMENTS_RECENT_COUNT', 'value': documents_settings.RECENT_COUNT}, #Filesystem_serving {'name': 'FILESYSTEM_FILESERVING_ENABLE', 'value': filesystem_serving_settings.FILESERVING_ENABLE}, {'name': 'FILESYSTEM_FILESERVING_PATH', 'value': filesystem_serving_settings.FILESERVING_PATH, 'exists': True}, {'name': 'FILESYSTEM_SLUGIFY_PATHS', 'value': filesystem_serving_settings.SLUGIFY_PATHS}, {'name': 'FILESYSTEM_MAX_RENAME_COUNT', 'value': filesystem_serving_settings.MAX_RENAME_COUNT}, # Common {'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', 'value': converter_settings.UNPAPER_PATH, 'exists': True, 'description': converter_settings.setting_description}, {'name': 'CONVERTER_IM_CONVERT_PATH', 'value': converter_settings.IM_CONVERT_PATH, 'exists': True, 'description': converter_settings.setting_description}, {'name': 'CONVERTER_IM_IDENTIFY_PATH', 'value': converter_settings.IM_IDENTIFY_PATH, 'exists': True, 'description': converter_settings.setting_description}, {'name': 'CONVERTER_GM_PATH', 'value': converter_settings.GM_PATH, 'exists': True, 'description': converter_settings.setting_description}, {'name': 'CONVERTER_GM_SETTINGS', 'value': converter_settings.GM_SETTINGS}, {'name': 'CONVERTER_GRAPHICS_BACKEND', 'value': converter_settings.GRAPHICS_BACKEND, 'description': converter_settings.setting_description}, {'name': 'CONVERTER_UNOCONV_PATH', 'value': converter_settings.UNOCONV_PATH, 'exists': True}, {'name': 'CONVERTER_OCR_OPTIONS', 'value': converter_settings.OCR_OPTIONS}, {'name': 'CONVERTER_DEFAULT_OPTIONS', 'value': converter_settings.DEFAULT_OPTIONS}, {'name': 'CONVERTER_LOW_QUALITY_OPTIONS', 'value': converter_settings.LOW_QUALITY_OPTIONS}, {'name': 'CONVERTER_HIGH_QUALITY_OPTIONS', 'value': converter_settings.HIGH_QUALITY_OPTIONS}, # OCR {'name': 'OCR_AUTOMATIC_OCR', 'value': ocr_settings.AUTOMATIC_OCR}, {'name': 'OCR_TESSERACT_PATH', 'value': ocr_settings.TESSERACT_PATH, 'exists': True}, {'name': 'OCR_TESSERACT_LANGUAGE', 'value': ocr_settings.TESSERACT_LANGUAGE}, {'name': 'OCR_NODE_CONCURRENT_EXECUTION', 'value': ocr_settings.NODE_CONCURRENT_EXECUTION}, {'name': 'OCR_REPLICATION_DELAY', 'value': ocr_settings.REPLICATION_DELAY}, {'name': 'OCR_PDFTOTEXT_PATH', 'value': ocr_settings.PDFTOTEXT_PATH, 'exists': True}, {'name': 'OCR_QUEUE_PROCESSING_INTERVAL', 'value': ocr_settings.QUEUE_PROCESSING_INTERVAL}, # Search {'name': 'SEARCH_LIMIT', 'value': search_settings.LIMIT}, ] context = { 'title': _(u'settings'), 'object_list': settings, 'hide_link': True, 'hide_object': True, 'extra_columns': [ {'name': _(u'name'), 'attribute': 'name'}, {'name': _(u'value'), 'attribute': lambda x: return_type(x['value'])}, {'name': _(u'description'), 'attribute': lambda x: x.get('description', {}).get(x['name'], '')}, {'name': _(u'exists'), 'attribute': lambda x: exists_with_famfam(x['value']) if 'exists' in x else ''}, ] } return render_to_response('generic_list.html', context, context_instance=RequestContext(request)) def tools_menu(request): user_tools = {} for namespace, values in tools.items(): for link in values['links']: try: namespace = link.get('permissions', {}).get('namespace', None) permissions = link.get('permissions', {}).get('permissions', []) check_permissions(request.user, namespace, permissions) user_tools[namespace] = { 'title': values['title'] } user_links = user_tools[namespace].setdefault('links', []) user_tools[namespace]['links'].append(link) except PermissionDenied: pass return render_to_response('tools.html', { 'blocks': user_tools, 'title': _(u'tools menu') }, context_instance=RequestContext(request)) def statistics(request): blocks = [] blocks.append(documents_statistics()) blocks.append(ocr_statistics()) return render_to_response('statistics.html', { 'blocks': blocks, 'title': _(u'Statistics') }, context_instance=RequestContext(request)) def diagnostics_view(request): return render_to_response('diagnostics.html', { 'blocks': diagnostics, 'title': _(u'Diagnostics') }, context_instance=RequestContext(request))