Spaces:
Runtime error
Runtime error
File size: 2,562 Bytes
e1f9362 b2bedce 7420aeb 9b3b1bc 020b94a e1f9362 7420aeb e1f9362 7420aeb e1f9362 7420aeb e1f9362 7420aeb 9b3b1bc 7420aeb e1f9362 7420aeb 644c461 e54baff 7420aeb e1f9362 591ae97 e1f9362 b2bedce 7420aeb e1f9362 591ae97 9b3b1bc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# Author: Caitlin Blackmore
# Project: Pathfinder
# Project Description: This is a web application designed to facilitate job-mobility.
# It uses NLP to help job seekers find jobs that match their skills and interests.
# Date: 2023-02-03
# File Description: This is the main file, containing the FastAPI app and all the endpoints.
# License: MIT License
# IMPORTS
from fastapi import FastAPI, Request, Form, File, UploadFile
from fastapi.templating import Jinja2Templates
from fastapi.staticfiles import StaticFiles
from fastapi.responses import HTMLResponse
import pandas as pd
from scrape_onet import get_onet_code, get_onet_description, get_onet_tasks
from match_utils import get_resume, get_simresults, skillNER
# APP SETUP
app = FastAPI()
app.mount("/static", StaticFiles(directory='static'), name="static")
templates = Jinja2Templates(directory="templates/")
# LOAD DATA
onet = pd.read_csv('static/ONET_JobTitles.csv')
### JOB INFORMATION CENTER ###
# GET
@app.get("/")
def render_job_list(request: Request):
joblist = onet['JobTitle']
return templates.TemplateResponse('job_list.html', context={'request': request, 'joblist': joblist})
# POST
@app.post("/")
def render_job_info(request: Request, jobtitle: str = Form(enum=[x for x in onet['JobTitle']])):
joblist = onet['JobTitle']
if jobtitle:
onetCode = get_onet_code(jobtitle)
jobdescription = get_onet_description(onetCode)
tasks = get_onet_tasks(onetCode)
return templates.TemplateResponse('job_list.html', context={
'request': request,
'joblist': joblist,
'jobtitle': jobtitle,
'jobdescription': jobdescription,
'tasks': tasks})
### JOB NEIGHBORHOODS ###
@app.get("/explore-job-neighborhoods/", response_class=HTMLResponse)
def render_job_neighborhoods(request: Request):
return templates.TemplateResponse('job_neighborhoods.html', context={'request': request})
### FIND-MY-MATCH ###
# GET
@app.get("/find-my-match/", response_class=HTMLResponse)
def match_page(request: Request):
return templates.TemplateResponse('find_my_match.html', context={'request': request})
# POST
@app.post('/find-my-match/', response_class=HTMLResponse)
async def match_page(request: Request, resume: UploadFile = File(...)):
resume = get_resume(resume)
simResults = await get_simresults(resume)
skills = await skillNER(resume)
return templates.TemplateResponse('find_my_match.html', context={'request': request, 'resume': resume, 'skills': skills, 'simResults': simResults}) |