webcodelab commited on
Commit
49895ba
·
verified ·
1 Parent(s): 860cff0

Update app/routes.py

Browse files
Files changed (1) hide show
  1. app/routes.py +60 -13
app/routes.py CHANGED
@@ -393,24 +393,73 @@ def allowed_file(filename):
393
  return '.' in filename and filename.rsplit('.', 1)[1].lower() in allowed_extensions
394
 
395
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
396
  @auth.route('/try-api', methods=['GET', 'POST'])
397
  def try_api():
 
 
 
 
398
  api_key = request.form.get('api_key')
399
  resumes = request.files.getlist('resumes')
400
  job_description = request.form.get('job_description')
401
 
402
- # Validate form fields
403
  if not api_key:
404
  flash("API key is required.")
405
- return redirect(url_for('auth.docs'))
406
  if not resumes:
407
  flash("Please upload at least one resume.")
408
- return redirect(url_for('auth.docs'))
409
  if not job_description:
410
  flash("Job description is required.")
411
- return redirect(url_for('auth.docs'))
412
 
413
- # Validate API key from Supabase
414
  res = requests.get(
415
  f"{SUPABASE_URL}/rest/v1/users?api_key=eq.{api_key}&select=id",
416
  headers=HEADERS
@@ -418,30 +467,28 @@ def try_api():
418
 
419
  if res.status_code != 200 or not res.json():
420
  flash("Invalid API key.")
421
- return redirect(url_for('auth.docs'))
422
 
423
- # Validate file types
424
  for resume in resumes:
425
  if not allowed_file(resume.filename):
426
  flash(f"Invalid file type: {resume.filename}. Only PDF or DOCX allowed.")
427
- return redirect(url_for('auth.docs'))
428
  resume.filename = secure_filename(resume.filename)
429
 
430
- # Run actual ranking logic
431
  try:
432
  ranked = rank_resumes_by_semantic_similarity(resumes, job_description)
433
  except Exception as e:
434
  flash(f"Error processing resumes: {str(e)}")
435
- return redirect(url_for('auth.docs'))
436
 
437
- # Render results
438
- return render_template('docs.html', response={
439
  "job_description": job_description,
440
- "ranked_resumes": ranked # List of dicts with filename and score
441
  })
442
 
443
 
444
 
 
445
  @auth.route('/ping-db')
446
  def ping_db():
447
  try:
 
393
  return '.' in filename and filename.rsplit('.', 1)[1].lower() in allowed_extensions
394
 
395
 
396
+ # @auth.route('/try-api', methods=['GET', 'POST'])
397
+ # def try_api():
398
+ # api_key = request.form.get('api_key')
399
+ # resumes = request.files.getlist('resumes')
400
+ # job_description = request.form.get('job_description')
401
+
402
+ # # Validate form fields
403
+ # if not api_key:
404
+ # flash("API key is required.")
405
+ # return redirect(url_for('auth.docs'))
406
+ # if not resumes:
407
+ # flash("Please upload at least one resume.")
408
+ # return redirect(url_for('auth.docs'))
409
+ # if not job_description:
410
+ # flash("Job description is required.")
411
+ # return redirect(url_for('auth.docs'))
412
+
413
+ # # Validate API key from Supabase
414
+ # res = requests.get(
415
+ # f"{SUPABASE_URL}/rest/v1/users?api_key=eq.{api_key}&select=id",
416
+ # headers=HEADERS
417
+ # )
418
+
419
+ # if res.status_code != 200 or not res.json():
420
+ # flash("Invalid API key.")
421
+ # return redirect(url_for('auth.docs'))
422
+
423
+ # # Validate file types
424
+ # for resume in resumes:
425
+ # if not allowed_file(resume.filename):
426
+ # flash(f"Invalid file type: {resume.filename}. Only PDF or DOCX allowed.")
427
+ # return redirect(url_for('auth.docs'))
428
+ # resume.filename = secure_filename(resume.filename)
429
+
430
+ # # Run actual ranking logic
431
+ # try:
432
+ # ranked = rank_resumes_by_semantic_similarity(resumes, job_description)
433
+ # except Exception as e:
434
+ # flash(f"Error processing resumes: {str(e)}")
435
+ # return redirect(url_for('auth.docs'))
436
+
437
+ # # Render results
438
+ # return render_template('docs.html', response={
439
+ # "job_description": job_description,
440
+ # "ranked_resumes": ranked # List of dicts with filename and score
441
+ # })
442
+
443
  @auth.route('/try-api', methods=['GET', 'POST'])
444
  def try_api():
445
+ if request.method == 'GET':
446
+ return render_template('try_api.html', title="Try the ResumeRanker API")
447
+
448
+ # POST logic stays the same
449
  api_key = request.form.get('api_key')
450
  resumes = request.files.getlist('resumes')
451
  job_description = request.form.get('job_description')
452
 
 
453
  if not api_key:
454
  flash("API key is required.")
455
+ return redirect(url_for('auth.try_api'))
456
  if not resumes:
457
  flash("Please upload at least one resume.")
458
+ return redirect(url_for('auth.try_api'))
459
  if not job_description:
460
  flash("Job description is required.")
461
+ return redirect(url_for('auth.try_api'))
462
 
 
463
  res = requests.get(
464
  f"{SUPABASE_URL}/rest/v1/users?api_key=eq.{api_key}&select=id",
465
  headers=HEADERS
 
467
 
468
  if res.status_code != 200 or not res.json():
469
  flash("Invalid API key.")
470
+ return redirect(url_for('auth.try_api'))
471
 
 
472
  for resume in resumes:
473
  if not allowed_file(resume.filename):
474
  flash(f"Invalid file type: {resume.filename}. Only PDF or DOCX allowed.")
475
+ return redirect(url_for('auth.try_api'))
476
  resume.filename = secure_filename(resume.filename)
477
 
 
478
  try:
479
  ranked = rank_resumes_by_semantic_similarity(resumes, job_description)
480
  except Exception as e:
481
  flash(f"Error processing resumes: {str(e)}")
482
+ return redirect(url_for('auth.try_api'))
483
 
484
+ return render_template('try_api.html', response={
 
485
  "job_description": job_description,
486
+ "ranked_resumes": ranked
487
  })
488
 
489
 
490
 
491
+
492
  @auth.route('/ping-db')
493
  def ping_db():
494
  try: