From 54ef7bcf3e2211bf575c603c93e34cb278cd0442 Mon Sep 17 00:00:00 2001
From: Andreas Valder <andreasv@fsmpi.rwth-aachen.de>
Date: Thu, 8 Sep 2016 02:27:58 +0200
Subject: [PATCH] added sitemap.xml closes #10

---
 server.py             | 18 ++++++++++++++++++
 templates/sitemap.xml |  9 +++++++++
 2 files changed, 27 insertions(+)
 create mode 100644 templates/sitemap.xml

diff --git a/server.py b/server.py
index ea711cc..2bb1a7e 100755
--- a/server.py
+++ b/server.py
@@ -399,6 +399,24 @@ def new_featured():
 		return redirect(request.values['ref'])
 	return id,  200
 
+@app.route('/sitemap.xml', methods=['GET'])
+def sitemap():
+	pages=[]
+	# static pages
+	for rule in app.url_map.iter_rules():
+		if 'GET' in rule.methods and len(rule.arguments)==0:
+			if rule.endpoint not in mod_endpoints:
+				pages.append([rule.rule])
+	for i in query('select * from courses where visible and listed'):
+		pages.append([url_for('course',handle=i['handle'])])
+		for j in query('select * from lectures where (course_id = ? and visible)',i['id']):
+			pages.append([url_for('lecture',id=j['id'])])
+
+
+	return Response(render_template('sitemap.xml', pages=pages), 200, {'Content-Type': 'application/atom+xml'} )
+
+
+
 import feeds
 import importer
 import schedule
diff --git a/templates/sitemap.xml b/templates/sitemap.xml
new file mode 100644
index 0000000..c847d22
--- /dev/null
+++ b/templates/sitemap.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+	{% for page in pages %}
+	<url>
+		<loc>{{page[0]|safe}}</loc>
+		<lastmod>{{page[1]}}</lastmod>
+	</url>
+	{% endfor %}
+</urlset>
-- 
GitLab