Saruar 1 рік тому
джерело
коміт
617167200b
8 змінених файлів з 155 додано та 1 видалено
  1. +2
    -0
      app/apis/base.py
  2. +71
    -0
      app/apis/v1/route_fuelingtask.py
  3. +1
    -0
      app/db/base.py
  4. +17
    -0
      app/db/models/fuelingtask.py
  5. +1
    -1
      app/db/models/user.py
  6. +49
    -0
      app/db/repository/fuelingtask.py
  7. +1
    -0
      app/python
  8. +13
    -0
      app/schemas/fuelingtask.py

+ 2
- 0
app/apis/base.py Переглянути файл

@@ -7,6 +7,7 @@ from apis.v1 import (
route_auth,
route_task,
route_maintenancejob,
route_fuelingtask
)

api_router = APIRouter()
@@ -17,3 +18,4 @@ api_router.include_router(route_task.router, prefix="/task", tags=["task"])
api_router.include_router(
route_maintenancejob.router, prefix="/maintenancejob", tags=["maintenancejob"]
)
api_router.include_router(route_fuelingtask.router, prefix="/fuel", tags=["fueltasks"])

+ 71
- 0
app/apis/v1/route_fuelingtask.py Переглянути файл

@@ -0,0 +1,71 @@
from fastapi import Depends, APIRouter, HTTPException, status
from sqlalchemy.orm import Session
from db.session import get_db
from db.repository.fuelingtask import (
create_fueling_task,
delete_fueling_task,
get_fueling_task_by_id
)
from schemas.fuelingtask import CreateFuelingTask
from db.models.user import User
from apis.v1.route_auth import get_current_user

router = APIRouter()

@router.post("/", status_code=status.HTTP_201_CREATED)
def create_fuelingtask(
fuelingtask: CreateFuelingTask,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
):
if current_user.Role != "FuelingPerson" and current_user.Role != "Admin":
raise HTTPException(
status_code=403, detail="You are not authorized to perform this action"
)

fuelingtask_res = create_fueling_task(
fueling_task=fuelingtask, current_user=current_user.Id, db=db
)

if fuelingtask_res == "nodriver":
raise HTTPException(
status_code=404, detail="Driver ID not found"
)

if fuelingtask_res == "novehicle":
raise HTTPException(
status_code=404, detail="Vehicle ID not found"
)
return fuelingtask_res



@router.get("/{fueling_task_id}", status_code=status.HTTP_200_OK)
def get_fuelingtask(
fueling_task_id: int,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
):
if current_user.Role != "FuelingPerson" and current_user.Role != "Admin":
raise HTTPException(
status_code=403, detail="You are not authorized to perform this action"
)

fuelingtask = get_fueling_task_by_id(fueling_task_id, db)
return fuelingtask

@router.delete("/{fueling_task_id}", status_code=status.HTTP_204_NO_CONTENT)
def delete_fuelingtask(
fueling_task_id: int,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
):
if current_user.Role != "FuelingPerson" and current_user.Role != "Admin":
raise HTTPException(
status_code=403, detail="You are not authorized to perform this action"
)

if not delete_fueling_task(fueling_task_id, db):
raise HTTPException(
status_code=404, detail="Fueling task not found"
)

+ 1
- 0
app/db/base.py Переглянути файл

@@ -6,3 +6,4 @@ from db.models.carpart import CarPart
from db.models.maintenancejob import MaintenanceJob
from db.models.drivetask import DriveTask
from db.models.auction import Auction
from db.models.fuelingtask import FuelingTask

+ 17
- 0
app/db/models/fuelingtask.py Переглянути файл

@@ -0,0 +1,17 @@
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime
from sqlalchemy.orm import relationship
from db.base import Base

class FuelingTask(Base):
Id = Column(Integer, primary_key=True, index=True)
VehicleId = Column(ForeignKey("vehicle.Id"), nullable=False)
DriverId = Column(ForeignKey("user.Id"), nullable=False)
CreatedById = Column(ForeignKey("user.Id"), nullable=False)
Date = Column(DateTime, nullable=False)
Description = Column(String, nullable=True)
Cost = Column(Integer, nullable=False)
FuelRefilled = Column(Integer, nullable=False)
GasStationName = Column(String, nullable=False)
ImageBefore = Column(String, nullable=False)
ImageAfter = Column(String, nullable=False)
CreatedBy = relationship("User", back_populates="fuelingTasks", foreign_keys="FuelingTask.CreatedById")

+ 1
- 1
app/db/models/user.py Переглянути файл

@@ -27,5 +27,5 @@ class User(Base):
#MaintenancePerson-specific relationships
maintenanceJobs = relationship("MaintenanceJob", back_populates="CreatedBy")
#FuelingPerson-specific relationships
#fuelingJobs = relationship("FuelingJob", back_populates="CreatedBy")
fuelingTasks = relationship("FuelingTask", back_populates="CreatedBy", foreign_keys="FuelingTask.CreatedById")


+ 49
- 0
app/db/repository/fuelingtask.py Переглянути файл

@@ -0,0 +1,49 @@
from sqlalchemy.orm import Session


from schemas.fuelingtask import CreateFuelingTask
from db.models.fuelingtask import FuelingTask
from db.repository.user import get_car_driver, get_user_by_id
from db.repository.vehicle import get_vehicle_by_id

def create_fueling_task(fueling_task: CreateFuelingTask, current_user: int, db: Session):
if not get_vehicle_by_id(fueling_task.VehicleId, db=db):
return "novehicle"
driver = get_car_driver(fueling_task.VehicleId, db=db)
if not driver:
return "nodriver"

fueling_task_object = FuelingTask(
DriverId=driver.Id,
VehicleId=fueling_task.VehicleId,
CreatedById=current_user,
Description=fueling_task.Description,
Date=fueling_task.Date,
Cost=fueling_task.Cost,
FuelRefilled=fueling_task.FuelRefilled,
GasStationName=fueling_task.GasStationName,
ImageBefore=fueling_task.ImageBefore,
ImageAfter=fueling_task.ImageAfter,
)
db.add(fueling_task_object)
db.commit()
db.refresh(fueling_task_object)
return fueling_task_object


def delete_fueling_task(fueling_task_id: int, db: Session):
fueling_task = db.query(FuelingTask).filter(FuelingTask.Id == fueling_task_id).first()
if fueling_task:
db.delete(fueling_task)
db.commit()
return True
return False

def get_fueling_task_by_id(fuel_task_id: int, db: Session):
fuel_task = db.query(FuelingTask).filter(FuelingTask.Id == fuel_task_id).first()
res = fuel_task.__dict__
res["Driver"] = get_user_by_id(fuel_task.DriverId, db=db)
return fuel_task

+ 1
- 0
app/python Переглянути файл

@@ -0,0 +1 @@
/usr/local/bin/python3.10/usr/local/bin/python

+ 13
- 0
app/schemas/fuelingtask.py Переглянути файл

@@ -0,0 +1,13 @@
from pydantic import BaseModel, Field
from datetime import datetime


class CreateFuelingTask(BaseModel):
VehicleId: str = Field(...)
Description: str = Field(...)
Date: datetime = Field(...)
Cost: int = Field(...)
FuelRefilled: int = Field(...)
GasStationName: str = Field(...)
ImageBefore: str = Field(...)
ImageAfter: str = Field(...)

Завантаження…
Відмінити
Зберегти