Skip to content
Snippets Groups Projects
Commit fc33576b authored by Andreas Valder's avatar Andreas Valder
Browse files

Merge branch 'master' of git.fsmpi.rwth-aachen.de:julianundandyfrickelnkram/videoagwebsite

parents 6b8518ef 5a885893
No related branches found
No related tags found
No related merge requests found
...@@ -111,10 +111,16 @@ def ldapget(user): ...@@ -111,10 +111,16 @@ def ldapget(user):
else: else:
return notldap[user][2] return notldap[user][2]
def login_required(func): def ismod(*args):
print('mod test', session, 'user' in session, args)
return ('user' in session)
app.jinja_env.globals['ismod'] = ismod
def mod_required(func):
@wraps(func) @wraps(func)
def decorator(*args, **kwargs): def decorator(*args, **kwargs):
if not 'user' in session: if not ismod():
flash('Diese Funktion ist nur für Moderatoren verfügbar!') flash('Diese Funktion ist nur für Moderatoren verfügbar!')
return redirect(url_for('login', ref=request.url)) return redirect(url_for('login', ref=request.url))
else: else:
...@@ -132,18 +138,18 @@ def index(): ...@@ -132,18 +138,18 @@ def index():
GROUP BY videos.lecture_id GROUP BY videos.lecture_id
ORDER BY lastvidtime DESC ORDER BY lastvidtime DESC
LIMIT 6 LIMIT 6
''', False)) ''', ismod()))
@app.route('/videos') @app.route('/videos')
def videos(): def videos():
c=query("SELECT * FROM courses") courses = query('SELECT * FROM courses WHERE (? OR (visible AND listed))', ismod())
for i in c: for course in courses:
if i['semester'] == '': if course['semester'] == '':
i['semester'] = 'zeitlos' course['semester'] = 'zeitlos'
groupedby = request.args.get('groupedby') groupedby = request.args.get('groupedby')
if groupedby not in ['title','semester','organizer']: if groupedby not in ['title','semester','organizer']:
groupedby = 'semester' groupedby = 'semester'
return render_template('videos.html', courses=c, groupedby=groupedby) return render_template('videos.html', courses=courses, groupedby=groupedby)
@app.route('/faq') @app.route('/faq')
def faq(): def faq():
...@@ -151,15 +157,21 @@ def faq(): ...@@ -151,15 +157,21 @@ def faq():
@app.route('/play') @app.route('/play')
def play(): def play():
if 'lectureid' in request.args: if not 'lectureid' in request.args:
id = request.args['lectureid'] return redirect(url_for('videos'))
lecture=query('SELECT * FROM lectures WHERE id = ?', id)[0] id = request.args.get('lectureid')
return render_template('play.html', lectures = query('SELECT * FROM lectures WHERE id = ? AND (? OR visible)', id, ismod())
lecture=lecture, videos = query('SELECT * FROM videos WHERE lecture_id = ? AND (? OR visible)', id, ismod())
videos=query('SELECT * FROM videos WHERE lecture_id = ?', id), if not lectures:
course=query('SELECT * FROM courses WHERE id = ?',lecture['course_id'])[0]) flash('Diese Vorlesung existiert nicht!')
else: return app.view_functions['videos'](), 404
return redirect(url_for('index')) if not videos:
flash('Zu dieser Vorlesung wurden noch keine Videos veröffentlicht!')
courses = query('SELECT * FROM courses WHERE id = ? AND (? OR (visible AND listed))', lectures[0]['course_id'], ismod())
if not courses:
flash('Diese Veranstaltung existiert nicht!')
return app.view_functions['videos'](), 404
return render_template('play.html', course=courses[0], lecture=lectures[0], videos=videos)
@app.route('/search') @app.route('/search')
def search(): def search():
...@@ -167,24 +179,32 @@ def search(): ...@@ -167,24 +179,32 @@ def search():
return redirect(url_for('index')) return redirect(url_for('index'))
q = request.args['q'] q = request.args['q']
courses = searchquery(q, '*', ['title', 'short', 'organizer', 'subject', 'description'], courses = searchquery(q, '*', ['title', 'short', 'organizer', 'subject', 'description'],
'courses', 'WHERE (? OR (visible AND listed)) GROUP BY id ORDER BY _score DESC, semester DESC LIMIT 20', False) 'courses', 'WHERE (? OR (visible AND listed)) GROUP BY id ORDER BY _score DESC, semester DESC LIMIT 20', ismod())
lectures = searchquery(q, 'lectures.*, courses.visible AS coursevisible, courses.listed, courses.short, courses.downloadable, courses.title AS coursetitle', lectures = searchquery(q, 'lectures.*, courses.visible AS coursevisible, courses.listed, courses.short, courses.downloadable, courses.title AS coursetitle',
['lectures.title', 'lectures.comment', 'lectures.speaker', 'courses.short'], ['lectures.title', 'lectures.comment', 'lectures.speaker', 'courses.short'],
'lectures LEFT JOIN courses on (courses.id = lectures.course_id)', 'lectures LEFT JOIN courses on (courses.id = lectures.course_id)',
'WHERE (? OR (coursevisible AND listed AND visible)) GROUP BY id ORDER BY _score DESC, time DESC LIMIT 30', False) 'WHERE (? OR (coursevisible AND listed AND visible)) GROUP BY id ORDER BY _score DESC, time DESC LIMIT 30', ismod())
return render_template('search.html', searchtext=request.args['q'], courses=courses, lectures=lectures) return render_template('search.html', searchtext=request.args['q'], courses=courses, lectures=lectures)
@app.route('/course') @app.route('/course')
def course(): def course():
if 'courseid' in request.args: if not 'courseid' in request.args:
return redirect(url_for('videos'))
id = request.args['courseid'] id = request.args['courseid']
course = query('SELECT * FROM courses WHERE handle = ?', id)[0] courses = query('SELECT * FROM courses WHERE handle = ? AND (? OR visible)', id, ismod())
return render_template('course.html', if not courses:
course=course, flash('Diese Veranstaltung existiert nicht!')
lectures=query('SELECT * FROM lectures WHERE course_id = ?', course['id']), return app.view_functions['videos'](), 404
videos=query('SELECT *, formats.description AS format_description FROM videos JOIN lectures ON (videos.lecture_id = lectures.id) JOIN formats ON (videos.video_format = formats.id) WHERE lectures.course_id= ? ORDER BY formats.prio DESC', course['id'])) lectures = query('SELECT * FROM lectures WHERE course_id = ? AND (? OR visible)', courses[0]['id'], ismod())
else: videos = query('''
return redirect(url_for('index')) SELECT *, formats.description AS format_description
FROM videos
JOIN lectures ON (videos.lecture_id = lectures.id)
JOIN formats ON (videos.video_format = formats.id)
WHERE lectures.course_id= ?
ORDER BY formats.prio DESC
''', courses[0]['id'])
return render_template('course.html', course=courses[0], lectures=lectures, videos=videos)
@app.route('/login', methods=['GET', 'POST']) @app.route('/login', methods=['GET', 'POST'])
def login(): def login():
...@@ -209,7 +229,7 @@ def logout(): ...@@ -209,7 +229,7 @@ def logout():
return redirect(url_for('index')) return redirect(url_for('index'))
@app.route('/edit') @app.route('/edit')
@login_required @mod_required
def edit(): def edit():
tabs = { tabs = {
'courses': ('courses_data', 'id', ['visible', 'listed', 'title', 'short', 'courses': ('courses_data', 'id', ['visible', 'listed', 'title', 'short',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment