Example #1
0
def job_search(api, since=3, **kwargs):
    """Produce list of job posted after given date."""
    debug = log.debug
    url = 'https://www.odesk.com/api/profiles/v1/search/jobs.xml'
    dp = days_ago_to_dp(since)
    keys = kwargs.keys()
    params = [('dp', dp)]
    for keyword in keys:
        param = valid_job_search_parameter(keyword)
        if param:
            params.append((param, kwargs[keyword]))
    offset=0
    count = 200
    joblist = []
    while 1:
        params.append(('page', '{0:d};{1:d}'.format(offset, count)))
        xml = send_GET(api, url, params)
        if xml is None:
            e = "Error, request failed: send_GET(api, {0:s}, {1!s}".format(url, params)
            stderr("{0:s}\n".format(e))
            log.error(e)
            return joblist
        jl = list_from_xml(xml, 'job')
        if len(jl) == 0: break
        joblist.extend(jl)
        if len(jl) < count: break
        params.pop()
        offset += count
    return joblist
Example #2
0
def user_roles(api, request=None, save_xml=None):
    """Retrieve permission information of user.

    For the currently authenticated user return a list of permission information
    for each company/team the user has access to.

    Parameter 'request' is a list which limits the information returned. Must
    be a subset of:

        ['affiliation_status', 'company__name', 'company__reference',
         'engagement__reference', 'has_team_room_access', 'parent_team__id',
         'parent_team__name', 'parent_team__reference', 'permission',
         'reference', 'role', 'team__id', 'team__name', 'team__reference',
         'user__first_name', 'user__id', 'user__is_provider', 'user__last_name',
         'user__reference']

    """
    url = urls.get_API_URL('user_roles')
    xmlnode = 'userrole'
    if save_xml: save_xml = 'user_roles'
    xml = send_GET(api, url, save_xml=save_xml)
    if xml is None:
        e = "Error, request failed: send_GET(api, {0:s}".format(url)
        stderr("{0:s}\n".format(e))
        log.error(e)
        return None
    roles = list_from_xml(xml, xmlnode)
    all_info = ['affiliation_status', 'company__name', 'company__reference',
         'engagement__reference', 'has_team_room_access', 'parent_team__id',
         'parent_team__name', 'parent_team__reference', 'permission',
         'reference', 'role', 'team__id', 'team__name', 'team__reference',
         'user__first_name', 'user__id', 'user__is_provider', 'user__last_name',
         'user__reference']
    if not request:
        requested_info = all_info[:]
    else:
        requested_info = list_intersect(list(request), all_info)
    return dict_subset(roles, requested_info)