From b34ac20d9880ac287b33c12152f241a7ec203f4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20K=C3=BCnzel?= <simonk@fsmpi.rwth-aachen.de> Date: Sun, 5 May 2024 23:12:15 +0200 Subject: [PATCH] Change sql string delimiter " to ' --- feeds.py | 4 ++-- icalexport.py | 8 ++++---- jobmanagement.py | 10 +++++----- jobs.py | 18 +++++++++--------- livestreams.py | 2 +- server.py | 32 ++++++++++++++++---------------- sorter.py | 2 +- stats.py | 22 +++++++++++----------- template_helper.py | 2 +- timetable.py | 2 +- 10 files changed, 51 insertions(+), 51 deletions(-) diff --git a/feeds.py b/feeds.py index ba8c2df..cf4a548 100644 --- a/feeds.py +++ b/feeds.py @@ -21,7 +21,7 @@ def feed(handle=None): course = query('SELECT * FROM courses WHERE handle = ? AND visible', handle)[0] course['atomid'] = gen_atomid('Video AG, courses['+str(course['id'])+']: '+course['handle']) entries = query(''' - SELECT lectures.*, "video" AS sep, videos.*, formats.description AS format_description, formats.prio, "course" AS sep, courses.* + SELECT lectures.*, 'video' AS sep, videos.*, formats.description AS format_description, formats.prio, \'course\' AS sep, courses.* FROM lectures JOIN courses ON (courses.id = lectures.course_id) JOIN videos ON (lectures.id = videos.lecture_id) @@ -56,7 +56,7 @@ def rss_feed(handle): if 'format_id' not in request.values: return redirect(url_for('rss_feed', handle=handle, format_id=formats[0]['id'])) fmt = query('SELECT * FROM formats WHERE id = ?', request.values.get('format_id', request.values['format_id']))[0] - items = query('''SELECT lectures.*, "video" AS sep, videos.* + items = query('''SELECT lectures.*, 'video' AS sep, videos.* FROM lectures JOIN courses ON courses.id = lectures.course_id JOIN videos ON lectures.id = videos.lecture_id diff --git a/icalexport.py b/icalexport.py index cf50ff7..edb3ad6 100644 --- a/icalexport.py +++ b/icalexport.py @@ -57,7 +57,7 @@ def get_responsible(): @app.route('/internal/ical/all') @calperm def ical_all(): - return export_lectures(query('''SELECT lectures.*, "course" AS sep, courses.* + return export_lectures(query('''SELECT lectures.*, 'course' AS sep, courses.* FROM lectures JOIN courses ON courses.id = lectures.course_id WHERE NOT norecording AND NOT external ORDER BY time DESC LIMIT ?''', request.values.get('limit', 1000)), @@ -67,7 +67,7 @@ def ical_all(): @calperm def ical_user(user): username = query('SELECT name FROM users WHERE users.id = ?', user)[0]['name'] - return export_lectures(query('''SELECT lectures.*, "course" AS sep, courses.* + return export_lectures(query('''SELECT lectures.*, 'course' AS sep, courses.* FROM lectures JOIN courses ON courses.id = lectures.course_id JOIN responsible ON responsible.course_id = courses.id @@ -79,7 +79,7 @@ def ical_user(user): @calperm def ical_notuser(user): username = query('SELECT name FROM users WHERE users.id = ?', user)[0]['name'] - return export_lectures(query('''SELECT lectures.*, "course" AS sep, courses.* + return export_lectures(query('''SELECT lectures.*, 'course' AS sep, courses.* FROM lectures JOIN courses ON courses.id = lectures.course_id LEFT JOIN responsible ON (responsible.course_id = courses.id AND responsible.user_id = ?) @@ -90,7 +90,7 @@ def ical_notuser(user): @app.route('/internal/ical/course/<course>') @calperm def ical_course(course): - return export_lectures(query('''SELECT lectures.*, "course" AS sep, courses.* + return export_lectures(query('''SELECT lectures.*, 'course' AS sep, courses.* FROM lectures JOIN courses ON courses.id = lectures.course_id WHERE courses.handle = ? AND NOT norecording AND NOT external ORDER BY time DESC''', course), get_responsible(), 'videoag_%s.ics'%course) diff --git a/jobmanagement.py b/jobmanagement.py index 818fb09..f600b43 100644 --- a/jobmanagement.py +++ b/jobmanagement.py @@ -30,14 +30,14 @@ def job_handler_handle(id, state): def job_catch_broken(): # scheduled but never pinged modify("BEGIN") - query('UPDATE jobs SET state="ready" WHERE state="scheduled" and time_scheduled < ?', datetime.now() - timedelta(seconds=10)) + query('UPDATE jobs SET state=\'ready\' WHERE state=\'scheduled\' and time_scheduled < ?', datetime.now() - timedelta(seconds=10)) try: modify("COMMIT") except: #pylint: disable=bare-except pass # no pings since 60s modify("BEGIN") - query('UPDATE jobs SET state="failed" WHERE state="running" and last_ping < ?', datetime.now() - timedelta(seconds=60)) + query('UPDATE jobs SET state=\'failed\' WHERE state=\'running\' and last_ping < ?', datetime.now() - timedelta(seconds=60)) try: modify("COMMIT") except: #pylint: disable=bare-except @@ -53,11 +53,11 @@ def schedule_job(jobtype, data=None, priority=0, queue="default"): jobtype, priority, queue, json.dumps(data, default=date_json_handler), datetime.now()) def cancel_job(job_id): - query('UPDATE jobs SET state = "deleted" WHERE id = ? AND state = "ready"', job_id) + query('UPDATE jobs SET state = \'deleted\' WHERE id = ? AND state = \'ready\'', job_id) query('UPDATE jobs SET canceled = 1 WHERE id = ?', job_id) def restart_job(job_id, canceled=False): if canceled: - query('UPDATE jobs SET state = "ready", canceled = 0 WHERE id = ? AND state = "failed"', job_id) + query('UPDATE jobs SET state = \'ready\', canceled = 0 WHERE id = ? AND state = \'failed\'', job_id) else: - query('UPDATE jobs SET state = "ready" WHERE id = ? AND state = "failed" AND NOT canceled', job_id) + query('UPDATE jobs SET state = \'ready\' WHERE id = ? AND state = \'failed\' AND NOT canceled', job_id) diff --git a/jobs.py b/jobs.py index 8751196..52fe14f 100644 --- a/jobs.py +++ b/jobs.py @@ -25,13 +25,13 @@ def jobs_overview(): 'state': request.args.get('state', 'failed'), 'worker': request.args.get('worker', '%')} - pagecount = math.ceil(query('SELECT count(id) as count FROM jobs WHERE (type like ?) AND (worker like ? OR (worker IS NULL AND ? = "%")) AND (state like ?)', + pagecount = math.ceil(query('SELECT count(id) as count FROM jobs WHERE (type like ?) AND (worker like ? OR (worker IS NULL AND ? = \'%\')) AND (state like ?)', filter['type'], filter['worker'], filter['worker'], filter['state'])[0]['count']/pagesize) jobs = query('SELECT * FROM jobs \ - WHERE (type like ?) AND (worker like ? OR (worker IS NULL AND ? = "%")) AND (state like ?) \ + WHERE (type like ?) AND (worker like ? OR (worker IS NULL AND ? = \'%\')) AND (state like ?) \ ORDER BY "time_created" DESC LIMIT ? OFFSET ?', filter['type'], filter['worker'], filter['worker'], filter['state'], pagesize, page*pagesize) - active_streams = query('SELECT lectures.*, "course" AS sep, courses.*, "job" AS sep, jobs.* FROM lectures \ + active_streams = query('SELECT lectures.*, \'course\' AS sep, courses.*, \'job\' AS sep, jobs.* FROM lectures \ JOIN courses ON (courses.id = lectures.course_id) \ JOIN jobs ON (jobs.id = lectures.stream_job) WHERE lectures.stream_job') for stream in active_streams: @@ -55,15 +55,15 @@ def jobs_overview(): @csrf_protect def jobs_action(action, jobid=None): if action == 'clear_failed': - query('UPDATE jobs SET state = "deleted" WHERE state = "failed" AND (id = ? OR ? IS NULL)', jobid, jobid) + query('UPDATE jobs SET state = \'deleted\' WHERE state = \'failed\' AND (id = ? OR ? IS NULL)', jobid, jobid) elif action == 'retry_failed': - query('UPDATE jobs SET state = "ready", canceled = 0 WHERE state = "failed" AND (id = ? OR ? IS NULL)', jobid, jobid) + query('UPDATE jobs SET state = \'ready\', canceled = 0 WHERE state = \'failed\' AND (id = ? OR ? IS NULL)', jobid, jobid) elif action == 'copy' and jobid: query("INSERT INTO jobs (type, priority, queue, state, data, time_created) \ SELECT type, priority, queue, 'ready', data, ? FROM jobs where id = ?", datetime.now(), jobid) elif action == 'delete' and jobid: - query('UPDATE jobs SET state = "deleted" WHERE id = ?', jobid) + query('UPDATE jobs SET state = \'deleted\' WHERE id = ?', jobid) elif action == 'cancel' and jobid: cancel_job(jobid) return redirect(request.values.get('ref', url_for('jobs_overview'))) @@ -75,7 +75,7 @@ def jobs_ping(id): status = json.dumps(json.loads(request.values['status']), default=date_json_handler) state = request.values['state'] if state == 'finished': - query('UPDATE jobs SET time_finished = ?, status = ?, state = "finished" where id = ?', datetime.now(), status, id) + query('UPDATE jobs SET time_finished = ?, status = ?, state = \'finished\' where id = ?', datetime.now(), status, id) else: query('UPDATE jobs SET worker = ?, last_ping = ?, status = ?, state = ? where id = ?', hostname, datetime.now(), status, state, id) job_handler_handle(id, state) @@ -96,13 +96,13 @@ def jobs_schedule(hostname): while not job: try: modify("BEGIN") - for i in query('SELECT * FROM jobs WHERE state = "ready" ORDER BY priority DESC'): + for i in query('SELECT * FROM jobs WHERE state = \'ready\' ORDER BY priority DESC'): if i['type'] in hostdata['jobtypes'] and i['queue'] in hostdata['queues']: job = i break if not job: return 'no jobs', 503 - modify('UPDATE jobs SET state="scheduled", worker = ?, time_scheduled = ? WHERE id = ?', hostname, datetime.now(), job['id']) + modify('UPDATE jobs SET state=\'scheduled\', worker = ?, time_scheduled = ? WHERE id = ?', hostname, datetime.now(), job['id']) modify("COMMIT") except: #pylint: disable=bare-except tries += 1 diff --git a/livestreams.py b/livestreams.py index cb8dca5..9c92b19 100644 --- a/livestreams.py +++ b/livestreams.py @@ -45,7 +45,7 @@ def streamauth_legacy(server=None): if 'lecture' in request.values: match = {'id': request.values['lecture']} try: - modify("INSERT INTO streams (handle, active, visible, lecture_id, description, poster) VALUES (?, 0, 1, -1, "", "")", request.values['name']) + modify("INSERT INTO streams (handle, active, visible, lecture_id, description, poster) VALUES (?, 0, 1, -1, '', '')", request.values['name']) except: pass if server: diff --git a/server.py b/server.py index ad98b1f..4f24ddf 100644 --- a/server.py +++ b/server.py @@ -138,7 +138,7 @@ def genlive(streams): return streams def genlive_new(lectures): - hls_format = (query('SELECT * FROM formats WHERE keywords = "hls"') or [{}])[0] + hls_format = (query('SELECT * FROM formats WHERE keywords = \'hls\'') or [{}])[0] res = [] for lecture in lectures: if not lecture['stream_job']: @@ -161,7 +161,7 @@ def index(): start = date.today() end = start + timedelta(days=7) upcomming = query(''' - SELECT lectures.*, streams.active AS nowlive, "course" AS sep, courses.* + SELECT lectures.*, streams.active AS nowlive, \'course\' AS sep, courses.* FROM lectures JOIN courses ON (lectures.course_id = courses.id) LEFT JOIN streams ON lectures.id = streams.lecture_id @@ -170,7 +170,7 @@ def index(): for i in upcomming: i['date'] = i['time'].date() latestvideos = query(''' - SELECT lectures.*, "course" AS sep, courses.* + SELECT lectures.*, \'course\' AS sep, courses.* FROM lectures LEFT JOIN videos ON (videos.lecture_id = lectures.id) LEFT JOIN courses on (courses.id = lectures.course_id) @@ -178,13 +178,13 @@ def index(): GROUP BY videos.lecture_id ORDER BY MAX(videos.time_created) DESC LIMIT 6 ''', ismod()) - livestreams = query('''SELECT streams.handle AS livehandle, lectures.*, "course" AS sep, courses.* + livestreams = query('''SELECT streams.handle AS livehandle, lectures.*, \'course\' AS sep, courses.* FROM streams JOIN lectures ON lectures.id = streams.lecture_id JOIN courses ON courses.id = lectures.course_id WHERE streams.active AND (? OR (streams.visible AND courses.visible AND courses.listed AND lectures.visible)) ''', ismod()) - livestreams_new = query('''SELECT lectures.*, "course" AS sep, courses.* + livestreams_new = query('''SELECT lectures.*, \'course\' AS sep, courses.* FROM lectures JOIN courses ON courses.id = lectures.course_id WHERE lectures.stream_job IS NOT NULL AND (? OR (courses.visible AND courses.listed AND lectures.visible)) @@ -200,14 +200,14 @@ def index(): item['courses'] = query('SELECT * FROM courses WHERE (visible AND listed) AND "%s" = ? ORDER BY "%s"'%(item['param'], item['param']), item['param2']) elif item['type'] == 'video': item['lecture'] = {'id': item['param']} - streams = query('''SELECT streams.handle AS livehandle, streams.lecture_id, "formats" AS sep, formats.* + streams = query('''SELECT streams.handle AS livehandle, streams.lecture_id, \'formats\' AS sep, formats.* FROM streams JOIN lectures ON lectures.id = streams.lecture_id - JOIN formats ON formats.keywords = "hls" + JOIN formats ON formats.keywords = 'hls' WHERE streams.active AND streams.visible AND lectures.id = ? ''', item['param']) item['videos'] = query(''' - SELECT videos.*, "formats" AS sep, formats.* + SELECT videos.*, 'formats' AS sep, formats.* FROM videos JOIN formats ON (videos.video_format = formats.id) WHERE videos.lecture_id = ? AND videos.visible @@ -259,7 +259,7 @@ def course(id=None, handle=None): if perm['lecture_id'] == lecture['id']: lecture['perm'].append(perm) videos = query(''' - SELECT videos.*, (videos.downloadable AND courses.downloadable) as downloadable, "formats" AS sep, formats.* + SELECT videos.*, (videos.downloadable AND courses.downloadable) as downloadable, 'formats' AS sep, formats.* FROM videos JOIN lectures ON (videos.lecture_id = lectures.id) JOIN formats ON (videos.video_format = formats.id) @@ -267,10 +267,10 @@ def course(id=None, handle=None): WHERE lectures.course_id= ? AND (? OR videos.visible) ORDER BY lectures.time, formats.prio DESC ''', course['id'], ismod()) - livestreams = query('''SELECT streams.handle AS livehandle, streams.lecture_id, "formats" AS sep, formats.* + livestreams = query('''SELECT streams.handle AS livehandle, streams.lecture_id, 'formats' AS sep, formats.* FROM streams JOIN lectures ON lectures.id = streams.lecture_id - JOIN formats ON formats.keywords = "hls" + JOIN formats ON formats.keywords = 'hls' WHERE streams.active AND (? OR streams.visible) AND lectures.course_id = ? ''', ismod(), course['id']) videos += genlive(livestreams) @@ -283,7 +283,7 @@ def course(id=None, handle=None): responsible = query('''SELECT users.*, responsible.course_id AS responsible FROM users LEFT JOIN responsible ON (responsible.user_id = users.id AND responsible.course_id = ?) - WHERE users.fsacc != "" AND users.level > 0 + WHERE users.fsacc != '' AND users.level > 0 ORDER BY responsible DESC, users.realname ASC''', course['id']) live_sources = query('SELECT * FROM live_sources WHERE NOT deleted') return render_template('course.html', course=course, lectures=lectures, videos=videos, chapters=chapters, responsible=responsible, live_sources=live_sources) @@ -305,17 +305,17 @@ def impress(): def lecture(id, course=None, courseid=None): #pylint: disable=unused-argument,too-many-branches lecture = query('SELECT * FROM lectures WHERE id = ? AND (? OR visible)', id, ismod())[0] videos = query(''' - SELECT videos.*, (videos.downloadable AND courses.downloadable) as downloadable, "formats" AS sep, formats.* + SELECT videos.*, (videos.downloadable AND courses.downloadable) as downloadable, 'formats' AS sep, formats.* FROM videos JOIN formats ON (videos.video_format = formats.id) JOIN courses ON (courses.id = ?) WHERE videos.lecture_id = ? AND (? OR videos.visible) ORDER BY formats.prio DESC ''', lecture['course_id'], lecture['id'], ismod()) - livestreams = query('''SELECT streams.handle AS livehandle, streams.lecture_id, "formats" AS sep, formats.* + livestreams = query('''SELECT streams.handle AS livehandle, streams.lecture_id, 'formats' AS sep, formats.* FROM streams JOIN lectures ON lectures.id = streams.lecture_id - JOIN formats ON formats.keywords = "hls" + JOIN formats ON formats.keywords = 'hls' WHERE streams.active AND (? OR streams.visible) AND lectures.id = ? ''', ismod(), id) videos += genlive(livestreams) @@ -447,7 +447,7 @@ def login(): session['user'] = userinfo dbuser = query('SELECT * FROM users WHERE name = ?', user) if not dbuser: - modify('INSERT INTO users (name, realname, fsacc, level, calendar_key, rfc6238) VALUES (?, ?, ?, 1, "", "")', user, session['user']['givenName'], user) + modify('INSERT INTO users (name, realname, fsacc, level, calendar_key, rfc6238) VALUES (?, ?, ?, 1, \'\', \'\')', user, session['user']['givenName'], user) dbuser = query('SELECT * FROM users WHERE name = ?', user) session['user']['dbid'] = dbuser[0]['id'] session['_csrf_token'] = ''.join(random.SystemRandom().choice(string.ascii_letters + string.digits) for _ in range(64)) diff --git a/sorter.py b/sorter.py index f4b8e9b..a0d24c1 100644 --- a/sorter.py +++ b/sorter.py @@ -60,7 +60,7 @@ def insert_video(lectureid, dbfilepath, fileformatid, hash="", filesize=-1, dura video_id = modify('''INSERT INTO videos_data (lecture_id, visible, path, video_format, title, comment, internal, file_modified, time_created, time_updated, created_by, hash, file_size, duration, source) VALUES - (?, ?, ?, ?, "", "", "", ?, ?, ?, ?, ?, ?, ?, ?)''', + (?, ?, ?, ?, '', '', '', ?, ?, ?, ?, ?, ?, ?, ?)''', lectureid, visible, dbfilepath, fileformatid, datetime.now(), datetime.now(), datetime.now(), -1, hash, filesize, duration, sourceid) if not sourceid: query('INSERT INTO sortlog (lecture_id,video_id,path,"when") VALUES (?,?,?,?)', lectureid, video_id, dbfilepath, datetime.now()) diff --git a/stats.py b/stats.py index ad27e48..6ca9565 100644 --- a/stats.py +++ b/stats.py @@ -8,7 +8,7 @@ from server import * @register_navbar('Statistiken', icon='stats') @mod_required def stats(): - semester = query('SELECT DISTINCT semester from courses WHERE semester != ""') + semester = query('SELECT DISTINCT semester from courses WHERE semester != \'\'') for i in semester: year = int(i['semester'][0:4]) if i['semester'].endswith('ss'): @@ -22,9 +22,9 @@ def stats(): STATS_QUERIES = {} STATS_QUERIES['formats_views'] = "SELECT formats.description AS labels, count(DISTINCT log.id) AS \"values\" FROM log \ JOIN videos ON (videos.id = log.video) JOIN formats ON (formats.id = videos.video_format) GROUP BY formats.id" -STATS_QUERIES['course_count'] = 'SELECT semester AS x, count(id) AS y FROM courses WHERE semester != "" GROUP BY semester' +STATS_QUERIES['course_count'] = 'SELECT semester AS x, count(id) AS y FROM courses WHERE semester != \'\' GROUP BY semester' STATS_QUERIES['lectures_count'] = 'SELECT semester AS x, count(lectures.id) AS y FROM lectures \ - JOIN courses ON (courses.id = lectures.course_id) WHERE semester != "" GROUP BY semester' + JOIN courses ON (courses.id = lectures.course_id) WHERE semester != \'\' GROUP BY semester' STATS_QUERIES['categories_courses'] = "SELECT courses.subject AS labels, count(courses.id) AS \"values\" FROM courses \ GROUP BY courses.subject ORDER BY labels DESC LIMIT 100" STATS_QUERIES['organizer_courses'] = "SELECT courses.organizer AS labels, count(courses.id) AS \"values\" FROM courses \ @@ -71,9 +71,9 @@ def stats_generic(req, param=None): @app.route('/internal/stats/viewsperday/<req>/<param>') @mod_required def stats_viewsperday(req, param=""): #pylint: disable=too-many-locals - update_expr = 'INSERT INTO logcache (req, param, trace, date, value) SELECT "%s", ?, trace, date, y FROM (%s) AS cachetmp WHERE date < ?' - query_expr = 'SELECT date, trace, value AS y FROM logcache WHERE req = "%s" AND param = ? UNION SELECT * FROM (%s) AS cachetmp' - date_subexpr = 'SELECT CASE WHEN MAX(date) IS NULL THEN "2000-00-00" ELSE MAX(date) END AS t FROM "logcache" WHERE req = "%s" AND param = ?' + update_expr = 'INSERT INTO logcache (req, param, trace, date, value) SELECT \'%s\', ?, trace, date, y FROM (%s) AS cachetmp WHERE date < ?' + query_expr = 'SELECT date, trace, value AS y FROM logcache WHERE req = \'%s\' AND param = ? UNION SELECT * FROM (%s) AS cachetmp' + date_subexpr = 'SELECT CASE WHEN MAX(date) IS NULL THEN \'2000-00-00\' ELSE MAX(date) END AS t FROM "logcache" WHERE req = \'%s\' AND param = ?' queries = { 'lecture': # views per day per lecture (split per format) '''SELECT log.date AS date, formats.description AS trace, COUNT(DISTINCT log.id) AS y @@ -83,7 +83,7 @@ def stats_viewsperday(req, param=""): #pylint: disable=too-many-locals WHERE log.date > %T AND videos.lecture_id = ? GROUP BY log.date, videos.video_format UNION - SELECT log.date AS date, "total" AS trace, COUNT(DISTINCT log.id) AS y + SELECT log.date AS date, \'total\' AS trace, COUNT(DISTINCT log.id) AS y FROM log JOIN videos ON videos.id = log.video WHERE log.date > %T AND videos.lecture_id = ? GROUP BY log.date''', @@ -95,7 +95,7 @@ def stats_viewsperday(req, param=""): #pylint: disable=too-many-locals WHERE log.date > %T AND lectures.course_id = ? GROUP BY log.date, videos.video_format UNION - SELECT log.date AS date, "total" AS trace, COUNT(DISTINCT log.id) AS y + SELECT log.date AS date, \'total\' AS trace, COUNT(DISTINCT log.id) AS y FROM log JOIN videos ON videos.id = log.video JOIN lectures ON lectures.id = videos.lecture_id @@ -109,7 +109,7 @@ def stats_viewsperday(req, param=""): #pylint: disable=too-many-locals JOIN formats ON formats.id = videos.video_format WHERE log.date > %T GROUP BY log.date, videos.video_format UNION - SELECT log.date AS date, "total" AS trace, COUNT(DISTINCT log.id) AS y + SELECT log.date AS date, \'total\' AS trace, COUNT(DISTINCT log.id) AS y FROM log WHERE log.date > %T GROUP BY log.date''', @@ -122,7 +122,7 @@ def stats_viewsperday(req, param=""): #pylint: disable=too-many-locals WHERE log.date > %T GROUP BY log.date, courses.id''' } - expr = queries[req].replace('%T', '"'+query(date_subexpr%('viewsperday.'+req), param)[0]['t']+'"') + expr = queries[req].replace('%T', '\''+query(date_subexpr%('viewsperday.'+req), param)[0]['t']+'\'') params = [param]*expr.count('?') try: modify("BEGIN") @@ -130,7 +130,7 @@ def stats_viewsperday(req, param=""): #pylint: disable=too-many-locals modify('COMMIT') except Exception: #pylint: disable=broad-except traceback.print_exc() - expr = queries[req].replace('%T', '"'+str(date.today())+'"') + expr = queries[req].replace('%T', '\''+str(date.today())+'\'') rows = query(query_expr%('viewsperday.'+req, expr), param, *params) start = None traces = set() diff --git a/template_helper.py b/template_helper.py index e7fb5f4..6dea949 100644 --- a/template_helper.py +++ b/template_helper.py @@ -252,6 +252,6 @@ def tagid(value): @app.template_global() def is_readonly(): try: - return show('SHOW GLOBAL STATUS LIKE "wsrep_ready"')['wsrep_ready'] != 'ON' + return show('SHOW GLOBAL STATUS LIKE \'wsrep_ready\'')['wsrep_ready'] != 'ON' except: #pylint: disable=bare-except return True diff --git a/timetable.py b/timetable.py index 6efbbb3..bcb1a07 100644 --- a/timetable.py +++ b/timetable.py @@ -23,7 +23,7 @@ def query_lectures_on_day(start, end): # lecture.time <= end AND lecture.time+lecture.duration >= start # But there is no SQL statement that does this and is compatible with both sqlite # and mysql, so we approximate the "lecture.time+lecture.duration" part - rows = query('''SELECT lectures.*, courses.short, "course" AS sep, courses.* + rows = query('''SELECT lectures.*, courses.short, \'course\' AS sep, courses.* FROM lectures JOIN courses ON (lectures.course_id = courses.id) WHERE time <= ? AND time > ? -- GitLab