示例#1
0
def view(link):
    from models import Candidate
    all_res = "all_resumes"
    path_res = os.path.abspath(all_res)
    print("link")
    print(link)
    cand = Candidate.query.filter_by(resume=path_res + "/" + link).first()
    print(link)
    
    if cand.skills:
        skill = str(cand.skills).replace('\n','<br>')
    else:
        skill='NA'
    if cand.experience:
        exp = str(cand.experience).replace('\n','<br>')
    else:
        exp='NA'
    
    dur = str(cand.duration).replace('\n','<br>')
    print("download: " + link)
    return render_template('candidate.html',cand=cand,download=link,name=remove_number(link),skill=skill,exp=exp,dur=dur)
示例#2
0
def view_candidate(link):
    from models import Candidate
    all_res = "all_resumes"
    path_res = os.path.abspath(all_res)
    if str(link).find("all_resumes")==-1:
        link = "./all_resumes/" + link
    print(link)
    with sqlite3.connect('ats.db') as conn:
        cand = conn.execute('select * from candidate where filename = ?',(link,)).fetchall()[0]

    print(link)
    if cand[7]:
        skill = str(cand[7]).replace('\n','<br>')
    else:
        skill='NA'
    if cand[8]:
        exp = str(cand[8]).replace('\n','<br>')
    else:
        exp='NA'
    
    dur = str(cand[5]).replace('\n','<br>')

    return render_template('candidate2.html',cand=cand,download=link,name=remove_number(link),skill=skill,exp=exp,dur=dur)
示例#3
0
def download(filename):
    uploads = os.path.join(app.root_path, app.config['UPLOAD_FOLDER'])
    return send_from_directory(directory=uploads,
                               filename=filename,
                               as_attachment=True,
                               attachment_filename=remove_number(filename))
示例#4
0
def result():
    if request.method == 'POST':
        if request.form.get('post') == "search_results":
            #search on results
            any_key = request.form['rany_key']
            all_key = request.form['rall_key']
            if session['resumes'] == []:
                resumes = request.form.getlist('found_resumes')
                session['resumes'] = resumes
            else:
                resumes = session['resumes']
            any_key_list = any_key.split(",")
            all_key_list = all_key.split(",")
            found_candidates = []
            filter_list = []
            filter_link = []
            total = 0
            total_final = 0
            keywords_matched = []
            from models import Candidate
            for res in resumes:
                cand = Candidate.query.filter_by(resume=res).first()
                found_candidates.append(cand)

            for cand in found_candidates:
                total_final = total_final + 1
                if check_any(cand, any_key_list) == 1 and check_all(
                        cand, all_key_list) == 1:
                    filter_list.append(cand)
                    total = total + 1

            keywords_matched.append("| ".join(any_key_list))
            if all_key_list:
                keywords_matched.append("| ")
            keywords_matched.append("| ".join(all_key_list))

            if len(filter_list) == 0:
                empty = "NO MATCHES FOUND"
                filter_link = []
                return render_template('result.html',
                                       result=filter_list,
                                       skills="[ ]",
                                       exp=",",
                                       key=" ".join(keywords_matched),
                                       items=len(filter_list),
                                       count=str(total) + "/" +
                                       str(total_final),
                                       empty=empty,
                                       url=filter_link,
                                       all=all_key,
                                       any=any_key)
            else:

                filter_link = []
                for cand in filter_list:
                    url_link = cand.resume
                    filter_link.append(url_link.split("/")[-1])
                result_list = rank_resume(filter_list, [], all_key_list,
                                          any_key_list)
                return render_template('result.html',
                                       result=result_list,
                                       skills="[ ]",
                                       exp=",",
                                       key=" ".join(keywords_matched),
                                       items=len(filter_list),
                                       count=str(total) + "/" +
                                       str(total_final),
                                       url=filter_link,
                                       all=all_key,
                                       any=any_key)

        else:
            session['resumes'] = []
            skill = request.form.getlist('skill')
            skill_exp = request.form.getlist('skill_exp')
            skill_cond = request.form['skill_condition']
            skill_iter = request.form.get('skill_full')
            any_key = request.form['any_key']
            all_key = request.form['all_key']
            min_expyear = request.form['min_expyear']
            max_expyear = request.form['max_expyear']

            #search for skill and exp

            filter_list = []
            filter_link = []
            total = 0
            total_final = 0
            keys_matched = []
            exp_matched = ""
            keywords_matched = []
            mini = min_expyear
            maxi = max_expyear
            if str(min_expyear) == '':
                min_expyear = "0"
            if str(max_expyear) == '':
                max_expyear = "10000"

            any_key_list = any_key.split(",")
            all_key_list = all_key.split(",")

            from models import Candidate
            for cand in Candidate.query.all():
                total_final = total_final + 1
                res = get_numbers(str(cand.exp_years))
                if res:
                    sort_res = sorted(res)
                    years = float(sort_res[-1])
                else:
                    years = 0
                #print(cand.filename + " " + str(years))

                if int(min_expyear) <= years and years <= int(max_expyear):
                    t = 0
                    for sk in skill:
                        if sk == '':
                            t = t + 1
                    if t == len(skill):
                        if check_any(cand, any_key_list) == 1 and check_all(
                                cand, all_key_list) == 1:
                            filter_list.append(cand)
                            total = total + 1
                    else:
                        if str(skill_cond) == "0" and str(
                                skill_iter) == "None":
                            k = 0
                            if cand.skills:
                                text = str(cand.complete_resume)
                            else:
                                text = str(cand.skills)
                            freqdist = nltk.FreqDist(text.lower().split())
                            for sk in skill:
                                if sk != '':
                                    for v in freqdist.keys():
                                        if remove_number(v).find(
                                                sk.lower().strip()) >= 0:
                                            if check_any(
                                                    cand, any_key_list
                                            ) == 1 and check_all(
                                                    cand, all_key_list) == 1:
                                                filter_list.append(cand)
                                                total = total + 1
                                            keys_matched.append(sk + ", ")
                                            k = 1
                                            break
                                if k == 1:
                                    break

                        elif str(skill_cond) == "1" and str(
                                skill_iter) == "None":
                            if cand.skills:
                                text = str(cand.complete_resume)
                            else:
                                text = str(cand.skills)

                            freqdist = nltk.FreqDist(text.lower().split())
                            p = 0
                            for sk in skill:
                                if sk != '':
                                    p = p + 1
                            k = 0
                            for sk in skill:
                                if sk != '':
                                    for v in freqdist.keys():
                                        if remove_number(v).find(
                                                sk.lower().strip()) >= 0:
                                            if check_any(
                                                    cand, any_key_list
                                            ) == 1 and check_all(
                                                    cand, all_key_list) == 1:
                                                keys_matched.append(sk + ", ")
                                                k = k + 1
                            if k == p:
                                filter_list.append(cand)
                                total = total + 1

                        elif str(skill_cond) == "0" and str(skill_iter) == "1":
                            text = str(cand.complete_resume)
                            freqdist = nltk.FreqDist(text.lower().split())
                            k = 0
                            for sk in skill:
                                if sk != '':
                                    for v in freqdist.keys():
                                        if remove_number(v).find(
                                                sk.lower().strip()) >= 0:
                                            if check_any(
                                                    cand, any_key_list
                                            ) == 1 and check_all(
                                                    cand, all_key_list) == 1:
                                                filter_list.append(cand)
                                                total = total + 1
                                                keys_matched.append(sk + ", ")
                                                k = 1
                                                break
                                if k == 1:
                                    break

                        elif str(skill_cond) == "1" and str(skill_iter) == "1":
                            text = str(cand.complete_resume)
                            freqdist = nltk.FreqDist(text.lower().split())
                            p = 0
                            for sk in skill:
                                if sk != '':
                                    p = p + 1
                            k = 0
                            for sk in skill:
                                if sk != '':
                                    for v in freqdist.keys():
                                        if remove_number(v).find(
                                                sk.lower().strip()) >= 0:
                                            if check_any(
                                                    cand, any_key_list
                                            ) == 1 and check_all(
                                                    cand, all_key_list) == 1:
                                                k = k + 1
                                                keys_matched.append(sk + ", ")
                            if k == p:
                                filter_list.append(cand)
                                total = total + 1

            set_keys = set(keys_matched)

            exp_matched = str(mini) + " , " + str(maxi)
            list_set_keys = list(set_keys)
            keywords_list = []
            if any_key_list != ['']:
                keywords_list = any_key_list
            if all_key_list != ['']:
                [keywords_list.append(val) for val in all_key_list]
            print(keywords_list)
            keywords_matched.append(" | ".join(list(set(keywords_list))))
            p = 0
            for sk in skill:
                if sk == '':
                    p = p + 1
            if p == len(skill):
                val = " [ ] "
            else:
                val = ""
            if len(filter_list) == 0:
                empty = "NO MATCHES FOUND"
                filter_link = []
                return render_template('result.html',
                                       result=filter_list,
                                       skills=val + " ".join(list_set_keys),
                                       exp=" " + exp_matched + " ",
                                       key=" ".join(keywords_matched),
                                       items=len(filter_list),
                                       count=str(total) + "/" +
                                       str(total_final),
                                       empty=empty,
                                       url=filter_link,
                                       all="",
                                       any="",
                                       from_search=1)
            else:
                filter_link = []
                for cand in filter_list:
                    url_link = cand.resume
                    filter_link.append(url_link.split("/")[-1])
                result_list = rank_resume(filter_list, skill, all_key_list,
                                          any_key_list)
                return render_template('result.html',
                                       result=result_list,
                                       skills=val + " ".join(list_set_keys),
                                       exp=" " + exp_matched + " ",
                                       key=" ".join(keywords_matched),
                                       items=len(filter_list),
                                       count=str(total) + "/" +
                                       str(total_final),
                                       url=filter_link,
                                       all="",
                                       any="",
                                       from_search=1)
    else:
        empty = "NO MATCHES FOUND"
        return render_template('result.html',
                               empty_reload=empty,
                               all="",
                               any="",
                               from_search=1)