From e72466286269d09232efba333b30cc2a47f8e0de Mon Sep 17 00:00:00 2001
From: Ossi Laine <ossi.laine@utu.fi>
Date: Mon, 18 Mar 2019 09:31:09 +0200
Subject: [PATCH] Added mock version of a new question type (embody coloring
 tool)

---
 app/__init__.py                               |   1 +
 app/experiment/templates/view_experiment.html | 104 +++++++-----
 app/experiment/views.py                       |  70 ++------
 app/forms.py                                  |   8 +-
 app/models.py                                 |   7 +-
 app/routes.py                                 |  38 ++---
 app/static/css/main.css                       |  19 +--
 app/static/img/dummy_600.png                  | Bin 0 -> 47187 bytes
 app/static/js/canvas.js                       |  86 ++++++++++
 app/task/templates/task.html                  |  58 +++++--
 app/task/views.py                             | 156 ++++++++++++------
 app/templates/base.html                       |   1 +
 config.py                                     |   2 +
 13 files changed, 352 insertions(+), 198 deletions(-)
 create mode 100644 app/static/img/dummy_600.png
 create mode 100644 app/static/js/canvas.js

diff --git a/app/__init__.py b/app/__init__.py
index aefa4b3..c0403b5 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -84,5 +84,6 @@ app.register_blueprint(create_blueprint)
 app.secret_key = 'random string'
 """app.secret_key = os.urandom(24)"""
 
+app.jinja_env.auto_reload = True
 
 from app import routes, models
diff --git a/app/experiment/templates/view_experiment.html b/app/experiment/templates/view_experiment.html
index 1574471..472a076 100644
--- a/app/experiment/templates/view_experiment.html
+++ b/app/experiment/templates/view_experiment.html
@@ -9,9 +9,8 @@
 <table class="table">
   <tbody>
 
-
 {% for exp in experiment_info %}
-
+<!-- Why there is a for loop her ?! -->
 
     <tr>
       <td nowrap>Name:</td>
@@ -215,53 +214,70 @@
 
 <h1 class="container mt-5 display-4 text-left"><br>Rating set:</h1>
 
-<hr>
-TODO: add embody tool
+<table class="table">
+  <colgroup>
+    <col style="width:33%;%">
+    <col style="width:33%;%">
+    <col style="width:33%;%">
+  </colgroup>
+  <tr>
+    <td>Add embody tool:</td>
+    <td> 
+    {% if experiment_info[0].embody_enabled %}   
+      Enabled
+    {% else %}
+      Disabled
+    {% endif %}
+    </td>
+    <td><a class="btn btn-primary btn-block btn-sm btn-info" href="{{ url_for('experiment.set_embody', exp_id=exp_id) }}" role="button">Enable embody</a></td>
+  </tr>
+</table>
+
 <hr>
 <br>    
-    {% for category in categories1 %}
-        {% for scale in categories1[category] %}
-            <div class="row form-group">
-                <div class="col-2 text-center">
-                    <p>{{ scale[0] }}</p> 
-                </div>
-                <div class="col text-center">
-                    <label for="customRange">{{ category[1] }}</label>
-                    <input type="range" class="custom-range" id="customRange" name={{ category[0] }}>
-                 </div>
-                <div class="col-2 text-center">
-                <p>{{ scale[1] }}</p> 
-                </div>
-                <div class="col-2 text-center">
-                
-                
-                   <button type="button" class="btn btn-primary btn-sm btn-dark" data-toggle="modal" data-target="#mymodal{{category[0]}}">Remove</button>
-                      <!-- Modal -->
-                      <div class="modal fade" id="mymodal{{category[0]}}" role="dialog">
-                        <div class="modal-dialog modal-dialog-centered" id="{{category[0]}}">
-                          <!-- Modal content-->
-                          <div class="modal-content modal-dialog-centered">
-                            <div class="modal-header">
-                              <button type="button" class="close" data-dismiss="modal">&times;</button>
-                              <h4 class="modal-title">Notice!</h4>
-                            </div>
-                            <div class="modal-body">
-                              <p>Are you sure you want to remove this?</p>
-                            </div>
-                            <div class="modal-footer">
-                              <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
-                              <a class="btn btn-primary" href="{{ url_for('experiment.remove_question', idquestion=category[0], exp_id=exp_id) }}" role="button">Yes, remove</a>
-                            </div>
-                          </div>
+{% for category in categories1 %}
+    {% for scale in categories1[category] %}
+        <div class="row form-group">
+            <div class="col-2 text-center">
+                <p>{{ scale[0] }}</p> 
+            </div>
+            <div class="col text-center">
+                <label for="customRange">{{ category[1] }}</label>
+                <input type="range" class="custom-range" id="customRange" name={{ category[0] }}>
+              </div>
+            <div class="col-2 text-center">
+            <p>{{ scale[1] }}</p> 
+            </div>
+            <div class="col-2 text-center">
+            
+            
+                <button type="button" class="btn btn-primary btn-sm btn-dark" data-toggle="modal" data-target="#mymodal{{category[0]}}">Remove</button>
+                  <!-- Modal -->
+                  <div class="modal fade" id="mymodal{{category[0]}}" role="dialog">
+                    <div class="modal-dialog modal-dialog-centered" id="{{category[0]}}">
+                      <!-- Modal content-->
+                      <div class="modal-content modal-dialog-centered">
+                        <div class="modal-header">
+                          <button type="button" class="close" data-dismiss="modal">&times;</button>
+                          <h4 class="modal-title">Notice!</h4>
+                        </div>
+                        <div class="modal-body">
+                          <p>Are you sure you want to remove this?</p>
+                        </div>
+                        <div class="modal-footer">
+                          <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+                          <a class="btn btn-primary" href="{{ url_for('experiment.remove_question', idquestion=category[0], exp_id=exp_id) }}" role="button">Yes, remove</a>
                         </div>
                       </div>
-                <a class="btn btn-primary btn-sm btn-info" href="{{ url_for('experiment.edit_question', idquestion=category[0]) }}" role="button">Edit</a>
-                 
-                </div>
-
+                    </div>
+                  </div>
+            <a class="btn btn-primary btn-sm btn-info" href="{{ url_for('experiment.edit_question', idquestion=category[0]) }}" role="button">Edit</a>
+              
             </div>
-         {% endfor %}   
-    {% endfor %}
+
+        </div>
+      {% endfor %}   
+{% endfor %}
 
     </table>
     <table class="table">
diff --git a/app/experiment/views.py b/app/experiment/views.py
index 360f7ec..d297abf 100644
--- a/app/experiment/views.py
+++ b/app/experiment/views.py
@@ -79,15 +79,8 @@ def view():
         categories_and_scales[cat.idquestion, cat.question]  = scale_list
  
     categories1 = categories_and_scales
-    
-    return render_template('view_experiment.html', exp_id=exp_id, media=media, mtype=mtype, experiment_info=experiment_info, categories1=categories1, questions1=questions1)
-
-
-
-
-
-
 
+    return render_template('view_experiment.html', exp_id=exp_id, media=media, mtype=mtype, experiment_info=experiment_info, categories1=categories1, questions1=questions1)
 
 
 # Experiment info:
@@ -556,6 +549,20 @@ def remove_bg_question():
 
 # Rating set:
 
+@experiment_blueprint.route('/set_embody')
+@login_required
+def set_embody():
+    '''Enable/disable embody tool'''
+    
+    exp_id = request.args.get('exp_id', None)
+    
+    exp = experiment.query.filter_by(idexperiment = exp_id).first()
+    exp.embody_enabled = (True if exp.embody_enabled == False else False)
+    db.session.commit() 
+    
+    return redirect(url_for('experiment.view', exp_id=exp_id))
+
+
 @experiment_blueprint.route('/add_questions', methods=['GET', 'POST'])
 @login_required
 def add_questions():
@@ -856,6 +863,8 @@ def remove_stimuli():
 @experiment_blueprint.route('/statistics')
 @login_required
 def statistics():
+
+    # TODO: Answers are in normal order although questions might be in randomized order
     
     exp_id = request.args.get('exp_id', None)
     
@@ -879,51 +888,6 @@ def statistics():
     #List of answers per participant in format question Stimulus ID/Question ID
     #those are in answer table as page_idpage and question_idquestion respectively
     
-    
-    
-    """
-    pages = page.query.filter_by(experiment_idexperiment=exp_id).all()
-    
-    participants_and_answers = {}
-    
-    #participants on kaikki expin osallistujat
-    for participant in participants:
- 
-        #kaikki yhden khn vastaukset ko experimentille koska answer_setin id matchaa answereiden kanssa
-        flash(participant.session)
-        for p in pages:
-        
-            answers = answer.query.filter_by(answer_set_idanswer_set=participant.idanswer_set).all()
-            #kaikki yhden participantin vastaukset pagelle
-            answers_for_page = answer.query.filter(and_(answer.answer_set_idanswer_set==participant.idanswer_set, answer.page_idpage==p.idpage)).all()
-            
-            for ans in answers:
-                if ans.page_idpage == p.idpage:
-                    #flash(ans.page_idpage)
-                    flash("X")
-                else:
-                    flash("NA")
-            
-            #pages on kaikki experimentin paget
-            
-            for a in answers:
-                if p.idpage == a.page_idpage:
-                    flash("match")
-                else:
-                    flash("no match")
-                 flash("participant:")
-                flash(participant.session)
-                flash("stimulus:")
-                flash(a.page_idpage)
-                flash("Kysymys")
-                flash(a.question_idquestion)
-                flash("vastaus:")
-                flash(a.answer)
-
-            #answers_list = (a.idanswer, a.question_idquestion, a.answer_set_idanswer_set, a.answer, a.page_idpage)
-            #participants_and_answers[participant.session] = answers_list 
-    """
-    
     participants_and_answers = {}
     
     for participant in participants:
diff --git a/app/forms.py b/app/forms.py
index 4cf8118..ff4bbb9 100644
--- a/app/forms.py
+++ b/app/forms.py
@@ -25,11 +25,17 @@ class RegisterForm(Form):
 
 
 class TaskForm(Form):
-    
+    __name__= 'slider'
     categories1 = FieldList(SelectField([validators.InputRequired()]))
     submit = SubmitField("Send")
 
 
+class StringForm(Form):
+    __name__= 'embody'
+    text = StringField()
+    submit = SubmitField("Send")
+
+
 class ContinueTaskForm(FlaskForm):
     
     participant_id = StringField('participant_id', validators=[DataRequired()])
diff --git a/app/models.py b/app/models.py
index 85ab39a..1580393 100644
--- a/app/models.py
+++ b/app/models.py
@@ -1,9 +1,7 @@
 from app import db
-from sqlalchemy import Column, Integer, String, Text
-from flask_sqlalchemy import SQLAlchemy
+from sqlalchemy import Column, Integer, String, Text, Boolean
 from flask_wtf import FlaskForm
 from wtforms_sqlalchemy.fields import QuerySelectField, QuerySelectMultipleField 
-from flask_bootstrap import Bootstrap
 from werkzeug.security import generate_password_hash, check_password_hash
 from flask_login import UserMixin
 from app import login
@@ -53,9 +51,10 @@ class experiment (db.Model):
     stimulus_size = db.Column(db.String(120))
     consent_text = db.Column(db.Text, index=True)
     use_forced_id = db.Column(db.String(120))
+    embody_enabled = db.Column(db.Boolean, unique=False, default=True)
     
     def __repr__(self):
-        return "<idexperiment = '%s', name='%s', instruction='%s', directoryname='%s', language='%s', status='%s', randomization='%s', short_instruction='%s', single_sentence_instruction='%s', is_archived='%s', creator_name='%s', research_notification_filename='%s', creation_time='%s', stimulus_size='%s', consent_text='%s', use_forced_id='%s'>" % (self.idexperiment, self.name, self.instruction, self.directoryname, self.language, self.status, self.randomization, self.short_instruction, self.single_sentence_instruction, self.is_archived, self.creator_name, self.research_notification_filename, self.creation_time, self.stimulus_size, self.consent_text, self.use_forced_id)
+        return "<idexperiment = '%s', name='%s', instruction='%s', directoryname='%s', language='%s', status='%s', randomization='%s', short_instruction='%s', single_sentence_instruction='%s', is_archived='%s', creator_name='%s', research_notification_filename='%s', creation_time='%s', stimulus_size='%s', consent_text='%s', use_forced_id='%s', embody_enabled='%s'>" % (self.idexperiment, self.name, self.instruction, self.directoryname, self.language, self.status, self.randomization, self.short_instruction, self.single_sentence_instruction, self.is_archived, self.creator_name, self.research_notification_filename, self.creation_time, self.stimulus_size, self.consent_text, self.use_forced_id, self.embody_enabled)
 
 
 class answer_set (db.Model):
diff --git a/app/routes.py b/app/routes.py
index faec69b..30da6bc 100644
--- a/app/routes.py
+++ b/app/routes.py
@@ -83,8 +83,7 @@ def remove_language():
 
 @app.route('/session')
 def participant_session():
-
-    # TODO: too long method? 
+    '''Set up session variables'''
 
     #start session
     session['exp_id'] = request.args.get('exp_id', None)
@@ -100,12 +99,11 @@ def participant_session():
         check_id = answer_set.query.filter_by(session=random_id).first()
 
         while check_id is not None:
-            #flash("ID already existed; generated a new one")
             random_id = secrets.token_hex(3)
             check_id = answer_set.query.filter_by(session=random_id).first()
         
         session['user'] = random_id
-    
+
     #create answer set for the participant in the database
     the_time = datetime.now()
     the_time = the_time.replace(microsecond=0)
@@ -115,30 +113,22 @@ def participant_session():
                                         answer_counter = '0', 
                                         registration_time=the_time, 
                                         last_answer_time=the_time)
-
     db.session.add(participant_answer_set)
     db.session.commit()
+
+    # Set session status variables
+    exp_status = experiment.query.filter_by(idexperiment=session['exp_id']).first()
     
     #If trial randomization is set to 'On' for the experiment, create a randomized trial order for this participant
     #identification is based on the uniquie answer set id
-
-    exp_status = experiment.query.filter_by(idexperiment=session['exp_id']).first()
-
     if exp_status.randomization == 'On':
     
         session['randomization'] = 'On'
         
-        #flash("answer_set_id")
-        #flash(participant_answer_set.idanswer_set)
-        
         #create a list of page id:s for the experiment
         experiment_pages = page.query.filter_by(experiment_idexperiment=session['exp_id']).all()
         original_id_order_list = [(int(o.idpage)) for o in experiment_pages]
         
-        #flash("original Page id order:")
-        #for a in range(len(original_id_order_list)):
-            #flash(original_id_order_list[a])
-        
         #create a randomized page id list    
         helper_list = original_id_order_list 
         randomized_order_list = []
@@ -159,29 +149,33 @@ def participant_session():
     
     if exp_status.randomization == "Off":
         session['randomization'] = "Off"
-    
-    #store participants session id in session list as answer_set
 
-    #old: was missing experiment id so made duplicates
-    #session_id_for_participant = answer_set.query.filter_by(session=session['user']).first()
+    if exp_status.embody_enabled:
+        session['embody'] = True
+    else:
+        session['embody'] = False
+    
     
     #store participants session id in session list as answer_set, based on experiment id and session id
     session_id_for_participant = answer_set.query.filter(and_(answer_set.session==session['user'], answer_set.experiment_idexperiment==session['exp_id'])).first()
     session['answer_set'] = session_id_for_participant.idanswer_set
-    
+
+
+
+    # TODO: this is unnecessary if experiment contains multiple stimulus types
     #collect experiments mediatype from db to session['type']. 
     #This is later used in task.html to determine page layout based on stimulus type
     mediatype = page.query.filter_by(experiment_idexperiment=session['exp_id']).first()
-
     if mediatype:
         session['type'] = mediatype.type
     else:
         flash('No pages or mediatype set for experiment')
         return redirect('/')
+
     
+    # Redirect user to register page
     if 'user' in session:
         user = session['user']
-        #flash('Session started for user {}'.format(user))
         return redirect('/register')
       
     return "Session start failed return <a href = '/login'></b>" + "Home</b></a>"
diff --git a/app/static/css/main.css b/app/static/css/main.css
index 73f519a..efc6260 100644
--- a/app/static/css/main.css
+++ b/app/static/css/main.css
@@ -1,17 +1,7 @@
 body {
-    background-color: darkgrey;
     font-family: Helvetica, Arial, sans-serif;
 }
 
-
-container {
-    
-    text-decoration-color: #4EB1BA;
-    margin-left: auto;
-    margin-right: auto;
-    
-}
-
 #header{
     background-color: darkslategrey;
     color: white;
@@ -19,10 +9,13 @@ container {
     
 }
 
-#nav{
-    
+.hidden {
+    display: none;
 }
 
-#main{
+#embody-canvas {
+    display: block;
+    margin: 0 auto;
+    margin-bottom: 30px;
     
 }
\ No newline at end of file
diff --git a/app/static/img/dummy_600.png b/app/static/img/dummy_600.png
new file mode 100644
index 0000000000000000000000000000000000000000..7a5363d79486b525f41bf3b142117b8d509005dd
GIT binary patch
literal 47187
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
A761SM

literal 0
HcmV?d00001

diff --git a/app/static/js/canvas.js b/app/static/js/canvas.js
new file mode 100644
index 0000000..a8363ac
--- /dev/null
+++ b/app/static/js/canvas.js
@@ -0,0 +1,86 @@
+
+
+$(document).ready(function() {
+
+
+    $("#canvas-data").val("hello world");
+    var canvas = $("#embody-canvas")
+    var context = document.getElementById("embody-canvas").getContext("2d");
+
+
+    canvas.mousedown(function(e){
+        var mouseX = e.pageX - this.offsetLeft;
+        var mouseY = e.pageY - this.offsetTop;
+              
+        paint = true;
+        addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop);
+        redraw();
+    });
+
+    canvas.mousemove(function(e){
+        if(paint){
+          addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop, true);
+          redraw();
+        }
+    });
+
+    canvas.mouseup(function(e){
+        paint = false;
+    });
+
+    canvas.mouseleave(function(e){
+        paint = false;
+    });
+
+    var clickX = new Array();
+    var clickY = new Array();
+    var clickDrag = new Array();
+    var paint;
+
+    function addClick(x, y, dragging)
+    {
+        clickX.push(x);
+        clickY.push(y);
+        clickDrag.push(dragging);
+    }
+
+
+    function redraw(){
+        context.clearRect(0, 0, context.canvas.width, context.canvas.height); // Clears the canvas
+        
+        context.strokeStyle = "#df4b26";
+        context.lineJoin = "round";
+        context.lineWidth = 5;
+                  
+        for(var i=0; i < clickX.length; i++) {		
+            context.beginPath();
+
+            if (clickDrag[i] && i) { 
+                context.moveTo(clickX[i-1], clickY[i-1]);
+            } else {
+                context.moveTo(clickX[i]-1, clickY[i]);
+            }
+
+            context.lineTo(clickX[i], clickY[i]);
+            context.closePath();
+            context.stroke();
+        }
+
+    }
+
+
+    function drawBaseImage()
+    {
+        var img = document.getElementById("baseImage");
+        var width = img.clientWidth;
+        var height = img.clientHeight;
+
+        context.canvas.height = height
+        context.canvas.width = width
+        context.drawImage(img, 0, 0);
+
+        img.classList.add("hidden")
+    }
+
+    drawBaseImage()
+});
\ No newline at end of file
diff --git a/app/task/templates/task.html b/app/task/templates/task.html
index 77cdddd..49d185e 100644
--- a/app/task/templates/task.html
+++ b/app/task/templates/task.html
@@ -8,6 +8,7 @@
 <!-- TODO change session['type'] TO stimulus['type'] 
      because session should have multiple type of stimuli!!!
  -->
+
     
     {% if session['type']=='text' %}
         <div class="container text-center mt-5 pt-5">
@@ -89,12 +90,36 @@
     
 <br>
  
- 
- 
- 
  <h4 class="text-center">{{ rating_instruction }}</h4>
 
-  <form class="form-group mt-5" action="" method="post">
+ <!-- Select form type -->
+
+ {{page_num}}
+
+ {% if form.__name__ == 'embody' %}
+
+  <canvas id="embody-canvas" width="200" height="100" style="border: 1px solid blue;"  ></canvas>
+
+  <img id="baseImage" class="" src={{ url_for('static', filename='img/dummy_600.png') }} />
+  <form class="form-group mt-5" action="/task/embody/{{ page_num }}" method="post">
+
+    <input id="canvas-data" type="hidden" value="" name="text">
+
+    <div class="form-row text-center">
+        <div class="col-12">
+            <a class="btn btn-primary" href={{ url_for('task.quit') }} role="button">{{ _('Quit task') }}</a>
+            <button type="submit" class="btn btn-primary">{{ _('Next page') }}</button>
+        </div>
+        <div class="col-12">
+            <br>
+            <p>{{ _('You can zoom in/out the page view by pressing ctrl+/ctrl- (Windows) or ⌘+/⌘- (Mac)') }} </p>
+        </div>
+    </div>    
+  </form>  
+
+{% elif form.__name__ == 'slider' %}
+
+  <form class="form-group mt-5" action="/task/question/{{ page_num }}" method="post">
     {% for category in form.categories1 %}
         {% for scale in form.categories1[category] %}
             <div class="row form-group mt-0 mb-0">
@@ -104,7 +129,6 @@
                 <h6 class="col text-center mt-0 mb-0">
                     <label for="customRange">{{ category[1] }}</label>
                     <input type="range" class="custom-range" id="customRange" name={{ category[0] }}>
-                    
                 </h6>
                 <h6 class="col-3 text-left mt-0 mb-0">
                 {{ scale[1] }}
@@ -112,16 +136,20 @@
             </div>
          {% endfor %}   
     {% endfor %}
-        <div class="form-row text-center">
-            <div class="col-12">
-                <a class="btn btn-primary" href={{ url_for('task.quit') }} role="button">{{ _('Quit task') }}</a>
-                <button type="submit" class="btn btn-primary">{{ _('Next page') }}</button>
-            </div>
-            <div class="col-12">
-                     <br>
-                    <p>{{ _('You can zoom in/out the page view by pressing ctrl+/ctrl- (Windows) or ⌘+/⌘- (Mac)') }} </p>
-            </div>
-        </div>    
+    <div class="form-row text-center">
+        <div class="col-12">
+            <a class="btn btn-primary" href={{ url_for('task.quit') }} role="button">{{ _('Quit task') }}</a>
+            <button type="submit" class="btn btn-primary">{{ _('Next page') }}</button>
+        </div>
+        <div class="col-12">
+            <br>
+            <p>{{ _('You can zoom in/out the page view by pressing ctrl+/ctrl- (Windows) or ⌘+/⌘- (Mac)') }} </p>
+        </div>
+    </div>    
   </form>  
+
+{% endif %}
+
+<script src="{{ url_for('static', filename='js/canvas.js') }}" ></script>
     
 {% endblock %}
\ No newline at end of file
diff --git a/app/task/views.py b/app/task/views.py
index c92ee9d..9b77945 100644
--- a/app/task/views.py
+++ b/app/task/views.py
@@ -23,7 +23,7 @@ from app.models import experiment
 from app.models import page, question
 from app.models import answer_set, answer 
 from app.models import user, trial_randomization
-from app.forms import Answers, TaskForm, ContinueTaskForm
+from app.forms import Answers, TaskForm, ContinueTaskForm, StringForm
 
 task_blueprint = Blueprint("task", __name__, 
                 template_folder='templates',
@@ -31,19 +31,20 @@ task_blueprint = Blueprint("task", __name__,
                 url_prefix='/task')
 
 
-def get_randomized_page(pages):
+def get_randomized_page(page_id):
 
     #this variable is feeded to the template as empty if trial randomization is set to "off"
     randomized_stimulus = ""
 
     #if trial randomization is on we will still use the same functionality that is used otherwise
     #but we will pass the randomized pair of the page_id from trial randomization table to the task.html
-    randomized_page_id = trial_randomization.query.filter(and_(
+    randomized_page = trial_randomization.query.filter(and_(
             trial_randomization.answer_set_idanswer_set==session['answer_set'], 
-            trial_randomization.page_idpage==pages.items[0].idpage
+            trial_randomization.page_idpage==page_id
+            #trial_randomization.page_idpage==pages.items[0].idpage
         )).first()
 
-    return randomized_page_id
+    return randomized_page
 
 
 def add_slider_answer(key, value, randomized_page_id):
@@ -51,19 +52,71 @@ def add_slider_answer(key, value, randomized_page_id):
     the values are inputted for session['current_idpage']. Otherwise the values 
     are set for the corresponding id found in the trial randomization table'''
 
-    page_idpage = session['current_idpage'] if session['randomization'] == 'Off' else randomized_page_id.randomized_idpage 
+    page_idpage = session['current_idpage'] if session['randomization'] == 'Off' else randomized_page_id
     participant_answer = answer(question_idquestion=key, answer_set_idanswer_set=session['answer_set'], answer=value, page_idpage=page_idpage)
     db.session.add(participant_answer)
     db.session.commit()
 
 
-@task_blueprint.route('/<int:page_num>', methods=['POST'])
+def update_answer_set():
+    the_time = datetime.now()
+    the_time = the_time.replace(microsecond=0)
+
+    update_answer_counter = answer_set.query.filter_by(idanswer_set=session['answer_set']).first()
+    update_answer_counter.answer_counter = int(update_answer_counter.answer_counter) + 1 
+    update_answer_counter.last_answer_time = the_time
+    db.session.commit()
+
+
+def slider_question_has_answers(user, page_id):
+    '''This should return true IF there are questions from certain page and no answers'''
+
+    answer_set_id = answer_set.query.filter_by(session=user).first().idanswer_set
+    experiment_id = answer_set.query.filter_by(session=user).first().experiment_idexperiment
+
+    if session['randomization'] == 'On':
+        randomized_page_id = get_randomized_page(page_id).randomized_idpage
+        answers = answer.query.filter_by(answer_set_idanswer_set=answer_set_id, page_idpage=randomized_page_id).all()
+    else:
+        answers = answer.query.filter_by(answer_set_idanswer_set=answer_set_id, page_idpage=page_id).all()
+
+    questions = question.query.filter_by(experiment_idexperiment=experiment_id).all()
+
+    return (True if (len(answers) == 0 and len(questions) > 0) else False)
+
+
+@task_blueprint.route('/embody/<int:page_num>', methods=['POST'])
+def task_embody(page_num):
+    '''Save embody drawing to database'''
+
+    form = StringForm(request.form)
+    pages = page.query.filter_by(experiment_idexperiment=session['exp_id']).paginate(per_page=1, page=page_num, error_out=True)
+    page_id = pages.items[0].idpage
+
+    if form.validate():
+        data = request.form.to_dict()
+        for key, value in data.items():
+            print(key)
+            print(value)
+
+    # Check if there are unanswered slider questions
+    if slider_question_has_answers(session['user'], page_id):
+        return redirect( url_for('task.task', page_num=page_num, show_sliders=True))
+
+    if not pages.has_next:
+        return redirect ( url_for('task.completed'))
+
+    # If user has answered to all questions, then move to next page
+    return redirect( url_for('task.task', page_num=pages.next_num))
+
+
+@task_blueprint.route('/question/<int:page_num>', methods=['POST'])
 def task_answer(page_num):
+    '''Save slider answers to database'''
 
     form = TaskForm(request.form)
     pages = page.query.filter_by(experiment_idexperiment=session['exp_id']).paginate(per_page=1, page=page_num, error_out=True)
-
-    # TODO: determine wheter handling POST data from slider or embody!!!
+    page_id = pages.items[0].idpage
 
     if form.validate():
         #Lets check if there are answers in database already for this page_id (eg. if user returned to previous page and tried to answer again)
@@ -71,19 +124,13 @@ def task_answer(page_num):
         #this has to be done separately for trial randomization "on" and "off" situations        
 
         if session['randomization'] == 'On':
-            randomized_page_id = get_randomized_page(pages)
-            check_answer = answer.query.filter(and_(answer.answer_set_idanswer_set==session['answer_set'], answer.page_idpage==randomized_page_id.randomized_idpage)).first()
+            randomized_page_id = get_randomized_page(page_id).randomized_idpage
+            check_answer = answer.query.filter(and_(answer.answer_set_idanswer_set==session['answer_set'], answer.page_idpage==randomized_page_id)).first()
         else:
             check_answer = answer.query.filter(and_(answer.answer_set_idanswer_set==session['answer_set'], answer.page_idpage==session['current_idpage'])).first()
 
         if check_answer is None:
-            the_time = datetime.now()
-            the_time = the_time.replace(microsecond=0)
-            
-            update_answer_counter = answer_set.query.filter_by(idanswer_set=session['answer_set']).first()
-            update_answer_counter.answer_counter = int(update_answer_counter.answer_counter) + 1 
-            update_answer_counter.last_answer_time = the_time
-            db.session.commit()
+            update_answer_set()
         
             data = request.form.to_dict()
             for key, value in data.items():
@@ -103,7 +150,14 @@ def task_answer(page_num):
 @task_blueprint.route('/<int:page_num>', methods=['GET'])
 def task(page_num):
 
-    experiment_info = experiment.query.filter_by(idexperiment=session['exp_id']).first()
+    try:
+        experiment_info = experiment.query.filter_by(idexperiment=session['exp_id']).first()
+    except KeyError as err:
+        print(err)
+        flash("No valid session found")
+        return redirect('/')
+
+
     rating_instruction = experiment_info.single_sentence_instruction
     stimulus_size = experiment_info.stimulus_size
     
@@ -111,9 +165,8 @@ def task(page_num):
     #A value of stimulus size 12 gives h1 and value of 1 gives h6
     stimulus_size_text = 7-math.ceil((int(stimulus_size)/2))
 
-    print(stimulus_size_text)
-    
     pages = page.query.filter_by(experiment_idexperiment=session['exp_id']).paginate(per_page=1, page=page_num, error_out=True)
+    page_id = pages.items[0].idpage
     progress_bar_percentage = round((pages.page/pages.pages)*100)
 
     #this variable is feeded to the template as empty if trial randomization is set to "off"
@@ -122,35 +175,45 @@ def task(page_num):
     # if trial randomization is on we will still use the same functionality that is used otherwise
     # but we will pass the randomized pair of the page_id from trial randomization table to the task.html
     if session['randomization'] == 'On':
-
-        #set the stimulus to be shown if randomization is on
-        randomized_page_id = get_randomized_page(pages)
-        randomized_stimulus = page.query.filter_by(idpage=randomized_page_id.randomized_idpage).first()
+        randomized_page_id = get_randomized_page(page_id).randomized_idpage
+        randomized_stimulus = page.query.filter_by(idpage=randomized_page_id).first()
         
     for p in pages.items:
         session['current_idpage'] = p.idpage
-    
-    #slider set
-    form = TaskForm(request.form)
-    categories_and_scales = {}
-    categories = question.query.filter_by(experiment_idexperiment=session['exp_id']).all()
 
-    for cat in categories:    
-        scale_list = [(cat.left, cat.right)]
-        categories_and_scales[cat.idquestion, cat.question]  = scale_list
-    
-    form.categories1 = categories_and_scales
+    print(session)
+
+    # Select form type (TODO: question order is now harcoded to EMBODY -> SLIDERS
+    # there should be more flexible solution if more question types are added...)
+    if request.args.get('show_sliders', False) or not session['embody']:
+        # Init slider form
+        form = TaskForm()
+
+        # Get sliders from this experiment
+        categories = question.query.filter_by(experiment_idexperiment=session['exp_id']).all()
+
+        categories_and_scales = {}
+        for cat in categories:    
+            scale_list = [(cat.left, cat.right)]
+            categories_and_scales[cat.idquestion, cat.question]  = scale_list
+        
+        form.categories1 = categories_and_scales
+
+    else:
+        form = StringForm()
 
     return render_template(
-                        'task.html', 
-                        pages=pages, 
-                        progress_bar_percentage=progress_bar_percentage, 
-                        form=form, 
-                        randomized_stimulus=randomized_stimulus, 
-                        rating_instruction=rating_instruction, 
-                        stimulus_size=stimulus_size, 
-                        stimulus_size_text=stimulus_size_text
-                        )
+        'task.html', 
+        pages=pages, 
+        page_num=page_num,
+        progress_bar_percentage=progress_bar_percentage, 
+        form=form, 
+        randomized_stimulus=randomized_stimulus, 
+        rating_instruction=rating_instruction, 
+        stimulus_size=stimulus_size, 
+        stimulus_size_text=stimulus_size_text,
+        experiment_info=experiment_info
+        )
 
 
 @task_blueprint.route('/completed')
@@ -188,9 +251,10 @@ def continue_task():
         session['answer_set'] = participant.idanswer_set
         mediatype = page.query.filter_by(experiment_idexperiment=session['exp_id']).first()
         
-        rand = experiment.query.filter_by(idexperiment=session['exp_id']).first()
+        exp = experiment.query.filter_by(idexperiment=session['exp_id']).first()
         
-        session['randomization'] = rand.randomization
+        session['randomization'] = exp.randomization
+        session['embody'] = exp.embody_enabled
     
         if mediatype:
             session['type'] = mediatype.type
diff --git a/app/templates/base.html b/app/templates/base.html
index 89bb793..e566944 100644
--- a/app/templates/base.html
+++ b/app/templates/base.html
@@ -9,6 +9,7 @@
     <meta name="description" content="">
     <meta name="author" content="">
     <link rel="stylesheet" href="{{ url_for('static', filename='lib/css/bootstrap.min.css') }}" ></link>
+    <link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}" ></link>
     <script src="{{ url_for('static', filename='lib/js/jquery-3.3.1.slim.min.js') }}" ></script>
     <script src="{{ url_for('static', filename='lib/js/popper.min.js') }}" ></script>
     <script src="{{ url_for('static', filename='lib/js/bootstrap.min.js') }}" ></script>
diff --git a/config.py b/config.py
index 542e701..b945f2f 100644
--- a/config.py
+++ b/config.py
@@ -28,3 +28,5 @@ class Config(object):
    
     SQLALCHEMY_TRACK_MODIFICATIONS = False
     
+    TEMPLATES_AUTO_RELOAD = True
+    DEBUG = True
-- 
GitLab