Переглянути джерело

Changed some integers to floats

main
Madiwka 2 роки тому
джерело
коміт
9a532739de
12 змінених файлів з 66 додано та 9 видалено
  1. +13
    -0
      app/Dockerfile
  2. +6
    -0
      app/apis/v1/route_user.py
  3. +1
    -0
      app/core/config.py
  4. +2
    -2
      app/db/models/carpart.py
  5. +2
    -2
      app/db/models/fuelingtask.py
  6. +3
    -2
      app/db/models/vehicle.py
  7. +0
    -1
      app/python
  8. +9
    -0
      app/requirements.txt
  9. +1
    -0
      app/schemas/user.py
  10. +1
    -0
      app/start_service.sh
  11. +25
    -0
      docker-compose.yml
  12. +3
    -2
      requirements.txt

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

@@ -0,0 +1,13 @@
FROM python:3.11-slim

WORKDIR /app
COPY ./requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
ENV PYTHONPATH "${PYTHONPATH}:/app/core:/:/app:/app/app/core:/app/app"
COPY . .



EXPOSE 2764
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "2764"]


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

@@ -4,6 +4,7 @@ from sqlalchemy.orm import Session
from fastapi import Depends from fastapi import Depends
from typing import List, Annotated from typing import List, Annotated
from apis.v1.route_auth import get_current_user from apis.v1.route_auth import get_current_user
from core.config import Settings
from db.models.user import User from db.models.user import User
from schemas.user import UserCreate, ShowUser, ShowDriver, DriverCreate from schemas.user import UserCreate, ShowUser, ShowDriver, DriverCreate
from db.session import get_db from db.session import get_db
@@ -26,6 +27,11 @@ def create_user(
db: Session = Depends(get_db), db: Session = Depends(get_db),
current_user: User = Depends(get_current_user), current_user: User = Depends(get_current_user),
): ):
if user.Role not in Settings.ALLOWED_ROLES:
raise HTTPException(
status_code=400,
detail=f"Status {status} is not allowed. Allowed status are {settings.ALLOWED_TASK_STATUS}",
)
if current_user.Role != "Admin": if current_user.Role != "Admin":
raise HTTPException( raise HTTPException(
status_code=403, detail="You are not authorized to perform this action" status_code=403, detail="You are not authorized to perform this action"


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

@@ -11,6 +11,7 @@ class Settings:
SECRET_KEY: str = "tH357aC6oA7ofCaN3yTffYkRh" SECRET_KEY: str = "tH357aC6oA7ofCaN3yTffYkRh"
ALGORITHM: str = "HS256" ALGORITHM: str = "HS256"
ALLOWED_TASK_STATUS: list = ["Pending", "In Progress", "Completed", "Cancelled"] ALLOWED_TASK_STATUS: list = ["Pending", "In Progress", "Completed", "Cancelled"]
ALLOWED_ROLES: list = ["Admin", "Driver", "Maintenance", "Fueling"]




settings = Settings() settings = Settings()


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

@@ -1,4 +1,4 @@
from sqlalchemy import Column, Integer, String, ForeignKey, LargeBinary
from sqlalchemy import Column, Float, Integer, String, ForeignKey, LargeBinary
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from db.base import Base from db.base import Base


@@ -12,4 +12,4 @@ class CarPart(Base):
Number = Column(String, nullable=False) Number = Column(String, nullable=False)
Condition = Column(String, nullable=False) Condition = Column(String, nullable=False)
ImageURL = Column(LargeBinary, nullable=False) ImageURL = Column(LargeBinary, nullable=False)
Cost = Column(Integer, nullable=False)
Cost = Column(Float, nullable=False)

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

@@ -1,4 +1,4 @@
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, LargeBinary
from sqlalchemy import Column, Float, Integer, String, ForeignKey, DateTime, LargeBinary
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from db.base import Base from db.base import Base


@@ -11,7 +11,7 @@ class FuelingTask(Base):
Date = Column(DateTime, nullable=False) Date = Column(DateTime, nullable=False)
Description = Column(String, nullable=True) Description = Column(String, nullable=True)
Cost = Column(Integer, nullable=False) Cost = Column(Integer, nullable=False)
FuelRefilled = Column(Integer, nullable=False)
FuelRefilled = Column(Float, nullable=False)
GasStationName = Column(String, nullable=False) GasStationName = Column(String, nullable=False)
ImageBefore = Column(LargeBinary, nullable=False) ImageBefore = Column(LargeBinary, nullable=False)
ImageAfter = Column(LargeBinary, nullable=False) ImageAfter = Column(LargeBinary, nullable=False)


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

@@ -1,6 +1,7 @@
# Postgres table model for vehicles # Postgres table model for vehicles
from sqlalchemy import ( from sqlalchemy import (
Column, Column,
Float,
Integer, Integer,
String, String,
ARRAY, ARRAY,
@@ -16,8 +17,8 @@ class Vehicle(Base):
LicensePlate = Column(String, nullable=False) LicensePlate = Column(String, nullable=False)
Type = Column(String, nullable=False) Type = Column(String, nullable=False)
CurrentLocation = Column(ARRAY(String), nullable=True) CurrentLocation = Column(ARRAY(String), nullable=True)
Fuel = Column(Integer, nullable=False)
Mileage = Column(Integer, nullable=False)
Fuel = Column(Float, nullable=False)
Mileage = Column(Float, nullable=False)
Status = Column(String, nullable=False) Status = Column(String, nullable=False)
Capacity = Column(Integer, nullable=False) Capacity = Column(Integer, nullable=False)
DriverHistory = Column(ARRAY(Integer), nullable=True) DriverHistory = Column(ARRAY(Integer), nullable=True)


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

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

+ 9
- 0
app/requirements.txt Переглянути файл

@@ -0,0 +1,9 @@
fastapi[all]
pydantic
sqlalchemy
psycopg2-binary
alembic==1.12.0
passlib
python-jose==3.3.0
python-multipart==0.0.6
requests

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

@@ -13,6 +13,7 @@ class UserCreate(BaseModel):
GovernmentId: str = Field(...) GovernmentId: str = Field(...)
Address: str = Field(...) Address: str = Field(...)
Email: EmailStr = Field(...) Email: EmailStr = Field(...)
Role: str = Field(...)




class DriverCreate(UserCreate): class DriverCreate(UserCreate):


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

@@ -0,0 +1 @@
uvicorn main:app --host 0.0.0.0 --port 2764

+ 25
- 0
docker-compose.yml Переглянути файл

@@ -0,0 +1,25 @@
version: "3.11"

services:
backend:
build: app
ports:
- "8000:2764"
depends_on:
- db


db:
image: "postgres"
restart: always
environment:
POSTGRES_USER: VMSBase
POSTGRES_PASSWORD: VMSBasePass
POSTGRES_DB: VMSData
POSTGRES_PORT: 5432
expose:
- "5432"

networks:
practice:

+ 3
- 2
requirements.txt Переглянути файл

@@ -1,8 +1,9 @@
fastapi[all] fastapi[all]
pydantic pydantic
sqlalchemy sqlalchemy
psycopg2
psycopg2-binary
alembic==1.12.0 alembic==1.12.0
passlib passlib
python-jose==3.3.0 python-jose==3.3.0
python-multipart==0.0.6
python-multipart==0.0.6
requests

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