Beispiel #1
0
def change_workspace_permission(options, target_user_info, permissions,
                                backend_function):
    if isinstance(target_user_info, basestring):
        target_users = b.get_users(unicode(target_user_info))
        if len(target_users) == 0:
            print 'Target user {0} not found.'.format(target_user_info)
            return
        if len(target_users) > 1:
            print 'Multiple target users with username {0} found - ' \
                  'this is unsupported.'.format(target_user_info)
            return
        target_user_info = target_users[0]['user_id']
    print backend_function(
        options.user_id,
        options.workspace_id,
        target_user_info,
        permissions
    )
    b.commit()
Beispiel #2
0
def main():
    options, args = parser.parse_args()

    b.initialize(backend_settings)

    cli_settings = dict(ini.items('cli'))

    username = get_username(options, cli_settings)

    if 'remote' in backend_settings and backend_settings['remote']:
        if hasattr(options, 'initial_token') and \
           options.initial_token is not None:
            try:
                b.trade_initial_token(username, options.initial_token)
            except b.RemoteException as e:
                if e.code == 403:
                    print 'Your initial token was not accepted.  Please ' \
                          'check with your pydidit administrator.'
                    sys.exit(1)
                else:
                    raise e
            print 'Successfully authenticated!'
            return
        else:
            if not b.check_access_token(username):
                print 'Please use the --trade-initial-token option to authenticate.'
                sys.exit(1)

    if options.objects is None or len(options.objects) == 0:
        if options.operations is None or 'search' not in options.operations:
            options.objects = ['Todo']

    # Check for add user request
    if hasattr(options, 'add_user') and options.add_user is not None:
        b.create_user(unicode(options.add_user))
        b.commit()
        return

    if username is None:
        print 'No username defined'
        return

    users = b.get_users(unicode(username))
    if len(users) == 0:
        print 'User {0} not found.'.format(username)
        return
    if len(users) > 1:
        print 'Multiple users with username {0} found - this is unsupported.'\
            .format(username)
        return
    options.user_id = users[0]['user_id']

    workspace_name = cli_settings['workspace'] \
                     if 'workspace' in cli_settings \
                     else None
    if hasattr(options, 'workspace_name') and options.workspace_name is not None:
        workspace_name = options.workspace_name

    # If we just want to operate on workspaces, ignore the configured
    # workspace
    if len(options.objects) != 1 or options.objects[0] != 'Workspace':
        workspaces = b.get_workspaces(options.user_id, unicode(workspace_name))
        if len(workspaces) == 0:
            print 'Workspace {0} not found.'.format(workspace_name)
            return
        if len(workspaces) > 1:
            print 'Multiple workspaces with name {0} found - this is ' \
                  'unsupported.'.format(workspace_name)
            return
        options.workspace_id = workspaces[0]['id']

        # Next, check for add workspace permission or revoke workspace permission
        # request
        handled_workspace_permission = False
        for workspace_permission in (
            'add_workspace_permission',
            'revoke_workspace_permission'
        ):
            if getattr(options, workspace_permission, None) is not None:
                globals()[workspace_permission](options)
                handled_workspace_permission = True

        # Don't keep going if we did workspace permission work
        if handled_workspace_permission:
            return

    if options.operations is None:
        read(options, args)
    elif len(options.operations) > 1:
        raise Exception('Only one operation at a time supported.')
    else:
        if options.operations[0] == 'read':
            read(options, args)
        elif options.operations[0] == 'add':
            add(options, args)
        elif options.operations[0] == 'update':
            update(options, args)
        elif options.operations[0] == 'delete':
            delete(options, args)
        elif options.operations[0] == 'complete':
            complete(options, args)
        elif options.operations[0] == 'float':
            b.move(options.user_id, options.workspace_id, int(args[0]),
                direction='float', model_name=options.objects[0], all_the_way=options.top)
            b.commit()
        elif options.operations[0] == 'sink':
            b.move(options.user_id, options.workspace_id, int(args[0]),
                direction='sink', model_name=options.objects[0], all_the_way=options.bottom)
            b.commit()
        elif options.operations[0] == 'move':
            b.move(options.user_id, options.workspace_id, int(args[0]),
                int(args[1]), model_name=options.objects[0])
            b.commit()
        elif options.operations[0] == 'link':
            lnk(options, args)
        elif options.operations[0] == 'unlink':
            lnk(options, args)
        elif options.operations[0] == 'search':
            search(options, args)
Beispiel #3
0
def main():
    options, args = parser.parse_args()

    if options.objects is None or len(options.objects) == 0:
        if options.operations is None or 'search' not in options.operations:
            options.objects = ['Todo']

    config = StringIO()
    ini.write(config)
    config.seek(0)
    b.initialize(external_config_fp=config)

    cli_settings = dict(ini.items('cli'))

    # First, check for add user request
    if hasattr(options, 'add_user') and options.add_user is not None:
        b.create_user(unicode(options.add_user))
        b.commit()
        return

    username = \
        cli_settings['username'] if 'username' in cli_settings else None
    if hasattr(options, 'username') and options.username is not None:
        username = options.username

    if username is None:
        print 'No username defined'
        return

    users = b.get_users(unicode(username))
    if len(users) == 0:
        print 'User {0} not found.'.format(username)
        return
    if len(users) > 1:
        print 'Multiple users with username {0} found - this is unsupported.'\
            .format(username)
        return
    options.user_id = users[0]['user_id']

    workspace_name = cli_settings['workspace'] \
                     if 'workspace' in cli_settings \
                     else None
    if hasattr(options, 'workspace_name') and options.workspace_name is not None:
        workspace_name = options.workspace_name

    workspaces = b.get_workspaces(options.user_id, unicode(workspace_name))
    if len(workspaces) == 0:
        print 'Workspace {0} not found.'.format(workspace_name)
        return
    if len(workspaces) > 1:
        print 'Multiple workspaces with name {0} found - this is ' \
              'unsupported.'.format(workspace_name)
        return
    options.workspace_id = workspaces[0]['workspace_id']

    # Next, check for add workspace permission or revoke workspace permission
    # request
    handled_workspace_permission = False
    for workspace_permission in (
        'add_workspace_permission',
        'revoke_workspace_permission'
    ):
        if getattr(options, workspace_permission, None) is not None:
            globals()[workspace_permission](options)
            handled_workspace_permission = True

    # Don't keep going if we did workspace permission work
    if handled_workspace_permission:
        return

    if options.operations is None:
        read(options, args)
    elif len(options.operations) > 1:
        raise Exception('Only one operation at a time supported.')
    else:
        if options.operations[0] == 'read':
            read(options, args)
        elif options.operations[0] == 'add':
            add(options, args)
        elif options.operations[0] == 'update':
            update(options, args)
        elif options.operations[0] == 'delete':
            delete(options, args)
        elif options.operations[0] == 'complete':
            complete(options, args)
        elif options.operations[0] == 'float':
            b.move(options.user_id, options.workspace_id, int(args[0]),
                direction='float', model_name=options.objects[0], all_the_way=options.top)
            b.commit()
        elif options.operations[0] == 'sink':
            b.move(options.user_id, options.workspace_id, int(args[0]),
                direction='sink', model_name=options.objects[0], all_the_way=options.bottom)
            b.commit()
        elif options.operations[0] == 'move':
            b.move(options.user_id, options.workspace_id, int(args[0]),
                int(args[1]), model_name=options.objects[0])
            b.commit()
        elif options.operations[0] == 'link':
            lnk(options, args)
        elif options.operations[0] == 'unlink':
            lnk(options, args)
        elif options.operations[0] == 'search':
            search(options, args)