예제 #1
0
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)
예제 #2
0
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()
        ])
예제 #3
0
 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))
예제 #4
0
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()])
예제 #5
0
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
        ])
예제 #6
0
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)
                                      ])
예제 #7
0
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))
        ]))
예제 #8
0
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())
        ])
예제 #9
0
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')
예제 #10
0
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')
                ])
        ])
예제 #11
0
def navigation_entry_fns():
    return [
        navigation.NavigationEntry(
            'Configuration',
            uri_fn=lambda: flask.url_for('.configuration_page'),
            icon='cogs',
            rank=100),
    ]
예제 #12
0
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')
                ])
        ])
예제 #13
0
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()
                ])
        ])
예제 #15
0
파일: views.py 프로젝트: mara/mara-metabase
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')
예제 #16
0
파일: views.py 프로젝트: jankatins/mara-app
                    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)
예제 #17
0
def forecasts_navigation_entry():
    return navigation.NavigationEntry(
        label='Forecasts',
        uri_fn=lambda: flask.url_for('forecasts.view_plots'),
        icon='fast-forward',
        description='KPI forecasting')
예제 #18
0
def navigation_entry():
    return navigation.NavigationEntry(
        'Configuration (via config system)',
        uri_fn=lambda: flask.url_for('mara_config.configuration_page'),
        icon='cogs',
        rank=100)