Documents: Update cache size on setting update

Add a setting callback to update the size of the document
cache when the DOCUMENTS_CACHE_MAXIMUM_SIZE setting is
updated.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2018-12-04 15:48:44 -04:00
parent 1515c0170f
commit 146ebb7032
2 changed files with 21 additions and 9 deletions

View File

@@ -10,9 +10,19 @@ from smart_settings import Namespace
from .literals import (
DEFAULT_DOCUMENTS_CACHE_MAXIMUM_SIZE, DEFAULT_LANGUAGE, DEFAULT_LANGUAGE_CODES
)
from .utils import callback_update_cache_size
namespace = Namespace(name='documents', label=_('Documents'))
setting_document_cache_maximum_size = namespace.add_setting(
global_name='DOCUMENTS_CACHE_MAXIMUM_SIZE',
default=DEFAULT_DOCUMENTS_CACHE_MAXIMUM_SIZE,
help_text=_(
'The threshold at which the DOCUMENT_CACHE_STORAGE_BACKEND will start '
'deleting the oldest document image cache files. Specify the size in '
'bytes.'
), post_edit_function=callback_update_cache_size
)
setting_documentimagecache_storage = namespace.add_setting(
global_name='DOCUMENTS_CACHE_STORAGE_BACKEND',
default='django.core.files.storage.FileSystemStorage', help_text=_(
@@ -27,15 +37,6 @@ setting_documentimagecache_storage_arguments = namespace.add_setting(
'Arguments to pass to the DOCUMENT_CACHE_STORAGE_BACKEND.'
)
)
setting_document_cache_maximum_size = namespace.add_setting(
global_name='DOCUMENTS_CACHE_MAXIMUM_SIZE',
default=DEFAULT_DOCUMENTS_CACHE_MAXIMUM_SIZE,
help_text=_(
'The threshold at which the DOCUMENT_CACHE_STORAGE_BACKEND will start '
'deleting the oldest document image cache files. Specify the size in '
'bytes.'
)
)
setting_disable_base_image_cache = namespace.add_setting(
global_name='DOCUMENTS_DISABLE_BASE_IMAGE_CACHE', default=False,
help_text=_(

View File

@@ -1,5 +1,16 @@
from __future__ import unicode_literals
from django.apps import apps
from .literals import DOCUMENT_IMAGES_CACHE_NAME
def callback_update_cache_size(setting):
Cache = apps.get_model(app_label='common', model_name='Cache')
cache = Cache.objects.get(name=DOCUMENT_IMAGES_CACHE_NAME)
cache.maximum_size = setting.value
cache.save()
def parse_range(astr):
# http://stackoverflow.com/questions/4248399/