Converted whole project to a smarter method of defining app settings
This commit is contained in:
@@ -1,14 +1,33 @@
|
|||||||
from django.conf import settings
|
"""Configuration options for the common app"""
|
||||||
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
from main.api import register_setting
|
||||||
|
|
||||||
from common.literals import PAGE_SIZE_LETTER, PAGE_ORIENTATION_PORTRAIT
|
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 = {
|
DEFAULT_PAPER_SIZE = register_setting(
|
||||||
'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()')
|
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_PAGE_ORIENTATION = register_setting(
|
||||||
DEFAULT_PAPER_SIZE = getattr(settings, 'COMMON_DEFAULT_PAPER_SIZE', PAGE_SIZE_LETTER)
|
namespace=u'common',
|
||||||
DEFAULT_PAGE_ORIENTATION = getattr(settings, 'COMMON_DEFAULT_PAGE_ORIENTATION', PAGE_ORIENTATION_PORTRAIT)
|
module=u'common.conf.settings',
|
||||||
|
name=u'DEFAULT_PAGE_ORIENTATION',
|
||||||
|
global_name=u'COMMON_DEFAULT_PAGE_ORIENTATION',
|
||||||
|
default=PAGE_ORIENTATION_PORTRAIT,
|
||||||
|
)
|
||||||
|
|||||||
@@ -1,26 +1,23 @@
|
|||||||
from django.conf import settings
|
"""Configuration options for the converter app"""
|
||||||
from django.utils.translation import ugettext_lazy as _
|
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')
|
register_settings(
|
||||||
IM_IDENTIFY_PATH = getattr(settings, 'CONVERTER_IM_IDENTIFY_PATH', u'/usr/bin/identify')
|
namespace=u'converter',
|
||||||
UNPAPER_PATH = getattr(settings, 'CONVERTER_UNPAPER_PATH', u'/usr/bin/unpaper')
|
module=u'converter.conf.settings',
|
||||||
GM_PATH = getattr(settings, 'CONVERTER_GM_PATH', u'/usr/bin/gm')
|
settings=[
|
||||||
GM_SETTINGS = getattr(settings, 'CONVERTER_GM_SETTINGS', u'')
|
{'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},
|
||||||
GRAPHICS_BACKEND = getattr(settings, 'CONVERTER_GRAPHICS_BACKEND', u'converter.backends.imagemagick')
|
{'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},
|
||||||
UNOCONV_PATH = getattr(settings, 'CONVERTER_UNOCONV_PATH', u'/usr/bin/unoconv')
|
{'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},
|
||||||
OCR_OPTIONS = getattr(settings, 'CONVERTER_OCR_OPTIONS', u'-colorspace Gray -depth 8 -resample 200x200')
|
{'name': u'GM_SETTINGS', 'global_name': u'CONVERTER_GM_SETTINGS', 'default': u''},
|
||||||
DEFAULT_OPTIONS = getattr(settings, 'CONVERTER_DEFAULT_OPTIONS', 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.')},
|
||||||
LOW_QUALITY_OPTIONS = getattr(settings, 'CONVERTER_LOW_QUALITY_OPTIONS', u'')
|
{'name': u'UNOCONV_PATH', 'global_name': u'CONVERTER_UNOCONV_PATH', 'default': u'/usr/bin/unoconv', 'exists': True},
|
||||||
HIGH_QUALITY_OPTIONS = getattr(settings, 'CONVERTER_HIGH_QUALITY_OPTIONS', u'-density 400')
|
{'name': u'OCR_OPTIONS', 'global_name': u'CONVERTER_OCR_OPTIONS', 'default': u'-colorspace Gray -depth 8 -resample 200x200'},
|
||||||
PRINT_QUALITY_OPTIONS = getattr(settings, 'CONVERTER_HIGH_QUALITY_OPTIONS', u'-density 500')
|
{'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'},
|
||||||
setting_description = {
|
{'name': u'PRINT_QUALITY_OPTIONS', 'global_name': u'CONVERTER_HIGH_QUALITY_OPTIONS', 'default': u'-density 500'},
|
||||||
'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.'),
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
|
"""Configuration options for the documents app"""
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import hashlib
|
import hashlib
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
from django.contrib.auth.models import User
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
from common.utils import proper_name
|
from common.utils import proper_name
|
||||||
|
|
||||||
from storage.backends.filebasedstorage import FileBasedStorage
|
from storage.backends.filebasedstorage import FileBasedStorage
|
||||||
|
from main.api import register_settings
|
||||||
|
|
||||||
|
|
||||||
def default_checksum(x):
|
def default_checksum(x):
|
||||||
@@ -36,45 +37,42 @@ available_indexing_functions = {
|
|||||||
'proper_name': proper_name
|
'proper_name': proper_name
|
||||||
}
|
}
|
||||||
|
|
||||||
# Definition
|
register_settings(
|
||||||
AVAILABLE_FUNCTIONS = getattr(settings, 'DOCUMENTS_METADATA_AVAILABLE_FUNCTIONS', default_available_functions)
|
namespace=u'documents',
|
||||||
AVAILABLE_MODELS = getattr(settings, 'DOCUMENTS_METADATA_AVAILABLE_MODELS', default_available_models)
|
module=u'documents.conf.settings',
|
||||||
AVAILABLE_INDEXING_FUNCTIONS = getattr(settings, 'DOCUMENTS_INDEXING_AVAILABLE_FUNCTIONS', available_indexing_functions)
|
settings=[
|
||||||
|
# Definition
|
||||||
# Upload
|
{'name': u'AVAILABLE_FUNCTIONS', 'global_name': u'DOCUMENTS_METADATA_AVAILABLE_FUNCTIONS', 'default': default_available_functions},
|
||||||
USE_STAGING_DIRECTORY = getattr(settings, 'DOCUMENTS_USE_STAGING_DIRECTORY', False)
|
{'name': u'AVAILABLE_MODELS', 'global_name': u'DOCUMENTS_METADATA_AVAILABLE_MODELS', 'default': default_available_models},
|
||||||
STAGING_DIRECTORY = getattr(settings, 'DOCUMENTS_STAGING_DIRECTORY', u'/tmp/mayan/staging')
|
{'name': u'AVAILABLE_INDEXING_FUNCTIONS', 'global_name': u'DOCUMENTS_INDEXING_AVAILABLE_FUNCTIONS', 'default': available_indexing_functions},
|
||||||
DELETE_STAGING_FILE_AFTER_UPLOAD = getattr(settings, 'DOCUMENTS_DELETE_STAGING_FILE_AFTER_UPLOAD', False)
|
# Upload
|
||||||
STAGING_FILES_PREVIEW_SIZE = getattr(settings, 'DOCUMENTS_STAGING_FILES_PREVIEW_SIZE', '640x480')
|
{'name': u'USE_STAGING_DIRECTORY', 'global_name': u'DOCUMENTS_USE_STAGING_DIRECTORY', 'default': False},
|
||||||
ENABLE_SINGLE_DOCUMENT_UPLOAD = getattr(settings, 'DOCUMENTS_ENABLE_SINGLE_DOCUMENT_UPLOAD', True)
|
{'name': u'STAGING_DIRECTORY', 'global_name': u'DOCUMENTS_STAGING_DIRECTORY', 'default': u'/tmp/mayan/staging', 'exists': True},
|
||||||
UNCOMPRESS_COMPRESSED_LOCAL_FILES = getattr(settings, 'DOCUMENTS_UNCOMPRESS_COMPRESSED_LOCAL_FILES', True)
|
{'name': u'DELETE_STAGING_FILE_AFTER_UPLOAD', 'global_name': u'DOCUMENTS_DELETE_STAGING_FILE_AFTER_UPLOAD', 'default': False},
|
||||||
UNCOMPRESS_COMPRESSED_STAGING_FILES = getattr(settings, 'DOCUMENTS_UNCOMPRESS_COMPRESSED_STAGING_FILES', True)
|
{'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},
|
||||||
# Saving
|
{'name': u'UNCOMPRESS_COMPRESSED_LOCAL_FILES', 'global_name': u'DOCUMENTS_UNCOMPRESS_COMPRESSED_LOCAL_FILES', 'default': True},
|
||||||
CHECKSUM_FUNCTION = getattr(settings, 'DOCUMENTS_CHECKSUM_FUNCTION', default_checksum)
|
{'name': u'UNCOMPRESS_COMPRESSED_STAGING_FILES', 'global_name': u'DOCUMENTS_UNCOMPRESS_COMPRESSED_STAGING_FILES', 'default': True},
|
||||||
UUID_FUNCTION = getattr(settings, 'DOCUMENTS_UUID_FUNCTION', default_uuid)
|
# Saving
|
||||||
|
{'name': u'CHECKSUM_FUNCTION', 'global_name': u'DOCUMENTS_CHECKSUM_FUNCTION', 'default': default_checksum},
|
||||||
# Storage
|
{'name': u'UUID_FUNCTION', 'global_name': u'DOCUMENTS_UUID_FUNCTION', 'default': default_uuid},
|
||||||
STORAGE_BACKEND = getattr(settings, 'DOCUMENTS_STORAGE_BACKEND', FileBasedStorage)
|
# Storage
|
||||||
|
{'name': u'STORAGE_BACKEND', 'global_name': u'DOCUMENTS_STORAGE_BACKEND', 'default': FileBasedStorage},
|
||||||
# Usage
|
# Transformations
|
||||||
PREVIEW_SIZE = getattr(settings, 'DOCUMENTS_PREVIEW_SIZE', '640x480')
|
{'name': u'AVAILABLE_TRANSFORMATIONS', 'global_name': u'DOCUMENTS_AVAILABLE_TRANSFORMATIONS', 'default': available_transformations},
|
||||||
PRINT_SIZE = getattr(settings, 'DOCUMENTS_PREVIEW_SIZE', '1400')
|
{'name': u'DEFAULT_TRANSFORMATIONS', 'global_name': u'DOCUMENTS_DEFAULT_TRANSFORMATIONS', 'default': []},
|
||||||
MULTIPAGE_PREVIEW_SIZE = getattr(settings, 'DOCUMENTS_MULTIPAGE_PREVIEW_SIZE', '160x120')
|
# Usage
|
||||||
THUMBNAIL_SIZE = getattr(settings, 'DOCUMENTS_THUMBNAIL_SIZE', '50x50')
|
{'name': u'PREVIEW_SIZE', 'global_name': u'DOCUMENTS_PREVIEW_SIZE', 'default': u'640x480'},
|
||||||
DISPLAY_SIZE = getattr(settings, 'DOCUMENTS_DISPLAY_SIZE', '1200')
|
{'name': u'PRINT_SIZE', 'global_name': u'DOCUMENTS_PRINT_SIZE', 'default': u'1400'},
|
||||||
RECENT_COUNT = getattr(settings, 'DOCUMENTS_RECENT_COUNT', 40)
|
{'name': u'MULTIPAGE_PREVIEW_SIZE', 'global_name': u'DOCUMENTS_MULTIPAGE_PREVIEW_SIZE', 'default': u'160x120'},
|
||||||
ZOOM_PERCENT_STEP = getattr(settings, 'DOCUMENTS_ZOOM_PERCENT_STEP', 50)
|
{'name': u'THUMBNAIL_SIZE', 'global_name': u'DOCUMENTS_THUMBNAIL_SIZE', 'default': u'50x50'},
|
||||||
ZOOM_MAX_LEVEL = getattr(settings, 'DOCUMENTS_ZOOM_MAX_LEVEL', 200)
|
{'name': u'DISPLAY_SIZE', 'global_name': u'DOCUMENTS_DISPLAY_SIZE', 'default': u'1200'},
|
||||||
ZOOM_MIN_LEVEL = getattr(settings, 'DOCUMENTS_ZOOM_MIN_LEVEL', 50)
|
{'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.')},
|
||||||
ROTATION_STEP = getattr(settings, 'DOCUMENTS_ROTATION_STEP', 90)
|
{'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.')},
|
||||||
# Transformations
|
{'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.')},
|
||||||
AVAILABLE_TRANSFORMATIONS = getattr(settings, 'DOCUMENTS_AVAILABLE_TRANSFORMATIONS', available_transformations)
|
{'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.')},
|
||||||
DEFAULT_TRANSFORMATIONS = getattr(settings, 'DOCUMENTS_DEFAULT_TRANSFORMATIONS', [])
|
#Groups
|
||||||
|
{'name': u'GROUP_SHOW_EMPTY', 'global_name': u'DOCUMENTS_GROUP_SHOW_EMPTY', 'default': True},
|
||||||
#Groups
|
]
|
||||||
GROUP_SHOW_EMPTY = getattr(settings, 'DOCUMENTS_GROUP_SHOW_EMPTY', True)
|
)
|
||||||
|
|
||||||
setting_description = {
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -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)
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from django.shortcuts import render_to_response
|
from django.shortcuts import render_to_response
|
||||||
from django.template import RequestContext
|
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.contrib import messages
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ from permissions import role_list
|
|||||||
from user_management import user_list
|
from user_management import user_list
|
||||||
|
|
||||||
from main.conf.settings import SIDE_BAR_SEARCH
|
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):
|
def is_superuser(context):
|
||||||
@@ -58,3 +60,6 @@ def get_version():
|
|||||||
return ''.join(vers)
|
return ''.join(vers)
|
||||||
|
|
||||||
__version__ = get_version()
|
__version__ = get_version()
|
||||||
|
|
||||||
|
|
||||||
|
#register_setting(u'main', main_settings, u'SIDE_BAR_SEARCH', u'MAIN_SIDE_BAR_SEARCH')
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.utils.functional import lazy
|
from django.utils.functional import lazy
|
||||||
|
from django.conf import settings as django_settings
|
||||||
|
from django.utils.importlib import import_module
|
||||||
|
|
||||||
diagnostics = {}
|
diagnostics = {}
|
||||||
tools = {}
|
tools = {}
|
||||||
reverse_lazy = lazy(reverse, str)
|
reverse_lazy = lazy(reverse, str)
|
||||||
|
settings = {}
|
||||||
|
|
||||||
|
|
||||||
def register_diagnostic(namespace, title, link):
|
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']))
|
link['url'] = link.get('url', reverse_lazy(link['view']))
|
||||||
namespace_dict['links'].append(link)
|
namespace_dict['links'].append(link)
|
||||||
tools[namespace] = namespace_dict
|
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),
|
||||||
|
)
|
||||||
|
|||||||
@@ -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 django.utils.translation import ugettext_lazy as _
|
||||||
|
from main.api import register_setting
|
||||||
|
|
||||||
SIDE_BAR_SEARCH = getattr(settings, 'MAIN_SIDE_BAR_SEARCH', False)
|
register_setting(
|
||||||
|
namespace=u'main',
|
||||||
setting_description = {
|
module=u'main.conf.settings',
|
||||||
'MAIN_SIDE_BAR_SEARCH': _(u'Controls whether the search\
|
name=u'SIDE_BAR_SEARCH',
|
||||||
functionality is provided by a sidebar widget or by a menu entry.')
|
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.')
|
||||||
|
)
|
||||||
|
|||||||
@@ -4,18 +4,18 @@ from django.utils.translation import ugettext_lazy as _
|
|||||||
from django.core.exceptions import PermissionDenied
|
from django.core.exceptions import PermissionDenied
|
||||||
|
|
||||||
from common.utils import exists_with_famfam, return_type
|
from common.utils import exists_with_famfam, return_type
|
||||||
from common.conf import settings as common_settings
|
#from common.conf import settings as common_settings
|
||||||
from documents.conf import settings as documents_settings
|
#from documents.conf import settings as documents_settings
|
||||||
from documents.statistics import get_statistics as documents_statistics
|
#from documents.statistics import get_statistics as documents_statistics
|
||||||
from converter.conf import settings as converter_settings
|
#from converter.conf import settings as converter_settings
|
||||||
from ocr.conf import settings as ocr_settings
|
#from ocr.conf import settings as ocr_settings
|
||||||
from ocr.statistics import get_statistics as ocr_statistics
|
#from ocr.statistics import get_statistics as ocr_statistics
|
||||||
from filesystem_serving.conf import settings as filesystem_serving_settings
|
#from filesystem_serving.conf import settings as filesystem_serving_settings
|
||||||
from dynamic_search.conf import settings as search_settings
|
#from dynamic_search.conf import settings as search_settings
|
||||||
from permissions.api import check_permissions
|
from permissions.api import check_permissions
|
||||||
|
|
||||||
from main.conf import settings as main_settings
|
from main.conf import settings as main_settings
|
||||||
from main.api import diagnostics, tools
|
from main.api import diagnostics, tools, settings
|
||||||
|
|
||||||
|
|
||||||
def home(request):
|
def home(request):
|
||||||
@@ -24,11 +24,9 @@ def home(request):
|
|||||||
|
|
||||||
|
|
||||||
def check_settings(request):
|
def check_settings(request):
|
||||||
|
"""
|
||||||
settings = [
|
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_FUNCTIONS', 'value': documents_settings.AVAILABLE_FUNCTIONS},
|
||||||
{'name': 'DOCUMENTS_METADATA_AVAILABLE_MODELS', 'value': documents_settings.AVAILABLE_MODELS},
|
{'name': 'DOCUMENTS_METADATA_AVAILABLE_MODELS', 'value': documents_settings.AVAILABLE_MODELS},
|
||||||
{'name': 'DOCUMENTS_INDEXING_AVAILABLE_INDEXING_FUNCTIONS', 'value': documents_settings.AVAILABLE_INDEXING_FUNCTIONS},
|
{'name': 'DOCUMENTS_INDEXING_AVAILABLE_INDEXING_FUNCTIONS', 'value': documents_settings.AVAILABLE_INDEXING_FUNCTIONS},
|
||||||
@@ -106,17 +104,30 @@ def check_settings(request):
|
|||||||
# Search
|
# Search
|
||||||
{'name': 'SEARCH_LIMIT', 'value': search_settings.LIMIT},
|
{'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 = {
|
context = {
|
||||||
'title': _(u'settings'),
|
'title': _(u'settings'),
|
||||||
'object_list': settings,
|
'object_list': new_settings,
|
||||||
'hide_link': True,
|
'hide_link': True,
|
||||||
'hide_object': True,
|
'hide_object': True,
|
||||||
'extra_columns': [
|
'extra_columns': [
|
||||||
{'name': _(u'name'), 'attribute': 'name'},
|
{'name': _(u'name'), 'attribute': 'global_name'},
|
||||||
{'name': _(u'value'), 'attribute': lambda x: return_type(x['value'])},
|
{'name': _(u'default'), 'attribute': lambda x: return_type(x['default'])},
|
||||||
{'name': _(u'description'), 'attribute': lambda x: x.get('description', {}).get(x['name'], '')},
|
{'name': _(u'value'), 'attribute': lambda x: return_type(getattr(x['module'], x['name']))},
|
||||||
{'name': _(u'exists'), 'attribute': lambda x: exists_with_famfam(x['value']) if 'exists' in x else ''},
|
{'name': _(u'description'), 'attribute': 'description'},
|
||||||
|
{'name': _(u'exists'), 'attribute': lambda x: exists_with_famfam(getattr(x['module'], x['name'])) if x['exists'] else ''},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from django.template import RequestContext
|
|||||||
from django.contrib import messages
|
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.utils.translation import ugettext as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
from celery.task.control import inspect
|
from celery.task.control import inspect
|
||||||
|
|||||||
@@ -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')},
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|||||||
@@ -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')
|
register_settings(
|
||||||
GRIDFS_PORT = getattr(settings, 'STORAGE_GRIDFS_PORT', 27017)
|
namespace=u'storage',
|
||||||
GRIDFS_DATABASE_NAME = getattr(settings, 'STORAGE_GRIDFS_DATABASE_NAME', u'document_storage')
|
module=u'storage.conf.settings',
|
||||||
|
settings=[
|
||||||
FILESTORAGE_LOCATION = getattr(settings, 'STORAGE_FILESTORAGE_LOCATION', u'document_storage')
|
{'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},
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|||||||
@@ -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:
|
from main.api import register_settings
|
||||||
#amro, bec, bec-green, blue, default, djime-cerulean, drastic-dark,
|
|
||||||
#kathleene, olive, orange, red, reidb-greenish, warehouse
|
|
||||||
|
|
||||||
THEME = getattr(settings, 'WEB_THEME', 'default')
|
register_settings(
|
||||||
ENABLE_SCROLL_JS = getattr(settings, 'WEB_THEME_ENABLE_SCROLL_JS', True)
|
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},
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|||||||
@@ -197,6 +197,7 @@ TEMPLATE_CONTEXT_PROCESSORS = (
|
|||||||
|
|
||||||
# Usage
|
# Usage
|
||||||
#DOCUMENTS_PREVIEW_SIZE = '640x480'
|
#DOCUMENTS_PREVIEW_SIZE = '640x480'
|
||||||
|
#DOCUMENTS_PRINT_SIZE = '640x480'
|
||||||
#DOCUMENTS_THUMBNAIL_SIZE = '50x50'
|
#DOCUMENTS_THUMBNAIL_SIZE = '50x50'
|
||||||
#DOCUMENTS_DISPLAY_SIZE = '1200'
|
#DOCUMENTS_DISPLAY_SIZE = '1200'
|
||||||
#DOCUMENTS_MULTIPAGE_PREVIEW_SIZE = '160x120'
|
#DOCUMENTS_MULTIPAGE_PREVIEW_SIZE = '160x120'
|
||||||
|
|||||||
Reference in New Issue
Block a user