Forráskód Böngészése

a very important foreign key fix

Dimitri Korsch 3 éve
szülő
commit
f11be5453f

+ 3 - 0
Makefile

@@ -1,6 +1,9 @@
 run:
 	python app.py
 
+run_webui:
+	@cd webui && npm run serve
+
 install:
 	@echo "INSTALL MISSING!"
 

+ 10 - 3
pycs/__init__.py

@@ -1,4 +1,5 @@
 import json
+import logging
 import sys
 
 from pathlib import Path
@@ -6,7 +7,8 @@ from pathlib import Path
 from flask import Flask
 from flask_migrate import Migrate
 from flask_sqlalchemy import SQLAlchemy
-
+from sqlalchemy.engine import Engine
+from sqlalchemy import event
 
 print('- Loading settings')
 with open('settings.json') as file:
@@ -18,13 +20,18 @@ app = Flask(__name__)
 if "unittest" in sys.modules:
     # creates an in-memory DB
     db_file = ""
-    app.logger.setLevel("CRITICAL")
+    app.logger.setLevel(logging.CRITICAL)
 else:
     db_file = Path.cwd() / settings['database']
 
 app.config["SQLALCHEMY_DATABASE_URI"] = f"sqlite:///{db_file}"
 app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
 
+@event.listens_for(Engine, "connect")
+def set_sqlite_pragma(dbapi_connection, connection_record):
+    cursor = dbapi_connection.cursor()
+    cursor.execute("PRAGMA foreign_keys=ON")
+    cursor.close()
+
 db = SQLAlchemy(app)
-db.session().execute("PRAGMA foreign_keys=ON")
 migrate = Migrate(app, db)

+ 1 - 1
pycs/database/Database.py

@@ -40,7 +40,7 @@ class Database:
         if exc_type is None:
             db.session.commit()
         else:
-            app.logger.info("Rolling back a transaction!")
+            app.logger.error("Rolling back a transaction!")
             db.session.rollback()
 
     def close(self):

+ 0 - 2
pycs/database/base.py

@@ -1,8 +1,6 @@
 import typing as T
 import datetime
 
-from sqlalchemy.inspection import inspect
-from sqlalchemy.orm.collections import InstrumentedList
 from sqlalchemy_serializer import SerializerMixin
 
 from pycs import app

+ 1 - 1
pycs/frontend/WebServer.py

@@ -61,7 +61,7 @@ class WebServer:
     def __init__(self, app, settings: dict):
 
         dictConfig(settings["logging"])
-        config.dictConfig(settings["logging"])
+
         # initialize flask app instance
         self.app = app
 

+ 0 - 6
pycs/frontend/endpoints/projects/RemoveProject.py

@@ -38,12 +38,6 @@ class RemoveProject(View):
             model = project.model
             model.remove(commit=False)
 
-            # ON_DELETE=cascade does not seem to work...
-            # hence, this 3 delete lines here
-            project.files.delete()
-            project.labels.delete()
-            project.collections.delete()
-
             # remove project from database
             project.remove(commit=False)
 

+ 11 - 4
settings.json

@@ -11,15 +11,22 @@
       }
     },
     "handlers": {
-      "wsgi": {
+      "console": {
         "class": "logging.StreamHandler",
         "stream": "ext://flask.logging.wsgi_errors_stream",
-        "formatter": "default"
+        "formatter": "default",
+        "level": "INFO"
       }
     },
     "root": {
-        "level": "INFO",
-        "handlers": ["wsgi"]
+      "level": "INFO",
+      "handlers": ["console"]
+    },
+    "loggers": {
+      "sqlalchemy.engine": {
+        "level": "CRITICAL",
+        "handlers": ["console"]
+      }
     }
   },
 

+ 1 - 1
test/test_client.py

@@ -126,7 +126,7 @@ class ClientTests(BaseTestCase):
         self.assertNotEqual(0, Project.query.count())
 
         self.wait_for_coroutines()
-        eventlet.sleep(2)
+        eventlet.sleep(3)
         self._post(f"/projects/{project_id}/remove",
             json=dict(remove=True),
         )