145 lines
4.5 KiB
Python
145 lines
4.5 KiB
Python
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"],
|
|
"company_id":user['company_id']
|
|
})
|
|
|
|
|
|
@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 |