def delete_applicant(): email = request.args.get('email') res = session.query(Applicant).filter(Applicant.email == email).all() if not res: response = jsonify({"code": -1, "message": "Email not found"}) return make_response(response, 401) applications = [ application.to_json() for application in session.query(Application).filter( Application.applicant == email) ] paths = [ '/'.join(application['video_name'].split('/')[3:7]) for application in applications ] session.query(Applicant).filter(Applicant.email == email).delete() # #delete profile pic from s3 and all applications applicant submitted bucket = s3_resource.Bucket(bucket_name) bucket.objects.filter(Prefix=f'applicant/{email}').delete() for path in paths: bucket.objects.filter(Prefix=path).delete() session.commit() response = jsonify({ "code": 1, "message": "Successfully deleted applicant" }) return make_response(response, 201)
def add_job(): attributes = request.json job = Job(**attributes) try: session.add(job) session.commit() response = jsonify({"code": 1, "message": "Successfully added job"}) return make_response(response, 201) except: session.rollback() response = jsonify({"code": -1, "message": "role alreasy exist"}) return make_response(response, 401)
def add_recruiter(): attributes = request.json recruiter = Recruiter(**attributes) try: session.add(recruiter) session.commit() response = jsonify({ "code": 1, "message": "Successfully added recruiter!" }) return make_response(response, 201) except: session.rollback() response = jsonify({"code": -1, "message": "Email already exists"}) return make_response(response, 401)
def add_applicant(): attributes = request.json applicant = Applicant(**attributes) try: session.add(applicant) session.commit() response = jsonify({ "code": 1, "message": "Successfully added applicant" }) return make_response(response, 201) except: session.rollback() response = jsonify({"code": -1, "message": "Email already exists"}) return make_response(response, 401)
def delete_recruiter(): email = request.args.get('email') res = session.query(Recruiter).filter(Recruiter.email == email).delete() if res == 0: response = jsonify({"code": -1, "message": "Email not found!"}) return make_response(response, 401) #delete company logo from s3 bucket = s3_resource.Bucket(bucket_name) bucket.objects.filter(Prefix=f'recruiter/{email}').delete() bucket.objects.filter(Prefix=f'application/{email}').delete() session.commit() response = jsonify({ "code": 1, "message": "Successfully deleted recruiter!" }) return make_response(response, 201)
def add_files(): recruiter = request.args.get('recruiter') role = request.args.get('role') applicant = request.args.get('applicant') resume = request.files['myResume'] cover = request.files['myCover'] video = request.files['myVideo'] files = [resume, cover, video] resume_destination = f'application/{recruiter}/{role}/{applicant}/{resume.filename}' cover_destination = f'application/{recruiter}/{role}/{applicant}/{cover.filename}' video_destination = f'application/{recruiter}/{role}/{applicant}/{video.filename}' destinations = [resume_destination, cover_destination, video_destination] resume_url = f'https://{bucket_name}.s3.amazonaws.com/' + resume_destination cover_url = f'https://{bucket_name}.s3.amazonaws.com/' + cover_destination video_url = f'https://{bucket_name}.s3.amazonaws.com/' + video_destination application = session.query(Application).filter( Application.applicant == applicant, Application.recruiter == recruiter, Application.role == role).all() if not application: response = jsonify({ "code": -1, "message": "Invalid Email or User not in DB" }) return make_response(response, 401) #update applicant object with s3 obj url application[0].resume_name = resume_url application[0].cover_letter_name = cover_url application[0].video_name = video_url session.commit() #write files to s3 for file, destination in zip(files, destinations): if file == video: upload_file(file, destination, video=True) else: upload_file(file, destination) response = jsonify({"code": 1, "message": 'added files to application'}) return make_response(response, 201)
def adding_profile_pic(): email = request.args.get('email') file = request.files['myFile'] file_name = file.filename destination = f'recruiter/{email}/{file_name}' upload_file(file, destination) #update recruiter object with s3 obj url obj_url = f'https://{bucket_name}.s3.amazonaws.com/recruiter/{email}/{file_name}' recruiter = session.query(Recruiter).filter(Recruiter.email == email).all() if not recruiter: response = jsonify({ "code": -1, "message": "Invalid Email or User not in DB" }) return make_response(response, 401) recruiter[0].company_logo_name = obj_url session.commit() response = jsonify({"code": 1, "message": 'added company logo'}) return make_response(response, 201)
def adding_profile_pic(): email = request.args.get('email') file = request.files['myFile'] file_name = file.filename destination = f'applicant/{email}/{file_name}' #update applicant object with s3 obj url obj_url = f'https://{bucket_name}.s3.amazonaws.com/applicant/{email}/{file_name}' applicant = session.query(Applicant).filter(Applicant.email == email).all() if not applicant: response = jsonify({ "code": -1, "message": "Invalid Email or User not in DB" }) return make_response(response, 401) upload_file(file, destination) applicant[0].picture_name = obj_url session.commit() response = jsonify({"code": 1, "message": 'added profile pic'}) return make_response(response, 201)
def remove_application(): applicant = request.args.get('applicant') recruiter = request.args.get('recruiter') role = request.args.get('role') res = session.query(Application).filter(Application.applicant == applicant, Application.recruiter == recruiter, Application.role == role).delete() if res == 0: response = jsonify({"code": -1, "message": "application not found"}) return make_response(response, 401) #Delete static files from s3 bucket = s3_resource.Bucket(bucket_name) bucket.objects.filter( Prefix=f'application/{recruiter}/{role}/{applicant}').delete() session.commit() response = jsonify({ "code": 1, "message": "Successfully deleted application" }) return make_response(response, 201)
def add_object_to_db(attribute_array, data_array, model): for data in data_array: d = dict(zip(attribute_array, data)) obj = model(**d) session.add(obj) session.commit()