def update_exchange_member(api_client, exchange_id, exchange_member):
    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)

    exchange_member_data = filter_dict(exchange_member_data,
                                       remove_fields={
                                           'userId', 'emailId', 'firstName',
                                           'lastName', 'title', 'organization',
                                           'officePhone', 'languagePref'
                                       })

    # Fix because the V2 API does not return 'unauthenticatedDocumentAccess' as a boolean
    if 'unauthenticatedDocumentAccess' in exchange_member_data and exchange_member_data[
            'unauthenticatedDocumentAccess'] in {'T', 'F'}:
        exchange_member_data[
            'unauthenticatedDocumentAccess'] = exchange_member_data[
                'unauthenticatedDocumentAccess'] == 'T'

    response = api_client.update('/v2/workspaces/{}/users'.format(exchange_id),
                                 data=json.dumps(
                                     {'users': [exchange_member_data]}),
                                 headers={'Content-Type': 'application/json'},
                                 api_version=2)

    response.check(202, 'application/json')

    data = response.data()

    return get_node_as_item(data, ['userPartials'])
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'))
    def create_exchange_member(self,
                               exchange,
                               exchange_member,
                               alert=None,
                               update_param=True):
        exchange_id = self._get_id(exchange)

        if self.api_client.is_v1() or self.use_v1:
            result = intralinks.functions.v1.exchange_members.create_exchange_member(
                self.api_client, exchange_id, exchange_member)
        else:
            result = intralinks.functions.v2.exchange_members.create_exchange_member(
                self.api_client, exchange_id, exchange_member, alert)

        if update_param:
            if isinstance(exchange_member, tuple):
                exchange_member = entity_to_dict(exchange_member)

            user = exchange_member.pop('user')

            if isinstance(user, tuple):
                user = entity_to_dict(user)

            exchange_member.update(user)

            exchange_member['emailId'] = result.pop('email')
            exchange_member.update(result)

            return exchange_member
        else:
            return result
Beispiel #4
0
def update_exchange(api_client, exchange, is_phase_updated=False):
    data = entity_to_dict(exchange)
    exchange_id = data['id']

    if is_phase_updated:
        data = filter_dict(data,
                           remove_fields=[
                               'id', 'parentTemplateId', 'actions',
                               'securityLevel', 'type', 'pvpEnabled',
                               'htmlViewEnabled', 'location'
                           ])
    else:
        data = filter_dict(data,
                           remove_fields=[
                               'id', 'parentTemplateId', 'phase', 'actions',
                               'securityLevel', 'type', 'pvpEnabled',
                               'htmlViewEnabled', 'location'
                           ])

    data['name'] = data.pop('workspaceName')

    response = api_client.update('/v2/workspaces/{}'.format(exchange_id),
                                 data=json.dumps(data),
                                 headers={'Content-Type': 'application/json'},
                                 api_version=2)

    response.check(202, 'application/json')

    data = response.data()

    return data
Beispiel #5
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')
Beispiel #6
0
def update_group(api_client,
                 exchange_id,
                 group,
                 remove_group_members=None,
                 add_group_members=None):
    group_data = entity_to_dict(group)

    group_id = group_data['id']

    group_data = filter_dict(group_data,
                             remove_fields={
                                 'id', 'groupMemberCount', 'lastModifiedOn',
                                 'lastModifiedBy', 'createdOn', 'createdBy'
                             })

    response = api_client.update('/v2/workspaces/{}/groups/{}'.format(
        exchange_id, group_id),
                                 data=json.dumps(group_data),
                                 headers={'Content-Type': 'application/json'},
                                 api_version=2)

    response.check(202, 'application/json')

    data = response.data()

    return get_node_as_item(data, 'groupPartials')
    def _update_param(self, entity, result, update_param=True):
        if update_param:
            if isinstance(entity, tuple):
                entity = entity_to_dict(entity)

            entity.update(result)
            return entity
        else:
            return result
Beispiel #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
    def _update_param_as_list(self, entities, result, update_param=True):
        if update_param:
            new_entities = []

            for e, r in zip(entities, result):
                if isinstance(e, tuple):
                    e = entity_to_dict(e)

                new_entities.append(e)
                e.update(r)

            return new_entities
        else:
            return result
Beispiel #10
0
def update_document(api_client, exchange_id, document):
    document_data = entity_to_dict(document)

    response = api_client.update(
        '/v2/workspaces/{}/documents'.format(exchange_id),
        data=json.dumps({'documents': [document_data]}),
        headers={'Content-Type': 'application/json'},
        api_version=2)

    response.check(202, 'application/json')

    data = response.data()

    return get_node_as_item(data, 'documentPartial')
Beispiel #11
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')
Beispiel #12
0
def create_group(api_client, exchange_id, group):
    group_data = entity_to_dict(group)

    response = api_client.create(
        '/v2/workspaces/{}/groups'.format(exchange_id),
        data=json.dumps(group_data),
        headers={'Content-Type': 'application/json'},
        api_version=2)

    response.check(201, 'application/json')

    data = response.data()

    return get_node_as_item(data, 'groupPartials')
def create_exchange_member(api_client,
                           exchange_id,
                           exchange_member=None,
                           alert=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)

    exchange_member_data = filter_dict(
        exchange_member_data,
        remove_fields={'languagePref', 'unauthenticatedDocumentAccess'})

    exchange_member_data['sendAlert'] = alert is not None

    if alert is None:
        exchange_member_data['sendAlert'] = False

    else:
        exchange_member_data['sendAlert'] = True

        alert_data = entity_to_dict(alert)
        alert_data['saveAlertSettings'] = True

        exchange_member_data['welcomeAlertDetails'] = alert_data

    response = api_client.create('/v2/workspaces/{}/users'.format(exchange_id),
                                 data=json.dumps(
                                     {'users': [exchange_member_data]}),
                                 headers={'Content-Type': 'application/json'},
                                 api_version=2)

    response.check(201, 'application/json')

    data = response.data()

    return get_node_as_item(data, ['userPartials'])
Beispiel #14
0
def create_documents(api_client, exchange_id, documents, batch_id=None):
    document_data = [{'document': entity_to_dict(d)} for d in documents]

    response = api_client.create(
        '/v2/workspaces/{}/documents'.format(exchange_id),
        params={'batch_id': batch_id},
        data=json.dumps({'documents': document_data}),
        headers={'Content-Type': 'application/json'},
        api_version=2)

    response.check(201, 'application/json')

    data = response.data()

    return get_node_as_list(data, 'documentPartial')
Beispiel #15
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')
Beispiel #16
0
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'))
Beispiel #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('/v2/workspaces',
                                 data=json.dumps(
                                     {'workspaces': [exchange_data]}),
                                 headers={'Content-Type': 'application/json'},
                                 api_version=2)

    response.check(201, 'application/json')

    data = response.data()

    return get_node_as_item(data, 'workspacePartial')
Beispiel #18
0
def create_folders(api_client, exchange_id, folders):
    folders_data = [{'folder':entity_to_dict(f)} for f in folders]
    
    response = api_client.create(
        '/v2/workspaces/{}/folders'.format(exchange_id),
        data=json.dumps({'folders':folders_data}), 
        headers={'Content-Type':'application/json'},
        api_version=2
    )
    
    response.check(201, 'application/json')
    
    data = response.data()
    
    l = get_node_as_list(data, 'folderPartial')

    convert_to_bool(l, 'hasNote')

    return l
Beispiel #19
0
    def create_exchange(self,
                        exchange,
                        suppress_welcome_alert=True,
                        update_param=True):
        if self.api_client.is_v1() or self.use_v1:
            result = intralinks.functions.v1.exchanges.create_exchange(
                self.api_client, exchange, suppress_welcome_alert)
        else:
            result = intralinks.functions.v2.exchanges.create_exchange(
                self.api_client, exchange, suppress_welcome_alert)

        if update_param:
            exchange = entity_to_dict(exchange)
            exchange.update(result)
            exchange['id'] = exchange.pop('workspaceId')

            return exchange
        else:
            return result
Beispiel #20
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')
Beispiel #21
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')
Beispiel #22
0
def update_folder(api_client, exchange_id, folder):
    folder_data = entity_to_dict(folder)
    folder_data = filter_dict(folder_data, remove_fields={'isEmailin', 'versionNumber', 'isFavorite', 'lastModifiedBy', 'lastModifiedOn', 'createdBy', 'createdOn', 'hasChildFolders', 'orderNumber', 'indexNumber'})
    
    response = api_client.update(
        '/v2/workspaces/{}/folders'.format(exchange_id),
        data=json.dumps({'folders':[folder_data]}), 
        headers={'Content-Type':'application/json'},
        api_version=2
    )
    
    response.check(202, 'application/json')
    
    data = response.data()
    
    result = get_node_as_item(data, 'folderPartial')
    
    if 'hasNote' in result and result['hasNote'] in {'T', 'F'}:
        result['hasNote'] = result['hasNote'] == 'T'

    return result
Beispiel #23
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')
    def copy_memberships(self, from_user, to_user):
        from_email = from_user if isinstance(from_user,
                                             str) else from_user['emailId']

        if isinstance(to_user, str):
            to_user = self.il.get_user_account(to_user, exchange_id=None)

        elif isinstance(to_user, tuple):
            to_user = entity_to_dict(to_user)

        df = self.dataframe[self.dataframe['intralinks_user.emailId'].astype(
            str).str.lower() == from_email.lower()]
        df = df.fillna('')
        df = df.sort_values(['exchange.workspaceName', 'group.groupName'])
        df = df.reset_index()
        df = df[[
            'exchange.id', 'exchange.workspaceName',
            'exchange_member.roleType', 'group.groupName'
        ]]
        df = df.drop_duplicates()
        df.columns = ['Exchange ID', 'Exchange Name', 'Role', 'Group']
        df['First Name'] = to_user['firstName']
        df['Last Name'] = to_user['lastName']
        df['Email'] = to_user['emailId']
        df['Organization'] = to_user['organization']
        df['Phone'] = '0000'
        df = df[[
            'First Name', 'Last Name', 'Email', 'Phone', 'Organization',
            'Exchange ID', 'Exchange Name', 'Role', 'Group'
        ]]

        file_name = 'data/{}_{}.xlsx'.format(
            to_user['emailId'],
            datetime.datetime.today().strftime('%Y%m%d_%H%M%S'))
        df.to_excel(file_name, index=False)

        print('Saved to {}'.format(file_name))

        return df