def find_static_files(HORIZON_CONFIG, AVAILABLE_THEMES, THEME_COLLECTION_DIR, ROOT_PATH): import horizon import openstack_dashboard os_dashboard_home_dir = openstack_dashboard.__path__[0] horizon_home_dir = horizon.__path__[0] # note the path must end in a '/' or the resultant file paths will have a # leading "/" file_discovery.populate_horizon_config( HORIZON_CONFIG, os.path.join(horizon_home_dir, 'static/')) # filter out non-angular javascript code and lib HORIZON_CONFIG['js_files'] = ([ f for f in HORIZON_CONFIG['js_files'] if not f.startswith('horizon/') ]) # note the path must end in a '/' or the resultant file paths will have a # leading "/" file_discovery.populate_horizon_config(HORIZON_CONFIG, os.path.join( os_dashboard_home_dir, 'static/'), sub_path='app/') # Discover theme static resources, and in particular any # static HTML (client-side) that the theme overrides theme_static_files = {} theme_info = theme_settings.get_theme_static_dirs(AVAILABLE_THEMES, THEME_COLLECTION_DIR, ROOT_PATH) for url, path in theme_info: discovered_files = {} # discover static files provided by the theme file_discovery.populate_horizon_config(discovered_files, path) # Get the theme name from the theme url theme_name = url.split('/')[-1] # build a dictionary of this theme's static HTML templates. # For each overridden template, strip off the '/templates/' part of the # theme filename then use that name as the key, and the location in the # theme directory as the value. This allows the quick lookup of # theme path for any file overridden by a theme template template_overrides = {} for theme_file in discovered_files['external_templates']: # Example: # external_templates_dict[ # 'framework/widgets/help-panel/help-panel.html' # ] = 'themes/material/templates/framework/widgets/\ # help-panel/help-panel.html' (templates_part, override_path) = theme_file.split('/templates/') template_overrides[override_path] = 'themes/' + \ theme_name + theme_file discovered_files['template_overrides'] = template_overrides # Save all of the discovered file info for this theme in our # 'theme_files' object using the theme name as the key theme_static_files[theme_name] = discovered_files # Add the theme file info to the horizon config for use by template tags HORIZON_CONFIG['theme_static_files'] = theme_static_files
if STATIC_ROOT is None: STATIC_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'static')) if STATIC_URL is None: STATIC_URL = WEBROOT + 'static/' AVAILABLE_THEMES, DEFAULT_THEME = theme_settings.get_available_themes( AVAILABLE_THEMES, CUSTOM_THEME_PATH, DEFAULT_THEME_PATH, DEFAULT_THEME ) STATICFILES_DIRS = get_staticfiles_dirs(STATIC_URL) + \ theme_settings.get_theme_static_dirs( AVAILABLE_THEMES, THEME_COLLECTION_DIR, ROOT_PATH) if CUSTOM_THEME_PATH is not None: logging.warning("CUSTOM_THEME_PATH has been deprecated. Please convert " "your settings to make use of AVAILABLE_THEMES.") if DEFAULT_THEME_PATH is not None: logging.warning("DEFAULT_THEME_PATH has been deprecated. Please convert " "your settings to make use of AVAILABLE_THEMES.") # populate HORIZON_CONFIG with auto-discovered JavaScript sources, mock files, # specs files and external templates. find_static_files(HORIZON_CONFIG) # Ensure that we always have a SECRET_KEY set, even when no local_settings.py
) ) if CUSTOM_THEME_PATH is not None: _LOG.warning("CUSTOM_THEME_PATH has been deprecated. Please convert " "your settings to make use of AVAILABLE_THEMES.") if DEFAULT_THEME_PATH is not None: _LOG.warning("DEFAULT_THEME_PATH has been deprecated. Please convert " "your settings to make use of AVAILABLE_THEMES.") # Discover all the directories that contain static files; at the same time # discover all the xstatic module entry points to embed in our HTML STATICFILES_DIRS = settings_utils.get_xstatic_dirs( XSTATIC_MODULES, HORIZON_CONFIG) STATICFILES_DIRS += theme_settings.get_theme_static_dirs( AVAILABLE_THEMES, THEME_COLLECTION_DIR, ROOT_PATH) # Ensure that we always have a SECRET_KEY set, even when no local_settings.py # file is present. See local_settings.py.example for full documentation on the # horizon.utils.secret_key module and its use. if not SECRET_KEY: if not LOCAL_PATH: LOCAL_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'local') from horizon.utils import secret_key SECRET_KEY = secret_key.generate_or_read_from_file(os.path.join(LOCAL_PATH, '.secret_key_store')) # populate HORIZON_CONFIG with auto-discovered JavaScript sources, mock files, # specs files and external templates.
def find_static_files( HORIZON_CONFIG, AVAILABLE_THEMES, THEME_COLLECTION_DIR, ROOT_PATH): import horizon import openstack_dashboard os_dashboard_home_dir = openstack_dashboard.__path__[0] horizon_home_dir = horizon.__path__[0] # note the path must end in a '/' or the resultant file paths will have a # leading "/" file_discovery.populate_horizon_config( HORIZON_CONFIG, os.path.join(horizon_home_dir, 'static/') ) # filter out non-angular javascript code and lib HORIZON_CONFIG['js_files'] = ([f for f in HORIZON_CONFIG['js_files'] if not f.startswith('horizon/')]) # note the path must end in a '/' or the resultant file paths will have a # leading "/" file_discovery.populate_horizon_config( HORIZON_CONFIG, os.path.join(os_dashboard_home_dir, 'static/'), sub_path='app/' ) # Discover theme static resources, and in particular any # static HTML (client-side) that the theme overrides theme_static_files = {} theme_info = theme_settings.get_theme_static_dirs( AVAILABLE_THEMES, THEME_COLLECTION_DIR, ROOT_PATH) for url, path in theme_info: discovered_files = {} # discover static files provided by the theme file_discovery.populate_horizon_config( discovered_files, path ) # Get the theme name from the theme url theme_name = url.split('/')[-1] # build a dictionary of this theme's static HTML templates. # For each overridden template, strip off the '/templates/' part of the # theme filename then use that name as the key, and the location in the # theme directory as the value. This allows the quick lookup of # theme path for any file overridden by a theme template template_overrides = {} for theme_file in discovered_files['external_templates']: # Example: # external_templates_dict[ # 'framework/widgets/help-panel/help-panel.html' # ] = 'themes/material/templates/framework/widgets/\ # help-panel/help-panel.html' (templates_part, override_path) = theme_file.split('/templates/') template_overrides[override_path] = 'themes/' + \ theme_name + theme_file discovered_files['template_overrides'] = template_overrides # Save all of the discovered file info for this theme in our # 'theme_files' object using the theme name as the key theme_static_files[theme_name] = discovered_files # Add the theme file info to the horizon config for use by template tags HORIZON_CONFIG['theme_static_files'] = theme_static_files