init commit
This commit is contained in:
144
transportmanager/server/routes/profile.py
Normal file
144
transportmanager/server/routes/profile.py
Normal file
@@ -0,0 +1,144 @@
|
||||
import os
|
||||
from werkzeug.utils import secure_filename
|
||||
from flask import current_app
|
||||
from flask import Blueprint, request, jsonify
|
||||
from flask_jwt_extended import jwt_required, get_jwt_identity
|
||||
from models.user import Users
|
||||
|
||||
profile_bp = Blueprint("profile", __name__)
|
||||
|
||||
|
||||
@profile_bp.route("/", methods=["GET"])
|
||||
@jwt_required()
|
||||
def get_profile():
|
||||
user_id = get_jwt_identity()
|
||||
users = Users()
|
||||
user = users.get_user_by_id(user_id) # Plain SQL method returning dict or None
|
||||
|
||||
if not user:
|
||||
return jsonify({"error": "User not found"}), 404
|
||||
|
||||
return jsonify({
|
||||
"id": user["id"],
|
||||
"name": user["name"],
|
||||
"contact_name": user["contact_name"],
|
||||
"email": user["email"],
|
||||
"address": user["address"],
|
||||
"register_number": user["register_number"],
|
||||
"phone": user["phone"],
|
||||
"logo_filename": user["logo_filename"],
|
||||
"terms": user["terms"],
|
||||
"first_order_number": user["first_order_number"],
|
||||
"user_role": user["user_role"],
|
||||
"vat":user["vat"]
|
||||
})
|
||||
|
||||
|
||||
@profile_bp.route("/", methods=["PUT"])
|
||||
@jwt_required()
|
||||
def update_profile():
|
||||
users = Users()
|
||||
user_id = get_jwt_identity()
|
||||
user = users.get_user_by_id(user_id)
|
||||
if not user:
|
||||
return jsonify({"error": "User not found"}), 404
|
||||
|
||||
data = request.get_json()
|
||||
update_data = {
|
||||
"name": data.get("name", user["name"]),
|
||||
"contact_name": data.get("contact_name", user["contact_name"]),
|
||||
"email": data.get("email", user["email"]),
|
||||
"address": data.get("address", user["address"]),
|
||||
"register_number": data.get("register_number", user["register_number"]),
|
||||
"phone": data.get("phone", user["phone"]),
|
||||
"logo_filename": data.get("logo_filename", user["logo_filename"]),
|
||||
"terms": data.get("terms", user["terms"]),
|
||||
"first_order_number": data.get("first_order_number", user["first_order_number"]),
|
||||
"user_id": user_id,
|
||||
"vat":data.get("vat", user["vat"]),
|
||||
}
|
||||
users.update_user(update_data)
|
||||
|
||||
return jsonify({"message": "Profile updated successfully"})
|
||||
|
||||
|
||||
@profile_bp.route("/logo", methods=["POST"])
|
||||
@jwt_required()
|
||||
def upload_logo():
|
||||
users = Users()
|
||||
if 'logo' not in request.files:
|
||||
return jsonify({"error": "Logo file is required"}), 400
|
||||
|
||||
file = request.files['logo']
|
||||
if file.filename == '':
|
||||
return jsonify({"error": "No selected file"}), 400
|
||||
|
||||
filename = secure_filename(file.filename)
|
||||
upload_dir = os.path.join(current_app.root_path, '..', 'instance', 'logos')
|
||||
os.makedirs(upload_dir, exist_ok=True)
|
||||
|
||||
filepath = os.path.join(upload_dir, filename)
|
||||
file.save(filepath)
|
||||
|
||||
user_id = get_jwt_identity()
|
||||
user = users.get_user_by_id(user_id)
|
||||
if not user:
|
||||
return jsonify({"error": "User not found"}), 404
|
||||
|
||||
# Update the logo filename in DB
|
||||
users.update_user_logo(user_id, {"logo_filename": filename})
|
||||
|
||||
return jsonify({"message": "Logo uploaded", "filename": filename}), 200
|
||||
|
||||
@profile_bp.route('/email')
|
||||
@jwt_required()
|
||||
def get_email_credentials():
|
||||
user_id = get_jwt_identity()
|
||||
users = Users()
|
||||
|
||||
credentials = users.get_email_credentials(user_id)
|
||||
if not credentials:
|
||||
return jsonify({"error": "Credentials not found"}), 404
|
||||
|
||||
return jsonify({
|
||||
'id': credentials['id'],
|
||||
'user_id': credentials['user_id'],
|
||||
'smtp_host': credentials['smtp_host'],
|
||||
'smtp_port': credentials['smtp_port'],
|
||||
'smtp_user': credentials['smtp_user'],
|
||||
'created_at': credentials['created_at']
|
||||
}), 200
|
||||
|
||||
@profile_bp.route('/email', methods=["POST"])
|
||||
@jwt_required()
|
||||
def insert_email_credentials():
|
||||
users = Users()
|
||||
user_id = get_jwt_identity()
|
||||
|
||||
data = request.get_json()
|
||||
if not data:
|
||||
return jsonify({"error": "Credentials not found"}), 404
|
||||
smtp_host = data['smtp_host']
|
||||
smtp_port = data['smtp_port']
|
||||
smtp_user = data['smtp_user']
|
||||
|
||||
users.insert_email_credentials(user_id, smtp_host, smtp_port, smtp_user)
|
||||
|
||||
return jsonify({"message": "Credentials inserted successfully"}), 200
|
||||
|
||||
@profile_bp.route('/email', methods=["PUT"])
|
||||
@jwt_required()
|
||||
def update_email_credentials():
|
||||
users = Users()
|
||||
user_id = get_jwt_identity()
|
||||
|
||||
data = request.get_json()
|
||||
if not data:
|
||||
return jsonify({"error": "Credentials not found"}), 404
|
||||
smtp_host = data['smtp_host']
|
||||
smtp_port = data['smtp_port']
|
||||
smtp_user = data['smtp_user']
|
||||
|
||||
users.update_email_credentials(user_id, smtp_host, smtp_port, smtp_user)
|
||||
|
||||
return jsonify({"message": "Credentials updated successfully"}), 200
|
||||
Reference in New Issue
Block a user