From cb7fa2763dbddb28722a2134b33ec6a6b2204256 Mon Sep 17 00:00:00 2001
From: osmala <ossi.laine@utu.fi>
Date: Thu, 3 Dec 2020 21:14:25 +0200
Subject: [PATCH] Reformat project structure

---
 app.db                                        | Bin 122880 -> 0 bytes
 app/db.py                                     |  16 +++
 embody_plot.py => app/embody_plot.py          |   0
 app/experiment/views.py                       |   7 +-
 babel.cfg                                     |   3 -
 .../create_rating_db.sql                      |   0
 dump.sql                                      |  94 ------------------
 7 files changed, 18 insertions(+), 102 deletions(-)
 delete mode 100644 app.db
 create mode 100644 app/db.py
 rename embody_plot.py => app/embody_plot.py (100%)
 delete mode 100644 babel.cfg
 rename create_rating_db.sql => db/create_rating_db.sql (100%)
 delete mode 100644 dump.sql

diff --git a/app.db b/app.db
deleted file mode 100644
index 0a7a1e2e1dbcbae3aead8584aa2ecce4834a8772..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 122880
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
SPGQE#)MC&U01i%mPBQ@HZf?K;

diff --git a/app/db.py b/app/db.py
new file mode 100644
index 0000000..3a9fc39
--- /dev/null
+++ b/app/db.py
@@ -0,0 +1,16 @@
+from sqlalchemy import create_engine
+from sqlalchemy.orm import scoped_session, sessionmaker
+from sqlalchemy.ext.declarative import declarative_base
+from config import Config
+
+engine = create_engine(Config.SQLALCHEMY_DATABASE_URI, convert_unicode=True)
+db_session = scoped_session(sessionmaker(autocommit=False,
+                                         autoflush=False,
+                                         bind=engine))
+Base = declarative_base()
+Base.query = db_session.query_property()
+
+
+def init_db():
+    import app.models
+    Base.metadata.create_all(bind=engine)
diff --git a/embody_plot.py b/app/embody_plot.py
similarity index 100%
rename from embody_plot.py
rename to app/embody_plot.py
diff --git a/app/experiment/views.py b/app/experiment/views.py
index cfee867..711f3fa 100644
--- a/app/experiment/views.py
+++ b/app/experiment/views.py
@@ -35,11 +35,8 @@ from app.forms import (
 )
 from app.utils import get_mean_from_slider_answers, map_answers_to_questions, \
     generate_csv
+from app.embody_plot import get_coordinates
 
-import embody_plot
-
-# Stimuli upload folder setting
-#APP_ROOT = os.path.dirname(os.path.abspath(__file__))
 
 experiment_blueprint = Blueprint("experiment", __name__,
                                  template_folder='templates',
@@ -1051,7 +1048,7 @@ def start_create_embody():
 def create_embody(meta):
     page = meta["page"]
     embody = meta["embody"]
-    img_path = embody_plot.get_coordinates(page, embody)
+    img_path = get_coordinates(page, embody)
     app.logger.info(img_path)
     emit('end', {'path': img_path})
 
diff --git a/babel.cfg b/babel.cfg
deleted file mode 100644
index c40b2e8..0000000
--- a/babel.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-[python: app/**.py]
-[jinja2: app/templates/**.html]
-extensions=jinja2.ext.autoescape,jinja2.ext.with_
diff --git a/create_rating_db.sql b/db/create_rating_db.sql
similarity index 100%
rename from create_rating_db.sql
rename to db/create_rating_db.sql
diff --git a/dump.sql b/dump.sql
deleted file mode 100644
index e617923..0000000
--- a/dump.sql
+++ /dev/null
@@ -1,94 +0,0 @@
-CREATE TABLE background_question (
-	idbackground_question INTEGER NOT NULL, 
-	background_question VARCHAR(120), 
-	experiment_idexperiment INTEGER, 
-	PRIMARY KEY (idbackground_question)
-);
-CREATE TABLE experiment (
-	idexperiment INTEGER NOT NULL, 
-	name VARCHAR(120), 
-	instruction VARCHAR(120), 
-	directoryname VARCHAR(120), 
-	language VARCHAR(120), 
-	status VARCHAR(120), 
-	randomization VARCHAR(120), 
-	PRIMARY KEY (idexperiment)
-);
-CREATE TABLE trial_randomization (
-	idtrial_randomization INTEGER NOT NULL, 
-	page_idpage INTEGER, 
-	randomized_idpage INTEGER, 
-	answer_set_idanswer_set INTEGER, 
-	experiment_idexperiment INTEGER, 
-	PRIMARY KEY (idtrial_randomization)
-);
-CREATE TABLE user (
-	id INTEGER NOT NULL, 
-	username VARCHAR(64), 
-	email VARCHAR(120), 
-	password_hash VARCHAR(128), 
-	PRIMARY KEY (id)
-);
-CREATE TABLE answer_set (
-	idanswer_set INTEGER NOT NULL, 
-	experiment_idexperiment INTEGER, 
-	session VARCHAR(120), 
-	agreement VARCHAR(120), 
-	answer_counter INTEGER, 
-	PRIMARY KEY (idanswer_set), 
-	FOREIGN KEY(experiment_idexperiment) REFERENCES experiment (idexperiment)
-);
-CREATE TABLE background_question_option (
-	idbackground_question_option INTEGER NOT NULL, 
-	background_question_idbackground_question INTEGER, 
-	option VARCHAR(120), 
-	PRIMARY KEY (idbackground_question_option), 
-	FOREIGN KEY(background_question_idbackground_question) REFERENCES background_question (idbackground_question)
-);
-CREATE TABLE page (
-	idpage INTEGER NOT NULL, 
-	experiment_idexperiment INTEGER, 
-	type VARCHAR(120), 
-	text VARCHAR(120), 
-	media VARCHAR(120), 
-	PRIMARY KEY (idpage), 
-	FOREIGN KEY(experiment_idexperiment) REFERENCES experiment (idexperiment)
-);
-CREATE TABLE question (
-	idquestion INTEGER NOT NULL, 
-	experiment_idexperiment INTEGER, 
-	question VARCHAR(120), 
-	`left` VARCHAR(120), 
-	`right` VARCHAR(120), 
-	PRIMARY KEY (idquestion), 
-	FOREIGN KEY(experiment_idexperiment) REFERENCES experiment (idexperiment)
-);
-CREATE TABLE answer (
-	idanswer INTEGER NOT NULL, 
-	question_idquestion INTEGER, 
-	answer_set_idanswer_set INTEGER, 
-	answer VARCHAR(120), 
-	page_idpage INTEGER, 
-	PRIMARY KEY (idanswer), 
-	FOREIGN KEY(answer_set_idanswer_set) REFERENCES answer_set (idanswer_set), 
-	FOREIGN KEY(page_idpage) REFERENCES page (idpage), 
-	FOREIGN KEY(question_idquestion) REFERENCES question (idquestion)
-);
-CREATE TABLE background_question_answer (
-	idbackground_question_answer INTEGER NOT NULL, 
-	answer_set_idanswer_set INTEGER, 
-	answer VARCHAR(120), 
-	background_question_idbackground_question INTEGER, 
-	PRIMARY KEY (idbackground_question_answer), 
-	FOREIGN KEY(answer_set_idanswer_set) REFERENCES answer_set (idanswer_set), 
-	FOREIGN KEY(background_question_idbackground_question) REFERENCES background_question (idbackground_question)
-);
-CREATE UNIQUE INDEX ix_experiment_directoryname ON experiment (directoryname);
-CREATE INDEX ix_experiment_instruction ON experiment (instruction);
-CREATE INDEX ix_experiment_name ON experiment (name);
-CREATE UNIQUE INDEX ix_user_email ON user (email);
-CREATE UNIQUE INDEX ix_user_username ON user (username);
-CREATE INDEX ix_page_media ON page (media);
-CREATE INDEX ix_page_text ON page (text);
-CREATE INDEX ix_page_type ON page (type);
-
-- 
GitLab