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)