Quellcode durchsuchen

refac: changelog api

Timothy J. Baek vor 1 Jahr
Ursprung
Commit
a84070c6d3
2 geänderte Dateien mit 65 neuen und 66 gelöschten Zeilen
  1. 63 0
      backend/config.py
  2. 2 66
      backend/main.py

+ 63 - 0
backend/config.py

@@ -6,6 +6,8 @@ from base64 import b64encode
 from constants import ERROR_MESSAGES
 from pathlib import Path
 import json
+import markdown
+from bs4 import BeautifulSoup
 
 
 try:
@@ -31,6 +33,67 @@ except:
 
 VERSION = PACKAGE_DATA["version"]
 
+
+# Function to parse each section
+def parse_section(section):
+    items = []
+    for li in section.find_all("li"):
+        # Extract raw HTML string
+        raw_html = str(li)
+
+        # Extract text without HTML tags
+        text = li.get_text(separator=" ", strip=True)
+
+        # Split into title and content
+        parts = text.split(": ", 1)
+        title = parts[0].strip() if len(parts) > 1 else ""
+        content = parts[1].strip() if len(parts) > 1 else text
+
+        items.append({"title": title, "content": content, "raw": raw_html})
+    return items
+
+
+try:
+    with open("../CHANGELOG.md", "r") as file:
+        changelog_content = file.read()
+except:
+    changelog_content = ""
+
+# Convert markdown content to HTML
+html_content = markdown.markdown(changelog_content)
+
+# Parse the HTML content
+soup = BeautifulSoup(html_content, "html.parser")
+
+# Initialize JSON structure
+changelog_json = {}
+
+# Iterate over each version
+for version in soup.find_all("h2"):
+    version_number = version.get_text().strip().split(" - ")[0][1:-1]  # Remove brackets
+    date = version.get_text().strip().split(" - ")[1]
+
+    version_data = {"date": date}
+
+    # Find the next sibling that is a h3 tag (section title)
+    current = version.find_next_sibling()
+
+    print(current)
+
+    while current and current.name != "h2":
+        if current.name == "h3":
+            section_title = current.get_text().lower()  # e.g., "added", "fixed"
+            section_items = parse_section(current.find_next_sibling("ul"))
+            version_data[section_title] = section_items
+
+        # Move to the next element
+        current = current.find_next_sibling()
+
+    changelog_json[version_number] = version_data
+
+
+CHANGELOG = changelog_json
+
 ####################################
 # DATA/FRONTEND BUILD DIR
 ####################################

+ 2 - 66
backend/main.py

@@ -20,7 +20,7 @@ from apps.rag.main import app as rag_app
 
 from apps.web.main import app as webui_app
 
-from config import ENV, VERSION, FRONTEND_BUILD_DIR
+from config import ENV, VERSION, CHANGELOG, FRONTEND_BUILD_DIR
 
 
 class SPAStaticFiles(StaticFiles):
@@ -79,73 +79,9 @@ async def get_app_config():
     }
 
 
-# Function to parse each section
-def parse_section(section):
-    items = []
-    for li in section.find_all("li"):
-        # Extract raw HTML string
-        raw_html = str(li)
-
-        # Extract text without HTML tags
-        text = li.get_text(separator=" ", strip=True)
-
-        # Split into title and content
-        parts = text.split(": ", 1)
-        title = parts[0].strip() if len(parts) > 1 else ""
-        content = parts[1].strip() if len(parts) > 1 else text
-
-        items.append({"title": title, "content": content, "raw": raw_html})
-    return items
-
-
 @app.get("/api/changelog")
 async def get_app_changelog():
-    try:
-        with open("../CHANGELOG.md", "r") as file:
-            changelog_content = file.read()
-        # Convert markdown content to HTML
-        html_content = markdown.markdown(changelog_content)
-
-        # Parse the HTML content
-        soup = BeautifulSoup(html_content, "html.parser")
-
-        print(soup)
-        # Initialize JSON structure
-        changelog_json = {}
-
-        # Iterate over each version
-        for version in soup.find_all("h2"):
-            version_number = (
-                version.get_text().strip().split(" - ")[0][1:-1]
-            )  # Remove brackets
-            date = version.get_text().strip().split(" - ")[1]
-
-            version_data = {"date": date}
-
-            # Find the next sibling that is a h3 tag (section title)
-            current = version.find_next_sibling()
-
-            print(current)
-
-            while current and current.name != "h2":
-                if current.name == "h3":
-                    section_title = current.get_text().lower()  # e.g., "added", "fixed"
-                    section_items = parse_section(current.find_next_sibling("ul"))
-                    version_data[section_title] = section_items
-
-                # Move to the next element
-                current = current.find_next_sibling()
-
-            changelog_json[version_number] = version_data
-
-        # print(changelog_json)
-
-        # Return content as JSON string
-        return changelog_json
-    except FileNotFoundError:
-        return {"error": "readme.md not found"}
-    except Exception as e:
-        return {"error": f"An error occurred: {e}"}
+    return CHANGELOG
 
 
 app.mount(