Commit b0aeb601 authored by YSelf Tool's avatar YSelf Tool

Added time view, single template for update javascript files

parent d067165e
from flask import Blueprint, render_template, redirect, url_for, request, flash, abort, send_file, Response
from flask import Blueprint, redirect, url_for, request, flash, abort, send_file, Response
from flask.ext.login import login_required
from passlib.hash import pbkdf2_sha256
from models.database import User, Event
from models.forms import AdminUserForm, NewUserForm, NewEventForm
from shared import db, admin_permission
from shared import db, admin_permission, render_layout
admin = Blueprint("admin", __name__)
......@@ -16,14 +16,14 @@ admin = Blueprint("admin", __name__)
def index():
users = User.query.limit(10).all()
events = Event.query.limit(10).all()
return render_template("admin_index.html", users=users, events=events)
return render_layout("admin_index.html", users=users, events=events)
@admin.route("/user/")
@login_required
@admin_permission.require()
def user():
users = User.query.all()
return render_template("admin_user_index.html", users=users)
return render_layout("admin_user_index.html", users=users)
@admin.route("/user/edit", methods=["GET", "POST"])
@login_required
......@@ -38,7 +38,7 @@ def user_edit():
db.session.commit()
return redirect(url_for(".index"))
else:
return render_template("admin_user_edit.html", form=form, id=user_id)
return render_layout("admin_user_edit.html", form=form, id=user_id)
else:
return redirect(url_for(".index"))
......@@ -66,7 +66,7 @@ def user_new():
db.session.add(user)
db.session.commit()
return redirect(url_for(".user"))
return render_template("admin_user_new.html", form=form)
return render_layout("admin_user_new.html", form=form)
@admin.route("/event/new", methods=["GET", "POST"])
......@@ -77,12 +77,12 @@ def event_new():
if form.validate_on_submit():
if Event.query.filter_by(name=form.name.data).count() > 0:
flash("There already is an event with that name.", "alert-error")
return render_template("admin_event_new.html", form=form)
return render_layout("admin_event_new.html", form=form)
event = Event(form.name.data, form.date.data)
db.session.add(event)
db.session.commit()
return redirect(url_for(".event"))
return render_template("admin_event_new.html", form=form)
return render_layout("admin_event_new.html", form=form)
@admin.route("/event/delete")
@login_required
......@@ -109,7 +109,7 @@ def event_edit():
db.session.commit()
return redirect(url_for(".index"))
else:
return render_template("admin_event_edit.html", form=form, id=event_id)
return render_layout("admin_event_edit.html", form=form, id=event_id)
else:
return redirect(url_for(".index"))
......@@ -119,4 +119,4 @@ def event_edit():
def event():
events = Event.query.all()
print(events)
return render_template("admin_event_index.html", events=events)
return render_layout("admin_event_index.html", events=events)
from flask import Blueprint, render_template, redirect, url_for, request, flash, abort, send_file, Response
from flask import Blueprint, redirect, url_for, request, flash, abort, send_file, Response
from flask.ext.login import login_required
from models.database import User, Statement, Speaker, Event
from models.forms import AddStatementForm
from shared import db, admin_permission, user_permission
from shared import db, admin_permission, user_permission, render_layout
from datetime import datetime
import json
import config
speech = Blueprint("speech", __name__)
def transpose(arr):
......@@ -41,7 +43,7 @@ def index():
form.event.data = event.id
meta.append((query_statements(mode, event.id), form, event))
event_id = -1
return render_template("speech_index.html", meta=meta, event_id=event_id)
return render_layout("speech_index.html", meta=meta, event_id=event_id)
@speech.route("/show")
def show():
......@@ -54,7 +56,7 @@ def show():
else:
for event in Event.query.all():
meta.append((query_statements(mode, event.id), event))
return render_template("speech_show.html", mode=mode, meta=meta, event_id=event_id)
return render_layout("speech_show.html", mode=mode, meta=meta, event_id=event_id)
@speech.route("/update")
def update():
......@@ -67,7 +69,7 @@ def update():
else:
for event in Event.query.all():
meta.append((query_statements(mode, event.id), event))
return render_template("speech_content_show.html", mode=mode, meta=meta)
return render_layout("speech_content_show.html", mode=mode, meta=meta)
@speech.route("/add", methods=["GET", "POST"])
......@@ -130,7 +132,10 @@ def done():
@speech.route("/update_show.js")
def update_show_js():
update_interval = config.UPDATE_SHOW_INTERVAL or 1
div = "rede-content-div"
mode = request.args.get("mode", "pending")
event_id = request.args.get("event", -1)
return render_template("update_show.js", mode=mode, event_id=event_id)
target_url = url_for(".update", mode=mode, event=event_id)
return render_layout("update.js", update_interval=update_interval, div=div, target_url=target_url)
#!/usr/bin/env python3
from flask import Flask, g, current_app, request, render_template, session, flash, redirect, url_for, abort
from flask import Flask, g, current_app, request, session, flash, redirect, url_for, abort
from flask.ext.login import login_user, logout_user, login_required, current_user
from flask.ext.principal import Principal, Identity, AnonymousIdentity, identity_changed, identity_loaded, UserNeed, RoleNeed
from passlib.hash import pbkdf2_sha256
import config
from shared import db, login_manager
from shared import db, login_manager, render_layout
from models.forms import LoginForm, NewUserForm
from models.database import User, Statement, Speaker, Event
......@@ -41,7 +41,7 @@ def index():
no_speaker = Speaker("No Speaker", event)
no_statement = Statement(no_speaker, event)
meta.append((ls[0] if len(ls) > 0 else (no_statement, no_speaker, ()), event))
return render_template("index.html", meta=meta)
return render_layout("index.html", meta=meta)
@app.route("/update")
def update():
......@@ -52,11 +52,25 @@ def update():
no_speaker = Speaker("No Speaker", event)
no_statement = Statement(no_speaker, event)
meta.append((ls[0] if len(ls) > 0 else (no_statement, no_speaker, ()), event))
return render_template("content_index.html", meta=meta)
return render_layout("content_index.html", meta=meta)
@app.route("/update.js")
def update_js():
return render_template("update_index.js")
update_interval = config.UPDATE_INDEX_INTERVAL or 1
div = "rede-content-div"
target_url = url_for(".update")
return render_layout("update.js", update_interval=update_interval, div=div, target=target_url)
@app.route("/update_time")
def update_time():
return render_layout("content_time.html")
@app.route("/update_time.js")
def update_time_js():
update_interval = config.UPDATE_TIME_INTERVAL or 10
div = "rede-time-div"
target_url = url_for("update_time")
return render_layout("update.js", update_interval=update_interval, div=div, target_url=target_url)
@app.route("/login", methods=["GET", "POST"])
def login():
......@@ -70,7 +84,7 @@ def login():
return redirect(request.args.get("next") or url_for(".index"))
else:
flash("Invalid username or wrong password", "alert-error")
return render_template("login.html", form=form)
return render_layout("login.html", form=form)
@app.route("/logout", methods=["GET", "POST"])
@login_required
......@@ -89,14 +103,14 @@ def register():
length = len(db.session.query(User).filter_by(username=form.username.data).all())
if length > 0:
flash("There already is a user with that name.")
return render_template("register.html", form=form)
return render_layout("register.html", form=form)
password = pbkdf2_sha256.encrypt(form.password.data, rounds=200000, salt_size=16)
user = User(fullname, username, password, [])
db.session.add(user)
db.session.commit()
flash("Your account has been created, you may now log in with it.")
return redirect(url_for(".login"))
return render_template("register.html", form=form)
return render_layout("register.html", form=form)
@identity_loaded.connect_via(app)
def on_identity_loaded(sender, identity):
......
from flask import abort
from flask import abort, render_template
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.login import LoginManager
from flask.ext.principal import Permission, RoleNeed
from datetime import datetime
db = SQLAlchemy()
login_manager = LoginManager()
......@@ -9,3 +10,7 @@ login_manager = LoginManager()
admin_permission = Permission(RoleNeed("admin"))
user_permission = Permission(RoleNeed("user"))
roles = ["user", "admin"]
def render_layout(template, **kwargs):
current_time = datetime.now()
return render_template(template, current_time=current_time, **kwargs)
{{ current_time.strftime("%H:%M") }}
......@@ -12,6 +12,7 @@
<meta name="mobile-web-app-capable" content="yes">
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}" />
<title>{% block title %}Unknown Page{% endblock %} - Redeleitsystem</title>
<script src="{{ url_for("update_time_js") }}" async></script>
{% block additional_js %}
<!-- Place to insert more .js-files -->
{% endblock %}
......@@ -23,6 +24,10 @@
<div class="mdl-layout__header-row">
<a href="{{ url_for('index') }}"><span class="mdl-layout-title">Redeleitsystem</span></a>
<div class="mdl-layout-spacer"></div>
<span id="rede-time-div" class="mdl-layout-title">
{% include "content_time.html" %}
</span>
<div class="mdl-layout-spacer"></div>
<button class="mdl-button mdl-js-button mdl-js-ripple-effet mdl-button--icon" id="hdrbtn">
<i class="material-icons">more_vert</i>
</button>
......
......@@ -11,20 +11,19 @@ function request() {
update(xmlhttp.responseText);
}
};
var target = "{{ url_for('.update') }}";
var target = "{{ target_url }}";
xmlhttp.open("GET", target, true);
xmlhttp.send();
}
function update(data) {
if (data != last_content) {
document.getElementById("rede-content-div").innerHTML = data;
document.getElementById("{{ div }}").innerHTML = data;
last_content = data;
}
}
window.onload=function() {
window.setInterval(request, 1000);
window.setInterval(request, 1000 * {{ update_interval }});
}
var returned = true;
var last_content = "";
function request() {
if (!returned)
return;
returned = false;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
returned = true;
update(xmlhttp.responseText);
}
};
var target = "{{ url_for('.update', mode=mode, event=event_id) }}";
xmlhttp.open("GET", target, true);
xmlhttp.send();
}
function update(data) {
if (data != last_content) {
document.getElementById("rede-content-div").innerHTML = data;
last_content = data;
}
}
window.onload=function() {
window.setInterval(request, 1000);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment