Skip to content

Commit

Permalink
[ROMM-1452] Mark naive datetimes as UTC
Browse files Browse the repository at this point in the history
  • Loading branch information
gantoine committed Jan 10, 2025
1 parent de74688 commit 7717317
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 8 deletions.
2 changes: 1 addition & 1 deletion backend/endpoints/responses/assets.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from datetime import datetime
from typing import TypedDict

from pydantic import BaseModel
from .base import BaseModel


class BaseAsset(BaseModel):
Expand Down
18 changes: 18 additions & 0 deletions backend/endpoints/responses/base.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from datetime import datetime, timezone

from pydantic import BaseModel as PydanticBaseModel
from pydantic import ConfigDict


class BaseModel(PydanticBaseModel):
"""Ensures all datetime fields include UTC timezone"""

model_config = ConfigDict(
json_encoders={
datetime: lambda dt: (
dt.isoformat()
if dt.tzinfo
else dt.replace(tzinfo=timezone.utc).isoformat()
)
}
)
3 changes: 2 additions & 1 deletion backend/endpoints/responses/collection.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from datetime import datetime

from models.collection import Collection
from pydantic import BaseModel

from .base import BaseModel


class CollectionSchema(BaseModel):
Expand Down
2 changes: 1 addition & 1 deletion backend/endpoints/responses/firmware.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from datetime import datetime
from typing import TypedDict

from pydantic import BaseModel
from .base import BaseModel


class FirmwareSchema(BaseModel):
Expand Down
3 changes: 2 additions & 1 deletion backend/endpoints/responses/identity.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from datetime import datetime

from models.user import Role
from pydantic import BaseModel

from .base import BaseModel


class UserSchema(BaseModel):
Expand Down
3 changes: 2 additions & 1 deletion backend/endpoints/responses/platform.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
from datetime import datetime

from models.platform import DEFAULT_COVER_ASPECT_RATIO
from pydantic import BaseModel, Field, computed_field
from pydantic import Field, computed_field

from .base import BaseModel
from .firmware import FirmwareSchema


Expand Down
4 changes: 3 additions & 1 deletion backend/endpoints/responses/rom.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
from handler.metadata.igdb_handler import IGDBMetadata
from handler.metadata.moby_handler import MobyMetadata
from models.rom import Rom, RomFile, RomUserStatus
from pydantic import BaseModel, computed_field
from pydantic import computed_field

from .base import BaseModel

SORT_COMPARE_REGEX = re.compile(r"^([Tt]he|[Aa]|[Aa]nd)\s")

Expand Down
2 changes: 1 addition & 1 deletion backend/endpoints/responses/search.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from pydantic import BaseModel
from .base import BaseModel


class SearchRomSchema(BaseModel):
Expand Down
3 changes: 2 additions & 1 deletion backend/endpoints/rom.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import binascii
from base64 import b64encode
from datetime import datetime, timezone
from io import BytesIO
from shutil import rmtree
from typing import Annotated
Expand Down Expand Up @@ -584,6 +585,6 @@ async def update_rom_user(request: Request, id: int) -> RomUserSchema:
cleaned_data = {field: data[field] for field in fields_to_update if field in data}

if data.get("update_last_played", False):
cleaned_data.update({"last_played": func.now()})
cleaned_data.update({"last_played": datetime.now(timezone.utc)})

return db_rom_handler.update_rom_user(db_rom_user.id, cleaned_data)

0 comments on commit 7717317

Please sign in to comment.