from django.conf import settings from django.utils.translation import gettext as _ import logging import importlib from mycreole import url_upload from themes import color_icon_url try: from config import APP_NAME as ROOT_LOGGER_NAME except ImportError: ROOT_LOGGER_NAME = 'root' logger = logging.getLogger(ROOT_LOGGER_NAME).getChild(__name__) NEW_ATTACHMENT_UID = 'new_attachment' def context_adaption(context, request, title, rel_path, **kwargs): def get_method(import_string): class_data = import_string.split(".") module_path = ".".join(class_data[:-1]) class_str = class_data[-1] # module = importlib.import_module(module_path) return getattr(module, class_str) def log_warning(method_name, e): logger.warning('Could not import %s method for extending bars: %s - %s', method_name, type(e).__name__, e) context.set_additional_title(title) for key in ["menubar", "navibar"]: try: method_name = settings.MYCREOLE_BAR[key] except (AttributeError, KeyError) as e: log_warning(key, e) else: method = get_method(method_name) method(context, request, caller_name="attachments") add_new(request, context[context.ACTIONBAR], rel_path, kwargs.get('next')) for key in kwargs: context[key] = kwargs[key] logger.debug("context adapted: %s", repr(context)) def add_new(request, bar, rel_path, nxt): bar.append_entry( NEW_ATTACHMENT_UID, # uid _('New Attachment'), # name color_icon_url(request, 'plus.png'), # icon url_upload(request, rel_path, nxt), # url True, # left False # active )