This commit is contained in:
@@ -196,6 +196,24 @@ def get_contract_file(
|
||||
)
|
||||
|
||||
|
||||
@router.get(
|
||||
'/{_id}/preview-delete',
|
||||
response_model=list[models.DeleteDependency]
|
||||
)
|
||||
async def preview_delete(
|
||||
_id: int,
|
||||
session: Session = Depends(get_session),
|
||||
user: models.User = Depends(get_current_user),
|
||||
):
|
||||
if not service.is_allowed(session, user, _id=_id):
|
||||
raise HTTPException(
|
||||
status_code=403,
|
||||
detail=messages.Messages.not_allowed('contract', 'delete')
|
||||
)
|
||||
result = []
|
||||
return result
|
||||
|
||||
|
||||
@router.get('/{form_id}/files')
|
||||
def get_contract_files(
|
||||
form_id: int,
|
||||
|
||||
@@ -18,6 +18,30 @@ def get_productors(
|
||||
return service.get_all(session, user, names, types)
|
||||
|
||||
|
||||
@router.get(
|
||||
'/{_id}/preview-delete',
|
||||
response_model=list[models.DeleteDependency]
|
||||
)
|
||||
async def preview_delete(
|
||||
_id: int,
|
||||
session: Session = Depends(get_session),
|
||||
user: models.User = Depends(get_current_user),
|
||||
):
|
||||
if not service.is_allowed(session, user, _id=_id):
|
||||
raise HTTPException(
|
||||
status_code=403,
|
||||
detail=messages.Messages.not_allowed('productors', 'delete')
|
||||
)
|
||||
try:
|
||||
result = service.get_delete_dependencies(
|
||||
session,
|
||||
_id
|
||||
)
|
||||
except exceptions.ProductorNotFoundError as error:
|
||||
raise HTTPException(status_code=404, detail=str(error)) from error
|
||||
return result
|
||||
|
||||
|
||||
@router.get('/{_id}', response_model=models.ProductorPublic)
|
||||
def get_productor(
|
||||
_id: int,
|
||||
|
||||
@@ -93,6 +93,33 @@ def delete_one(session: Session, _id: int) -> models.ProductorPublic:
|
||||
session.commit()
|
||||
return result
|
||||
|
||||
|
||||
def get_delete_dependencies(
|
||||
session: Session,
|
||||
_id: int
|
||||
) -> list[models.DeleteDependency]:
|
||||
statement = select(models.Productor).where(models.Productor.id == _id)
|
||||
result = session.exec(statement)
|
||||
productor = result.first()
|
||||
if not productor:
|
||||
raise exceptions.ProductorNotFoundError(
|
||||
messages.Messages.not_found('productor'))
|
||||
products_statement = (
|
||||
select(models.Product)
|
||||
.where(models.Product.productor_id == _id)
|
||||
.distinct()
|
||||
)
|
||||
products = session.exec(products_statement).all()
|
||||
result = [
|
||||
models.DeleteDependency(
|
||||
name=pro.name,
|
||||
id=pro.id,
|
||||
type='product'
|
||||
) for pro in products
|
||||
]
|
||||
return result
|
||||
|
||||
|
||||
def is_allowed(
|
||||
session: Session,
|
||||
user: models.User,
|
||||
|
||||
@@ -26,6 +26,23 @@ def get_products(
|
||||
)
|
||||
|
||||
|
||||
@router.get(
|
||||
'/{_id}/preview-delete',
|
||||
response_model=list[models.DeleteDependency]
|
||||
)
|
||||
async def preview_delete(
|
||||
_id: int,
|
||||
session: Session = Depends(get_session),
|
||||
user: models.User = Depends(get_current_user),
|
||||
):
|
||||
if not service.is_allowed(session, user, _id=_id):
|
||||
raise HTTPException(
|
||||
status_code=403,
|
||||
detail=messages.Messages.not_allowed('product', 'delete')
|
||||
)
|
||||
return []
|
||||
|
||||
|
||||
@router.get('/{_id}', response_model=models.ProductPublic)
|
||||
def get_product(
|
||||
_id: int,
|
||||
|
||||
@@ -93,6 +93,7 @@ def delete_one(
|
||||
session.commit()
|
||||
return result
|
||||
|
||||
|
||||
def is_allowed(
|
||||
session: Session,
|
||||
user: models.User,
|
||||
@@ -103,12 +104,8 @@ def is_allowed(
|
||||
return False
|
||||
if not _id:
|
||||
statement = (
|
||||
select(models.Product)
|
||||
.join(
|
||||
models.Productor,
|
||||
models.Product.productor_id == models.Productor.id
|
||||
)
|
||||
.where(models.Product.id == product.productor_id)
|
||||
select(models.Productor)
|
||||
.where(models.Productor.id == product.productor_id)
|
||||
)
|
||||
productor = session.exec(statement).first()
|
||||
return productor.type in [r.name for r in user.roles]
|
||||
|
||||
@@ -26,6 +26,23 @@ def get_shipments(
|
||||
)
|
||||
|
||||
|
||||
@router.get(
|
||||
'/{_id}/preview-delete',
|
||||
response_model=list[models.DeleteDependency]
|
||||
)
|
||||
async def preview_delete(
|
||||
_id: int,
|
||||
session: Session = Depends(get_session),
|
||||
user: models.User = Depends(get_current_user),
|
||||
):
|
||||
if not service.is_allowed(session, user, _id=_id):
|
||||
raise HTTPException(
|
||||
status_code=403,
|
||||
detail=messages.Messages.not_allowed('shipment', 'delete')
|
||||
)
|
||||
return []
|
||||
|
||||
|
||||
@router.get('/{_id}', response_model=models.ShipmentPublic)
|
||||
def get_shipment(
|
||||
_id: int,
|
||||
|
||||
@@ -36,6 +36,22 @@ def get_roles(
|
||||
return service.get_roles(session)
|
||||
|
||||
|
||||
@router.get(
|
||||
'/{_id}/preview-delete',
|
||||
response_model=list[models.DeleteDependency]
|
||||
)
|
||||
async def preview_delete(
|
||||
_id: int,
|
||||
user: models.User = Depends(get_current_user),
|
||||
):
|
||||
if not service.is_allowed(user):
|
||||
raise HTTPException(
|
||||
status_code=403,
|
||||
detail=messages.Messages.not_allowed('user', 'delete')
|
||||
)
|
||||
return []
|
||||
|
||||
|
||||
@router.get('/{_id}', response_model=models.UserPublic)
|
||||
def get_user(
|
||||
_id: int,
|
||||
|
||||
Reference in New Issue
Block a user