Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 

102 Zeilen
3.2 KiB

  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