Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter, Depends, HTTPException, status | |
| from sqlalchemy.orm import Session | |
| from typing import List | |
| from database import get_db | |
| from models.product_packaging import ProductPackaging | |
| from models.user import User | |
| from schemas.product import ( | |
| ProductPackagingResponse, | |
| ProductPackagingCreate, | |
| ProductPackagingUpdate | |
| ) | |
| from routers.auth import get_current_user | |
| # ε―Όε ₯ζ₯εΏζ¨‘ε | |
| from utils.logger import logger | |
| router = APIRouter() | |
| async def read_product_packaging( | |
| product_number: str, | |
| current_user: User = Depends(get_current_user), | |
| db: Session = Depends(get_db) | |
| ): | |
| """θ·εεεε θ£ ε葨""" | |
| logger.info(f"θ·εεεε θ£ ε葨 - product_number: {product_number}, user: {current_user.username}") | |
| from routers.auth import is_admin_user | |
| query = db.query(ProductPackaging).filter(ProductPackaging.product_number == product_number) | |
| if not is_admin_user(current_user): | |
| query = query.filter(ProductPackaging.company_code == current_user.company_code) | |
| packaging = query.all() | |
| logger.info(f"θ·εεεε θ£ ε葨ζε - product_number: {product_number}, ε ± {len(packaging)} δΈͺε θ£ ") | |
| return packaging | |
| async def create_product_packaging( | |
| product_number: str, | |
| packaging: ProductPackagingCreate, | |
| current_user: User = Depends(get_current_user), | |
| db: Session = Depends(get_db) | |
| ): | |
| """εε»Ίεεε θ£ """ | |
| logger.info(f"εε»Ίεεε θ£ - product_number: {product_number}, user: {current_user.username}") | |
| packaging_data = packaging.model_dump() | |
| packaging_data['product_number'] = product_number | |
| packaging_data['company_code'] = current_user.company_code | |
| db_packaging = ProductPackaging(**packaging_data) | |
| db.add(db_packaging) | |
| db.commit() | |
| db.refresh(db_packaging) | |
| logger.info(f"εε»Ίεεε θ£ ζε - packaging_id: {db_packaging.id}, product_number: {product_number}") | |
| return db_packaging | |
| async def update_product_packaging( | |
| packaging_id: int, | |
| packaging_update: ProductPackagingUpdate, | |
| current_user: User = Depends(get_current_user), | |
| db: Session = Depends(get_db) | |
| ): | |
| """ζ΄ζ°εεε θ£ """ | |
| logger.info(f"ζ΄ζ°εεε θ£ - packaging_id: {packaging_id}, user: {current_user.username}") | |
| from routers.auth import is_admin_user | |
| query = db.query(ProductPackaging).filter(ProductPackaging.id == packaging_id) | |
| if not is_admin_user(current_user): | |
| query = query.filter(ProductPackaging.company_code == current_user.company_code) | |
| packaging = query.first() | |
| if packaging is None: | |
| logger.error(f"ε θ£ δΈεε¨ - packaging_id: {packaging_id}") | |
| raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Packaging not found") | |
| update_data = packaging_update.model_dump(exclude_unset=True) | |
| for field, value in update_data.items(): | |
| setattr(packaging, field, value) | |
| db.commit() | |
| db.refresh(packaging) | |
| logger.info(f"ζ΄ζ°εεε θ£ ζε - packaging_id: {packaging_id}") | |
| return packaging | |
| async def delete_product_packaging( | |
| packaging_id: int, | |
| current_user: User = Depends(get_current_user), | |
| db: Session = Depends(get_db) | |
| ): | |
| """ε ι€εεε θ£ """ | |
| logger.info(f"ε ι€εεε θ£ - packaging_id: {packaging_id}, user: {current_user.username}") | |
| from routers.auth import is_admin_user | |
| query = db.query(ProductPackaging).filter(ProductPackaging.id == packaging_id) | |
| if not is_admin_user(current_user): | |
| query = query.filter(ProductPackaging.company_code == current_user.company_code) | |
| packaging = query.first() | |
| if packaging is None: | |
| logger.error(f"ε θ£ δΈεε¨ - packaging_id: {packaging_id}") | |
| raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Packaging not found") | |
| db.delete(packaging) | |
| db.commit() | |
| logger.info(f"ε ι€εεε θ£ ζε - packaging_id: {packaging_id}") | |
| return None | |