|
@@ -1,4 +1,4 @@
|
|
|
-from fastapi import APIRouter, Depends, HTTPException, Request
|
|
|
|
|
|
|
+from fastapi import APIRouter, Depends, HTTPException
|
|
|
from typing import List, Optional
|
|
from typing import List, Optional
|
|
|
import db
|
|
import db
|
|
|
import schemas
|
|
import schemas
|
|
@@ -69,7 +69,7 @@ async def admin_get_materials(admin: dict = Depends(require_admin)):
|
|
|
return materials
|
|
return materials
|
|
|
|
|
|
|
|
@router.post("/admin/materials")
|
|
@router.post("/admin/materials")
|
|
|
-async def admin_create_material(request: Request, data: schemas.MaterialCreate, admin: dict = Depends(require_admin)):
|
|
|
|
|
|
|
+async def admin_create_material(data: schemas.MaterialCreate, admin: dict = Depends(require_admin)):
|
|
|
colors_json = json.dumps(data.available_colors) if data.available_colors else None
|
|
colors_json = json.dumps(data.available_colors) if data.available_colors else None
|
|
|
query = "INSERT INTO materials (name_en, name_ru, name_ua, name_me, desc_en, desc_ru, desc_ua, desc_me, long_desc_en, long_desc_ru, long_desc_ua, long_desc_me, price_per_cm3, available_colors, is_active) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
|
query = "INSERT INTO materials (name_en, name_ru, name_ua, name_me, desc_en, desc_ru, desc_ua, desc_me, long_desc_en, long_desc_ru, long_desc_ua, long_desc_me, price_per_cm3, available_colors, is_active) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
|
|
params = (data.name_en, data.name_ru, data.name_ua, data.name_me, data.desc_en, data.desc_ru, data.desc_ua, data.desc_me, data.long_desc_en, data.long_desc_ru, data.long_desc_ua, data.long_desc_me, data.price_per_cm3, colors_json, data.is_active)
|
|
params = (data.name_en, data.name_ru, data.name_ua, data.name_me, data.desc_en, data.desc_ru, data.desc_ua, data.desc_me, data.long_desc_en, data.long_desc_ru, data.long_desc_ua, data.long_desc_me, data.price_per_cm3, colors_json, data.is_active)
|
|
@@ -80,13 +80,12 @@ async def admin_create_material(request: Request, data: schemas.MaterialCreate,
|
|
|
action="create_material",
|
|
action="create_material",
|
|
|
target_type="material",
|
|
target_type="material",
|
|
|
target_id=mat_id,
|
|
target_id=mat_id,
|
|
|
- details=data.dict(),
|
|
|
|
|
- request=request
|
|
|
|
|
|
|
+ details=data.dict()
|
|
|
)
|
|
)
|
|
|
return {"id": mat_id}
|
|
return {"id": mat_id}
|
|
|
|
|
|
|
|
@router.patch("/admin/materials/{mat_id}")
|
|
@router.patch("/admin/materials/{mat_id}")
|
|
|
-async def admin_update_material(request: Request, mat_id: int, data: schemas.MaterialUpdate, admin: dict = Depends(require_admin)):
|
|
|
|
|
|
|
+async def admin_update_material(mat_id: int, data: schemas.MaterialUpdate, admin: dict = Depends(require_admin)):
|
|
|
update_fields = []
|
|
update_fields = []
|
|
|
params = []
|
|
params = []
|
|
|
for field, value in data.dict(exclude_unset=True).items():
|
|
for field, value in data.dict(exclude_unset=True).items():
|
|
@@ -105,8 +104,7 @@ async def admin_update_material(request: Request, mat_id: int, data: schemas.Mat
|
|
|
action="update_material",
|
|
action="update_material",
|
|
|
target_type="material",
|
|
target_type="material",
|
|
|
target_id=mat_id,
|
|
target_id=mat_id,
|
|
|
- details={"updated_fields": data.dict(exclude_unset=True)},
|
|
|
|
|
- request=request
|
|
|
|
|
|
|
+ details={"updated_fields": data.dict(exclude_unset=True)}
|
|
|
)
|
|
)
|
|
|
return {"id": mat_id}
|
|
return {"id": mat_id}
|
|
|
|
|
|
|
@@ -115,7 +113,7 @@ async def admin_get_services(admin: dict = Depends(require_admin)):
|
|
|
return db.execute_query("SELECT * FROM services ORDER BY id DESC")
|
|
return db.execute_query("SELECT * FROM services ORDER BY id DESC")
|
|
|
|
|
|
|
|
@router.post("/admin/services")
|
|
@router.post("/admin/services")
|
|
|
-async def admin_create_service(request: Request, data: schemas.ServiceCreate, admin: dict = Depends(require_admin)):
|
|
|
|
|
|
|
+async def admin_create_service(data: schemas.ServiceCreate, admin: dict = Depends(require_admin)):
|
|
|
query = "INSERT INTO services (name_en, name_ru, name_ua, name_me, desc_en, desc_ru, desc_ua, desc_me, tech_type, is_active) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
|
query = "INSERT INTO services (name_en, name_ru, name_ua, name_me, desc_en, desc_ru, desc_ua, desc_me, tech_type, is_active) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
|
|
srv_id = db.execute_commit(query, (data.name_en, data.name_ru, data.name_ua, data.name_me, data.desc_en, data.desc_ru, data.desc_ua, data.desc_me, data.tech_type, data.is_active))
|
|
srv_id = db.execute_commit(query, (data.name_en, data.name_ru, data.name_ua, data.name_me, data.desc_en, data.desc_ru, data.desc_ua, data.desc_me, data.tech_type, data.is_active))
|
|
|
|
|
|
|
@@ -124,13 +122,12 @@ async def admin_create_service(request: Request, data: schemas.ServiceCreate, ad
|
|
|
action="create_service",
|
|
action="create_service",
|
|
|
target_type="service",
|
|
target_type="service",
|
|
|
target_id=srv_id,
|
|
target_id=srv_id,
|
|
|
- details=data.dict(),
|
|
|
|
|
- request=request
|
|
|
|
|
|
|
+ details=data.dict()
|
|
|
)
|
|
)
|
|
|
return {"id": srv_id}
|
|
return {"id": srv_id}
|
|
|
|
|
|
|
|
@router.patch("/admin/services/{srv_id}")
|
|
@router.patch("/admin/services/{srv_id}")
|
|
|
-async def admin_update_service(request: Request, srv_id: int, data: schemas.ServiceUpdate, admin: dict = Depends(require_admin)):
|
|
|
|
|
|
|
+async def admin_update_service(srv_id: int, data: schemas.ServiceUpdate, admin: dict = Depends(require_admin)):
|
|
|
update_fields = []
|
|
update_fields = []
|
|
|
params = []
|
|
params = []
|
|
|
for field, value in data.dict(exclude_unset=True).items():
|
|
for field, value in data.dict(exclude_unset=True).items():
|
|
@@ -149,31 +146,28 @@ async def admin_update_service(request: Request, srv_id: int, data: schemas.Serv
|
|
|
action="update_service",
|
|
action="update_service",
|
|
|
target_type="service",
|
|
target_type="service",
|
|
|
target_id=srv_id,
|
|
target_id=srv_id,
|
|
|
- details={"updated_fields": data.dict(exclude_unset=True)},
|
|
|
|
|
- request=request
|
|
|
|
|
|
|
+ details={"updated_fields": data.dict(exclude_unset=True)}
|
|
|
)
|
|
)
|
|
|
return {"id": srv_id}
|
|
return {"id": srv_id}
|
|
|
|
|
|
|
|
@router.delete("/admin/materials/{mat_id}")
|
|
@router.delete("/admin/materials/{mat_id}")
|
|
|
-async def admin_delete_material(request: Request, mat_id: int, admin: dict = Depends(require_admin)):
|
|
|
|
|
|
|
+async def admin_delete_material(mat_id: int, admin: dict = Depends(require_admin)):
|
|
|
db.execute_commit("DELETE FROM materials WHERE id = %s", (mat_id,))
|
|
db.execute_commit("DELETE FROM materials WHERE id = %s", (mat_id,))
|
|
|
await audit_service.log(
|
|
await audit_service.log(
|
|
|
user_id=admin.get("id"),
|
|
user_id=admin.get("id"),
|
|
|
action="delete_material",
|
|
action="delete_material",
|
|
|
target_type="material",
|
|
target_type="material",
|
|
|
- target_id=mat_id,
|
|
|
|
|
- request=request
|
|
|
|
|
|
|
+ target_id=mat_id
|
|
|
)
|
|
)
|
|
|
return {"id": mat_id, "status": "deleted"}
|
|
return {"id": mat_id, "status": "deleted"}
|
|
|
|
|
|
|
|
@router.delete("/admin/services/{srv_id}")
|
|
@router.delete("/admin/services/{srv_id}")
|
|
|
-async def admin_delete_service(request: Request, srv_id: int, admin: dict = Depends(require_admin)):
|
|
|
|
|
|
|
+async def admin_delete_service(srv_id: int, admin: dict = Depends(require_admin)):
|
|
|
db.execute_commit("DELETE FROM services WHERE id = %s", (srv_id,))
|
|
db.execute_commit("DELETE FROM services WHERE id = %s", (srv_id,))
|
|
|
await audit_service.log(
|
|
await audit_service.log(
|
|
|
user_id=admin.get("id"),
|
|
user_id=admin.get("id"),
|
|
|
action="delete_service",
|
|
action="delete_service",
|
|
|
target_type="service",
|
|
target_type="service",
|
|
|
- target_id=srv_id,
|
|
|
|
|
- request=request
|
|
|
|
|
|
|
+ target_id=srv_id
|
|
|
)
|
|
)
|
|
|
return {"id": srv_id, "status": "deleted"}
|
|
return {"id": srv_id, "status": "deleted"}
|