diff options
Diffstat (limited to 'pysite/views/wiki')
| -rw-r--r-- | pysite/views/wiki/edit.py | 24 | ||||
| -rw-r--r-- | pysite/views/wiki/robots_txt.py | 15 | ||||
| -rw-r--r-- | pysite/views/wiki/sitemap_xml.py | 22 |
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") |