diff --git a/containers/backupchecks/src/backend/app/main/routes_jobs.py b/containers/backupchecks/src/backend/app/main/routes_jobs.py index ab4ee03..c07cce1 100644 --- a/containers/backupchecks/src/backend/app/main/routes_jobs.py +++ b/containers/backupchecks/src/backend/app/main/routes_jobs.py @@ -13,12 +13,33 @@ from .routes_shared import ( @login_required @roles_required("admin", "operator", "viewer") def jobs(): - # Join with customers for display - jobs = ( + selected_customer_id = None + selected_customer_name = "" + customer_id_raw = (request.args.get("customer_id") or "").strip() + if customer_id_raw: + try: + selected_customer_id = int(customer_id_raw) + except ValueError: + selected_customer_id = None + + base_query = ( Job.query .filter(Job.archived.is_(False)) .outerjoin(Customer, Customer.id == Job.customer_id) - .filter(db.or_(Customer.id.is_(None), Customer.active.is_(True))) + ) + + if selected_customer_id is not None: + base_query = base_query.filter(Job.customer_id == selected_customer_id) + selected_customer = Customer.query.filter(Customer.id == selected_customer_id).first() + if selected_customer is not None: + selected_customer_name = selected_customer.name or "" + else: + # Default listing hides jobs for inactive customers. + base_query = base_query.filter(db.or_(Customer.id.is_(None), Customer.active.is_(True))) + + # Join with customers for display + jobs = ( + base_query .add_columns( Job.id, Job.backup_software, @@ -54,6 +75,8 @@ def jobs(): "main/jobs.html", jobs=rows, can_manage_jobs=can_manage_jobs, + selected_customer_id=selected_customer_id, + selected_customer_name=selected_customer_name, ) diff --git a/containers/backupchecks/src/templates/main/customers.html b/containers/backupchecks/src/templates/main/customers.html index e2509ce..d418636 100644 --- a/containers/backupchecks/src/templates/main/customers.html +++ b/containers/backupchecks/src/templates/main/customers.html @@ -45,7 +45,11 @@ {% if customers %} {% for c in customers %}