Spaces:
Sleeping
Sleeping
| from flask import request, jsonify | |
| from models import get_user_by_email, add_user, bcrypt | |
| import re | |
| import logging | |
| import traceback | |
| import os | |
| logging.basicConfig( | |
| filename=os.path.join('/tmp', 'app.log'), | |
| level=logging.DEBUG, | |
| format='%(asctime)s - %(levelname)s - %(message)s' | |
| ) | |
| def signup_route(): | |
| if request.method == 'POST': | |
| username = request.form.get('username') | |
| email = request.form.get('email') | |
| password = request.form.get('password') | |
| confirm_password = request.form.get('confirm_password') | |
| role = request.form.get('role') | |
| if not username or not email or not password or not confirm_password or not role: | |
| print('Empty field in signup attempt: %s', {'username': username, 'email': email}) | |
| logging.warning('Empty field in signup attempt: %s', {'username': username, 'email': email}) | |
| return jsonify({'message': 'Please fill out all fields', 'status': 'danger'}), 400 | |
| if not re.match(r'^[^@]+@[^@]+\.[^@]+$', email): | |
| print('Invalid email format: %s', email) | |
| logging.warning('Invalid email format: %s', email) | |
| return jsonify({'message': 'Invalid email address! Please ensure it contains "@" and ".".', 'status': 'danger'}), 400 | |
| if password != confirm_password: | |
| print('Password mismatch for user: %s', username) | |
| logging.warning('Password mismatch for user: %s', username) | |
| return jsonify({'message': 'Passwords do not match', 'status': 'danger'}), 400 | |
| if role.lower() == 'player': | |
| preference_1 = request.form.get('preference_1') | |
| preference_2 = request.form.get('preference_2') | |
| preference_3 = request.form.get('preference_3') | |
| preference_4 = request.form.get('preference_4') | |
| if not all([preference_1, preference_2, preference_3, preference_4]): | |
| print('Missing preferences for player role: %s', email) | |
| logging.warning('Missing preferences for player role: %s', email) | |
| return jsonify({'message': 'Please provide all four preferences', 'status': 'danger'}), 400 | |
| user = get_user_by_email(email) | |
| if user: | |
| print('Email already exists: %s', email) | |
| logging.warning('Email already exists: %s', email) | |
| return jsonify({'message': 'Email already exists', 'status': 'danger'}), 400 | |
| try: | |
| add_user(username, email, password, role, preference_1, preference_2, preference_3, preference_4) | |
| print('User created successfully: %s', email) | |
| logging.info('User created successfully: %s', email) | |
| return jsonify({'message': 'Account created successfully', 'status': 'success'}), 201 | |
| except Exception as db_error: | |
| print('Error adding user to database: %s', traceback.format_exc()) | |
| logging.error('Error adding user to database: %s', traceback.format_exc()) | |
| return jsonify({'message': 'Internal server error while adding user.', 'status': 'danger'}), 500 | |
| print('Method not allowed: %s', request.method) | |
| logging.error('Method not allowed: %s', request.method) | |
| return jsonify({'message': 'Method not allowed', 'status': 'danger'}), 405 |