From b30486317d835cc70f272983d5981bcfc6aa4cd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20I=C3=9Fbr=C3=BCcker?= Date: Sat, 31 Aug 2024 23:20:44 +0200 Subject: [PATCH] Allow pre-filling notes in new bookmark form (#812) --- bookmarks/models.py | 4 +++- bookmarks/tests/test_bookmark_new_view.py | 23 +++++++++++++++++++++++ bookmarks/views/bookmarks.py | 3 +++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/bookmarks/models.py b/bookmarks/models.py index f4db7d5..42acfaa 100644 --- a/bookmarks/models.py +++ b/bookmarks/models.py @@ -169,7 +169,9 @@ class BookmarkForm(forms.ModelForm): @property def has_notes(self): - return self.instance and self.instance.notes + return self.initial.get("notes", None) or ( + self.instance and self.instance.notes + ) class BookmarkSearch: diff --git a/bookmarks/tests/test_bookmark_new_view.py b/bookmarks/tests/test_bookmark_new_view.py index cef1812..7980bca 100644 --- a/bookmarks/tests/test_bookmark_new_view.py +++ b/bookmarks/tests/test_bookmark_new_view.py @@ -100,6 +100,29 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin): html, ) + def test_should_prefill_notes_from_url_parameter(self): + response = self.client.get( + reverse("bookmarks:new") + + "?notes=%2A%2AFind%2A%2A%20more%20info%20%5Bhere%5D%28http%3A%2F%2Fexample.com%29" + ) + html = response.content.decode() + + self.assertInHTML( + """ +
+ + Notes + + + +
+ Additional notes, supports Markdown. +
+
+ """, + html, + ) + def test_should_enable_auto_close_when_specified_in_url_parameter(self): response = self.client.get(reverse("bookmarks:new") + "?auto_close") html = response.content.decode() diff --git a/bookmarks/views/bookmarks.py b/bookmarks/views/bookmarks.py index d214652..2bcb653 100644 --- a/bookmarks/views/bookmarks.py +++ b/bookmarks/views/bookmarks.py @@ -192,6 +192,7 @@ def new(request): initial_url = request.GET.get("url") initial_title = request.GET.get("title") initial_description = request.GET.get("description") + initial_notes = request.GET.get("notes") initial_auto_close = "auto_close" in request.GET initial_mark_unread = request.user.profile.default_mark_unread @@ -214,6 +215,8 @@ def new(request): form.initial["title"] = initial_title if initial_description: form.initial["description"] = initial_description + if initial_notes: + form.initial["notes"] = initial_notes if initial_auto_close: form.initial["auto_close"] = "true" if initial_mark_unread: