def jobs_managed(api, company, team, request=None, **kwargs): """Compile a list of open jobs managed under 'company'.""" # Need team reference for 'buyer_team_reference' parameter to Jobs HR API bad_result = (0, None) (ref, status) = find_team(api, company, team) if not ref: log.error("Failed to find team {0:s} (company {1:s})".format(team, company)) return bad_result node_name = 'job' params = [('buyer_team__reference', ref)] if kwargs: keys = kwargs.keys() for key in keys: param = valid_jobs_managed_parameter(key) if param: params.append((param, kwargs[key])) elif key == 'save_xml': save_xml = 'jobs_managed' if kwargs[key] else None url = get_API_URL('jobs_hr') xml = send_GET(api, url, params, save_xml=save_xml) 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 bad_result total_items = int(xml_get_tag(xml, 'total_items')) all_info = ['buyer_company__name','buyer_company__reference','buyer_team__id', 'buyer_team__name','buyer_team__reference','category','company__reference', 'company_name','created_by','created_by_name','created_time','description', 'duration','end_date','filled_date','id','job_type','name', 'num_active_candidates','num_candidates','num_new_candidates', 'owner_user_id','parent_team__id','parent_team__name', 'parent_team__reference','public_url','reference','start_date','status', 'subcategory','title','visibility'] if not request: requested_info = all_info[:] else: requested_info = list_intersect(request, all_info) if total_items > 0: result = dict_subset(list_from_xml(xml, node_name), requested_info) else: result = [] return (total_items, result)
def job_details(api, job_reference, request=None, **kwargs): """Find all available information for a particular job.""" # Need team reference for 'buyer_team_reference' parameter to Jobs HR API (ref, status) = find_team(api, company, team) if not ref: log.error("Failed to find team {0:s} (company {1:s})".format(team, company)) return None node_name = 'job' save_xml = None params = [('buyer_team__reference', ref)] if kwargs: keys = kwargs.keys() for key in keys: param = valid_jobs_managed_parameter(key) if param: params.append((param, kwargs[key])) elif key == 'save_xml': save_xml = kwargs[key] url = get_API_URL('jobs_hr') xml = send_GET(api, url, params, save_xml=save_xml) 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 None result = list_from_xml(xml, node_name) all_info= ['reference','title','job_type','description','public_url', 'created_time','created_by','start_date','end_date','filled_date', 'cancelled_date','buyer_team__reference','buyer_team__id', 'buyer_team__name','buyer_company__reference','buyer_company__name', 'visibility','budget','duration','category','subcategory','num_candidates', 'num_active_candidates','num_new_candidates','last_candidacy_access_time', 'status'] if not rquest: requested_info = all_info[:] else: requested_info = list_intersect(request, all_info) return dict_subset(result, all_info)