def documentation_navigation_entry(): children = [] folders = {} for full_doc_id, doc in all_docs().items(): where_to_append = children folder_id = None folder_id, doc_id = doc.ids if folder_id: folder = folders.get(folder_id) if not folder: folder = navigation.NavigationEntry(label=doc.folder_name, icon='book', description=f"Documentation Folder {doc.folder_name}") children.append(folder) folders[folder_id] = folder where_to_append = folder child = navigation.NavigationEntry( label=doc.doc_name, icon='file', description=f'Documentation for {doc.full_name}', uri_fn=lambda _doc_id=doc_id, _folder_id=folder_id: flask.url_for('docs.document', doc_id=_doc_id, folder_id=_folder_id)) where_to_append.append(child) if isinstance(where_to_append, list) else where_to_append.add_child(child) return navigation.NavigationEntry( label='Documentation', icon='book', rank=100, description='Documentation', uri_fn=lambda: flask.url_for('docs.start_page'), children=children)
def schema_navigation_entry() -> navigation.NavigationEntry: """Defines a part of the navigation tree (needs to be handled by the application). Returns: A mara NavigationEntry object. """ from ..config import data_sets return navigation.NavigationEntry( label='Data sets', icon='book', description='Documentation of attributes and metrics of all data sets', children=[ navigation.NavigationEntry( label='Overview', icon='list', uri_fn=lambda: flask.url_for('mara_schema.index_page')) ] + [ navigation.NavigationEntry( label=data_set.name, icon='book', description=data_set.entity.description, uri_fn=lambda data_set=data_set: flask.url_for( 'mara_schema.data_set_page', id=data_set.id())) for data_set in data_sets() ])
def node_entry(node: pipelines.Node) -> navigation.NavigationEntry: return navigation.NavigationEntry( label=node.id, description=node.description, icon=navigation_icon(node), uri_fn=functools.partial(lambda n: node_url(n), node), children=([navigation.NavigationEntry(label='Overview', icon='list', uri_fn=functools.partial(lambda: node_url(node)))] + [node_entry(node) for node in node.nodes.values()] if isinstance(node, pipelines.Pipeline) else None))
def navigation_entry(): return navigation.NavigationEntry( label='Explore', uri_fn=lambda: flask.url_for('mara_data_explorer.index_page'), icon='table', description='Raw data access & segmentation', children=[navigation.NavigationEntry(label='Overview', icon='list', uri_fn=lambda: flask.url_for('mara_data_explorer.index_page'))] + [navigation.NavigationEntry(label=ds.name, icon='table', uri_fn=lambda id=ds.id: flask.url_for('mara_data_explorer.data_set_page', data_set_id=id)) for ds in config.data_sets()])
def navigation_entry(): return navigation.NavigationEntry( label='DB Schema', icon='star', description='Data base schemas', children=[ navigation.NavigationEntry( label=alias, icon='database', description=f'The schema of the {alias} db', uri_fn=lambda current_db=alias: flask.url_for('mara_db.index_page', db_alias=current_db)) for alias, db in config.databases().items() if (isinstance(db, dbs.PostgreSQLDB) and not isinstance(db, dbs.RedshiftDB)) or isinstance(db, dbs.MysqlDB) # for now, only show postgres and mysql schemas ])
def navigation_root() -> navigation.NavigationEntry: """ The root of the navigation tree (only it's children will be displayed). All other defined entries that are not a child of entries in that list will be appended to that """ return navigation.NavigationEntry(label='Root', children=[ navigation.NavigationEntry( label='Home', uri_fn=lambda: '/', icon='home', rank=-1) ])
def navigation_root() -> navigation.NavigationEntry: def navigation_entries(module): return [fn() for fn in module.MARA_NAVIGATION_ENTRY_FNS] return navigation.NavigationEntry( label='Root', children=(navigation_entries(data_integration) + [ navigation.NavigationEntry('Settings', icon='cog', description='ACL & Configuration', rank=100, children=navigation_entries(mara_app) + navigation_entries(mara_acl)) ]))
def package_configs_navigation_entry(): return navigation.NavigationEntry( label='Package Configs', icon='cogs', rank=100, description='Package config functions with project replacements', uri_fn=lambda: flask.url_for('mara_app.configuration_page'), children=[ navigation.NavigationEntry( label=module_name, icon='list', description=config['doc'], uri_fn=lambda _module_name=module_name: flask.url_for( 'mara_app.configuration_page', _anchor=_module_name)) for module_name, config in sorted(_config_modules().items()) ])
def navigation_entry(): return navigation.NavigationEntry( label='Users & Permissions', uri_fn=lambda: flask.url_for('mara_acl.acl_page'), icon='users', rank=200, description='User management, roles & permissions')
def navigation_root() -> navigation.NavigationEntry: return navigation.NavigationEntry( label='Root', children=[ data_integration.MARA_NAVIGATION_ENTRIES().get('Data Integration'), data_sets.MARA_NAVIGATION_ENTRIES().get('Data Sets'), mara_db.MARA_NAVIGATION_ENTRIES().get('DB Schema'), navigation.NavigationEntry( 'Settings', icon='cog', description='ACL & Configuration', rank=100, children=[ mara_app.MARA_NAVIGATION_ENTRIES().get('Package Configs'), mara_acl.MARA_NAVIGATION_ENTRIES().get('Acl') ]) ])
def navigation_entry_fns(): return [ navigation.NavigationEntry( 'Configuration', uri_fn=lambda: flask.url_for('.configuration_page'), icon='cogs', rank=100), ]
def navigation_root() -> navigation.NavigationEntry: return navigation.NavigationEntry( label='Root', children=[ mara_pipelines.MARA_NAVIGATION_ENTRIES().get('Pipelines'), mara_data_explorer.MARA_NAVIGATION_ENTRIES().get('Explore'), mara_db.MARA_NAVIGATION_ENTRIES().get('DB Schema'), navigation.NavigationEntry( 'Settings', icon='cog', description='ACL & Configuration', rank=100, children=[ mara_app.MARA_NAVIGATION_ENTRIES().get('Package Configs'), mara_acl.MARA_NAVIGATION_ENTRIES().get('Acl') ]) ])
def navigation_entry(): return navigation.NavigationEntry( label='DB Schema', icon='star', description='Schemas of all databases connections', children=[ navigation.NavigationEntry( label='Overview', icon='list', uri_fn=lambda: flask.url_for('mara_db.index_page')) ] + [ navigation.NavigationEntry( label=alias, icon='database', description=f'The schema of the {alias} db', uri_fn=lambda current_db=alias: flask.url_for( 'mara_db.schema_page', db_alias=current_db)) for alias, db in config.databases().items() if supports_extract_schema(db) ])
def navigation_root() -> navigation.NavigationEntry: return navigation.NavigationEntry( label='Root', children=[ navigation.NavigationEntry(label='Welcome', icon='home', uri_fn=lambda: '/', description='Welcome !'), *mara_metabase.MARA_NAVIGATION_ENTRIES().values(), *mara_mondrian.MARA_NAVIGATION_ENTRIES().values(), *mara_data_explorer.MARA_NAVIGATION_ENTRIES().values(), *mara_schema.MARA_NAVIGATION_ENTRIES().values(), *mara_pipelines.MARA_NAVIGATION_ENTRIES().values(), *mara_db.MARA_NAVIGATION_ENTRIES().values(), navigation.NavigationEntry( 'Settings', icon='cog', description='ACL & Configuration', rank=100, children=[ *mara_app.MARA_NAVIGATION_ENTRIES().values(), *mara_acl.MARA_NAVIGATION_ENTRIES().values() ]) ])
def navigation_entry(): return navigation.NavigationEntry( label='Metabase', uri_fn=lambda: flask.url_for('mara_metabase.metabase'), icon='bar-chart', description='Company wide dashboards, pivoting & ad hoc analysis')
except Exception: value = 'error calling function' config_modules[module_name]['functions'][member_name] \ = {'doc': member.__doc__ or '', 'value': value} def render_function(function_name, function): return _.tr[ _.td(style='max-width:15%;')[_.div(style='display:block;overflow:hidden;text-overflow:ellipsis')[ function_name.replace('_', '_<wbr/>')]], _.td(style='width:30%')[_.em[function['doc']]], _.td(style='width:55%;')[ _.pre(style='margin:0px;padding-top:3px;overflow:hidden;text-overflow:ellipsis;')[ html.escape(pprint.pformat(function['value']))]], ] def render_module(module_name, config): return [_.h3[module_name], _.p[str(config['doc'])], _.table(_class='table table-hover table-sm', style='table-layout:fixed')[ [render_function(function_name, function) for function_name, function in config['functions'].items()]]] if config['functions'] else '' return response.Response( [render_module(module_name, config) for module_name, config in sorted(config_modules.items())], title='Mara Configuration') navigation_entry = navigation.NavigationEntry('Configuration', uri_fn=lambda: flask.url_for('mara_app.configuration_page'), icon='cogs', rank=100)
def forecasts_navigation_entry(): return navigation.NavigationEntry( label='Forecasts', uri_fn=lambda: flask.url_for('forecasts.view_plots'), icon='fast-forward', description='KPI forecasting')
def navigation_entry(): return navigation.NavigationEntry( 'Configuration (via config system)', uri_fn=lambda: flask.url_for('mara_config.configuration_page'), icon='cogs', rank=100)