Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

route_maintenancejob.py 3.2 KiB

1 anno fa
1 anno fa
1 anno fa
1 anno fa
1 anno fa
1 anno fa
1 anno fa
1 anno fa
1 anno fa
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. from fastapi import Depends, APIRouter, File, Form, HTTPException, UploadFile, status
  2. from sqlalchemy.orm import Session
  3. from db.session import get_db
  4. from db.repository.maintenancejob import (
  5. create_new_maintenancejob,
  6. create_car_part,
  7. get_all_maintenance_jobs,
  8. get_maintenance_job,
  9. change_maintenance_status,
  10. )
  11. from typing import List
  12. from schemas.maintenancejob import CreateMaintenanceJob, OutputMaintenanceJob
  13. from schemas.carpart import CreateCarPart, ShowCarPart
  14. from db.models.user import User
  15. from apis.v1.route_auth import get_current_user
  16. router = APIRouter()
  17. @router.post("/", status_code=status.HTTP_201_CREATED)
  18. def create_maintenancejob(
  19. maintenancejob: CreateMaintenanceJob,
  20. db: Session = Depends(get_db),
  21. current_user: User = Depends(get_current_user),
  22. ):
  23. if current_user.Role != "Driver" and current_user.Role != "Admin":
  24. raise HTTPException(
  25. status_code=403, detail="You are not authorized to perform this action"
  26. )
  27. maintenancejob_res = create_new_maintenancejob(
  28. maintenancejob=maintenancejob, db=db
  29. )
  30. if maintenancejob_res == "nodriver":
  31. raise HTTPException(
  32. status_code=404, detail="This car has no driver"
  33. )
  34. return maintenancejob_res
  35. @router.post("/carpart", response_model = ShowCarPart ,status_code=status.HTTP_201_CREATED)
  36. def create_carpart(
  37. car_part: CreateCarPart = Depends(),
  38. db: Session = Depends(get_db),
  39. current_user: User = Depends(get_current_user),
  40. ):
  41. if current_user.Role != "Maintenance" and current_user.Role != "Admin":
  42. raise HTTPException(
  43. status_code=403, detail="You are not authorized to perform this action"
  44. )
  45. print("So it begins...")
  46. car_part_res = create_car_part(car_part=car_part, db=db)
  47. print("So it ends...")
  48. return car_part_res
  49. @router.get(
  50. "/", response_model=List[OutputMaintenanceJob], status_code=status.HTTP_200_OK
  51. )
  52. def get_all_maintenancejobs(
  53. db: Session = Depends(get_db),
  54. current_user: User = Depends(get_current_user),
  55. ):
  56. if current_user.Role != "Maintenance" and current_user.Role != "Admin":
  57. raise HTTPException(
  58. status_code=403, detail="You are not authorized to perform this action"
  59. )
  60. maintenancejobs = get_all_maintenance_jobs(db)
  61. return maintenancejobs
  62. @router.get(
  63. "/{maintenance_job_id}",
  64. response_model=OutputMaintenanceJob,
  65. status_code=status.HTTP_200_OK,
  66. )
  67. def get_maintenancejob(
  68. maintenance_job_id: int,
  69. db: Session = Depends(get_db),
  70. ):
  71. maintenancejob = get_maintenance_job(maintenance_job_id, db)
  72. print(maintenancejob)
  73. return maintenancejob
  74. @router.patch("/{maintenance_job_id}", status_code=status.HTTP_200_OK)
  75. def change_status(
  76. maintenance_job_id: int,
  77. status: str,
  78. db: Session = Depends(get_db),
  79. current_user: User = Depends(get_current_user),
  80. ):
  81. if current_user.Role != "Maintenance":
  82. raise HTTPException(
  83. status_code=403, detail="You are not authorized to perform this action"
  84. )
  85. result = change_maintenance_status(maintenance_job_id, status, current_user.Id, db)
  86. if result is None:
  87. raise HTTPException(status_code=404, detail="Maintenance job not found")
  88. return result