]> littlesong.place Git - littlesongplace.git/commitdiff
Use XML instead of JSON (broken)
authorChris Fulljames <christianfulljames@gmail.com>
Fri, 21 Feb 2025 12:45:13 +0000 (07:45 -0500)
committerChris Fulljames <christianfulljames@gmail.com>
Fri, 21 Feb 2025 12:45:13 +0000 (07:45 -0500)
14 files changed:
main.py
templates/activity.html
templates/base.html
templates/comment.html
templates/edit-song.html
templates/index.html
templates/login.html
templates/news.html
templates/playlist.html
templates/profile.html
templates/signup.html
templates/song.html
templates/songs-by-tag.html
todo.txt

diff --git a/main.py b/main.py
index ea9d7a696af6dc4d18de5f3cbb4e05a1f312045f..3aebd3d6c8852ac6af12efeb84118a730f57f121 100644 (file)
--- a/main.py
+++ b/main.py
@@ -13,6 +13,7 @@ from datetime import datetime, timezone
 from logging.handlers import RotatingFileHandler
 from pathlib import Path, PosixPath
 from typing import Optional
+from xml.sax.saxutils import escape
 
 import bcrypt
 import bleach
@@ -930,12 +931,12 @@ def get_current_user_playlists():
 
 @app.context_processor
 def inject_global_vars():
-    use_json = request.headers["Accept"] == "application/json"
+    use_xml = request.headers["Accept"] == "application/xml"
     return dict(
         gif_data=get_gif_data(),
         current_user_playlists=get_current_user_playlists(),
-        use_json=use_json,
-        dumps=json.dumps,
+        use_xml=use_xml,
+        escape=escape,
         bgcolor="#e8e6b5",
         fgcolor="#695c73",
         accolor="#9373a9",
index 05ba9bff5a34a5023b7f0b07ce9d7643b7245f4a..3aa09380f47a6705556290519552de9d5033c47c 100644 (file)
@@ -1,4 +1,4 @@
-{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %}
+{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %}
 
 {% block title %}Activity{% endblock %}
 
index 080182a7042222c29068166e1ea3b2e1c8d71337..65fe481d2bb7ccdbb3c41399d80cd9923fbcf063 100644 (file)
@@ -19,7 +19,7 @@
                 var targetUrl = new URL(event.target.href);
                 if (urlIsOnSameSite(targetUrl)) {
                     event.preventDefault();
-                    fetch(targetUrl, {redirect: "follow", headers: {"Accept": "application/json"}}).then(handleAjaxResponse);
+                    fetch(targetUrl, {redirect: "follow", headers: {"Accept": "application/xml"}}).then(handleAjaxResponse);
                 }
             });
 
@@ -30,7 +30,7 @@
                         if (urlIsOnSameSite(targetUrl)) {
                             event.preventDefault();
                             var formData = new FormData(event.target);
-                            fetch(targetUrl, {redirect: "follow", body: formData, method: event.target.method, headers: {"Accept": "application/json"}})
+                            fetch(targetUrl, {redirect: "follow", body: formData, method: event.target.method, headers: {"Accept": "application/xml"}})
                                 .then(handleAjaxResponse);
                         }
                     });
                 var url = new URL(response.url);
                 url.searchParams.delete("request-type");
 
-                // Get page content from JSON response
-                var data = await response.json();
+                // Get page content from XML response
+                var text = await response.text();
+                console.log(text);
+                var parser = new DOMParser();
+                var data = parser.parseFromString(text, "application/xml");
                 window.history.pushState(data, "", url);
 
                 updatePageState(data);
@@ -56,7 +59,7 @@
 
             function updatePageState(data) {
                 if (!data) {
-                    fetch(window.location.href, {redirect: "follow", headers: {"Accept": "application/json"}}).then(handleAjaxResponse);
+                    fetch(window.location.href, {redirect: "follow", headers: {"Accept": "application/xml"}}).then(handleAjaxResponse);
                     return;
                 }
                 document.getElementById("main").innerHTML = data.body;
index 7800798778214a3600e5fe302106bb1986723eaa..3ded208fa738b697551e28742d862cbf43b7d196 100644 (file)
@@ -1,4 +1,4 @@
-{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %}
+{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %}
 
 {% block title %}Write a Comment{% endblock %}
 
index 969fa7b1240adfa07130b075986840f78109fb00..8990e13d4350fb3fd601099a0877e821281a65ef 100644 (file)
@@ -1,4 +1,4 @@
-{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %}
+{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %}
 
 {% block title %}{% if song %}Edit Song{% else %}Upload Song{% endif %}{% endblock %}
 
index 64e53c9b4ff9910b9f3c61911fe762bc64a99374..58a70fc9bf5a229161cee9f82cc9887b66f371c3 100644 (file)
@@ -1,4 +1,4 @@
-{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %}
+{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %}
 
 {% block title %}Little Song Place{% endblock %}
 
index c1af499fdc531ae5cf323cb908beb6248a422171..c7b19f9d4aa1c7b50e67a8483570e173219e6342 100644 (file)
@@ -1,4 +1,4 @@
-{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %}
+{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %}
 
 {% block title %}Sign In{% endblock %}
 
index 90d11d8ffdc08449326e236bab22561d9aba780c..f8cdad870086ee0224e97a19e3f4522802c30efb 100644 (file)
@@ -1,4 +1,4 @@
-{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %}
+{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %}
 
 {% block title %}Site News{% endblock %}
 
index 453f54d0486ccc35e95cfe6130044ddaf1b39c01..2d2a1ed3ec349a76730bf9bac2e0f7f99df22c3d 100644 (file)
@@ -1,4 +1,4 @@
-{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %}
+{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %}
 
 {% block title %}{{ name }}{% endblock %}
 
index b8c9da1279d787422f90d317dd7a4a8be934cfe2..ee649ce50eed740222e9f2d0ad22246e41c09039 100644 (file)
@@ -1,4 +1,4 @@
-{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %}
+{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %}
 
 {% block title %}{{ name }}'s profile{% endblock %}
 
index 4b474bd68a8d798e4a29e35b85ce824672fc8d02..3dd4970f1437ec56f95cf47f07e34904b257fd43 100644 (file)
@@ -1,4 +1,4 @@
-{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %}
+{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %}
 
 {% block title %}Create Account{% endblock %}
 
index 4407acec147a9b7422da5f1fe07ed769b36f81db..411aae0d371bdf6105140fc84bbedd696b2aab2b 100644 (file)
@@ -1,4 +1,4 @@
-{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %}
+{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %}
 
 {% block head %}
 <meta property="og:title" content="{{ song.title }}" />
index 12fc50be994aa5f08d3c41fa0caf06197dd907e9..7d22e3376a6ab33093621bb29a14511adfbe3517 100644 (file)
@@ -1,4 +1,4 @@
-{% if use_json %}{% extends "base.json" %}{% else %}{% extends "base.html" %}{% endif %}
+{% if use_xml %}{% extends "base.xml" %}{% else %}{% extends "base.html" %}{% endif %}
 
 {% block title %}Songs{% endblock %}
 
index 1f7647060bec49d70137ecf45a9042cbe6d37fe0..f3b616788f0f67564977515e45e8e74c20bae93e 100644 (file)
--- a/todo.txt
+++ b/todo.txt
@@ -1,6 +1,5 @@
 NOW
 - AJAX pages so songs can play during navigation
-    - Back (history stack)
     - Use correct content type header for response
     - HTTP Error handling
 - Break up main.py, test_offline.py