From 17a0bb11951b706fce3a32e69fa4b9cc6f517cdb Mon Sep 17 00:00:00 2001
From: thomaswoehlke <thomas.woehlke@gmail.com>
Date: Fri, 5 Feb 2021 22:47:15 +0100
Subject: [PATCH] work

---
 src/covid19/blueprints/common/common_model.py      | 11 +++++++----
 src/covid19/blueprints/europe/europe_model.py      |  8 ++++----
 .../blueprints/europe/europe_model_import.py       | 14 ++++++++++----
 3 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/src/covid19/blueprints/common/common_model.py b/src/covid19/blueprints/common/common_model.py
index 14044515..168acb86 100644
--- a/src/covid19/blueprints/common/common_model.py
+++ b/src/covid19/blueprints/common/common_model.py
@@ -71,8 +71,8 @@ class CommonDateReported(db.Model):
 
     @classmethod
     def remove_all(cls):
-        # TODO: SQLalchemy instead of SQL
-        db.session.execute("delete from " + cls.__tablename__)
+        for one in cls.get_all():
+            db.session.delete(one)
         db.session.commit()
         return None
 
@@ -123,13 +123,16 @@ class CommonRegion(db.Model):
         'polymorphic_identity': 'common_date_reported',
         'polymorphic_on': type
     }
+    __table_args__ = (
+        db.UniqueConstraint('type', 'region', name='unique_common_region_reported'),
+    )
     id = db.Column(db.Integer, primary_key=True)
     region = db.Column(db.String(255), unique=True)
 
     @classmethod
     def remove_all(cls):
-        # TODO: SQLalchemy instead of SQL
-        db.session.execute("delete from " + cls.__tablename__)
+        for one in cls.get_all():
+            db.session.delete(one)
         db.session.commit()
         return None
 
diff --git a/src/covid19/blueprints/europe/europe_model.py b/src/covid19/blueprints/europe/europe_model.py
index f654f7ab..e135bae8 100644
--- a/src/covid19/blueprints/europe/europe_model.py
+++ b/src/covid19/blueprints/europe/europe_model.py
@@ -47,8 +47,8 @@ class EuropeCountry(db.Model):
 
     @classmethod
     def remove_all(cls):
-        # TODO: SQLalchemy instead of SQL
-        db.session.execute("delete from " + cls.__tablename__ + " cascade")
+        for one in cls.get_all():
+            db.session.delete(one)
         db.session.commit()
         return None
 
@@ -101,8 +101,8 @@ class EuropeData(db.Model):
 
     @classmethod
     def remove_all(cls):
-        # TODO: SQLalchemy instead of SQL
-        db.session.execute("delete from " + cls.__tablename__ + " cascade")
+        for one in cls.get_all():
+            db.session.delete(one)
         db.session.commit()
         return None
 
diff --git a/src/covid19/blueprints/europe/europe_model_import.py b/src/covid19/blueprints/europe/europe_model_import.py
index 4570ba8d..43da468f 100644
--- a/src/covid19/blueprints/europe/europe_model_import.py
+++ b/src/covid19/blueprints/europe/europe_model_import.py
@@ -18,19 +18,25 @@ class EuropeDataImportTable(db.Model):
 
     @classmethod
     def remove_all(cls):
-        # TODO: SQLalchemy instead of SQL
-        db.session.execute("delete from " + cls.__tablename__ + " cascade")
+        for one in cls.get_all():
+            db.session.delete(one)
         db.session.commit()
         return None
 
     @classmethod
     def get_all_as_page(cls, page):
         #TODO: #51 order_by: year_week, country
-        return db.session.query(cls).paginate(page, per_page=ITEMS_PER_PAGE)
+        return db.session.query(cls).order_by(
+            cls.year_week,
+            cls.countries_and_territories
+        ).paginate(page, per_page=ITEMS_PER_PAGE)
 
     @classmethod
     def get_all(cls):
-        return db.session.query(cls).all()
+        return db.session.query(cls).order_by(
+            cls.year_week,
+            cls.countries_and_territories
+        ).all()
 
     @classmethod
     def get_by_id(cls, other_id):
-- 
GitLab