Beispiel #1
0
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)
Beispiel #2
0
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)