from flask import Blueprint, render_template, request, redirect, url_for, flash, current_app from flask_login import login_required, current_user from app.models import db, RepairJob, Customer, Technician, AuditLog from app.utils.barcode import generate_barcode repair_bp = Blueprint('repair', __name__, url_prefix='/repairs') @repair_bp.route('/new', methods=['GET', 'POST']) @login_required def new_repair(): if request.method == 'POST': # ... get form data ... repair = RepairJob( device=request.form['device'], description=request.form['description'], customer_id=request.form['customer_id'], technician_id=request.form.get('technician_id'), ) db.session.add(repair) db.session.commit() # Generate and save barcode image barcode_path = generate_barcode(repair.id, repair.tracking_number) repair.barcode_path = barcode_path db.session.commit() # Audit log audit = AuditLog(user_id=current_user.id, action='Created repair', details=f"Repair ID {repair.id}") db.session.add(audit) db.session.commit() flash('Repair job created!') return redirect(url_for('repair.detail', repair_id=repair.id)) # ... render form ... return render_template('repairs/new.html') @repair_bp.route('/') @login_required def detail(repair_id): repair = RepairJob.query.get_or_404(repair_id) return render_template('repairs/detail.html', repair=repair)