From de55edc5e0031d09040284f2b6d4e84f74de90fd Mon Sep 17 00:00:00 2001
From: Leander Karp <karp@cl.uni-heidelberg.de>
Date: Sat, 17 Aug 2024 10:48:51 +0200
Subject: [PATCH] Fix typing in UtcDateTime and Uuid

Update to solve the LSP errors via typing changes and not by code changes.
This undos LSP-violation related code changes.
---
 portal/model/UtcDateTime.py | 8 ++++----
 portal/model/Uuid.py        | 6 ++++--
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/portal/model/UtcDateTime.py b/portal/model/UtcDateTime.py
index fb18092..64c0220 100644
--- a/portal/model/UtcDateTime.py
+++ b/portal/model/UtcDateTime.py
@@ -28,12 +28,12 @@ class UtcDateTime(types.TypeDecorator):
         return types.String(32)
 
     def process_bind_param(
-        self, value: Any | None, dialect: Dialect
+        self, value: datetime | None, dialect: Dialect
     ) -> Optional[str | datetime]:
-        if isinstance(value, datetime):
-            return value.astimezone(timezone.utc).isoformat()
+        if value is None:
+            return None
 
-        return None
+        return value.astimezone(timezone.utc).isoformat()
 
     def process_result_value(
         self, value: str | None, dialect: Dialect
diff --git a/portal/model/Uuid.py b/portal/model/Uuid.py
index 452b477..ebb8625 100644
--- a/portal/model/Uuid.py
+++ b/portal/model/Uuid.py
@@ -26,12 +26,14 @@ class Uuid(types.TypeDecorator):
     def load_dialect_impl(self, dialect: Dialect) -> types.TypeEngine[Any]:
         return types.String(UUID_LENGTH)
 
-    def process_bind_param(self, value: Any | None, dialect: Dialect) -> Optional[str]:
+    def process_bind_param(
+        self, value: None | str | UUID, dialect: Dialect
+    ) -> Optional[str]:
         if isinstance(value, str):
             # Manually create UUID from string, to raise an error if the string is malformed
             UUID(value)
 
-        return str(value) if isinstance(value, UUID) else None
+        return str(value) if value else None
 
     def process_result_value(
         self, value: Optional[str], dialect: Dialect
-- 
GitLab