From 28b72409b43cb401f5bef03747e888e1cf27262a Mon Sep 17 00:00:00 2001 From: Gareth Coles Date: Tue, 10 Jul 2018 14:53:59 +0100 Subject: All domains: sitemap.xml and robots.txt --- pysite/views/api/robots_txt.py | 15 +++++++++ pysite/views/api/sitemap_xml.py | 11 +++++++ pysite/views/main/robots_txt.py | 15 +++++++++ pysite/views/main/sitemap_xml.py | 69 +++++++++++++++++++++++++++++++++++++++ pysite/views/staff/robots_txt.py | 15 +++++++++ pysite/views/staff/sitemap_xml.py | 11 +++++++ pysite/views/wiki/robots_txt.py | 15 +++++++++ pysite/views/wiki/sitemap_xml.py | 22 +++++++++++++ 8 files changed, 173 insertions(+) create mode 100644 pysite/views/api/robots_txt.py create mode 100644 pysite/views/api/sitemap_xml.py create mode 100644 pysite/views/main/robots_txt.py create mode 100644 pysite/views/main/sitemap_xml.py create mode 100644 pysite/views/staff/robots_txt.py create mode 100644 pysite/views/staff/sitemap_xml.py create mode 100644 pysite/views/wiki/robots_txt.py create mode 100644 pysite/views/wiki/sitemap_xml.py (limited to 'pysite') diff --git a/pysite/views/api/robots_txt.py b/pysite/views/api/robots_txt.py new file mode 100644 index 00000000..d4406d54 --- /dev/null +++ b/pysite/views/api/robots_txt.py @@ -0,0 +1,15 @@ +from flask import Response, url_for + +from pysite.base_route import RouteView + + +class RobotsTXT(RouteView): + path = "/robots.txt" + name = "robots_txt" + + def get(self): + return Response( + self.render( + "robots.txt", sitemap_url=url_for("api.sitemap_xml", _external=True), rules={"*": ["/"]} + ), content_type="text/plain" + ) diff --git a/pysite/views/api/sitemap_xml.py b/pysite/views/api/sitemap_xml.py new file mode 100644 index 00000000..26a786b0 --- /dev/null +++ b/pysite/views/api/sitemap_xml.py @@ -0,0 +1,11 @@ +from flask import Response + +from pysite.base_route import RouteView + + +class SitemapXML(RouteView): + path = "/sitemap.xml" + name = "sitemap_xml" + + def get(self): + return Response(self.render("sitemap.xml", urls=[]), content_type="application/xml") diff --git a/pysite/views/main/robots_txt.py b/pysite/views/main/robots_txt.py new file mode 100644 index 00000000..d4406d54 --- /dev/null +++ b/pysite/views/main/robots_txt.py @@ -0,0 +1,15 @@ +from flask import Response, url_for + +from pysite.base_route import RouteView + + +class RobotsTXT(RouteView): + path = "/robots.txt" + name = "robots_txt" + + def get(self): + return Response( + self.render( + "robots.txt", sitemap_url=url_for("api.sitemap_xml", _external=True), rules={"*": ["/"]} + ), content_type="text/plain" + ) diff --git a/pysite/views/main/sitemap_xml.py b/pysite/views/main/sitemap_xml.py new file mode 100644 index 00000000..98893c21 --- /dev/null +++ b/pysite/views/main/sitemap_xml.py @@ -0,0 +1,69 @@ +from flask import Response, url_for + +from pysite.base_route import RouteView + + +class SitemapXML(RouteView): + path = "/sitemap.xml" + name = "sitemap_xml" + + def get(self): + urls = [ + { + "type": "url", + "url": url_for("main.index", _external=True), + "priority": 1.0, # Max priority + + "images": [ + { + "caption": "Python Discord Logo", + "url": url_for("static", filename="logos/logo_discord.png", _external=True) + }, + { + "caption": "Python Discord Banner", + "url": url_for("static", filename="logos/logo_banner.png", _external=True) + } + ] + }, + + { + "type": "url", + "url": url_for("main.jams.index", _external=True), + "priority": 0.9 # Above normal priority + }, + + { + "type": "url", + "url": url_for("main.about.privacy", _external=True), + "priority": 0.8 # Above normal priority + }, + { + "type": "url", + "url": url_for("main.about.rules", _external=True), + "priority": 0.8 # Above normal priority + }, + + { + "type": "url", + "url": url_for("main.info.help", _external=True), + "priority": 0.7 # Above normal priority + }, + { + "type": "url", + "url": url_for("main.info.faq", _external=True), + "priority": 0.7 # Above normal priority + }, + { + "type": "url", + "url": url_for("main.info.resources", _external=True), + "priority": 0.7 # Above normal priority + }, + + { + "type": "url", + "url": url_for("main.about.partners", _external=True), + "priority": 0.6 # Normal priority + }, + ] + + return Response(self.render("sitemap.xml", urls=urls), content_type="application/xml") diff --git a/pysite/views/staff/robots_txt.py b/pysite/views/staff/robots_txt.py new file mode 100644 index 00000000..308fe2a2 --- /dev/null +++ b/pysite/views/staff/robots_txt.py @@ -0,0 +1,15 @@ +from flask import Response, url_for + +from pysite.base_route import RouteView + + +class RobotsTXT(RouteView): + path = "/robots.txt" + name = "robots_txt" + + def get(self): + return Response( + self.render( + "robots.txt", sitemap_url=url_for("api.sitemap_xml", _external=True) + ), content_type="text/plain" + ) diff --git a/pysite/views/staff/sitemap_xml.py b/pysite/views/staff/sitemap_xml.py new file mode 100644 index 00000000..26a786b0 --- /dev/null +++ b/pysite/views/staff/sitemap_xml.py @@ -0,0 +1,11 @@ +from flask import Response + +from pysite.base_route import RouteView + + +class SitemapXML(RouteView): + path = "/sitemap.xml" + name = "sitemap_xml" + + def get(self): + return Response(self.render("sitemap.xml", urls=[]), content_type="application/xml") diff --git a/pysite/views/wiki/robots_txt.py b/pysite/views/wiki/robots_txt.py new file mode 100644 index 00000000..308fe2a2 --- /dev/null +++ b/pysite/views/wiki/robots_txt.py @@ -0,0 +1,15 @@ +from flask import Response, url_for + +from pysite.base_route import RouteView + + +class RobotsTXT(RouteView): + path = "/robots.txt" + name = "robots_txt" + + def get(self): + return Response( + self.render( + "robots.txt", sitemap_url=url_for("api.sitemap_xml", _external=True) + ), content_type="text/plain" + ) diff --git a/pysite/views/wiki/sitemap_xml.py b/pysite/views/wiki/sitemap_xml.py new file mode 100644 index 00000000..9b7f0980 --- /dev/null +++ b/pysite/views/wiki/sitemap_xml.py @@ -0,0 +1,22 @@ +from flask import Response, url_for + +from pysite.base_route import RouteView +from pysite.mixins import DBMixin + + +class SitemapXML(RouteView, DBMixin): + path = "/sitemap.xml" + name = "sitemap_xml" + table_name = "wiki" + + def get(self): + urls = [] + + for page in self.db.get_all(self.table_name): + urls.append({ + "change_frequency": "weekly", + "type": "url", + "url": url_for("wiki.page", page=page["slug"], _external=True) + }) + + return Response(self.render("sitemap.xml", urls=urls), content_type="application/xml") -- cgit v1.2.3