@cryptotaxi247 / CoPilot / commits / a22bbabf

Alert time zula (#523)

* Refactor datetime fields to string format with ISO 8601 representation in Case and Alert models * Remove unnecessary license retrieval in replace_license_in_db function

taylor_socfortress committed Oct 18, 2025 at 11:02 UTC a22bbabf289ab5b84f74a0dc3b4a04bdefa0ac68
2 files changed +37 -7
backend/app/incidents/schema/db_operations.py
+35 -6
@@ -317,11 +317,16 @@ class CaseCreate(BaseModel):
317 class LinkedCaseCreate(BaseModel):
318 case_name: str
319 case_description: str
320 - case_creation_time: datetime
320 + case_creation_time: str
321 case_status: str
322 assigned_to: Optional[str] = None
323 id: int
324
325 + @validator('case_creation_time', pre=True)
326 + def format_case_creation_time(cls, v):
327 + if isinstance(v, datetime):
328 + return v.strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
329 + return v
330
331 class CaseCreateFromAlert(BaseModel):
332 alert_id: int
@@ -378,7 +383,13 @@ class CommentBase(BaseModel):
383 alert_id: int
384 id: int
385 comment: str
381 - created_at: datetime
386 + created_at: str
387 +
388 + @validator('created_at', pre=True)
389 + def format_created_at(cls, v):
390 + if isinstance(v, datetime):
391 + return v.strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
392 + return v
393
394
395 class CaseCommentBase(BaseModel):
@@ -386,7 +397,13 @@ class CaseCommentBase(BaseModel):
397 case_id: int
398 id: int
399 comment: str
389 - created_at: datetime
400 + created_at: str
401 +
402 + @validator('created_at', pre=True)
403 + def format_created_at(cls, v):
404 + if isinstance(v, datetime):
405 + return v.strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
406 + return v
407
408
409 class AssetBase(BaseModel):
@@ -410,8 +427,8 @@ class IoCBase(BaseModel):
427
428 class AlertOut(BaseModel):
429 id: int
413 - alert_creation_time: datetime
414 - time_closed: Optional[datetime] = None
430 + alert_creation_time: str
431 + time_closed: Optional[str] = None
432 alert_name: str
433 alert_description: str
434 status: str
@@ -425,6 +442,12 @@ class AlertOut(BaseModel):
442 linked_cases: List[LinkedCaseCreate] = []
443 iocs: List[IoCBase] = []
444
445 + @validator('alert_creation_time', 'time_closed', pre=True)
446 + def format_datetime(cls, v):
447 + if isinstance(v, datetime):
448 + return v.strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
449 + return v
450 +
451
452 class AlertOutResponse(BaseModel):
453 alerts: List[AlertOut]
@@ -444,12 +467,18 @@ class CaseOut(BaseModel):
467 assigned_to: Optional[str] = None
468 alerts: Optional[List[AlertOut]] = []
469 case_status: Optional[str] = None
447 - case_creation_time: Optional[datetime] = None
470 + case_creation_time: Optional[str] = None
471 customer_code: Optional[str] = None
472 notification_invoked_number: Optional[int] = 0
473 escalated: bool = False
474 comments: List[CaseCommentBase] = []
475
476 + @validator('case_creation_time', pre=True)
477 + def format_case_creation_time(cls, v):
478 + if isinstance(v, datetime):
479 + return v.strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
480 + return v
481 +
482
483 class CaseOutResponse(BaseModel):
484 cases: List[CaseOut]
backend/app/middleware/license.py
+2 -1
@@ -1048,7 +1048,8 @@ async def get_license_features(session: AsyncSession = Depends(get_db)) -> GetLi
1048 description="Replace a license",
1049 )
1050 async def replace_license_in_db(request: ReplaceLicenseRequest, session: AsyncSession = Depends(get_db)):
1051 - license = await get_license(session)
1051 + # ! Remove get_license becasue we don't need to fetch old license
1052 + #license = await get_license(session)
1053
1054 # Invalidate cache for old license
1055 await invalidate_license_cache(session, license.license_key)