From 4d24e97e3679810bb0f34f589ed96069cf19ddea Mon Sep 17 00:00:00 2001 From: Dimas Ciputra Date: Mon, 5 Aug 2024 14:18:44 +0100 Subject: [PATCH] Fix interface error when downloading taxa list (#4131) --- bims/database_backend/__init__.py | 0 bims/database_backend/base.py | 15 +++++++++++++++ core/settings/contrib.py | 4 ---- core/settings/dev_docker.py | 2 +- core/settings/prod_docker.py | 2 +- 5 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 bims/database_backend/__init__.py create mode 100644 bims/database_backend/base.py diff --git a/bims/database_backend/__init__.py b/bims/database_backend/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/bims/database_backend/base.py b/bims/database_backend/base.py new file mode 100644 index 000000000..a523df1a0 --- /dev/null +++ b/bims/database_backend/base.py @@ -0,0 +1,15 @@ +import django.db +from psycopg2 import InterfaceError +from django_tenants.postgresql_backend.base import ( + DatabaseWrapper as TenantDatabaseWrapper +) + + +class DatabaseWrapper(TenantDatabaseWrapper): + def create_cursor(self, name=None): + try: + return super().create_cursor(name=name) + except InterfaceError: + django.db.close_old_connections() + django.db.connection.connect() + return super().create_cursor(name=name) diff --git a/core/settings/contrib.py b/core/settings/contrib.py index f148bd460..66e154506 100644 --- a/core/settings/contrib.py +++ b/core/settings/contrib.py @@ -260,10 +260,6 @@ absolute_path('pesticide', 'static'), ] -MIDDLEWARE += ( - 'bims.middleware.VisitorTrackingMiddleware', -) - # for middleware in MIDDLEWARE_CLASSES: # if middleware not in MIDDLEWARE: # MIDDLEWARE += (middleware,) diff --git a/core/settings/dev_docker.py b/core/settings/dev_docker.py index 8f1c43156..59a284785 100644 --- a/core/settings/dev_docker.py +++ b/core/settings/dev_docker.py @@ -21,7 +21,7 @@ DATABASES = { 'default': { - 'ENGINE': 'django_tenants.postgresql_backend', + 'ENGINE': 'bims.database_backend', 'NAME': 'gis', 'USER': 'docker', 'PASSWORD': 'docker', diff --git a/core/settings/prod_docker.py b/core/settings/prod_docker.py index b85f7f3cc..328937a78 100644 --- a/core/settings/prod_docker.py +++ b/core/settings/prod_docker.py @@ -17,7 +17,7 @@ DATABASES = { 'default': { - 'ENGINE': 'django_tenants.postgresql_backend', + 'ENGINE': 'bims.database_backend', 'NAME': os.environ.get('DATABASE_NAME'), 'USER': os.environ.get('DATABASE_USERNAME'), 'PASSWORD': os.environ.get('DATABASE_PASSWORD'),