Warning

This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for galaxy.managers.configuration

"""
Serializers for Galaxy config file data: ConfigSerializer for all users
and a more expanded set of data for admin in AdminConfigSerializer.

Used by both the API and bootstrapped data.
"""
# TODO: this is a bit of an odd duck. It uses the serializer structure from managers
#   but doesn't have a model like them. It might be better in config.py or a
#   totally new area, but I'm leaving it in managers for now for class consistency.
import logging

from galaxy.managers import base
from galaxy.web.framework.base import server_starttime

log = logging.getLogger(__name__)


[docs]class ConfigSerializer(base.ModelSerializer): """Configuration (galaxy.ini) settings viewable by all users"""
[docs] def __init__(self, app): super(ConfigSerializer, self).__init__(app) self.default_view = 'all' self.add_view('all', list(self.serializers.keys()))
[docs] def default_serializer(self, config, key): return getattr(config, key, None)
[docs] def add_serializers(self): def _defaults_to(default): return lambda item, key, **context: getattr(item, key, default) def _required_attribute(item, key, **context): assert hasattr(item, key) return getattr(item, key) self.serializers = { # TODO: this is available from user data, remove 'is_admin_user' : lambda *a, **c: False, 'brand' : _required_attribute, # TODO: this doesn't seem right 'logo_url' : lambda item, key, **context: self.url_for(item.get(key, '/')), 'logo_src' : lambda item, key, **context: self.url_for('/static/favicon.png'), 'terms_url' : _required_attribute, 'myexperiment_target_url' : _required_attribute, 'wiki_url' : _required_attribute, 'search_url' : _required_attribute, 'mailing_lists' : _defaults_to(self.app.config.mailing_lists_url), 'screencasts_url' : _required_attribute, 'genomespace_ui_url' : _required_attribute, 'citation_url' : _required_attribute, 'support_url' : _required_attribute, 'helpsite_url' : _required_attribute, 'lims_doc_url' : _defaults_to("https://usegalaxy.org/u/rkchak/p/sts"), 'default_locale' : _required_attribute, 'enable_openid' : _required_attribute, 'enable_communication_server' : _required_attribute, 'communication_server_port' : _required_attribute, 'communication_server_host' : _required_attribute, 'persistent_communication_rooms' : _required_attribute, 'allow_user_impersonation' : _required_attribute, 'allow_user_creation' : _defaults_to(False), # schema default is True 'use_remote_user' : _defaults_to(None), # schema default is False; or config.single_user 'enable_oidc' : _required_attribute, 'oidc' : _required_attribute, 'enable_quotas' : _required_attribute, 'remote_user_logout_href' : _required_attribute, 'datatypes_disable_auto' : _required_attribute, 'allow_user_dataset_purge' : _defaults_to(False), # schema default is True 'ga_code' : _required_attribute, 'enable_unique_workflow_defaults' : _required_attribute, 'has_user_tool_filters' : _defaults_to(False), # TODO: is there no 'correct' way to get an api url? controller='api', action='tools' is a hack # at any rate: the following works with path_prefix but is still brittle # TODO: change this to (more generic) upload_path and incorporate config.nginx_upload_path into building it 'nginx_upload_path' : lambda item, key, **context: getattr(item, key, False), 'chunk_upload_size' : _required_attribute, 'ftp_upload_site' : _required_attribute, 'version_major' : _defaults_to(None), 'require_login' : _required_attribute, 'inactivity_box_content' : _required_attribute, 'visualizations_visible' : _required_attribute, 'interactivetools_enable' : _required_attribute, 'message_box_content' : _required_attribute, 'message_box_visible' : _required_attribute, 'message_box_class' : _required_attribute, 'server_startttime' : lambda item, key, **context: server_starttime, 'mailing_join_addr' : _defaults_to('galaxy-announce-join@bx.psu.edu'), # should this be the schema default? 'server_mail_configured' : lambda item, key, **context: bool(getattr(item, 'smtp_server')), 'registration_warning_message' : _required_attribute, 'welcome_url' : _required_attribute, 'show_welcome_with_login' : _defaults_to(True), # schema default is False 'cookie_domain' : _required_attribute, }
[docs]class AdminConfigSerializer(ConfigSerializer): """Configuration attributes viewable only by admin users"""
[docs] def add_serializers(self): super(AdminConfigSerializer, self).add_serializers() def _defaults_to(default): return lambda item, key, **context: getattr(item, key, default) self.serializers.update({ # TODO: this is available from user serialization: remove 'is_admin_user' : lambda *a: True, 'library_import_dir' : _defaults_to(None), 'user_library_import_dir' : _defaults_to(None), 'allow_library_path_paste' : _defaults_to(False), 'allow_user_deletion' : _defaults_to(False), })