aboutsummaryrefslogtreecommitdiffstats
path: root/pysite/views/wiki
diff options
context:
space:
mode:
Diffstat (limited to 'pysite/views/wiki')
-rw-r--r--pysite/views/wiki/edit.py24
-rw-r--r--pysite/views/wiki/robots_txt.py15
-rw-r--r--pysite/views/wiki/sitemap_xml.py22
3 files changed, 51 insertions, 10 deletions
diff --git a/pysite/views/wiki/edit.py b/pysite/views/wiki/edit.py
index 65378807..949c9942 100644
--- a/pysite/views/wiki/edit.py
+++ b/pysite/views/wiki/edit.py
@@ -40,16 +40,20 @@ class EditView(RouteView, DBMixin, RMQMixin):
lock_expiry = datetime.datetime.utcnow() + datetime.timedelta(minutes=5)
- if not DEBUG_MODE: # If we are in debug mode we have no user logged in, therefore we can skip locking
- self.db.insert(
- self.table_name,
- {
- "slug": page,
- "lock_expiry": lock_expiry.timestamp(),
- "lock_user": self.user_data.get("user_id")
- },
- conflict="update"
- )
+ # There are a couple of cases where we will not need to lock a page. One of these is if the application is
+ # current set to debug mode. The other of these cases is if the page is empty, because if the page is empty
+ # we will only have a partially filled out page if the user quits before saving.
+ if obj:
+ if not DEBUG_MODE and obj.get("rst"):
+ self.db.insert(
+ self.table_name,
+ {
+ "slug": page,
+ "lock_expiry": lock_expiry.timestamp(),
+ "lock_user": self.user_data.get("user_id")
+ },
+ conflict="update"
+ )
return self.render("wiki/page_edit.html", page=page, rst=rst, title=title, preview=preview, can_edit=True)
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")