コード例 #1
0
def update_document_permissions(api_client,
                                exchange_id,
                                document_id,
                                add_permissions=None,
                                revoke_permissions=None):
    xml_data = ['<permissionsUpdateRequest><permissionUpdate>']

    xml_data.append(to_xml({
        'id': document_id,
        'type': 'DOCUMENT'
    }, 'entityId'))

    if add_permissions:
        for p in add_permissions:
            xml_data.append(to_xml(p, 'permissionInfo'))

    if revoke_permissions:
        for p in revoke_permissions:
            p = p.copy()
            p['permission'] = 'REVOKED'
            p['drm'] = 'NONE'
            xml_data.append(to_xml(p, 'permissionInfo'))

    xml_data.append('</permissionUpdate></permissionsUpdateRequest>')

    response = api_client.update('/services/workspaces/permissions',
                                 params={'workspaceId': exchange_id},
                                 data={'xml': ''.join(xml_data)},
                                 api_version=1)

    response.check(200, 'text/xml')

    data = response.data()

    return data
コード例 #2
0
ファイル: groups.py プロジェクト: ilapi/intralinks-sdk-python
def update_group(api_client, exchange_id, group, remove_group_members=None, add_group_members=None):
    data = [
        '<workspaceGroupUpdateRequest>',
        to_xml(group, ['workspaceGroup'])
    ]

    if remove_group_members is not None and len(remove_group_members) > 0:
        data.append(to_xml(remove_group_members, ['workspaceUser', 'removeWorkspaceUsers']))

    if add_group_members is not None and len(add_group_members) > 0:
        data.append(to_xml(add_group_members, ['workspaceUser', 'addWorkspaceUsers']))
    
    data.append('</workspaceGroupUpdateRequest>')

    response = api_client.update(
        '/v1/services/workspaces/workspaceGroups', 
        params={
            'workspaceId':exchange_id,
            'workspaceGroupId':group['id']
        }, 
        data={'xml':''.join(data)},
        api_version=1
    )
    
    response.check(200, 'text/xml')

    data = response.data()
    
    return get_node_as_item(data, ('workspaceGroups', 'workspaceGroupPartial'))
コード例 #3
0
def login(api_client, email, password):
    """
    How to allow concurrent login?
    """

    timestamp = time.time()

    response = api_client.create(
        '/v1/ILCGLServices/session',
        data={
            'xml':
            to_xml(
                {
                    'email': email,
                    'password': password,
                    'apiKey': api_client.config.api_key
                }, 'createSession')
        },
        authenticated=False,
        api_version=1)

    response.assert_status_code(200)
    response.assert_content_type('text/xml')

    data = response.data()

    if api_client.session is None:
        api_client.session = intralinks.api.v1.Session()

    try:
        response.assert_no_errors(200)

        api_client.session.session_id = data['ssoSessionId']
        api_client.session.timestamp = timestamp
        api_client.session.email = email
        api_client.password = None
        api_client.session.is_secureid_required = False
        api_client.session.is_already_logged_in = False

    except Exception as e:
        status = data['status']

        if 'subcode' in status:
            if status['subcode'] == '011':  # secure id required
                api_client.session.email = email
                api_client.session.password = password
                api_client.session.is_secureid_required = True

                raise SecureIdRequiredException()

            elif status['subcode'] == '018':  # concurrent login
                api_client.session.email = email
                api_client.session.password = password
                api_client.session.is_already_logged_in = True

                raise AlreadyLoggedInException()

        raise e

    return data
コード例 #4
0
def update_exchange(api_client, exchange, is_phase_updated=False):
    if is_phase_updated:
        data = {
            k: v
            for k, v in exchange.items() if k in
            {'workspaceName', 'phase', 'host', 'version', 'id', 'description'}
        }
    else:
        # if phase has not been updated and phase is posted to server, then error: <message>Phase updation failed</message><subcode>6-22</subcode>
        data = {
            k: v
            for k, v in exchange.items()
            if k in {'workspaceName', 'host', 'version', 'id', 'description'}
        }

    response = api_client.update(
        '/services/workspaces',
        params={'workspaceId': exchange['id']},
        data={'xml': to_xml(data, ['workspace', 'workspaceUpdateRequest'])},
        api_version=1)

    response.check(200, 'text/xml')

    data = response.data()

    return data
コード例 #5
0
def special_login(api_client,
                  email,
                  password,
                  secure_id=None,
                  end_other_sessions=False):
    timestamp = time.time()

    response = api_client.create(
        '/services/logon',
        data={
            'xml':
            to_xml(
                {
                    'username': email,
                    'password': password,
                    'securID': secure_id,
                    'continueMultiLogon': end_other_sessions
                }, 'logonRequest')
        },
        authenticated=False,
        api_version=1)

    response.check(200, 'text/xml')

    data = response.data()

    if api_client.session is None:
        api_client.session = intralinks.api.v1.Session()

    api_client.session.session_id = data['sessionId']
    api_client.session.timestamp = timestamp

    return data
コード例 #6
0
def create_exchange_member(api_client,
                           exchange_id,
                           exchange_member=None,
                           groups=None):
    exchange_member_data = entity_to_dict(exchange_member)

    user_data = entity_to_dict(exchange_member_data.pop('user', dict()))
    exchange_member_data.update(user_data)

    data = {'workspaceUsers': {'workspaceUser': exchange_member_data}}

    if groups is not None and len(groups) > 0:
        data['workspaceGroups'] = {'workspaceUserGroup': []}

        for g in groups:
            data['workspaceGroups']['workspaceUserGroup'] = {
                'emailIds': {
                    'emailId': exchange_member_data['user']
                },
                'workspaceGroupId': g['id']
            }

    response = api_client.create(
        '/v1/services/workspaces/workspaceUsers',
        params={'workspaceId': exchange_id},
        data={'xml': to_xml(data, ['workspaceUserCreateRequest'])},
        api_version=1)

    response.check(200, 'text/xml')

    data = response.data()

    return get_node_as_item(data,
                            ('workspaceUserPartials', 'workspaceUserPartial'))
コード例 #7
0
def create_documents(api_client, exchange_id, documents, batch_id=None):
    #keys = {'name', 'parentId', 'note', 'effectiveDate'}

    created_documents = [entity_to_dict(d) for d in documents]

    xml_data = ['<documentCreateRequest>']

    for f in created_documents:
        xml_data.append(to_xml(f, ['document', 'documentCreate']))

    xml_data.append('</documentCreateRequest>')

    response = api_client.create('/services/workspaces/documents',
                                 params={
                                     'workspaceId': exchange_id,
                                     'batchId': batch_id,
                                 },
                                 data={'xml': ''.join(xml_data)},
                                 api_version=1)

    response.check(200, 'text/xml')

    data = response.data()

    return get_node_as_list(data, 'documentPartial')
コード例 #8
0
def create_user_account(api_client, user):
    user_data = entity_to_dict(user)

    response = api_client.create(
        '/services/users',
        data={'xml': to_xml(user_data, ['user', 'userRequest'])},
        api_version=1)

    response.check(200, 'text/xml')

    data = response.data()

    return data
コード例 #9
0
def enter_exchange(api_client, exchange_id, accept_splash=None):
    response = api_client.create('/services/workspaces/entry',
                                 params={'workspaceId': exchange_id},
                                 data={
                                     'xml':
                                     to_xml({'acceptSplash': accept_splash},
                                            'workspaceEntryRequest')
                                 },
                                 api_version=1)

    data = response.data()

    return get_node_as_item(data, 'state')
コード例 #10
0
def update_folder(api_client, exchange_id, folder):
    folder_data = entity_to_dict(folder)

    response = api_client.update(
        '/v1/services/workspaces/folders',
        params={'workspaceId': exchange_id},
        data={'xml': to_xml(folder_data, ['folder', 'folderUpdateRequest'])},
        api_version=1)

    response.check(200, 'text/xml')

    data = response.data()

    return get_node_as_item(data, 'folderPartial')
コード例 #11
0
def set_custom_alerts(api_client, custom_alert):
    response = api_client.create(
        '/services/customAlerts',
        data={
            'xml':
            to_xml({'customAlerts': {
                'customAlert': custom_alert
            }}, 'customAlertCreateRequest')
        },
        api_version=1)

    response.check(200, 'text/xml')

    data = response.data()

    return data
コード例 #12
0
def create_document(api_client,
                    exchange_id,
                    document,
                    file=None,
                    permissions=None,
                    batch_id=None):
    document_data = entity_to_dict(document)

    data = {'document': document_data}

    if permissions:
        if isinstance(permissions, list):
            data['permissions'] = {
                'permissioned': [{
                    'permissionInfo': p
                } for p in permissions]
            }
        else:
            data['permissions'] = {
                'permissioned': {
                    'permissionInfo': permissions
                }
            }

    files = {
        'documentFile':
        (os.path.basename(file.name), file, 'application/octet-stream')
    } if file is not None else None

    response = api_client.create(
        '/services/workspaces/documents',
        params={
            'workspaceId': exchange_id,
            'batchId': batch_id,
        },
        data={
            'xml':
            ''.join(to_xml(data, ['documentCreate', 'documentCreateRequest']))
        },
        files=files,
        api_version=1)

    response.check(200, 'text/xml')

    data = response.data()

    return get_node_as_item(data, 'documentPartial')
コード例 #13
0
ファイル: groups.py プロジェクト: ilapi/intralinks-sdk-python
def create_group(api_client, exchange_id, group):  
    group_data = entity_to_dict(group)

    response = api_client.create(
        '/v1/services/workspaces/workspaceGroups', 
        params={
            'workspaceId':exchange_id
        }, 
        data={'xml':to_xml(group_data, ['workspaceGroup', 'workspaceGroups', 'workspaceGroupCreateRequest'])},
        api_version=1
    )
    
    response.check(200, 'text/xml')

    data = response.data()
    
    return get_node_as_item(data, ('workspaceGroups', 'workspaceGroupPartial'))
コード例 #14
0
def update_exchange_settings(api_client, exchange_id, settings):
    response = api_client.update(
        '/v1/services/workspaces/workspaceSettings',
        params={'workspaceId': exchange_id},
        data={
            'xml':
            to_xml(settings, [
                'workspaceSetting', 'workspaceSettings',
                'workspaceSettingsUpdateRequest'
            ])
        },
        api_version=1)

    response.check(200, 'text/xml')

    data = response.data()

    return data
コード例 #15
0
def update_document(api_client,
                    exchange_id,
                    document,
                    file=None,
                    permissions=None):
    document_data = entity_to_dict(document)

    data = {'document': document_data}

    if permissions:
        if isinstance(permissions, list):
            data['permissions'] = {
                'permissioned': [{
                    'permissionInfo': p
                } for p in permissions]
            }
        else:
            data['permissions'] = {
                'permissioned': {
                    'permissionInfo': permissions
                }
            }

    files = {
        'documentFile':
        (os.path.basename(file.name), file, 'application/octet-stream')
    } if file is not None else None

    response = api_client.update(
        '/services/workspaces/documents',
        params={'workspaceId': exchange_id},
        data={'xml': ''.join(to_xml(data, 'documentUpdateRequest'))},
        files=files,
        api_version=1)

    response.assert_status_code(200)
    response.assert_content_type('text/xml')
    response.assert_no_errors()

    data = response.data()

    return get_node_as_item(data, 'documentPartial')
コード例 #16
0
def create_folders(api_client, exchange_id, folders):
    created_folders = [entity_to_dict(f) for f in folders]

    xml_data = ['<folderCreateRequest>']

    for f in created_folders:
        xml_data.append(to_xml(f, ['folder', 'folderCreate']))

    xml_data.append('</folderCreateRequest>')

    response = api_client.create('/v1/services/workspaces/folders',
                                 params={'workspaceId': exchange_id},
                                 data={'xml': ''.join(xml_data)},
                                 api_version=1)

    response.check(200, 'text/xml')

    data = response.data()

    return get_node_as_list(data, 'folderPartial')
コード例 #17
0
def create_exchange(api_client, exchange, suppress_welcome_alert=True):
    exchange_data = {
        'name' if k == 'workspaceName' else k: v
        for k, v in entity_to_dict(exchange).items()
    }
    exchange_data['suppressWelcomeAlert'] = suppress_welcome_alert

    response = api_client.create(
        '/services/workspaces',
        data={
            'xml':
            to_xml(exchange_data,
                   ['workspacesToCreate', 'workspaceCreateRequest'])
        },
        api_version=1)

    response.check(200, 'text/xml')

    data = response.data()

    return get_node_as_item(data, 'workspacePartial')
コード例 #18
0
def update_exchange_member(api_client,
                           exchange_id,
                           exchange_member,
                           add_groups=None,
                           remove_groups=None):
    keys = [
        'userId', 'id', 'firstName', 'lastName', 'organization', 'version',
        'roleType', 'keyContact', 'qnaCoordinator', 'qnaAttributes'
    ]

    data = {k: exchange_member[k] for k in keys if k in exchange_member}

    for k in keys:
        if k not in data:
            data[k] = ''

    xml_data = {'workspaceUsers': {'workspaceUser': data}}

    if add_groups is not None and len(add_groups) > 0:
        xml_data['addWorkspaceGroups'] = [{
            'workspaceGroupId': g['id']
        } for g in add_groups]

    if remove_groups is not None and len(remove_groups) > 0:
        xml_data['removeWorkspaceGroups'] = [{
            'workspaceGroupId': g['id']
        } for g in remove_groups]

    response = api_client.update(
        '/v1/services/workspaces/workspaceUsers',
        params={
            'workspaceId': exchange_id,
            'workspaceUserId': exchange_member['id']
        },
        data={'xml': to_xml(xml_data, 'workspaceUserUpdateRequest')},
        api_version=1)

    data = response.data()

    return data
コード例 #19
0
def delete_exchange_members(api_client, exchange_id, exchange_members):
    deleted_exchange_members = [{
        'id': m['id'],
        'version': m['version'],
        'type': 'WORKSPACEUSER'
    } for m in exchange_members]

    response = api_client.delete(
        '/v1/services/workspaces/workspaceUsers',
        params={'workspaceId': exchange_id},
        data={
            'xml':
            to_xml(deleted_exchange_members,
                   ['entityId', 'workspaceUserDeleteRequest'])
        },
        api_version=1)

    response.check(200, 'text/xml')

    data = response.data()

    return data
コード例 #20
0
ファイル: groups.py プロジェクト: ilapi/intralinks-sdk-python
def delete_groups(api_client, exchange_id, groups, remove_users=False): 
    deleted_groups = [
        {
            'id':g['id'], 
            'version':g['version'], 
            'type':'WORKSPACEGROUP'
        } for g in groups
    ]
     
    response = api_client.delete(
        '/v1/services/workspaces/workspaceGroups', 
        params={
            'workspaceId':exchange_id,
            'removeUsers':remove_users
        }, 
        data={'xml':to_xml(deleted_groups, ['entityId', 'workspaceGroupDeleteRequest'])},
        api_version=1
    )
    
    response.check(200, 'text/xml')

    data = response.data()
    
    return data
コード例 #21
0
def delete_documents(api_client, exchange_id, documents):
    deleted_documents = [{
        'id': g['id'],
        'version': g['version'],
        'type': 'DOCUMENT'
    } for g in documents]

    response = api_client.delete(
        '/v1/services/workspaces/folders/items',
        params={
            'workspaceId': exchange_id,
            'deleteFolderContents': True
        },
        data={
            'xml':
            to_xml(deleted_documents, ['entityId', 'folderItemsDeleteRequest'])
        },
        api_version=1)

    response.check(200, 'text/xml')

    data = response.data()

    return data