Converted whole project to a smarter method of defining app settings

This commit is contained in:
Roberto Rosario
2011-05-07 01:15:40 -04:00
parent 7469fe991f
commit 7f2c563192
16 changed files with 265 additions and 140 deletions

View File

@@ -1,14 +1,33 @@
from django.conf import settings
"""Configuration options for the common app"""
from django.utils.translation import ugettext_lazy as _
from main.api import register_setting
from common.literals import PAGE_SIZE_LETTER, PAGE_ORIENTATION_PORTRAIT
TEMPORARY_DIRECTORY = getattr(settings, 'COMMON_TEMPORARY_DIRECTORY', u'/tmp')
TEMPORARY_DIRECTORY = register_setting(
namespace=u'common',
module=u'common.conf.settings',
name=u'TEMPORARY_DIRECTORY',
global_name=u'COMMON_TEMPORARY_DIRECTORY',
default=u'/tmp',
description=_(u'Temporary directory used site wide to store thumbnails, previews and temporary files. If none is specified, one will be created using tempfile.mkdtemp()'),
exists=True
)
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()')
}
DEFAULT_PAPER_SIZE = register_setting(
namespace=u'common',
module=u'common.conf.settings',
name=u'DEFAULT_PAPER_SIZE',
global_name=u'COMMON_DEFAULT_PAPER_SIZE',
default=PAGE_SIZE_LETTER,
)
# 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)
DEFAULT_PAGE_ORIENTATION = register_setting(
namespace=u'common',
module=u'common.conf.settings',
name=u'DEFAULT_PAGE_ORIENTATION',
global_name=u'COMMON_DEFAULT_PAGE_ORIENTATION',
default=PAGE_ORIENTATION_PORTRAIT,
)

View File

@@ -1,26 +1,23 @@
from django.conf import settings
"""Configuration options for the converter app"""
from django.utils.translation import ugettext_lazy as _
from main.api import register_settings
IM_CONVERT_PATH = getattr(settings, 'CONVERTER_IM_ONVERT_PATH', u'/usr/bin/convert')
IM_IDENTIFY_PATH = getattr(settings, 'CONVERTER_IM_IDENTIFY_PATH', u'/usr/bin/identify')
UNPAPER_PATH = getattr(settings, 'CONVERTER_UNPAPER_PATH', u'/usr/bin/unpaper')
GM_PATH = getattr(settings, 'CONVERTER_GM_PATH', u'/usr/bin/gm')
GM_SETTINGS = getattr(settings, 'CONVERTER_GM_SETTINGS', u'')
GRAPHICS_BACKEND = getattr(settings, 'CONVERTER_GRAPHICS_BACKEND', u'converter.backends.imagemagick')
UNOCONV_PATH = getattr(settings, 'CONVERTER_UNOCONV_PATH', u'/usr/bin/unoconv')
OCR_OPTIONS = getattr(settings, 'CONVERTER_OCR_OPTIONS', u'-colorspace Gray -depth 8 -resample 200x200')
DEFAULT_OPTIONS = getattr(settings, 'CONVERTER_DEFAULT_OPTIONS', u'')
LOW_QUALITY_OPTIONS = getattr(settings, 'CONVERTER_LOW_QUALITY_OPTIONS', u'')
HIGH_QUALITY_OPTIONS = getattr(settings, 'CONVERTER_HIGH_QUALITY_OPTIONS', u'-density 400')
PRINT_QUALITY_OPTIONS = getattr(settings, 'CONVERTER_HIGH_QUALITY_OPTIONS', u'-density 500')
setting_description = {
'CONVERTER_IM_CONVERT_PATH': _(u'File path to imagemagick\'s convert program.'),
'CONVERTER_IM_IDENTIFY_PATH': _(u'File path to imagemagick\'s identify program.'),
'CONVERTER_GM_PATH': _(u'File path to graphicsmagick\'s program.'),
'CONVERTER_UNPAPER_PATH': _(u'File path to unpaper program.'),
'CONVERTER_GRAPHICS_BACKEND': _(u'Graphics conversion backend to use. Options are: converter.backends.imagemagick and converter.backends.graphicsmagick.'),
}
register_settings(
namespace=u'converter',
module=u'converter.conf.settings',
settings=[
{'name': u'IM_CONVERT_PATH', 'global_name': u'CONVERTER_IM_CONVERT_PATH', 'default': u'/usr/bin/convert', 'description': _(u'File path to imagemagick\'s convert program.'), 'exists': True},
{'name': u'IM_IDENTIFY_PATH', 'global_name': u'CONVERTER_IM_IDENTIFY_PATH', 'default': u'/usr/bin/identify', 'description': _(u'File path to imagemagick\'s identify program.'), 'exists': True},
{'name': u'UNPAPER_PATH', 'global_name': u'CONVERTER_UNPAPER_PATH', 'default': u'/usr/bin/unpaper', 'description': _(u'File path to unpaper program.'), 'exists': True},
{'name': u'GM_PATH', 'global_name': u'CONVERTER_GM_PATH', 'default': u'/usr/bin/gm', 'description': _(u'File path to graphicsmagick\'s program.'), 'exists': True},
{'name': u'GM_SETTINGS', 'global_name': u'CONVERTER_GM_SETTINGS', 'default': u''},
{'name': u'GRAPHICS_BACKEND', 'global_name': u'CONVERTER_GRAPHICS_BACKEND', 'default': u'converter.backends.imagemagick', 'description': _(u'Graphics conversion backend to use. Options are: converter.backends.imagemagick and converter.backends.graphicsmagick.')},
{'name': u'UNOCONV_PATH', 'global_name': u'CONVERTER_UNOCONV_PATH', 'default': u'/usr/bin/unoconv', 'exists': True},
{'name': u'OCR_OPTIONS', 'global_name': u'CONVERTER_OCR_OPTIONS', 'default': u'-colorspace Gray -depth 8 -resample 200x200'},
{'name': u'DEFAULT_OPTIONS', 'global_name': u'CONVERTER_DEFAULT_OPTIONS', 'default': u''},
{'name': u'LOW_QUALITY_OPTIONS', 'global_name': u'CONVERTER_LOW_QUALITY_OPTIONS', 'default': u''},
{'name': u'HIGH_QUALITY_OPTIONS', 'global_name': u'CONVERTER_HIGH_QUALITY_OPTIONS', 'default': u'-density 400'},
{'name': u'PRINT_QUALITY_OPTIONS', 'global_name': u'CONVERTER_HIGH_QUALITY_OPTIONS', 'default': u'-density 500'},
]
)

View File

@@ -1,14 +1,15 @@
"""Configuration options for the documents app"""
import datetime
import hashlib
import uuid
from django.conf import settings
from django.contrib.auth.models import User
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User
from common.utils import proper_name
from storage.backends.filebasedstorage import FileBasedStorage
from main.api import register_settings
def default_checksum(x):
@@ -36,45 +37,42 @@ available_indexing_functions = {
'proper_name': proper_name
}
# Definition
AVAILABLE_FUNCTIONS = getattr(settings, 'DOCUMENTS_METADATA_AVAILABLE_FUNCTIONS', default_available_functions)
AVAILABLE_MODELS = getattr(settings, 'DOCUMENTS_METADATA_AVAILABLE_MODELS', default_available_models)
AVAILABLE_INDEXING_FUNCTIONS = getattr(settings, 'DOCUMENTS_INDEXING_AVAILABLE_FUNCTIONS', available_indexing_functions)
# Upload
USE_STAGING_DIRECTORY = getattr(settings, 'DOCUMENTS_USE_STAGING_DIRECTORY', False)
STAGING_DIRECTORY = getattr(settings, 'DOCUMENTS_STAGING_DIRECTORY', u'/tmp/mayan/staging')
DELETE_STAGING_FILE_AFTER_UPLOAD = getattr(settings, 'DOCUMENTS_DELETE_STAGING_FILE_AFTER_UPLOAD', False)
STAGING_FILES_PREVIEW_SIZE = getattr(settings, 'DOCUMENTS_STAGING_FILES_PREVIEW_SIZE', '640x480')
ENABLE_SINGLE_DOCUMENT_UPLOAD = getattr(settings, 'DOCUMENTS_ENABLE_SINGLE_DOCUMENT_UPLOAD', True)
UNCOMPRESS_COMPRESSED_LOCAL_FILES = getattr(settings, 'DOCUMENTS_UNCOMPRESS_COMPRESSED_LOCAL_FILES', True)
UNCOMPRESS_COMPRESSED_STAGING_FILES = getattr(settings, 'DOCUMENTS_UNCOMPRESS_COMPRESSED_STAGING_FILES', True)
# Saving
CHECKSUM_FUNCTION = getattr(settings, 'DOCUMENTS_CHECKSUM_FUNCTION', default_checksum)
UUID_FUNCTION = getattr(settings, 'DOCUMENTS_UUID_FUNCTION', default_uuid)
# Storage
STORAGE_BACKEND = getattr(settings, 'DOCUMENTS_STORAGE_BACKEND', FileBasedStorage)
# Usage
PREVIEW_SIZE = getattr(settings, 'DOCUMENTS_PREVIEW_SIZE', '640x480')
PRINT_SIZE = getattr(settings, 'DOCUMENTS_PREVIEW_SIZE', '1400')
MULTIPAGE_PREVIEW_SIZE = getattr(settings, 'DOCUMENTS_MULTIPAGE_PREVIEW_SIZE', '160x120')
THUMBNAIL_SIZE = getattr(settings, 'DOCUMENTS_THUMBNAIL_SIZE', '50x50')
DISPLAY_SIZE = getattr(settings, 'DOCUMENTS_DISPLAY_SIZE', '1200')
RECENT_COUNT = getattr(settings, 'DOCUMENTS_RECENT_COUNT', 40)
ZOOM_PERCENT_STEP = getattr(settings, 'DOCUMENTS_ZOOM_PERCENT_STEP', 50)
ZOOM_MAX_LEVEL = getattr(settings, 'DOCUMENTS_ZOOM_MAX_LEVEL', 200)
ZOOM_MIN_LEVEL = getattr(settings, 'DOCUMENTS_ZOOM_MIN_LEVEL', 50)
ROTATION_STEP = getattr(settings, 'DOCUMENTS_ROTATION_STEP', 90)
# Transformations
AVAILABLE_TRANSFORMATIONS = getattr(settings, 'DOCUMENTS_AVAILABLE_TRANSFORMATIONS', available_transformations)
DEFAULT_TRANSFORMATIONS = getattr(settings, 'DOCUMENTS_DEFAULT_TRANSFORMATIONS', [])
#Groups
GROUP_SHOW_EMPTY = getattr(settings, 'DOCUMENTS_GROUP_SHOW_EMPTY', True)
setting_description = {
}
register_settings(
namespace=u'documents',
module=u'documents.conf.settings',
settings=[
# Definition
{'name': u'AVAILABLE_FUNCTIONS', 'global_name': u'DOCUMENTS_METADATA_AVAILABLE_FUNCTIONS', 'default': default_available_functions},
{'name': u'AVAILABLE_MODELS', 'global_name': u'DOCUMENTS_METADATA_AVAILABLE_MODELS', 'default': default_available_models},
{'name': u'AVAILABLE_INDEXING_FUNCTIONS', 'global_name': u'DOCUMENTS_INDEXING_AVAILABLE_FUNCTIONS', 'default': available_indexing_functions},
# Upload
{'name': u'USE_STAGING_DIRECTORY', 'global_name': u'DOCUMENTS_USE_STAGING_DIRECTORY', 'default': False},
{'name': u'STAGING_DIRECTORY', 'global_name': u'DOCUMENTS_STAGING_DIRECTORY', 'default': u'/tmp/mayan/staging', 'exists': True},
{'name': u'DELETE_STAGING_FILE_AFTER_UPLOAD', 'global_name': u'DOCUMENTS_DELETE_STAGING_FILE_AFTER_UPLOAD', 'default': False},
{'name': u'STAGING_FILES_PREVIEW_SIZE', 'global_name': u'DOCUMENTS_STAGING_FILES_PREVIEW_SIZE', 'default': u'640x480'},
{'name': u'ENABLE_SINGLE_DOCUMENT_UPLOAD', 'global_name': u'DOCUMENTS_ENABLE_SINGLE_DOCUMENT_UPLOAD', 'default': True},
{'name': u'UNCOMPRESS_COMPRESSED_LOCAL_FILES', 'global_name': u'DOCUMENTS_UNCOMPRESS_COMPRESSED_LOCAL_FILES', 'default': True},
{'name': u'UNCOMPRESS_COMPRESSED_STAGING_FILES', 'global_name': u'DOCUMENTS_UNCOMPRESS_COMPRESSED_STAGING_FILES', 'default': True},
# Saving
{'name': u'CHECKSUM_FUNCTION', 'global_name': u'DOCUMENTS_CHECKSUM_FUNCTION', 'default': default_checksum},
{'name': u'UUID_FUNCTION', 'global_name': u'DOCUMENTS_UUID_FUNCTION', 'default': default_uuid},
# Storage
{'name': u'STORAGE_BACKEND', 'global_name': u'DOCUMENTS_STORAGE_BACKEND', 'default': FileBasedStorage},
# Transformations
{'name': u'AVAILABLE_TRANSFORMATIONS', 'global_name': u'DOCUMENTS_AVAILABLE_TRANSFORMATIONS', 'default': available_transformations},
{'name': u'DEFAULT_TRANSFORMATIONS', 'global_name': u'DOCUMENTS_DEFAULT_TRANSFORMATIONS', 'default': []},
# Usage
{'name': u'PREVIEW_SIZE', 'global_name': u'DOCUMENTS_PREVIEW_SIZE', 'default': u'640x480'},
{'name': u'PRINT_SIZE', 'global_name': u'DOCUMENTS_PRINT_SIZE', 'default': u'1400'},
{'name': u'MULTIPAGE_PREVIEW_SIZE', 'global_name': u'DOCUMENTS_MULTIPAGE_PREVIEW_SIZE', 'default': u'160x120'},
{'name': u'THUMBNAIL_SIZE', 'global_name': u'DOCUMENTS_THUMBNAIL_SIZE', 'default': u'50x50'},
{'name': u'DISPLAY_SIZE', 'global_name': u'DOCUMENTS_DISPLAY_SIZE', 'default': u'1200'},
{'name': u'RECENT_COUNT', 'global_name': u'DOCUMENTS_RECENT_COUNT', 'default': 40, 'description': _(u'Maximum number of recent (created, edited, viewed) documents to remember per user.')},
{'name': u'ZOOM_PERCENT_STEP', 'global_name': u'DOCUMENTS_ZOOM_PERCENT_STEP', 'default': 50, 'description': _(u'Amount in percent zoom in or out a document page per user interaction.')},
{'name': u'ZOOM_MAX_LEVEL', 'global_name': u'DOCUMENTS_ZOOM_MAX_LEVEL', 'default': 200, 'description': _(u'Maximum amount in percent (%) to allow user to zoom in a document page interactively.')},
{'name': u'ZOOM_MIN_LEVEL', 'global_name': u'DOCUMENTS_ZOOM_MIN_LEVEL', 'default': 50, 'description': _(u'Minimum amount in percent (%) to allow user to zoom out a document page interactively.')},
{'name': u'ROTATION_STEP', 'global_name': u'DOCUMENTS_ROTATION_STEP', 'default': 90, 'description': _(u'Amount in degrees to rotate a document page per user interaction.')},
#Groups
{'name': u'GROUP_SHOW_EMPTY', 'global_name': u'DOCUMENTS_GROUP_SHOW_EMPTY', 'default': True},
]
)

View File

@@ -1,4 +1,15 @@
from django.conf import settings
"""Configuration options for the dynamic_search app"""
from django.utils.translation import ugettext_lazy as _
from main.api import register_settings
register_settings(
namespace=u'dynamic_search',
module=u'dynamic_search.conf.settings',
settings=[
{'name': u'SHOW_OBJECT_TYPE', 'global_name': u'SEARCH_SHOW_OBJECT_TYPE', 'default': True, 'hidden': True},
{'name': u'LIMIT', 'global_name': u'SEARCH_LIMIT', 'default': 100, 'description': _(u'Maximum amount search hits to fetch and display.')},
]
)
SHOW_OBJECT_TYPE = getattr(settings, 'SEARCH_SHOW_OBJECT_TYPE', True)
LIMIT = getattr(settings, 'SEARCH_LIMIT', 100)

View File

@@ -1,6 +1,6 @@
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.utils.translation import ugettext as _
from django.utils.translation import ugettext_lazy as _
from django.contrib import messages
from django.conf import settings

View File

@@ -1,11 +1,15 @@
'''Configuration options for the filesystem_serving app
'''
"""Configuration options for the filesystem_serving app"""
from django.conf import settings
from main.api import register_settings
register_settings(
namespace=u'filesystem_serving',
module=u'filesystem_serving.conf.settings',
settings=[
{'name': u'SLUGIFY_PATHS', 'global_name': u'FILESYSTEM_SLUGIFY_PATHS', 'default': False},
{'name': u'MAX_RENAME_COUNT', 'global_name': u'FILESYSTEM_MAX_RENAME_COUNT', 'default': 200},
{'name': u'FILESERVING_PATH', 'global_name': u'FILESYSTEM_FILESERVING_PATH', 'default': u'/tmp/mayan/documents', 'exists': True},
{'name': u'FILESERVING_ENABLE', 'global_name': u'FILESYSTEM_FILESERVING_ENABLE', 'default': True}
]
)
# Serving
FILESERVING_ENABLE = getattr(settings, 'FILESYSTEM_FILESERVING_ENABLE', True)
FILESERVING_PATH = getattr(settings, 'FILESYSTEM_FILESERVING_PATH', u'/tmp/mayan/documents')
SLUGIFY_PATHS = getattr(settings, 'FILESYSTEM_SLUGIFY_PATHS', False)
MAX_RENAME_COUNT = getattr(settings, 'FILESYSTEM_MAX_RENAME_COUNT', 200)

View File

@@ -5,6 +5,8 @@ from permissions import role_list
from user_management import user_list
from main.conf.settings import SIDE_BAR_SEARCH
from main.conf import settings as main_settings
from main.api import register_setting
def is_superuser(context):
@@ -58,3 +60,6 @@ def get_version():
return ''.join(vers)
__version__ = get_version()
#register_setting(u'main', main_settings, u'SIDE_BAR_SEARCH', u'MAIN_SIDE_BAR_SEARCH')

View File

@@ -1,9 +1,12 @@
from django.core.urlresolvers import reverse
from django.utils.functional import lazy
from django.conf import settings as django_settings
from django.utils.importlib import import_module
diagnostics = {}
tools = {}
reverse_lazy = lazy(reverse, str)
settings = {}
def register_diagnostic(namespace, title, link):
@@ -20,3 +23,47 @@ def register_tool(link, title=None, namespace=None):
link['url'] = link.get('url', reverse_lazy(link['view']))
namespace_dict['links'].append(link)
tools[namespace] = namespace_dict
def register_setting(namespace, module, name, global_name, default, exists=False, description=u'', hidden=False):
# Create namespace if it doesn't exists
settings.setdefault(namespace, [])
# If passed a string and not a module, import it
if isinstance(module, basestring):
module = import_module(module)
setting = {
'module': module,
'name': name,
'global_name': global_name,
'exists': exists,
'description': description,
'default': default,
'hidden': hidden,
}
# Avoid multiple appends
if setting not in settings[namespace]:
settings[namespace].append(setting)
# Get the global value
value = getattr(django_settings, global_name, default)
# Create the local entity
setattr(module, name, value)
return value
def register_settings(namespace, module, settings):
for setting in settings:
register_setting(
namespace,
module,
setting['name'],
setting['global_name'],
setting['default'],
setting.get('exists', False),
setting.get('description', u''),
setting.get('hidden', False),
)

View File

@@ -1,12 +1,13 @@
'''Configuration options for the main app
'''
"""Configuration options for the main app"""
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from main.api import register_setting
SIDE_BAR_SEARCH = getattr(settings, 'MAIN_SIDE_BAR_SEARCH', False)
setting_description = {
'MAIN_SIDE_BAR_SEARCH': _(u'Controls whether the search\
functionality is provided by a sidebar widget or by a menu entry.')
}
register_setting(
namespace=u'main',
module=u'main.conf.settings',
name=u'SIDE_BAR_SEARCH',
global_name=u'MAIN_SIDE_BAR_SEARCH',
default=False,
description=_(u'Controls whether the search functionality is provided by a sidebar widget or by a menu entry.')
)

View File

@@ -4,18 +4,18 @@ 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 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
from main.api import diagnostics, tools, settings
def home(request):
@@ -24,10 +24,8 @@ def home(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},
@@ -106,17 +104,30 @@ def check_settings(request):
# Search
{'name': 'SEARCH_LIMIT', 'value': search_settings.LIMIT},
]
"""
new_settings = []
for namespace, sub_settings in settings.items():
for sub_setting in sub_settings:
if not sub_setting.get('hidden', False):
new_settings.append({
'module': sub_setting['module'],
'name': sub_setting['name'],
'global_name': sub_setting['global_name'],
'description': sub_setting.get('description', None),
'exists': sub_setting.get('exists', False),
'default': sub_setting['default'],
})
context = {
'title': _(u'settings'),
'object_list': settings,
'object_list': new_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 ''},
{'name': _(u'name'), 'attribute': 'global_name'},
{'name': _(u'default'), 'attribute': lambda x: return_type(x['default'])},
{'name': _(u'value'), 'attribute': lambda x: return_type(getattr(x['module'], x['name']))},
{'name': _(u'description'), 'attribute': 'description'},
{'name': _(u'exists'), 'attribute': lambda x: exists_with_famfam(getattr(x['module'], x['name'])) if x['exists'] else ''},
]
}

View File

@@ -1,11 +1,21 @@
from django.conf import settings
"""Configuration options for the ocr app"""
from django.utils.translation import ugettext_lazy as _
from main.api import register_settings
register_settings(
namespace=u'ocr',
module=u'ocr.conf.settings',
settings=[
{'name': u'TESSERACT_PATH', 'global_name': u'OCR_TESSERACT_PATH', 'default': u'/usr/bin/tesseract', 'exists': True},
{'name': u'TESSERACT_LANGUAGE', 'global_name': u'OCR_TESSERACT_LANGUAGE', 'default': u'eng'},
{'name': u'REPLICATION_DELAY', 'global_name': u'OCR_REPLICATION_DELAY', 'default': 10, 'description': _(u'Amount of seconds to delay OCR of documents to allow for the node\'s storage replication overhead.')},
{'name': u'NODE_CONCURRENT_EXECUTION', 'global_name': u'OCR_NODE_CONCURRENT_EXECUTION', 'default': 1, 'description': _(u'Maximum amount of concurrent document OCRs a node can perform.')},
{'name': u'AUTOMATIC_OCR', 'global_name': u'OCR_AUTOMATIC_OCR', 'default': False, 'description': _(u'Automatically queue newly created documents for OCR.')},
{'name': u'PDFTOTEXT_PATH', 'global_name': u'OCR_PDFTOTEXT_PATH', 'default': u'/usr/bin/pdftotext', 'exists': True},
{'name': u'QUEUE_PROCESSING_INTERVAL', 'global_name': u'OCR_QUEUE_PROCESSING_INTERVAL', 'default': 10},
{'name': u'CACHE_URI', 'global_name': u'OCR_CACHE_URI', 'default': None, 'description': _(u'URI in the form: "memcached://127.0.0.1:11211/" to specify a cache backend to use for locking. Multiple hosts can be specified separated by a semicolon.')}
]
)
TESSERACT_PATH = getattr(settings, 'OCR_TESSERACT_PATH', u'/usr/bin/tesseract')
TESSERACT_LANGUAGE = getattr(settings, 'OCR_TESSERACT_LANGUAGE', u'eng')
REPLICATION_DELAY = getattr(settings, 'OCR_REPLICATION_DELAY', 10) # In seconds
NODE_CONCURRENT_EXECUTION = getattr(settings, 'OCR_NODE_CONCURRENT_EXECUTION', 1)
AUTOMATIC_OCR = getattr(settings, 'OCR_AUTOMATIC_OCR', False)
PDFTOTEXT_PATH = getattr(settings, 'OCR_PDFTOTEXT_PATH', u'/usr/bin/pdftotext')
QUEUE_PROCESSING_INTERVAL = getattr(settings, 'OCR_QUEUE_PROCESSING_INTERVAL', 10) # In seconds
CACHE_URI = getattr(settings, 'OCR_CACHE_URI', None)

View File

@@ -7,7 +7,7 @@ from django.template import RequestContext
from django.contrib import messages
from django.views.generic.list_detail import object_list
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _
from django.utils.translation import ugettext_lazy as _
from django.conf import settings
from celery.task.control import inspect

View File

@@ -1,3 +1,12 @@
from django.conf import settings
"""Configuration options for the permissions app"""
from django.utils.translation import ugettext_lazy as _
DEFAULT_ROLES = getattr(settings, 'ROLES_DEFAULT_ROLES', [])
from main.api import register_settings
register_settings(
namespace=u'permissions',
module=u'permissions.conf.settings',
settings=[
{'name': u'DEFAULT_ROLES', 'global_name': u'ROLES_DEFAULT_ROLES', 'default': [], 'description': _('A list of existing roles that are automatically assigned to newly created users')},
]
)

View File

@@ -1,8 +1,15 @@
from django.conf import settings
"""Configuration options for the storage app"""
from django.utils.translation import ugettext_lazy as _
from main.api import register_settings
GRIDFS_HOST = getattr(settings, 'STORAGE_GRIDFS_HOST', u'localhost')
GRIDFS_PORT = getattr(settings, 'STORAGE_GRIDFS_PORT', 27017)
GRIDFS_DATABASE_NAME = getattr(settings, 'STORAGE_GRIDFS_DATABASE_NAME', u'document_storage')
FILESTORAGE_LOCATION = getattr(settings, 'STORAGE_FILESTORAGE_LOCATION', u'document_storage')
register_settings(
namespace=u'storage',
module=u'storage.conf.settings',
settings=[
{'name': u'GRIDFS_HOST', 'global_name': u'STORAGE_GRIDFS_HOST', 'default': u'localhost'},
{'name': u'GRIDFS_PORT', 'global_name': u'STORAGE_GRIDFS_PORT', 'default': 27017},
{'name': u'GRIDFS_DATABASE_NAME', 'global_name': u'STORAGE_GRIDFS_DATABASE_NAME', 'default': u'document_storage'},
{'name': u'FILESTORAGE_LOCATION', 'global_name': u'STORAGE_FILESTORAGE_LOCATION', 'default': u'document_storage', 'exists': True},
]
)

View File

@@ -1,8 +1,13 @@
from django.conf import settings
"""Configuration options for the web_theme app"""
from django.utils.translation import ugettext_lazy as _
#Theme options are:
#amro, bec, bec-green, blue, default, djime-cerulean, drastic-dark,
#kathleene, olive, orange, red, reidb-greenish, warehouse
from main.api import register_settings
THEME = getattr(settings, 'WEB_THEME', 'default')
ENABLE_SCROLL_JS = getattr(settings, 'WEB_THEME_ENABLE_SCROLL_JS', True)
register_settings(
namespace=u'web_theme',
module=u'web_theme.conf.settings',
settings=[
{'name': u'THEME', 'global_name': u'WEB_THEME_THEME', 'default': u'default', 'description': _(u'CSS theme to apply, options are: amro, bec, bec-green, blue, default, djime-cerulean, drastic-dark, kathleene, olive, orange, red, reidb-greenish and warehouse.')},
{'name': u'ENABLE_SCROLL_JS', 'global_name': u'WEB_THEME_ENABLE_SCROLL_JS', 'default': True, 'hidden': True},
]
)

View File

@@ -197,6 +197,7 @@ TEMPLATE_CONTEXT_PROCESSORS = (
# Usage
#DOCUMENTS_PREVIEW_SIZE = '640x480'
#DOCUMENTS_PRINT_SIZE = '640x480'
#DOCUMENTS_THUMBNAIL_SIZE = '50x50'
#DOCUMENTS_DISPLAY_SIZE = '1200'
#DOCUMENTS_MULTIPAGE_PREVIEW_SIZE = '160x120'