From 1e40a5c2c9c73e80d7ca3dda22aab158198be1e3 Mon Sep 17 00:00:00 2001 From: Robin Sonnabend <robin@fsmpi.rwth-aachen.de> Date: Sun, 8 Nov 2015 12:04:05 +0100 Subject: [PATCH] Implemented pausing --- migrations/versions/256d9df3492_.py | 28 ++++++++++++++++++++++++++++ models/database.py | 8 ++++++-- modules/admin.py | 4 +++- modules/speech.py | 2 +- static/css/style.css | 17 +++++++++++++++++ templates/admin_topic_show.html | 9 +++++++++ 6 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 migrations/versions/256d9df3492_.py diff --git a/migrations/versions/256d9df3492_.py b/migrations/versions/256d9df3492_.py new file mode 100644 index 0000000..6f42bdd --- /dev/null +++ b/migrations/versions/256d9df3492_.py @@ -0,0 +1,28 @@ +"""empty message + +Revision ID: 256d9df3492 +Revises: bdf979c44e +Create Date: 2015-11-08 11:30:13.923165 + +""" + +# revision identifiers, used by Alembic. +revision = '256d9df3492' +down_revision = 'bdf979c44e' + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + ### commands auto generated by Alembic - please adjust! ### + op.add_column('events', sa.Column('current_topic_id', sa.Integer(), nullable=True)) + op.create_foreign_key(None, 'events', 'topics', ['current_topic_id'], ['id']) + ### end Alembic commands ### + + +def downgrade(): + ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, 'events', type_='foreignkey') + op.drop_column('events', 'current_topic_id') + ### end Alembic commands ### diff --git a/models/database.py b/models/database.py index deda048..26085df 100644 --- a/models/database.py +++ b/models/database.py @@ -41,11 +41,15 @@ class Event(db.Model): name = db.Column(db.String, unique=True) paused = db.Column(db.Boolean) paused_until = db.Column(db.DateTime) + current_topic_id = db.Column(db.Integer, db.ForeignKey("topics.id")) - def __init__(self, name, paused=False): + current_topic = relationship("Topic", foreign_keys=[current_topic_id]) + + def __init__(self, name, paused=False, current_topic_id=None): self.name = name self.paused = paused self.paused_until = datetime(1970, 1, 1) + self.current_topic_id = current_topic_id or 0 def __repr__(self): return "<Event(id={}, name={}, paused={}, paused_until={})>".format( @@ -66,7 +70,7 @@ class Topic(db.Model): event_id = db.Column(db.Integer, db.ForeignKey("events.id"), nullable=False) index = db.Column(db.Integer) - event = relationship("Event", backref=backref("topics",order_by=id)) + event = relationship("Event", backref=backref("topics",order_by=id), foreign_keys=[event_id]) def __init__(self, name, mode, event_id): self.name = name diff --git a/modules/admin.py b/modules/admin.py index 68daa4d..ac0f93b 100644 --- a/modules/admin.py +++ b/modules/admin.py @@ -143,6 +143,8 @@ def topic_show(): topic_id = request.args.get("id", None) if topic_id is not None: topic = Topic.query.filter_by(id=topic_id).first() + topic.event.current_topic_id = topic.id + db.session.commit() form = AddStatementForm() form.topic.data = topic.id statements = topic.sorted_statements() @@ -348,7 +350,7 @@ def pause(): rawtime = float(request.form["timeslider"]) delta = timedelta(seconds=rawtime) print(delta) - event.paused_until += delta + event.paused_until = datetime.now() + delta db.session.commit() topic_id = request.args.get("original", None) return redirect(url_for(".topic_show", id=topic_id)) diff --git a/modules/speech.py b/modules/speech.py index 5479a5c..1670d00 100644 --- a/modules/speech.py +++ b/modules/speech.py @@ -41,7 +41,7 @@ def query_statements(mode, topic_id): print("unknown querying mode {}".format(mode)) """ -@speech.route("/index") +@speech.route("/") def index(): topic_id = request.args.get("topic", None) mode = request.args.get("mode", None) diff --git a/static/css/style.css b/static/css/style.css index e83d82b..1f9ff98 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -131,3 +131,20 @@ th.rede-medium-text { .rede-list-point-normal { font-weight: normal; } + +.rede-paused-title { + margin: 0 auto; +} + +h4.rede-paused-title-text { + font-size: 48px; + text-align: center; +} + +div.rede-paused-supporting { + font-size: 24px; +} + +.mdl-card { + min-height: 0px; +} diff --git a/templates/admin_topic_show.html b/templates/admin_topic_show.html index 5365104..5725912 100644 --- a/templates/admin_topic_show.html +++ b/templates/admin_topic_show.html @@ -118,4 +118,13 @@ {% endfor %} </table> </div> + {% if topic.event.paused %} + <div class="mdl-cell mdl-cell--12-col mdl-cell--8-col-tablet mdl-cell--4-col-phone mdl-card mdl-shadow--2dp"> + <div class="mdl-card__title rede-paused-title"> + <h4 class="mdl-card__title-text rede-paused-title-text"> + Paused until {{ topic.event.paused_until.strftime("%H:%M") }} + </h4> + </div> + </div> + {% endif %} {% endblock %} -- GitLab