From 118c0622282580cd83204ecf0891eaede80c9e69 Mon Sep 17 00:00:00 2001
From: rmamet <179627394+rmamet@users.noreply.github.com>
Date: Mon, 21 Sep 2026 19:04:42 +0000
Subject: [PATCH 1/4] Add support for markdown on major project descriptions
---
conditional/blueprints/major_project_submission.py | 5 ++++-
conditional/templates/major_project_submission.html | 2 +-
requirements.txt | 3 +++
3 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/conditional/blueprints/major_project_submission.py b/conditional/blueprints/major_project_submission.py
index 5ef21cc1..56fe8cf9 100644
--- a/conditional/blueprints/major_project_submission.py
+++ b/conditional/blueprints/major_project_submission.py
@@ -7,6 +7,9 @@
from flask import jsonify
from flask import redirect
+import markdown
+import html
+
import requests
import boto3
import structlog
@@ -52,7 +55,7 @@ def display_major_project(user_dict=None):
"tldr": p.tldr,
"time_spent": p.time_spent,
"skills": p.skills,
- "desc": p.description,
+ "desc": markdown.markdown(html.escape(p.description)),
"links": [] if p.links is None else list(filter(None, p.links.split("\n"))),
"status": p.status,
"is_owner": bool(user_dict["username"] == p.uid),
diff --git a/conditional/templates/major_project_submission.html b/conditional/templates/major_project_submission.html
index bfff3d67..a910e5f1 100644
--- a/conditional/templates/major_project_submission.html
+++ b/conditional/templates/major_project_submission.html
@@ -313,7 +313,7 @@
Links
Description
-
{{p['desc']}}
+
{{p['desc']|safe}}
diff --git a/requirements.txt b/requirements.txt
index e68b7fc0..0696f534 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -212,3 +212,6 @@ wheel==0.47.0
# via pip-tools
wrapt==2.1.2
# via -r requirements.in
+
+markdown==3.10.3
+ # added manually :3
\ No newline at end of file
From cd83abdd0787b8bf5d9fda75a569de58bd995b5e Mon Sep 17 00:00:00 2001
From: rmamet <179627394+rmamet@users.noreply.github.com>
Date: Mon, 21 Sep 2026 19:16:05 +0000
Subject: [PATCH 2/4] fix linting issue
---
conditional/blueprints/major_project_submission.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/conditional/blueprints/major_project_submission.py b/conditional/blueprints/major_project_submission.py
index 56fe8cf9..f847480d 100644
--- a/conditional/blueprints/major_project_submission.py
+++ b/conditional/blueprints/major_project_submission.py
@@ -2,14 +2,14 @@
import json
import os
+import html
+import markdown
+
from flask import Blueprint
from flask import request
from flask import jsonify
from flask import redirect
-import markdown
-import html
-
import requests
import boto3
import structlog
From 17d4fa6c780ff08b3ba64e3e678b948ea8abd10f Mon Sep 17 00:00:00 2001
From: rmamet <179627394+rmamet@users.noreply.github.com>
Date: Mon, 21 Sep 2026 15:58:22 -0400
Subject: [PATCH 3/4] Fix formatting
Co-authored-by: Noah Hanford
---
conditional/templates/major_project_submission.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/conditional/templates/major_project_submission.html b/conditional/templates/major_project_submission.html
index a910e5f1..0f73678c 100644
--- a/conditional/templates/major_project_submission.html
+++ b/conditional/templates/major_project_submission.html
@@ -313,7 +313,7 @@ Links
Description
-
{{p['desc']|safe}}
+
{{p['desc'] | safe}}
From 6e72e3adbe282d5d3b1a00850188a22cfa83baa2 Mon Sep 17 00:00:00 2001
From: rmamet <179627394+rmamet@users.noreply.github.com>
Date: Mon, 21 Sep 2026 20:01:51 +0000
Subject: [PATCH 4/4] update requirements
---
requirements.in | 1 +
requirements.txt | 37 ++++++++++++++++++-------------------
2 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/requirements.in b/requirements.in
index c5b32e18..4fdf5cc1 100644
--- a/requirements.in
+++ b/requirements.in
@@ -30,3 +30,4 @@ structlog~=25.5.0
Werkzeug~=3.1.6
wrapt~=2.1.2
click~=8.1
+markdown~=3.10.3
diff --git a/requirements.txt b/requirements.txt
index 0696f534..462b002a 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -22,7 +22,7 @@ botocore==1.35.99
# -r requirements.in
# boto3
# s3transfer
-build==1.5.0
+build==1.6.1
# via pip-tools
certifi==2026.7.22
# via
@@ -30,14 +30,14 @@ certifi==2026.7.22
# sentry-sdk
cffi==2.1.1
# via cryptography
-charset-normalizer==3.4.9
+charset-normalizer==3.5.1
# via requests
click==8.4.2
# via
# -r requirements.in
# flask
# pip-tools
-cryptography==50.0.0
+cryptography==50.0.1
# via oic
csh-ldap==2.5.8
# via -r requirements.in
@@ -67,11 +67,11 @@ flask-sqlalchemy==3.1.1
# flask-migrate
future==1.0.0
# via pyjwkest
-greenlet==3.5.4
+greenlet==3.5.6
# via sqlalchemy
gunicorn==25.3.0
# via -r requirements.in
-idna==3.18
+idna==3.20
# via requests
importlib-resources==7.1.0
# via flask-pyoidc
@@ -98,6 +98,8 @@ mako==1.3.12
# -r requirements.in
# alembic
# oic
+markdown==3.10.3
+ # via -r requirements.in
markupsafe==3.0.3
# via
# -r requirements.in
@@ -123,9 +125,9 @@ pip==26.2.1
# via pip-tools
pip-tools==7.5.3
# via -r requirements.in
-platformdirs==4.11.1
+platformdirs==4.11.11
# via pylint
-psycopg2-binary==2.9.12
+psycopg2-binary==2.9.13
# via -r requirements.in
pyasn1==0.6.4
# via
@@ -139,9 +141,9 @@ pycryptodomex==3.23.0
# via
# oic
# pyjwkest
-pydantic==2.13.4
+pydantic==2.13.5
# via pydantic-settings
-pydantic-core==2.46.4
+pydantic-core==2.46.5
# via pydantic
pydantic-settings==2.15.0
# via oic
@@ -149,13 +151,13 @@ pyjwkest==1.4.4
# via oic
pylint==3.3.9
# via -r requirements.in
-pyproject-hooks==1.2.0
+pyproject-hooks==1.3.3
# via
# build
# pip-tools
python-dateutil==2.9.0.post0
# via botocore
-python-dotenv==1.2.2
+python-dotenv==1.2.3
# via pydantic-settings
python-editor==1.0.4
# via -r requirements.in
@@ -170,14 +172,14 @@ s3transfer==0.10.4
# via boto3
sentry-sdk==2.63.0
# via -r requirements.in
-setuptools==83.0.0
+setuptools==84.0.0
# via pip-tools
six==1.17.0
# via
# -r requirements.in
# pyjwkest
# python-dateutil
-sqlalchemy==2.0.51
+sqlalchemy==2.0.54
# via
# -r requirements.in
# alembic
@@ -195,11 +197,11 @@ typing-extensions==4.16.0
# pydantic-core
# sqlalchemy
# typing-inspection
-typing-inspection==0.4.2
+typing-inspection==0.4.4
# via
# pydantic
# pydantic-settings
-urllib3==2.7.0
+urllib3==2.8.0
# via
# botocore
# requests
@@ -208,10 +210,7 @@ werkzeug==3.1.8
# via
# -r requirements.in
# flask
-wheel==0.47.0
+wheel==0.48.0
# via pip-tools
wrapt==2.1.2
# via -r requirements.in
-
-markdown==3.10.3
- # added manually :3
\ No newline at end of file