feat: Enhance project and reservation management

- Updated reservation list to display estimated units and improved count display.
- Added "Upcoming" status to project dashboard and header with corresponding styles.
- Implemented a dropdown for quick status updates in project header.
- Modified project list compact view to reflect new status labels.
- Updated project overview to include a tab for upcoming projects.
- Added migration script to introduce estimated_units column in job_reservations table.
This commit is contained in:
2026-03-19 22:52:35 +00:00
parent 0d01715f81
commit bc02dc9564
12 changed files with 959 additions and 275 deletions

View File

@@ -373,11 +373,13 @@ async def get_projects_list(
"""
query = db.query(Project)
# Filter by status if provided; otherwise exclude soft-deleted projects
if status:
# Filter by status if provided; otherwise exclude archived/deleted from default view
if status == "all":
query = query.filter(Project.status != "deleted")
elif status:
query = query.filter(Project.status == status)
else:
query = query.filter(Project.status != "deleted")
query = query.filter(Project.status.notin_(["deleted", "archived", "completed"]))
# Filter by project type if provided
if project_type_id:
@@ -438,6 +440,7 @@ async def get_projects_stats(request: Request, db: Session = Depends(get_db)):
"""
# Count projects by status (exclude deleted)
total_projects = db.query(func.count(Project.id)).filter(Project.status != "deleted").scalar()
upcoming_projects = db.query(func.count(Project.id)).filter_by(status="upcoming").scalar()
active_projects = db.query(func.count(Project.id)).filter_by(status="active").scalar()
on_hold_projects = db.query(func.count(Project.id)).filter_by(status="on_hold").scalar()
completed_projects = db.query(func.count(Project.id)).filter_by(status="completed").scalar()
@@ -459,6 +462,7 @@ async def get_projects_stats(request: Request, db: Session = Depends(get_db)):
"request": request,
"total_projects": total_projects,
"active_projects": active_projects,
"upcoming_projects": upcoming_projects,
"on_hold_projects": on_hold_projects,
"completed_projects": completed_projects,
"total_locations": total_locations,