diff --git a/data/db.sqlite3 b/data/db.sqlite3 index e75fb7f..caf6002 100644 Binary files a/data/db.sqlite3 and b/data/db.sqlite3 differ diff --git a/docker.sh b/docker.sh index 473fabd..759e364 100755 --- a/docker.sh +++ b/docker.sh @@ -26,7 +26,7 @@ case "$1" in docker-compose build ;; "shell") - docker-compose exec web uv run manage.py shell + docker-compose exec web bash ;; "migrate") docker-compose exec web uv run manage.py makemigrations diff --git a/links/templates/links/custom_link.html b/links/templates/links/custom_link.html index 7ed320a..ae9d361 100644 --- a/links/templates/links/custom_link.html +++ b/links/templates/links/custom_link.html @@ -1,3 +1,4 @@ +{% load static %} @@ -6,79 +7,11 @@ {{ link.alias }} - +
-
+
{{ rendered_text|safe }}
diff --git a/links/templates/links/newsletter_detail.html b/links/templates/links/newsletter_detail.html index a74de17..235cdff 100644 --- a/links/templates/links/newsletter_detail.html +++ b/links/templates/links/newsletter_detail.html @@ -1,22 +1,10 @@ {% extends 'base.html' %} {% load i18n %} {% load markdown_extras %} +{% load static %} {% block extra_css %} - + {% endblock %} {% block content %} @@ -61,7 +49,7 @@
-
+
{{ newsletter.content|markdown|safe }}
diff --git a/static/css/markdown.css b/static/css/markdown.css new file mode 100644 index 0000000..ccab665 --- /dev/null +++ b/static/css/markdown.css @@ -0,0 +1,98 @@ +.prose { + color: #374151; + max-width: none; +} +.prose p { + margin-top: 1.25em; + margin-bottom: 1.25em; +} +.prose a { + color: #2563eb; + text-decoration: underline; +} +.prose strong { + font-weight: 600; +} +.prose ul { + margin-top: 1.25em; + margin-bottom: 1.25em; + list-style-type: disc; + padding-left: 1.625em; +} +.prose ol { + margin-top: 1.25em; + margin-bottom: 1.25em; + list-style-type: decimal; + padding-left: 1.625em; +} +.prose h1 { + font-size: 2.25em; + margin-top: 0; + margin-bottom: 0.8888889em; + line-height: 1.1111111; + font-weight: 600; +} +.prose h2 { + font-size: 1.5em; + margin-top: 2em; + margin-bottom: 1em; + line-height: 1.3333333; + font-weight: 600; +} +.prose h3 { + font-size: 1.25em; + margin-top: 1.6em; + margin-bottom: 0.6em; + line-height: 1.6; + font-weight: 600; +} +.prose img { + margin-top: 2em; + margin-bottom: 2em; +} +.prose code { + color: #111827; + font-weight: 600; + background-color: #f3f4f6; + padding: 0.2em 0.4em; + border-radius: 0.375rem; + font-size: 0.875em; +} +.prose pre { + color: #e5e7eb; + background-color: #1f2937; + overflow-x: auto; + font-size: 0.875em; + line-height: 1.7142857; + margin-top: 1.7142857em; + margin-bottom: 1.7142857em; + border-radius: 0.375rem; + padding: 1em; +} +.prose pre code { + background-color: transparent; + color: inherit; + padding: 0; +} +.prose blockquote { + font-style: italic; + border-left: 4px solid #e5e7eb; + padding-left: 1em; + margin: 1.25em 0; +} +.prose table { + width: 100%; + border-collapse: collapse; + margin: 2em 0; +} +.prose table th { + background-color: #f3f4f6; + font-weight: 600; + text-align: left; + padding: 0.5em; + border: 1px solid #e5e7eb; +} +.prose table td { + padding: 0.5em; + border: 1px solid #e5e7eb; +}