Spaces:
Paused
Paused
from flask import Blueprint, render_template, redirect, url_for, flash, request, jsonify | |
from flask_login import login_user, logout_user, login_required, current_user | |
from werkzeug.utils import secure_filename | |
import os | |
import json | |
from datetime import datetime | |
from backend.form.AuthForms import LoginForm, SignupForm | |
from backend.models.user import User | |
from backend.models.database import db | |
auth_bp = Blueprint('auth', __name__) | |
def handle_resume_upload(file): | |
""" | |
Save uploaded file temporarily, extract features, then clean up. | |
Returns (features_dict, error_message, filename) | |
""" | |
if not file or file.filename == '': | |
return None, "No file uploaded", None | |
try: | |
# Get current directory for temp folder | |
current_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |
filename = secure_filename(file.filename) | |
filepath = os.path.join(current_dir, 'temp', filename) | |
os.makedirs(os.path.dirname(filepath), exist_ok=True) | |
file.save(filepath) | |
features = extract_resume_features(filepath) | |
os.remove(filepath) # Clean up after parsing | |
return features, None, filename | |
except Exception as e: | |
print(f"Error in handle_resume_upload: {e}") | |
return None, str(e), None | |
def login(): | |
form = LoginForm() | |
if form.validate_on_submit(): | |
user = User.query.filter_by(email=form.email.data).first() | |
if user and user.check_password(form.password.data): | |
login_user(user) | |
return redirect(url_for('index')) | |
else: | |
flash('Invalid credentials', 'danger') | |
return render_template('login.html', form=form) | |
def signup(): | |
form = SignupForm() | |
if form.validate_on_submit(): | |
existing_user = User.query.filter_by(email=form.email.data).first() | |
if existing_user: | |
flash('Email already registered.', 'warning') | |
else: | |
user = User( | |
username=form.username.data, | |
email=form.email.data, | |
role=form.role.data | |
) | |
user.set_password(form.password.data) | |
db.session.add(user) | |
db.session.commit() | |
# Log the user in and redirect to profile completion | |
login_user(user) | |
flash('Account created successfully! Welcome to Codingo.', 'success') | |
return redirect(url_for('index')) | |
return render_template('signup.html', form=form) | |
def logout(): | |
logout_user() | |
flash('You have been logged out successfully.', 'info') | |
return redirect(url_for('auth.login')) |