From 958977f662d878c299b3599282f005c3469dbef9 Mon Sep 17 00:00:00 2001
From: Jon Dufresne <jon.dufresne@gmail.com>
Date: Tue, 28 Jan 2020 16:58:39 -0800
Subject: [PATCH] Fixed #31212 -- Updated psycopg links to HTTPS and new
 location.

---
 django/db/backends/postgresql/base.py       | 2 +-
 django/db/backends/postgresql/operations.py | 2 +-
 docs/conf.py                                | 2 +-
 docs/ref/contrib/gis/install/postgis.txt    | 2 +-
 docs/ref/databases.txt                      | 2 +-
 docs/topics/db/transactions.txt             | 7 +++----
 docs/topics/install.txt                     | 2 +-
 7 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/django/db/backends/postgresql/base.py b/django/db/backends/postgresql/base.py
index 0ab81ced74..8d58767c62 100644
--- a/django/db/backends/postgresql/base.py
+++ b/django/db/backends/postgresql/base.py
@@ -1,7 +1,7 @@
 """
 PostgreSQL database backend for Django.
 
-Requires psycopg 2: http://initd.org/projects/psycopg2
+Requires psycopg 2: https://www.psycopg.org/
 """
 
 import asyncio
diff --git a/django/db/backends/postgresql/operations.py b/django/db/backends/postgresql/operations.py
index e8355a0e58..ec87b61f49 100644
--- a/django/db/backends/postgresql/operations.py
+++ b/django/db/backends/postgresql/operations.py
@@ -230,7 +230,7 @@ class DatabaseOperations(BaseDatabaseOperations):
             return ['DISTINCT'], []
 
     def last_executed_query(self, cursor, sql, params):
-        # http://initd.org/psycopg/docs/cursor.html#cursor.query
+        # https://www.psycopg.org/docs/cursor.html#cursor.query
         # The query attribute is a Psycopg extension to the DB API 2.0.
         if cursor.query is not None:
             return cursor.query.decode()
diff --git a/docs/conf.py b/docs/conf.py
index 5abcc8c4ce..cd2f2f3809 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -141,7 +141,7 @@ pygments_style = 'trac'
 intersphinx_mapping = {
     'python': ('https://docs.python.org/3/', None),
     'sphinx': ('https://www.sphinx-doc.org/en/master/', None),
-    'psycopg2': ('http://initd.org/psycopg/docs/', None),
+    'psycopg2': ('https://www.psycopg.org/docs/', None),
 }
 
 # Python's docs don't change every week.
diff --git a/docs/ref/contrib/gis/install/postgis.txt b/docs/ref/contrib/gis/install/postgis.txt
index 834b8f8502..3bebbd8810 100644
--- a/docs/ref/contrib/gis/install/postgis.txt
+++ b/docs/ref/contrib/gis/install/postgis.txt
@@ -17,7 +17,7 @@ Alternately, you can `build from source`_. Consult the platform-specific
 instructions if you are on :ref:`macos` or :ref:`windows`.
 
 .. _PostGIS: https://postgis.net/
-.. _psycopg2: http://initd.org/psycopg/
+.. _psycopg2: https://www.psycopg.org/
 .. _PostGIS requirements: https://postgis.net/docs/postgis_installation.html#install_requirements
 .. _build from source: https://postgis.net/docs/postgis_installation.html#install_short_version
 
diff --git a/docs/ref/databases.txt b/docs/ref/databases.txt
index b4c190bafd..f61158c191 100644
--- a/docs/ref/databases.txt
+++ b/docs/ref/databases.txt
@@ -106,7 +106,7 @@ PostgreSQL notes
 Django supports PostgreSQL 9.5 and higher. `psycopg2`_ 2.5.4 or higher is
 required, though the latest release is recommended.
 
-.. _psycopg2: http://initd.org/psycopg/
+.. _psycopg2: https://www.psycopg.org/
 
 PostgreSQL connection settings
 -------------------------------
diff --git a/docs/topics/db/transactions.txt b/docs/topics/db/transactions.txt
index aab61807cb..12e695b2f6 100644
--- a/docs/topics/db/transactions.txt
+++ b/docs/topics/db/transactions.txt
@@ -368,9 +368,9 @@ the transaction. For the intended use cases (mail notifications, Celery tasks,
 etc.), this should be fine. If it's not (if your follow-up action is so
 critical that its failure should mean the failure of the transaction itself),
 then you don't want to use the :func:`on_commit` hook. Instead, you may want
-`two-phase commit`_ such as the `psycopg Two-Phase Commit protocol support`_
-and the `optional Two-Phase Commit Extensions in the Python DB-API
-specification`_.
+`two-phase commit`_ such as the :ref:`psycopg Two-Phase Commit protocol support
+<psycopg2:tpc>` and the `optional Two-Phase Commit Extensions in the Python
+DB-API specification`_.
 
 Callbacks are not run until autocommit is restored on the connection following
 the commit (because otherwise any queries done in a callback would open an
@@ -387,7 +387,6 @@ autocommit is disabled and you are not within an atomic block will result in an
 error.
 
 .. _two-phase commit: https://en.wikipedia.org/wiki/Two-phase_commit_protocol
-.. _psycopg Two-Phase Commit protocol support: http://initd.org/psycopg/docs/usage.html#tpc
 .. _optional Two-Phase Commit Extensions in the Python DB-API specification: https://www.python.org/dev/peps/pep-0249/#optional-two-phase-commit-extensions
 
 Use in tests
diff --git a/docs/topics/install.txt b/docs/topics/install.txt
index ee6d51e7db..3ce3dc2f1c 100644
--- a/docs/topics/install.txt
+++ b/docs/topics/install.txt
@@ -111,7 +111,7 @@ database queries, Django will need permission to create a test database.
 .. _PostgreSQL: https://www.postgresql.org/
 .. _MariaDB: https://mariadb.org/
 .. _MySQL: https://www.mysql.com/
-.. _psycopg2: http://initd.org/psycopg/
+.. _psycopg2: https://www.psycopg.org/
 .. _SQLite: https://www.sqlite.org/
 .. _cx_Oracle: https://oracle.github.io/python-cx_Oracle/
 .. _Oracle: https://www.oracle.com/