diff --git a/server.py b/server.py index ea711cca7fd1eba32fda96482e9b40e893f465c9..2bb1a7e1e6f1ec88fd74bb7e48edde0ad9dafd6f 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 0000000000000000000000000000000000000000..c847d223271a6a825a8eea07b0887c9343c003fb --- /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>