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