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

made campus import better

parent b9972b4c
No related branches found
No related tags found
No related merge requests found
from server import * from server import *
@app.route('/import/<source>/<int:id>', methods=['GET', 'POST']) @app.route('/import/<int:id>', methods=['GET', 'POST'])
@mod_required @mod_required
def import_from(source=None, id=None): def import_from(source=None, id=None):
if source != "campus":
return "Unknown source", 404
courses = query('SELECT * FROM courses WHERE id = ?', id)[0] courses = query('SELECT * FROM courses WHERE id = ?', id)[0]
lectures = query('SELECT * FROM lectures WHERE course_id = ?', courses['id']) lectures = query('SELECT * FROM lectures WHERE course_id = ?', courses['id'])
...@@ -83,7 +80,7 @@ def import_from(source=None, id=None): ...@@ -83,7 +80,7 @@ def import_from(source=None, id=None):
e['time'] = datetime.strptime("%s %s"%(k,j['start']) ,fmt) e['time'] = datetime.strptime("%s %s"%(k,j['start']) ,fmt)
e['duration'] = int((datetime.strptime("%s %s"%(k,j['end']) ,fmt) - e['time']).seconds/60) e['duration'] = int((datetime.strptime("%s %s"%(k,j['end']) ,fmt) - e['time']).seconds/60)
e['place'] = query("SELECT name FROM places WHERE (campus_name = ?) OR ((NOT campus_name) AND name = ?)",j['place'],j['place'])[0]['name']; e['place'] = query("SELECT name FROM places WHERE (campus_name = ?) OR ((NOT campus_name) AND name = ?)",j['place'],j['place'])[0]['name'];
e['exists'] = len(query("SELECT id from lectures WHERE (time = ?) and (duration = ?) and (place = ?) and (course_id = ?)",e['time'],e['duration'],e['place'],id)) > 0 e['exists'] = query("SELECT count(id) as c from lectures WHERE (time = ?) and (duration = ?) and (place = ?) and (course_id = ?)",e['time'],e['duration'],e['place'],id)[0]['c'] > 0
events.append(e) events.append(e)
# it is pared. # it is pared.
...@@ -92,12 +89,25 @@ def import_from(source=None, id=None): ...@@ -92,12 +89,25 @@ def import_from(source=None, id=None):
except ImportError: except ImportError:
flash('python-lxml not found, campus import will not work.') flash('python-lxml not found, campus import will not work.')
uniqevents = [] uniqueevents = []
for i in events: for i in events:
seen = False seen = False
for j in events: for j in uniqueevents:
seen = (i['place'] == j['place']) and (i['time'] == j['time']) and (i['duration'] == j['duration']) seen = (i['place'] == j['place']) and (i['time'] == j['time']) and (i['duration'] == j['duration'])
if not seen: if seen:
uniqevents.append(i) break
if (not seen) and (not i['exists']):
i['type'] = 'import'
uniqueevents.append(i)
for i in lectures:
i['hascampusmapping'] = False
for j in uniqueevents:
i['hascampusmapping'] = (i['place'] == j['place']) and (i['time'] == j['time']) and (i['duration'] == j['duration'])
if i['hascampusmapping']:
break
if not i['hascampusmapping']:
i['type'] = 'lecture'
uniqueevents.append(i)
return render_template('import_campus.html', course=courses, lectures=lectures, import_campus=import_campus, events=uniqevents) return render_template('import_campus.html', course=courses, import_campus=import_campus, events=uniqueevents)
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
</div> </div>
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h1 class="panel-title">Videos{% if ismod() %} <a class="btn btn-default" style="margin-right: 5px;" href="todo">Neuer Termin</a><a class="btn btn-default" style="margin-right: 5px;" href="{{url_for('import_from', source="campus", id=course['id'])}}">Campus Import</a>{% endif %}</h1> <h1 class="panel-title">Videos{% if ismod() %} <a class="btn btn-default" style="margin-right: 5px;" href="todo">Neuer Termin</a><a class="btn btn-default" style="margin-right: 5px;" href="{{url_for('import_from', id=course['id'])}}">Campus Import</a>{% endif %}</h1>
</div> </div>
<ul class="list-group lectureslist"> <ul class="list-group lectureslist">
{% for l in lectures %} {% for l in lectures %}
......
{% from 'macros.html' import preview %} {% from 'macros.html' import valuedeletebtn %}
{% extends "base.html" %} {% extends "base.html" %}
{% block content %} {% block content %}
<div class="panel-group"> <div class="panel-group">
...@@ -60,9 +60,37 @@ ...@@ -60,9 +60,37 @@
<h1 class="panel-title">Fehlende Termine:</h1> <h1 class="panel-title">Fehlende Termine:</h1>
</div> </div>
<ul class="list-group-item"> <ul class="list-group-item">
{% for i in events if not i.exists %} {% for i in events|sort(attribute='time') %}
<li class="list-group-item"> <li class="list-group-item row">
{{i|pprint}} <span class="col-xs-3">
Time: {{i.time}}
</span>
<span class="col-xs-2">
Duration: {{i.duration}}
</span>
<span class="col-xs-3">
Place: {{i.place}}
</span>
<span class="col-xs-3">
{% if (i.type == 'lecture') %}
<p>
{{i.comment}}
</p>
<p>
{{i.internal}}
</p>
{% endif%}
</span>
<span class="col-xs-1">
<span class="pull-right">
{% if (i.type == 'lecture') and (not i.hascampusmapping) %}
{{ valuedeletebtn(['lectures',i.id,'deleted']) }}
{% endif%}
{% if (i.type == 'import') and (not i.exists) %}
anlegen
{% endif%}
</span>
</span>
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment