From b820a14922e07531d7e5857c798d062a4b6fc49f Mon Sep 17 00:00:00 2001
From: Leander Karp <karp@cl.uni-heidelberg.de>
Date: Wed, 4 Sep 2024 15:30:02 +0200
Subject: [PATCH] Fix SQLAlchemy-related type errors

---
 portal/__init__.py               | 2 +-
 portal/model/FlaskConfigEntry.py | 5 ++++-
 portal/model/Retrievable.py      | 8 ++++++--
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/portal/__init__.py b/portal/__init__.py
index 642054e..99937d5 100644
--- a/portal/__init__.py
+++ b/portal/__init__.py
@@ -9,7 +9,7 @@ from flask_sqlalchemy import SQLAlchemy
 
 from .db_config import get_database_uri, get_uri_for_sqlite
 
-db = SQLAlchemy()
+db: SQLAlchemy = SQLAlchemy()
 
 from .model import *
 
diff --git a/portal/model/FlaskConfigEntry.py b/portal/model/FlaskConfigEntry.py
index 378aed8..bfd3cd9 100644
--- a/portal/model/FlaskConfigEntry.py
+++ b/portal/model/FlaskConfigEntry.py
@@ -1,9 +1,12 @@
 from flask import Flask
+from flask_sqlalchemy import DefaultMeta
 
 from portal import db
 
+BaseModel: DefaultMeta = db.Model
 
-class FlaskConfigEntry(db.Model):
+
+class FlaskConfigEntry(BaseModel):
     """
     A configuration entry for Flask (a key-value pair) as persisted in a database
     """
diff --git a/portal/model/Retrievable.py b/portal/model/Retrievable.py
index 1b7c649..b15aa78 100644
--- a/portal/model/Retrievable.py
+++ b/portal/model/Retrievable.py
@@ -1,12 +1,16 @@
 from abc import abstractmethod
 from typing import Any, List, Optional, Self
+from flask_sqlalchemy import DefaultMeta
+from sqlalchemy import Column
 
 from flask import g
 
 from portal import db
 
+BaseModel: DefaultMeta = db.Model
 
-class Retrievable(db.Model):
+
+class Retrievable(BaseModel):
     """
     A type whose instances can be retrieved from the database.
 
@@ -17,7 +21,7 @@ class Retrievable(db.Model):
     __abstract__ = True
 
     @classmethod
-    def get_canonical_order_column(cls) -> Optional[db.Column]:
+    def get_canonical_order_column(cls) -> Optional[Column]:
         """
         Return the colum by which instances of this type should be canonically ordered
         when retrieving them all from the database.
-- 
GitLab