annot-server/webapp/views.py
author cavaliet
Fri, 24 Oct 2014 14:03:34 +0200
changeset 58 726ee64f18a9
parent 57 cb4df234fd79
child 61 511bff609c3d
permissions -rw-r--r--
new cat, new colors, links to embed...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
#
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
# See LICENCE for detail
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
# Copyright (c) 2014 IRI
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
#
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
42
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
     6
import json
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
     7
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
     8
from flask import render_template, jsonify, request, abort
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
     9
from jinja2 import Markup
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    10
from sqlalchemy.orm import joinedload
22
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
from webapp import app
42
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    13
from database import db_session
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    14
import models
22
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
@app.route('/')
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
def page_home():
43
e27c3c1c57f1 end of admin. change the index page and add a redirect to it on the landing page
ymh <ymh.work@gmail.com>
parents: 42
diff changeset
    18
    events = db_session.query(models.Event).filter(models.Event.active == True).order_by(models.Event.start_date, models.Event.code).all()
e27c3c1c57f1 end of admin. change the index page and add a redirect to it on the landing page
ymh <ymh.work@gmail.com>
parents: 42
diff changeset
    19
    return render_template('index.html', events=events)
22
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
@app.route('/annot')
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
def page_annot():
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    return render_template('annot.html')
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
@app.route('/annotationclient')
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
def page_annotationclient():
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
    return render_template('annotationclient.html', logging=True)
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
42
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    31
@app.route('/annotationclient/<event_code>')
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    32
def page_annotationclient_event_code(event_code):
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    33
    #TODO: check event code + get event session
43
e27c3c1c57f1 end of admin. change the index page and add a redirect to it on the landing page
ymh <ymh.work@gmail.com>
parents: 42
diff changeset
    34
    event_query = db_session.query(models.Event).filter(models.Event.code == event_code, models.Event.active == True)
57
cb4df234fd79 when querying event, replace one by first to avoid raising an exception when the event is not found
ymh <ymh.work@gmail.com>
parents: 43
diff changeset
    35
    event = event_query.first()
43
e27c3c1c57f1 end of admin. change the index page and add a redirect to it on the landing page
ymh <ymh.work@gmail.com>
parents: 42
diff changeset
    36
42
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    37
    if not event:
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    38
        abort(404)
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    39
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    40
    #TODO: See why the relationship management does not work
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    41
    event_session_q = db_session.query(models.EventSession).filter(models.EventSession.event_id==event.id).order_by(models.EventSession.order.desc())
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    42
    event_session = event_session_q.first()
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    43
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    44
    categories_json = None
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    45
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    46
    if event_session:
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    47
        categories_json = event_session.categories_json
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    48
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    49
    if not categories_json:
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    50
        categories_json = None
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    51
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    52
    return render_template('annotationclient.html',
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    53
        logging = True,
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    54
        event_code = event_code,
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    55
        categories_json = Markup(json.dumps(categories_json).replace('\'','\\\'')) if categories_json else None
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    56
    )
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    57
22
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
28
6025b8470d18 pianoroll in webapp
cavaliet
parents: 22
diff changeset
    59
@app.route('/pianoroll')
6025b8470d18 pianoroll in webapp
cavaliet
parents: 22
diff changeset
    60
def page_pianoroll():
6025b8470d18 pianoroll in webapp
cavaliet
parents: 22
diff changeset
    61
    return render_template('pianoroll.html', logging=True)
6025b8470d18 pianoroll in webapp
cavaliet
parents: 22
diff changeset
    62
6025b8470d18 pianoroll in webapp
cavaliet
parents: 22
diff changeset
    63
58
726ee64f18a9 new cat, new colors, links to embed...
cavaliet
parents: 57
diff changeset
    64
@app.route('/liens')
726ee64f18a9 new cat, new colors, links to embed...
cavaliet
parents: 57
diff changeset
    65
def page_liens():
726ee64f18a9 new cat, new colors, links to embed...
cavaliet
parents: 57
diff changeset
    66
    return render_template('liens.html')
726ee64f18a9 new cat, new colors, links to embed...
cavaliet
parents: 57
diff changeset
    67
726ee64f18a9 new cat, new colors, links to embed...
cavaliet
parents: 57
diff changeset
    68
22
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
@app.route('/api/test', methods=['PUT', 'POST'])
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
def new():
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
    return jsonify(request.get_json(force=False))