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