diff --git a/entries/kinds.py b/entries/kinds.py
index e55ddc6..416d6a2 100644
--- a/entries/kinds.py
+++ b/entries/kinds.py
@@ -14,6 +14,10 @@ class Entry:
def entry(self):
return self.plural + '_entry'
+ @property
+ def entry_amp(self):
+ return self.entry + '_amp'
+
@property
def atom(self):
return self.plural + '_atom'
diff --git a/entries/models.py b/entries/models.py
index cf1e127..235adbf 100644
--- a/entries/models.py
+++ b/entries/models.py
@@ -140,6 +140,14 @@ class Entry(ModelMeta, TimeStampedModel):
args.append(self.slug)
return reverse('entries:' + kind.entry, args=args)
+ @property
+ def amp_url(self):
+ kind = kinds.from_id[self.kind]
+ args = [self.id]
+ if kind.slug:
+ args.append(self.slug)
+ return reverse('entries:' + kind.entry_amp, args=args)
+
@property
def slug(self):
return slugify(self.name)
diff --git a/entries/templates/entries/entry.html b/entries/templates/entries/entry.html
index a22b0bd..53ec6cf 100644
--- a/entries/templates/entries/entry.html
+++ b/entries/templates/entries/entry.html
@@ -1,7 +1,10 @@
{% extends 'lemoncurry/layout.html' %}
{% load shorturl static %}
-{% block head %}{% endblock %}
+{% block head %}
+
+
+{% endblock %}
{% block styles %}
diff --git a/entries/templates/entries/entry_amp.html b/entries/templates/entries/entry_amp.html
new file mode 100644
index 0000000..4410c44
--- /dev/null
+++ b/entries/templates/entries/entry_amp.html
@@ -0,0 +1,89 @@
+{% load favtags jsonify lemoncurry_tags markdown theme_colour %}
+
+
+
+ {{ entry.title }} ~ {% site_name %}
+
+
+
+ {% placeFavicon %}
+
+
+
+
+
+
+
+
+
+
+
+ {% if entry.name %}
+ {{ entry.name }}
+ {% endif %}
+
+
+ {{ entry.content | markdown }}
+
+
+
+
+
diff --git a/entries/templates/entries/h-entry.html b/entries/templates/entries/h-entry.html
index 3acf77e..c799aab 100644
--- a/entries/templates/entries/h-entry.html
+++ b/entries/templates/entries/h-entry.html
@@ -35,6 +35,10 @@
{{ entry.updated | naturaltime }}
{% endif %}
+
+
+ amp
+
{% shortlink entry as short %}
{{ short | friendly_url }}
diff --git a/entries/urls.py b/entries/urls.py
index 60b2c56..f7b5dfe 100644
--- a/entries/urls.py
+++ b/entries/urls.py
@@ -31,6 +31,7 @@ for k in kinds.all:
url(to_pat(kind, page), views.index, name=k.index, kwargs={'kind': k}),
url(to_pat(kind, '/atom'), feeds.AtomByKind(k), name=k.atom),
url(to_pat(kind, '/rss'), feeds.RssByKind(k), name=k.rss),
+ url(to_pat(kind, id, slug, '/amp'), views.entry_amp, name=k.entry_amp),
url(to_pat(kind, id, slug), views.entry, name=k.entry),
)
diff --git a/entries/views.py b/entries/views.py
index bded656..5678b56 100644
--- a/entries/views.py
+++ b/entries/views.py
@@ -54,3 +54,11 @@ def entry(request, id, slug=None):
'title': entry.title,
'meta': entry.as_meta(request)
}
+
+
+@render_to('entries/entry_amp.html')
+def entry_amp(request, id, slug=None):
+ entry = Entry.objects.get(pk=id)
+ if request.path != entry.amp_url:
+ return redirect(entry.amp_url, permanent=True)
+ return {'entry': entry}
diff --git a/lemoncurry/debug.py b/lemoncurry/debug.py
new file mode 100644
index 0000000..d518f52
--- /dev/null
+++ b/lemoncurry/debug.py
@@ -0,0 +1,7 @@
+from debug_toolbar.middleware import show_toolbar as core_show_toolbar
+
+
+def show_toolbar(request):
+ if request.path.endswith('/amp'):
+ return False
+ return core_show_toolbar(request)
diff --git a/lemoncurry/settings/base.py b/lemoncurry/settings/base.py
index 68ced74..81f50cd 100644
--- a/lemoncurry/settings/base.py
+++ b/lemoncurry/settings/base.py
@@ -223,6 +223,12 @@ AGENT_COOKIE_SECURE = True
# django-cors-headers
CORS_ORIGIN_ALLOW_ALL = True
+# django-debug-toolbar
+# https://django-debug-toolbar.readthedocs.io/en/stable/configuration.html
+DEBUG_TOOLBAR_CONFIG = {
+ 'SHOW_TOOLBAR_CALLBACK': 'lemoncurry.debug.show_toolbar',
+}
+
# django-shorturls
# https://pypi.python.org/pypi/django-shorturls
SHORTEN_MODELS = {