from flask import Flask, request, jsonify from werkzeug.utils import secure_filename from .parser import parse_promotion_pdf, parse_promotion_excel from .text_recog import extract_ktp_info import os app = Flask(__name__) app.config['UPLOAD_FOLDER'] = 'tmp' app.config['ALLOWED_EXTENSIONS'] = {'pdf', 'png', 'jpg', 'jpeg', 'xlsx', 'csv'} app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 def allowed_file(filename): return '.' in filename and filename.rsplit('.', 1)[1].lower() in app.config['ALLOWED_EXTENSIONS'] def upload_file(): if 'file' not in request.files: return jsonify({'error': 'No file part'}), 400 file = request.files['file'] if file.filename == '': return jsonify({'error': 'No selected file'}), 400 if file and allowed_file(file.filename): filename = secure_filename(file.filename) if not os.path.exists('/tmp'): os.makedirs('/tmp', exist_ok=True) filepath = os.path.join('/tmp', filename) file.save(filepath) if filename.endswith('.pdf'): parsed_file = parse_promotion_pdf(filepath) elif filename.endswith(('.png', '.jpg', '.jpeg', '.bmp', '.tiff')): parsed_file = extract_ktp_info(filepath, filename) elif filename.endswith('.xlsx' or '.csv'): parsed_file = parse_promotion_excel(filepath, filename) else: parsed_file = { 'filename' : filename } return jsonify({ 'message': 'File uploaded successfully', 'filename': filename, 'path': filepath, 'content' : parsed_file }), 200 return jsonify({'error': 'File type not allowed'}), 400