55 řádky
1.8 KiB
Python
55 řádky
1.8 KiB
Python
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
|
|
)
|