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
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)