From 1b9e77982d0338c928efe91dd38f8e9bc13b9ae5 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Tue, 30 Mar 2021 18:30:08 +0200 Subject: [PATCH] make "new bookmark" api work with arrays --- htdocs/lib/settings/BookmarkTable.js | 6 +++--- owrx/controllers/settings/bookmarks.py | 18 +++++++++++------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/htdocs/lib/settings/BookmarkTable.js b/htdocs/lib/settings/BookmarkTable.js index 136a66f..a4c6025 100644 --- a/htdocs/lib/settings/BookmarkTable.js +++ b/htdocs/lib/settings/BookmarkTable.js @@ -297,12 +297,12 @@ $.fn.bookmarktable = function() { ); $.ajax(document.location.href, { - data: JSON.stringify(data), + data: JSON.stringify([data]), contentType: 'application/json', method: 'POST' }).done(function(data){ - if ('bookmark_id' in data) { - row.attr('data-id', data['bookmark_id']); + if (data.length && data.length === 1 && 'bookmark_id' in data[0]) { + row.attr('data-id', data[0]['bookmark_id']); var tds = row.find('td'); Object.values(inputs).forEach(function(input, index) { diff --git a/owrx/controllers/settings/bookmarks.py b/owrx/controllers/settings/bookmarks.py index 1778589..b4a461d 100644 --- a/owrx/controllers/settings/bookmarks.py +++ b/owrx/controllers/settings/bookmarks.py @@ -103,19 +103,23 @@ class BookmarksController(AuthorizationMixin, WebpageController): def new(self): bookmarks = Bookmarks.getSharedInstance() - try: - data = json.loads(self.get_body()) + + def create(bookmark_data): # sanitize data = { - "name": data["name"], - "frequency": int(data["frequency"]), - "modulation": data["modulation"], + "name": bookmark_data["name"], + "frequency": int(bookmark_data["frequency"]), + "modulation": bookmark_data["modulation"], } bookmark = Bookmark(data) - bookmarks.addBookmark(bookmark) + return {"bookmark_id": id(bookmark)} + + try: + data = json.loads(self.get_body()) + result = [create(b) for b in data] bookmarks.store() - self.send_response(json.dumps({"bookmark_id": id(bookmark)}), content_type="application/json", code=200) + self.send_response(json.dumps(result), content_type="application/json", code=200) except json.JSONDecodeError: self.send_response("{}", content_type="application/json", code=400)