Files
Comparison_Project/app/routes/engineering_master_routes.py

108 lines
2.8 KiB
Python
Raw Normal View History

2026-08-06 12:20:50 +05:30
from flask import (
Blueprint,
render_template,
request,
redirect,
url_for,
flash, jsonify
2026-08-06 12:20:50 +05:30
)
from app.models.subcontractor_model import Subcontractor
from app.services.subcontractor_rate_service import SubcontractorRateService
from app.constants.messages import SuccessMessage, ErrorMessage
engi_bp = Blueprint(
"engineering",
__name__,
url_prefix="/engi"
)
@engi_bp.route("/")
def engineering_master():
return render_template(
"engineering/index.html",
title="Engineering Masters"
)
# Client rate model
@engi_bp.route("/client-rate")
def client_rates():
2026-08-06 12:20:50 +05:30
return render_template(
"engineering/client_rate.html",
title="Client Rate Master"
)
2026-08-06 12:20:50 +05:30
@engi_bp.route("/subcontractor-rate", methods=["GET", "POST"])
2026-08-06 12:20:50 +05:30
def add_subcontractor_rates():
2026-08-06 12:20:50 +05:30
subcontractors = Subcontractor.query.filter_by(status="Active").all()
if request.method == "POST":
result = SubcontractorRateService.save_or_update(request.form)
if result["success"]:
flash(result["message"], "success")
2026-08-06 12:20:50 +05:30
return redirect(url_for("engineering.add_subcontractor_rates"))
else:
flash(result["message"], "danger")
rates = SubcontractorRateService.get_all_rates()
2026-08-06 12:20:50 +05:30
return render_template(
"engineering/contractor_rate.html",
2026-08-06 12:20:50 +05:30
title="Subcontractor Rate Master",
subcontractors=subcontractors,
rates=rates
2026-08-06 12:20:50 +05:30
)
@engi_bp.route("/subcontractor-rate/edit/<int:rate_id>", methods=["GET", "POST"])
def edit_rate(rate_id):
subcontractors = Subcontractor.query.filter_by(status="Active").all()
if request.method == "POST":
result = SubcontractorRateService.save_or_update(request.form)
if result["success"]:
flash(result["message"], "success")
return redirect(url_for("engineering.add_subcontractor_rates"))
flash(result["message"], "danger")
rate = SubcontractorRateService.get_rate(rate_id)
rates = SubcontractorRateService.get_all_rates()
2026-08-06 12:20:50 +05:30
return render_template(
"engineering/contractor_rate.html",
subcontractors=subcontractors,
rate=rate,
rates=rates
2026-08-06 12:20:50 +05:30
)
@engi_bp.route("/subcontractor-rate/delete/<int:rate_id>")
def delete_rate(rate_id):
SubcontractorRateService.delete_rate(rate_id)
flash("Rate deleted successfully.", "success")
return redirect(url_for("engineering.add_subcontractor_rates"))
@engi_bp.route("/check-rate")
def check_rate():
exists = SubcontractorRateService.check_duplicate(
subcontractor_id=request.args.get("subcontractor_id"),
category=request.args.get("category"),
item_name=request.args.get("item_name"),
rate_id=request.args.get("rate_id")
)
return jsonify({
"exists": exists
})