diff --git a/tests/unit/test_csp.py b/tests/unit/test_csp.py
index efc3d1611978..80f140478fa6 100644
--- a/tests/unit/test_csp.py
+++ b/tests/unit/test_csp.py
@@ -269,6 +269,7 @@ def test_includeme():
"https://analytics.python.org",
"*.fastly-insights.com",
"*.ethicalads.io",
+ "https://donate.python.org",
"'sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0='",
"https://cdn.jsdelivr.net/npm/mathjax@3.2.2/",
"'sha256-1CldwzdEg2k1wTmf7s5RWVd7NMXI/7nxxjJM2C4DqII='",
@@ -278,6 +279,7 @@ def test_includeme():
"'self'",
"fonts.googleapis.com",
"*.ethicalads.io",
+ "donate.python.org",
"'sha256-2YHqZokjiizkHi1Zt+6ar0XJ0OeEy/egBnlm+MDMtrM='",
"'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='",
"'sha256-JLEjeN9e5dGsz5475WyRaoA4eQOdNPxDIeUhclnJDCE='",
diff --git a/warehouse/csp.py b/warehouse/csp.py
index f17317c46ede..ef5aee0ae5a7 100644
--- a/warehouse/csp.py
+++ b/warehouse/csp.py
@@ -125,6 +125,7 @@ def _script_src_settings(config) -> list:
"https://analytics.python.org",
"*.fastly-insights.com",
"*.ethicalads.io",
+ "https://donate.python.org",
# Hash for v1.4.0 of ethicalads.min.js
"'sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0='",
"https://cdn.jsdelivr.net/npm/mathjax@3.2.2/",
@@ -174,6 +175,7 @@ def includeme(config):
SELF,
"fonts.googleapis.com",
"*.ethicalads.io",
+ "donate.python.org",
# Hashes for inline styles generated by v1.4.0 of ethicalads.min.js
"'sha256-2YHqZokjiizkHi1Zt+6ar0XJ0OeEy/egBnlm+MDMtrM='",
"'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='",
diff --git a/warehouse/locale/messages.pot b/warehouse/locale/messages.pot
index 3ed82ff47bc4..1c06ae03ff22 100644
--- a/warehouse/locale/messages.pot
+++ b/warehouse/locale/messages.pot
@@ -1020,14 +1020,14 @@ msgstr ""
#: warehouse/templates/404.html:30 warehouse/templates/500.html:18
#: warehouse/templates/accounts/two-factor.html:35
-#: warehouse/templates/base.html:343 warehouse/templates/base.html:349
-#: warehouse/templates/base.html:355 warehouse/templates/base.html:361
-#: warehouse/templates/base.html:377 warehouse/templates/base.html:383
-#: warehouse/templates/base.html:408 warehouse/templates/base.html:414
-#: warehouse/templates/base.html:423 warehouse/templates/base.html:436
-#: warehouse/templates/base.html:445 warehouse/templates/base.html:451
-#: warehouse/templates/base.html:457 warehouse/templates/base.html:470
-#: warehouse/templates/base.html:487
+#: warehouse/templates/base.html:345 warehouse/templates/base.html:351
+#: warehouse/templates/base.html:357 warehouse/templates/base.html:363
+#: warehouse/templates/base.html:379 warehouse/templates/base.html:385
+#: warehouse/templates/base.html:410 warehouse/templates/base.html:416
+#: warehouse/templates/base.html:425 warehouse/templates/base.html:438
+#: warehouse/templates/base.html:447 warehouse/templates/base.html:453
+#: warehouse/templates/base.html:459 warehouse/templates/base.html:472
+#: warehouse/templates/base.html:489
#: warehouse/templates/includes/accounts/profile-callout.html:17
#: warehouse/templates/includes/file-details.html:129
#: warehouse/templates/index.html:98 warehouse/templates/index.html:105
@@ -1181,7 +1181,7 @@ msgid "Main navigation"
msgstr ""
#: warehouse/templates/base.html:33 warehouse/templates/base.html:68
-#: warehouse/templates/base.html:338
+#: warehouse/templates/base.html:340
#: warehouse/templates/includes/current-user-indicator.html:77
#: warehouse/templates/pages/help.html:209
#: warehouse/templates/pages/sitemap.html:19
@@ -1257,16 +1257,16 @@ msgstr ""
msgid "RSS: 40 newest packages"
msgstr ""
-#: warehouse/templates/base.html:209
+#: warehouse/templates/base.html:211
msgid "Skip to main content"
msgstr ""
-#: warehouse/templates/base.html:213
+#: warehouse/templates/base.html:215
msgid "Switch to mobile version"
msgstr ""
-#: warehouse/templates/base.html:220 warehouse/templates/base.html:229
-#: warehouse/templates/base.html:239
+#: warehouse/templates/base.html:222 warehouse/templates/base.html:231
+#: warehouse/templates/base.html:241
#: warehouse/templates/includes/flash-messages.html:41
#: warehouse/templates/includes/session-notifications.html:19
#: warehouse/templates/manage/account.html:845
@@ -1283,177 +1283,177 @@ msgstr ""
msgid "Warning"
msgstr ""
-#: warehouse/templates/base.html:222
+#: warehouse/templates/base.html:224
msgid "You are using an unsupported browser, upgrade to a newer version."
msgstr ""
-#: warehouse/templates/base.html:231
+#: warehouse/templates/base.html:233
msgid ""
"You are using TestPyPI – a separate instance of the Python Package Index "
"that allows you to try distribution tools and processes without affecting"
" the real index."
msgstr ""
-#: warehouse/templates/base.html:241
+#: warehouse/templates/base.html:243
msgid ""
"Some features may not work without JavaScript. Please try enabling it if "
"you encounter problems."
msgstr ""
-#: warehouse/templates/base.html:276 warehouse/templates/base.html:308
+#: warehouse/templates/base.html:278 warehouse/templates/base.html:310
#: warehouse/templates/error-base-with-search.html:8
#: warehouse/templates/index.html:29
msgid "Search PyPI"
msgstr ""
-#: warehouse/templates/base.html:281 warehouse/templates/index.html:35
+#: warehouse/templates/base.html:283 warehouse/templates/index.html:35
msgid "Type '/' to search projects"
msgstr ""
-#: warehouse/templates/base.html:292 warehouse/templates/base.html:321
+#: warehouse/templates/base.html:294 warehouse/templates/base.html:323
#: warehouse/templates/error-base-with-search.html:19
#: warehouse/templates/index.html:44
msgid "Search"
msgstr ""
-#: warehouse/templates/base.html:313
+#: warehouse/templates/base.html:315
#: warehouse/templates/error-base-with-search.html:13
msgid "Search projects"
msgstr ""
-#: warehouse/templates/base.html:339
+#: warehouse/templates/base.html:341
msgid "Help navigation"
msgstr ""
-#: warehouse/templates/base.html:345
+#: warehouse/templates/base.html:347
msgid "Installing packages"
msgstr ""
-#: warehouse/templates/base.html:351
+#: warehouse/templates/base.html:353
msgid "Uploading packages"
msgstr ""
-#: warehouse/templates/base.html:357
+#: warehouse/templates/base.html:359
msgid "User guide"
msgstr ""
-#: warehouse/templates/base.html:363
+#: warehouse/templates/base.html:365
msgid "Project name retention"
msgstr ""
-#: warehouse/templates/base.html:366
+#: warehouse/templates/base.html:368
msgid "FAQs"
msgstr ""
-#: warehouse/templates/base.html:372 warehouse/templates/pages/sitemap.html:34
+#: warehouse/templates/base.html:374 warehouse/templates/pages/sitemap.html:34
msgid "About PyPI"
msgstr ""
-#: warehouse/templates/base.html:373
+#: warehouse/templates/base.html:375
msgid "About PyPI navigation"
msgstr ""
-#: warehouse/templates/base.html:379
+#: warehouse/templates/base.html:381
msgid "PyPI Blog"
msgstr ""
-#: warehouse/templates/base.html:385
+#: warehouse/templates/base.html:387
msgid "Infrastructure dashboard"
msgstr ""
-#: warehouse/templates/base.html:388 warehouse/templates/pages/sitemap.html:40
+#: warehouse/templates/base.html:390 warehouse/templates/pages/sitemap.html:40
#: warehouse/templates/pages/stats.html:4
msgid "Statistics"
msgstr ""
-#: warehouse/templates/base.html:391
+#: warehouse/templates/base.html:393
msgid "Logos & trademarks"
msgstr ""
-#: warehouse/templates/base.html:394
+#: warehouse/templates/base.html:396
msgid "Our sponsors"
msgstr ""
-#: warehouse/templates/base.html:400
+#: warehouse/templates/base.html:402
msgid "Contributing to PyPI"
msgstr ""
-#: warehouse/templates/base.html:401
+#: warehouse/templates/base.html:403
msgid "How to contribute navigation"
msgstr ""
-#: warehouse/templates/base.html:404
+#: warehouse/templates/base.html:406
msgid "Bugs and feedback"
msgstr ""
-#: warehouse/templates/base.html:410
+#: warehouse/templates/base.html:412
msgid "Contribute on GitHub"
msgstr ""
-#: warehouse/templates/base.html:416
+#: warehouse/templates/base.html:418
msgid "Translate PyPI"
msgstr ""
-#: warehouse/templates/base.html:419
+#: warehouse/templates/base.html:421
msgid "Sponsor PyPI"
msgstr ""
-#: warehouse/templates/base.html:425
+#: warehouse/templates/base.html:427
msgid "Development credits"
msgstr ""
-#: warehouse/templates/base.html:431 warehouse/templates/pages/sitemap.html:10
+#: warehouse/templates/base.html:433 warehouse/templates/pages/sitemap.html:10
msgid "Using PyPI"
msgstr ""
-#: warehouse/templates/base.html:432
+#: warehouse/templates/base.html:434
msgid "Using PyPI navigation"
msgstr ""
-#: warehouse/templates/base.html:438
+#: warehouse/templates/base.html:440
#: warehouse/templates/manage/organization/activate_subscription.html:21
msgid "Terms of Service"
msgstr ""
-#: warehouse/templates/base.html:441
+#: warehouse/templates/base.html:443
msgid "Report security issue"
msgstr ""
-#: warehouse/templates/base.html:447
+#: warehouse/templates/base.html:449
msgid "Code of conduct"
msgstr ""
-#: warehouse/templates/base.html:453
+#: warehouse/templates/base.html:455
msgid "Privacy Notice"
msgstr ""
-#: warehouse/templates/base.html:459
+#: warehouse/templates/base.html:461
msgid "Acceptable Use Policy"
msgstr ""
-#: warehouse/templates/base.html:469
+#: warehouse/templates/base.html:471
msgid "Status:"
msgstr ""
-#: warehouse/templates/base.html:473
+#: warehouse/templates/base.html:475
msgid "all systems operational"
msgstr ""
-#: warehouse/templates/base.html:477
+#: warehouse/templates/base.html:479
msgid ""
"Developed and maintained by the Python community, for the Python "
"community."
msgstr ""
-#: warehouse/templates/base.html:479
+#: warehouse/templates/base.html:481
msgid "Donate today!"
msgstr ""
-#: warehouse/templates/base.html:491 warehouse/templates/pages/sitemap.html:4
+#: warehouse/templates/base.html:493 warehouse/templates/pages/sitemap.html:4
msgid "Site map"
msgstr ""
-#: warehouse/templates/base.html:498
+#: warehouse/templates/base.html:500
msgid "Switch to desktop version"
msgstr ""
diff --git a/warehouse/templates/base.html b/warehouse/templates/base.html
index c31c5f45f7c5..a4dac6d8792a 100644
--- a/warehouse/templates/base.html
+++ b/warehouse/templates/base.html
@@ -200,6 +200,8 @@
integrity="sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0= sha384-UcmsCqcNRSLW/dV3Lo1oCi2/VaurXbib6p4HyUEOeIa/4OpsrnucrugAefzVZJfI sha512-q4t1L4xEjGV2R4hzqCa41P8jrgFUS8xTb8rdNv4FGvw7FpydVj/kkxBJHOiaoxHa8olCcx1Slk9K+3sNbsM4ug=="
crossorigin="anonymous">
{% if devPyPI %}{% endif %}
+