From 75974f8c2b0a27c0279d6219170e50ed0ff83d30 Mon Sep 17 00:00:00 2001 From: Andrew Barrow <60839662+acbgbca@users.noreply.github.com> Date: Thu, 13 Oct 2022 16:27:56 +1100 Subject: [PATCH 1/4] Added Apple web-app meta tag #358 --- bookmarks/templates/bookmarks/layout.html | 1 + 1 file changed, 1 insertion(+) diff --git a/bookmarks/templates/bookmarks/layout.html b/bookmarks/templates/bookmarks/layout.html index 90fbb783..9874246d 100644 --- a/bookmarks/templates/bookmarks/layout.html +++ b/bookmarks/templates/bookmarks/layout.html @@ -8,6 +8,7 @@ + From a1ff86dda1d904e2cd14156ffba889eceae065e1 Mon Sep 17 00:00:00 2001 From: Andrew Barrow <60839662+acbgbca@users.noreply.github.com> Date: Sun, 21 May 2023 03:59:20 +0000 Subject: [PATCH 2/4] Added manifest file for web app --- bookmarks/templates/bookmarks/layout.html | 1 + bookmarks/templates/metadata/manifest.json | 6 ++++++ bookmarks/urls.py | 5 ++++- 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 bookmarks/templates/metadata/manifest.json diff --git a/bookmarks/templates/bookmarks/layout.html b/bookmarks/templates/bookmarks/layout.html index 9874246d..87f1eb99 100644 --- a/bookmarks/templates/bookmarks/layout.html +++ b/bookmarks/templates/bookmarks/layout.html @@ -8,6 +8,7 @@ + diff --git a/bookmarks/templates/metadata/manifest.json b/bookmarks/templates/metadata/manifest.json new file mode 100644 index 00000000..7ab5e41a --- /dev/null +++ b/bookmarks/templates/metadata/manifest.json @@ -0,0 +1,6 @@ +{ + "short_name": "linkding", + "start_url": "bookmarks", + "display": "standalone", + "scope": "/" +} \ No newline at end of file diff --git a/bookmarks/urls.py b/bookmarks/urls.py index 1c2387d4..1b8243c0 100644 --- a/bookmarks/urls.py +++ b/bookmarks/urls.py @@ -1,6 +1,7 @@ from django.urls import re_path from django.urls import path, include from django.views.generic import RedirectView +from django.views.generic.base import TemplateView from bookmarks.api.routes import router from bookmarks import views @@ -32,5 +33,7 @@ path('feeds//all', AllBookmarksFeed(), name='feeds.all'), path('feeds//unread', UnreadBookmarksFeed(), name='feeds.unread'), # Health check - path('health', views.health, name='health') + path('health', views.health, name='health'), + # Manifest + path("manifest.json", TemplateView.as_view(template_name="metadata/manifest.json", content_type="application/json"), ) ] From af6a2eca20b57999e1aec60b98e68a7f012f3a70 Mon Sep 17 00:00:00 2001 From: Andrew Barrow <60839662+acbgbca@users.noreply.github.com> Date: Tue, 23 May 2023 04:02:06 +0000 Subject: [PATCH 3/4] Changed manifest to use template #358 --- bookmarks/templates/bookmarks/layout.html | 2 +- bookmarks/templates/metadata/manifest.json | 6 ------ bookmarks/urls.py | 3 +-- bookmarks/views/__init__.py | 1 + bookmarks/views/manifest.py | 13 +++++++++++++ 5 files changed, 16 insertions(+), 9 deletions(-) delete mode 100644 bookmarks/templates/metadata/manifest.json create mode 100644 bookmarks/views/manifest.py diff --git a/bookmarks/templates/bookmarks/layout.html b/bookmarks/templates/bookmarks/layout.html index 87f1eb99..b5f67f19 100644 --- a/bookmarks/templates/bookmarks/layout.html +++ b/bookmarks/templates/bookmarks/layout.html @@ -8,7 +8,7 @@ - + diff --git a/bookmarks/templates/metadata/manifest.json b/bookmarks/templates/metadata/manifest.json deleted file mode 100644 index 7ab5e41a..00000000 --- a/bookmarks/templates/metadata/manifest.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "short_name": "linkding", - "start_url": "bookmarks", - "display": "standalone", - "scope": "/" -} \ No newline at end of file diff --git a/bookmarks/urls.py b/bookmarks/urls.py index 1b8243c0..834a2f4a 100644 --- a/bookmarks/urls.py +++ b/bookmarks/urls.py @@ -1,7 +1,6 @@ from django.urls import re_path from django.urls import path, include from django.views.generic import RedirectView -from django.views.generic.base import TemplateView from bookmarks.api.routes import router from bookmarks import views @@ -35,5 +34,5 @@ # Health check path('health', views.health, name='health'), # Manifest - path("manifest.json", TemplateView.as_view(template_name="metadata/manifest.json", content_type="application/json"), ) + path("manifest.json", views.manifest, name='manifest') ] diff --git a/bookmarks/views/__init__.py b/bookmarks/views/__init__.py index 948a4ad8..894b61de 100644 --- a/bookmarks/views/__init__.py +++ b/bookmarks/views/__init__.py @@ -2,3 +2,4 @@ from .settings import * from .toasts import * from .health import health +from .manifest import manifest diff --git a/bookmarks/views/manifest.py b/bookmarks/views/manifest.py new file mode 100644 index 00000000..0a1033f2 --- /dev/null +++ b/bookmarks/views/manifest.py @@ -0,0 +1,13 @@ +from django.http import JsonResponse +from siteroot.settings import LD_CONTEXT_PATH + +def manifest(request): + code = 200 + response = { + "short_name": "linkding", + "start_url": "bookmarks", + "display": "standalone", + "scope": "/" + LD_CONTEXT_PATH + } + + return JsonResponse(response, status=code) From e2ad879656caf99153a5716e1621e8accfff6c5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20I=C3=9Fbr=C3=BCcker?= Date: Tue, 23 May 2023 21:19:16 +0200 Subject: [PATCH 4/4] Small tweaks, add tests --- bookmarks/tests/test_metadata_view.py | 33 +++++++++++++++++++++++++++ bookmarks/views/manifest.py | 8 +++---- 2 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 bookmarks/tests/test_metadata_view.py diff --git a/bookmarks/tests/test_metadata_view.py b/bookmarks/tests/test_metadata_view.py new file mode 100644 index 00000000..5272392e --- /dev/null +++ b/bookmarks/tests/test_metadata_view.py @@ -0,0 +1,33 @@ +from django.test import TestCase, override_settings + + +class MetadataViewTestCase(TestCase): + + def test_default_manifest(self): + response = self.client.get("/manifest.json") + + self.assertEqual(response.status_code, 200) + + response_body = response.json() + expected_body = { + "short_name": "linkding", + "start_url": "bookmarks", + "display": "standalone", + "scope": "/" + } + self.assertDictEqual(response_body, expected_body) + + @override_settings(LD_CONTEXT_PATH="linkding/") + def test_manifest_respects_context_path(self): + response = self.client.get("/manifest.json") + + self.assertEqual(response.status_code, 200) + + response_body = response.json() + expected_body = { + "short_name": "linkding", + "start_url": "bookmarks", + "display": "standalone", + "scope": "/linkding/" + } + self.assertDictEqual(response_body, expected_body) diff --git a/bookmarks/views/manifest.py b/bookmarks/views/manifest.py index 0a1033f2..07a39959 100644 --- a/bookmarks/views/manifest.py +++ b/bookmarks/views/manifest.py @@ -1,13 +1,13 @@ from django.http import JsonResponse -from siteroot.settings import LD_CONTEXT_PATH +from django.conf import settings + def manifest(request): - code = 200 response = { "short_name": "linkding", "start_url": "bookmarks", "display": "standalone", - "scope": "/" + LD_CONTEXT_PATH + "scope": "/" + settings.LD_CONTEXT_PATH } - return JsonResponse(response, status=code) + return JsonResponse(response, status=200)