from flask import jsonify from app.api.enums import KafkaMessage from app.api.services import MyProductsService from app.config import settings from app.models import Members from app.utils.logger import logger from app.api.services.base_service import BaseService from sqlalchemy import func, desc from app.extensions import db import os from werkzeug.utils import secure_filename import time class FileUploadService(BaseService): UPLOAD_FOLDER = settings.UPLOAD_FOLDER # '/app/uploads' # '/uploads' ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'} @staticmethod def process_file_upload(upload_type: str, file, member_uid): timestamp_integer = int(time.time()) ## MAKE SURE WE HAVE BASE FOLDERS if not os.path.isdir(FileUploadService.UPLOAD_FOLDER): os.makedirs(FileUploadService.UPLOAD_FOLDER) file_uid = "I GOT HERE " try: # Who is this member_data = Members.get_member_by_uid(member_uid) if not member_data: return [] final_folder = f"W{member_data.id:010d}" save_path = FileUploadService.UPLOAD_FOLDER + "/WEBSITE" if not os.path.isdir(save_path): os.makedirs(save_path) logger.info(f'POST CALLED 5 {file.filename}') save_path = FileUploadService.UPLOAD_FOLDER + "/WEBSITE/" + final_folder if not os.path.isdir(save_path): os.makedirs(save_path) filename = secure_filename(file.filename) # This is to avert duplicate file name issues save_filename = str(timestamp_integer) + "-" + filename final_save_path = os.path.join(save_path, save_filename) logger.info(f'POST CALLED 6 {final_save_path}') file.save(final_save_path) response_data = { "file_uid": file_uid, } return response_data except Exception as e: logger.error(f"An error occurred while uploading file: {str(e)}", exc_info=True) return jsonify({"message": "Internal Server Error"}), 500