Example #1
0
def index_html(hub_id):
    check_assertion(HubExists(hub_id))
    details = fetch_view(DetailHub(hub_id))
    return flask.render_template('datasets/index.html.j2',
                                 hub_id=hub_id,
                                 is_writer=is_current_hub_writer(),
                                 **details,
                                 **fetch_view(ListDatasets(hub_id)))
Example #2
0
def index_html(hub_id, dataset_id):
    check_assertion(DatasetExists(hub_id, dataset_id))
    details = fetch_view(DetailDataset(hub_id, dataset_id))
    versions = fetch_view(ListVersions(hub_id, dataset_id))
    return flask.render_template('versions/index.html.j2',
                                 hub_id=hub_id,
                                 dataset_id=dataset_id,
                                 is_writer=is_current_hub_writer(),
                                 **details,
                                 **versions)
Example #3
0
def detail_html(hub_id, dataset_id, version):
    check_assertion(VersionExists(hub_id, dataset_id, version))
    dataset_details = fetch_view(DetailDataset(hub_id, dataset_id))
    details = fetch_view(DetailVersion(hub_id, dataset_id, version))
    return flask.render_template('versions/detail.html.j2',
                                 hub_id=hub_id,
                                 dataset_id=dataset_id,
                                 version_int=version,
                                 is_writer=is_current_hub_writer(),
                                 **dataset_details,
                                 **details)
Example #4
0
def new_html(hub_id, dataset_id):
    error = None

    if flask.request.method == 'POST':
        data = flask.request.form
        columns = [
            [
                name,
                data.getlist('column_type[]')[idx],
                data.getlist('column_description[]')[idx],
                data.getlist('column_is_nullable[]')[idx] == 'true',
                data.getlist('column_is_unique[]')[idx] == 'true',
                data.getlist('column_has_pii[]')[idx] == 'true',
            ]
            for (idx, name) in enumerate(data.getlist('column_name[]'))
        ]
        depends_on = [
            [
                hub_id,
                data.getlist('parent_dataset_id[]')[idx],
                int(data.getlist('parent_version[]')[idx]),
            ]
            for (idx, hub_id) in enumerate(data.getlist('parent_hub_id[]'))
        ]

        try:
            execute_action(
                NewDatasetVersion(hub_id,
                                  dataset_id,
                                  data['backend'],
                                  data['path'],
                                  data.getlist('partition_key[]'),
                                  data['description'],
                                  bool(data.get('is_overlapping')),
                                  columns,
                                  depends_on)
            )
            return flask.redirect(flask.url_for('versions.index_html', hub_id=hub_id, dataset_id=dataset_id))
        except DbException as e:
            error = str(e)

    published = fetch_view(PublishedVersions())
    dataset_name = fetch_view(DetailDataset(hub_id, dataset_id))['name']
    return flask.render_template('versions/new.html.j2',
                                 hub_id=hub_id,
                                 dataset_id=dataset_id,
                                 backends=Backends,
                                 types=Types,
                                 error=error,
                                 published=published,
                                 dataset_name=dataset_name,
                                 version={})
Example #5
0
def clone_html(hub_id, dataset_id, version):
    check_assertion(VersionExists(hub_id, dataset_id, version))
    details = fetch_view(DetailVersion(hub_id, dataset_id, version))
    published = fetch_view(PublishedVersions())
    dataset_name = fetch_view(DetailDataset(hub_id, dataset_id))['name']
    return flask.render_template('versions/new.html.j2',
                                 hub_id=hub_id,
                                 dataset_id=dataset_id,
                                 backends=Backends,
                                 types=Types,
                                 published=published,
                                 dataset_name=dataset_name,
                                 **details)
Example #6
0
def list_readable_hubs():
    roles = flask_jwt.get_jwt_claims()
    return {
        'hubs': [
            hub
            for hub in fetch_view(ListHubs())['hubs']
            if AccessLevel.can_read(roles.get(str(hub['id']), 'none'))
        ]
    }
Example #7
0
def discover_json(hub_id, dataset_id, version):
    check_assertion(VersionExists(hub_id, dataset_id, version))
    backend_id = fetch_view(SimpleDetailVersion(hub_id, dataset_id, version))['backend_id']
    queue_id = enqueue_job(backend_id, 'discover_partitions', {
        'hub_id': str(hub_id),
        'dataset_id': str(dataset_id),
        'version': str(version)
    })
    return flask.jsonify({'queue_id': queue_id})
Example #8
0
def discover_html(hub_id, dataset_id, version):
    check_assertion(VersionExists(hub_id, dataset_id, version))
    backend_id = fetch_view(SimpleDetailVersion(hub_id, dataset_id, version))['backend_id']
    enqueue_job(backend_id, 'discover_partitions', {
        'hub_id': str(hub_id),
        'dataset_id': str(dataset_id),
        'version': str(version)
    })
    return flask.redirect(flask.url_for('versions.detail_html', hub_id=hub_id, dataset_id=dataset_id, version=version))
Example #9
0
def verify_json(hub_id, dataset_id, version):
    check_assertion(VersionExists(hub_id, dataset_id, version))
    execute_action(SetQueuedPartitionStatus(hub_id, dataset_id, version))
    backend_id = fetch_view(SimpleDetailVersion(hub_id, dataset_id, version))['backend_id']
    queue_id = enqueue_job(backend_id, 'verify_partitions', {
        'hub_id': str(hub_id),
        'dataset_id': str(dataset_id),
        'version': str(version)
    })
    return flask.jsonify({'queue_id': queue_id})
Example #10
0
def new_html():
    error = None

    if flask.request.method == 'POST':
        data = flask.request.form
        try:
            execute_action(NewHub(data['team_id'], data['name']))
            return flask.redirect(flask.url_for('hubs.index_html'))
        except DbException as e:
            error = str(e)

    teams = fetch_view(ListTeams())['teams']
    return flask.render_template('hubs/new.html.j2', teams=teams, error=error)
Example #11
0
def new_html(hub_id):
    error = None

    if flask.request.method == 'POST':
        data = flask.request.form
        try:
            execute_action(NewDataset(hub_id, data['name']))
            return flask.redirect(flask.url_for('datasets.index_html', hub_id=hub_id))
        except DbException as e:
            error = str(e)

    details = fetch_view(DetailHub(hub_id))
    return flask.render_template('datasets/new.html.j2', hub_id=hub_id, error=error, **details)
Example #12
0
def login_json():
    data = flask.request.json
    email = data.get('email')
    password = data.get('password')

    if not email or not password:
        return flask.jsonify({}), 401

    check_assertion(CorrectPassword(email, password))
    details = fetch_view(DetailUser(email))
    return flask.jsonify({
        'access_token': flask_jwt.create_access_token(details['user_id'],
                                                      user_claims=details['roles'])
    })
Example #13
0
def login_html():
    error = None

    if flask.request.method == 'POST':
        data = flask.request.form
        try:
            check_assertion(CorrectPassword(data['email'], data['password']))

            details = fetch_view(DetailUser(data['email']))
            access_token = flask_jwt.create_access_token(details['user_id'],
                                                         user_claims=details['roles'])

            response = flask.redirect(flask.url_for('hubs.index_html'))
            flask_jwt.set_access_cookies(response, access_token)

            return response

        except AssertionFailure as e:
            error = str(e)

    return flask.render_template('auth/login.html.j2', error=error)
Example #14
0
def render_html(hub_id, dataset_id, connection_id):
    return flask.render_template('connections/render.html.j2',
                                 hub_id=hub_id,
                                 dataset_id=dataset_id,
                                 **fetch_view(RenderConnection(connection_id)))
Example #15
0
def index_json(hub_id):
    check_assertion(HubExists(hub_id))
    return flask.jsonify(fetch_view(ListDatasets(hub_id)))
Example #16
0
def index_json():
    return flask.jsonify(fetch_view(ListTeams()))
Example #17
0
def index_html():
    return flask.render_template('teams/index.html.j2',
                                 **fetch_view(ListTeams()))
Example #18
0
def detail_json(team_id):
    check_assertion(TeamExists(team_id))
    return flask.jsonify(fetch_view(DetailTeam(team_id)))
Example #19
0
def detail_html(team_id):
    check_assertion(TeamExists(team_id))
    details = fetch_view(DetailTeam(team_id))
    return flask.render_template('teams/detail.html.j2',
                                 team_id=team_id,
                                 **details)
Example #20
0
def index_json(hub_id, dataset_id):
    check_assertion(DatasetExists(hub_id, dataset_id))
    return flask.jsonify(fetch_view(ListVersions(hub_id, dataset_id)))
Example #21
0
def detail_json(hub_id, dataset_id, version):
    check_assertion(VersionExists(hub_id, dataset_id, version))
    return flask.jsonify(fetch_view(DetailVersion(hub_id, dataset_id, version)))