Object update validator fixed.

This commit is contained in:
Michael Woods
2025-12-25 23:50:20 -05:00
parent 1566bc4093
commit 5e2e3cd858

View File

@@ -8,7 +8,7 @@ import logging
from traceback import format_exc from traceback import format_exc
import base64 import base64
import traceback import traceback
from pydantic import BaseModel, validator from pydantic import BaseModel, model_validator
from packetserver.http.dependencies import get_current_http_user from packetserver.http.dependencies import get_current_http_user
from packetserver.http.auth import HttpUser from packetserver.http.auth import HttpUser
@@ -258,15 +258,15 @@ async def create_binary_object(
class ObjectUpdate(BaseModel): class ObjectUpdate(BaseModel):
name: Optional[str] = None name: Optional[str] = None
private: Optional[bool] = None private: Optional[bool] = None
data_text: Optional[str] = None # New: update to text content (forces binary=False) data_text: Optional[str] = None # Update to text content forces binary=False
data_base64: Optional[str] = None # New: update to binary content (forces binary=True) data_base64: Optional[str] = None # Update to binary content forces binary=True
@validator('data_text', 'data_base64', pre=True, always=True) @model_validator(mode='before')
def check_mutually_exclusive(cls, v, values, field): @classmethod
other_field = 'data_base64' if field.name == 'data_text' else 'data_text' def check_mutually_exclusive_content(cls, values: dict) -> dict:
if v is not None and values.get(other_field) is not None: if values.get('data_text') is not None and values.get('data_base64') is not None:
raise ValueError('data_text and data_base64 cannot be provided together') raise ValueError('data_text and data_base64 cannot be provided together')
return v return values
@router.patch("/objects/{uuid}", response_model=ObjectSummary) @router.patch("/objects/{uuid}", response_model=ObjectSummary)
async def update_object( async def update_object(