Files
mayan-edms/apps/main/views.py

167 lines
8.4 KiB
Python

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_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))