From efe29f1a86d9e76f73abd7fdd583a8abc0ff0644 Mon Sep 17 00:00:00 2001
From: Andreas <andreasv@fsmpi.rwth-aachen.de>
Date: Wed, 26 Apr 2017 23:53:47 +0200
Subject: [PATCH] campus import can now delete lectures closes #275

---
 importer.py                  | 21 +++++++++---
 templates/import_campus.html | 63 +++++++++++++++++++++++++++++-------
 2 files changed, 67 insertions(+), 17 deletions(-)

diff --git a/importer.py b/importer.py
index b3d3bd3..99a5f75 100644
--- a/importer.py
+++ b/importer.py
@@ -106,11 +106,12 @@ def import_from(id):
 	except ImportError:
 		flash('python-lxml not found, campus import will not work.')
 
-	uniqueevents = []
+	# events to add
+	newevents = []
 	for i in events + lectures:
 		unique = False
 		exists = False
-		for j in uniqueevents:
+		for j in newevents:
 			unique = (i['place'] == j['place']) and (i['time'] == j['time']) and (i['duration'] == j['duration'])
 			if unique:
 				break
@@ -119,7 +120,17 @@ def import_from(id):
 			if exists:
 				break
 		if (not unique) and (not exists):
-			i['type'] = 'import'
-			uniqueevents.append(i)
+			newevents.append(i)
+	
+	# deleted events
+	deletedlectures = []
+	for i in lectures:
+		incampus = False
+		for j in events:
+			incampus = (i['place'] == j['place']) and (i['time'] == j['time']) and (i['duration'] == j['duration'])
+			if incampus:
+				break
+		if not incampus:
+			deletedlectures.append(i)
 
-	return render_template('import_campus.html', course=courses, import_campus=import_campus, events=uniqueevents)
+	return render_template('import_campus.html', course=courses, import_campus=import_campus, newevents=newevents, deletedlectures=deletedlectures)
diff --git a/templates/import_campus.html b/templates/import_campus.html
index 730e564..35bce93 100644
--- a/templates/import_campus.html
+++ b/templates/import_campus.html
@@ -41,7 +41,10 @@
 							</span> 
 						</li>
 					</ul>
-					<button class="btn btn-default pull-right" type="submit">Speichern</button>
+					<ul class="list-inline pull-right">
+						<li><a class="btn btn-default" href="{{url_for('import_from', id=course['id'])}}"><span class="fa fa-refresh" aria-hidden="true" ></span> Campus abfragen</button></a></li>
+						<li><button class="btn btn-default" type="submit">Speichern</button></li>
+					</ul>
 				</form>
 			</div>
 		</div>
@@ -49,15 +52,57 @@
 	<div class="panel panel-default">
 		<div class="panel-heading" style="height:50px">
 			<h1 class="panel-title">
-				Fehlende Termine:
+				Termine im Campus die nicht bei uns sind:
 				<ul class="list-inline pull-right">
-					<li><a class="btn btn-default" href="{{url_for('import_from', id=course['id'])}}"><span class="fa fa-refresh" aria-hidden="true" ></span> Aktualisieren</button></a>
 					<li><button class="btn btn-default" onclick="$('.newlecture').click(); alert('done');">alle anlegen</button></li>
 				</ul>
 			</h1>
 		</div>
 		<ul class="list-group-item">
-			{% for i in events|sort(attribute='time') %}
+			{% for i in newevents|sort(attribute='time') %}
+				<li class="list-group-item row">
+					<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">
+					</span>
+					<span class="pull-right">
+						<button class="btn btn-default newlecture" onclick="moderator.api.gethttp('{{ url_for('create', table='lectures', course_id=course.id, time=i.time, title=i.title, place=i.place) }}')">anlegen</a>
+					</span>
+				</li>
+			{% endfor %}
+		</ul>
+	</div>
+	<div class="panel panel-default">
+		<div class="panel-heading" style="height:50px">
+			<h1 class="panel-title">
+				Termine bei uns die nicht im Campus sind:
+				<ul class="list-inline pull-right">
+					<li><button class="btn btn-default" onclick="deleteall(); alert('done');">alle entfernen</button></li>
+					<script>
+						function deleteall() {
+							var req = {};
+
+							{% for i in deletedlectures|sort(attribute='time') %}
+							req['lectures.{{ i.id }}.deleted'] = 1;
+							{% endfor %}
+
+							if (confirm('Really delete all lectures that are not in campus?')) {
+								moderator.api.set_multi(req,false);
+							}
+						}
+					</script>
+				</ul>
+			</h1>
+		</div>
+		<ul class="list-group-item">
+			{% for i in deletedlectures|sort(attribute='time') %}
 				<li class="list-group-item row">
 					<span class="col-xs-3">
 						Time: {{i.time}}
@@ -69,26 +114,20 @@
 						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="pull-right">
-						{% if (i.type == 'lecture') %}
-							{{ moderator_delete(['lectures',i.id,'deleted']) }}
-						{% endif%}
-						{% if (i.type == 'import')  %}
-							<button class="btn btn-default newlecture" onclick="moderator.api.gethttp('{{ url_for('create', table='lectures', course_id=course.id, time=i.time, title=i.title, place=i.place) }}')">anlegen</a>
-						{% endif%}
+						{{ moderator_delete(['lectures',i.id,'deleted']) }}
 					</span>
 				</li>
 			{% endfor %}
 		</ul>
+
 	</div>
 </div>
 {% endblock %}
-- 
GitLab