コード例 #1
0
def add_package(args):
    io.start('Adding package %s' % highlight(args.id))

    data = {'id': args.id, 'label': args.id}

    if args.parent:
        data['parent'] = args.parent

    post(api.rest1('sys_md_Package'), data=data)
コード例 #2
0
def _add_role_membership(user: User, role: Role):
    """
    Adds a membership manually because the identities API can't add memberships to non-group roles.
    """
    io.start('Making user {} a member of role {}'.format(
        highlight(user.username), highlight(role.name)))
    membership = {'user': user.id, 'role': role.id, 'from': timestamp()}
    data = {'entities': [membership]}
    post(api.rest2('sys_sec_RoleMembership'), data=data)
コード例 #3
0
def add_role(args):
    role_name = to_role_name(args.rolename)
    io.start('Adding role {}'.format(highlight(role_name)))

    role = {'name': role_name, 'label': role_name}

    if args.includes:
        role_names = [to_role_name(name) for name in args.includes]
        role['includes'] = _get_role_ids(role_names)

    if args.group:
        group_name = _to_group_name(args.group)
        role['group'] = _get_group_id(group_name)

    data = {'entities': [role]}
    post(api.rest2('sys_sec_Role'), data=data)
コード例 #4
0
def add_token(args):
    io.start('Adding token %s for user %s' %
             (highlight(args.token), highlight(args.user)))

    user = get(api.rest2('sys_sec_User'),
               params={
                   'attrs': 'id',
                   'q': 'username=={}'.format(args.user)
               })
    if user.json()['total'] == 0:
        raise McmdError('Unknown user %s' % args.user)

    user_id = user.json()['items'][0]['id']

    data = {'User': user_id, 'token': args.token}

    post(api.rest1('sys_sec_Token'), data=data)
コード例 #5
0
def add_user(args):
    io.start('Adding user %s' % highlight(args.username))

    password = args.set_password if args.set_password else args.username
    email = args.with_email if args.with_email else args.username + '@molgenis.org'
    active = not args.is_inactive
    superuser = args.is_superuser
    ch_pwd = args.change_password

    post(api.rest1('sys_sec_User'),
         data={
             'username': args.username,
             'password_': password,
             'changePassword': ch_pwd,
             'Email': email,
             'active': active,
             'superuser': superuser
         })
コード例 #6
0
def enable_theme(args):
    """
    enable_theme enables a bootstrap theme
    :param args: commandline arguments containing the id of the theme (without .css)
    :exception McmdError: when applying the theme fails
    :return None
    """
    theme = args.theme.replace('.css', '').replace('.min', '')
    io.start('Applying theme {}'.format(highlight(theme)))
    # Resource can be bootstrap-name.min.css (if molgenis theme), or name.min.css (if uploaded .min.css), or
    # name.css (if uploaded as .css).
    if one_resource_exists([
            theme + '.min.css', theme + '.css',
            'bootstrap-' + theme + '.min.css'
    ], ResourceType.THEME):
        # Molgenis themes start with bootstrap- but this is stripped from the name in the theme manager
        try:
            post(api.set_theme(), data=theme)
        except:
            post(api.set_theme(), data=theme.split('bootstrap-')[1])
    else:
        raise McmdError(
            'Applying theme failed. No themes found containing {} in the name'.
            format(args.theme, 'sys_set_StyleSheet'))
コード例 #7
0
def _import_from_url(args):
    file_url = args.resource
    file_name = file_url.split("/")[-1]
    io.start('Importing from URL %s' % highlight(file_url))

    params = {
        'action': _get_import_action(file_name),
        'metadataAction': 'upsert'
    }

    if args.to_package:
        params['packageId'] = args.to_package

    params['url'] = file_url

    response = post(api.import_by_url(), params=params)
    import_run_url = urljoin(config.get('host', 'selected'), response.text)
    status, message = _poll_for_completion(import_run_url)
    if status == 'FAILED':
        raise McmdError(message)
コード例 #8
0
def add_group(args):
    group_name = _to_group_name(args.name)
    io.start('Adding group %s' % highlight(group_name))
    post(api.group(), data={'name': group_name, 'label': args.name})
コード例 #9
0
def _add_group_role_membership(user: User, group: Group, role: Role):
    io.start('Making user {} a member of role {}'.format(
        highlight(user.username), highlight(role.name)))
    url = api.member(group.name)
    post(url, data={'username': user.username, 'roleName': role.name})
コード例 #10
0
def disable_row_level_security(entity_type_id: str):
    """Disables row level security on an entity type."""

    post(api.permission_manager_rls(), data={'id': entity_type_id,
                                             'rlsEnabled': False})
コード例 #11
0
def enable_rls(args):
    io.start('Enabling row level security on entity type %s' %
             highlight(args.entity))

    ensure_resource_exists(args.entity, ResourceType.ENTITY_TYPE)
    post(api.rls(), data={'id': args.entity, 'rlsEnabled': True})