From e2be61745292abd07b90d4aaf63b6049e44c7cdc Mon Sep 17 00:00:00 2001 From: Antonis Christofides Date: Sun, 17 Nov 2024 15:55:14 +0200 Subject: [PATCH] Make compatible with Django 4.2 (fixes DEV-51) --- enhydris/admin/__init__.py | 2 +- enhydris/admin/garea.py | 2 +- enhydris/admin/station.py | 2 +- enhydris/forms/auth.py | 2 +- enhydris/forms/timeseries.py | 2 +- enhydris/models/timeseries.py | 10 ++++++++-- enhydris/tasks.py | 2 +- enhydris/telemetry/forms.py | 2 +- enhydris/telemetry/models.py | 2 +- enhydris/telemetry/types/__init__.py | 2 +- enhydris/telemetry/types/addupi.py | 2 +- enhydris/telemetry/types/meteoview2.py | 2 +- enhydris/telemetry/views.py | 2 +- requirements-dev.txt | 2 +- requirements.txt | 4 ++-- 15 files changed, 23 insertions(+), 17 deletions(-) diff --git a/enhydris/admin/__init__.py b/enhydris/admin/__init__.py index a2d42e70..505f177e 100644 --- a/enhydris/admin/__init__.py +++ b/enhydris/admin/__init__.py @@ -1,6 +1,6 @@ from django.conf import settings from django.contrib import admin -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from parler.admin import TranslatableAdmin diff --git a/enhydris/admin/garea.py b/enhydris/admin/garea.py index e3765e0b..5b297ff0 100644 --- a/enhydris/admin/garea.py +++ b/enhydris/admin/garea.py @@ -13,7 +13,7 @@ from django.http import HttpResponseRedirect from django.template.response import TemplateResponse from django.urls import path -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from enhydris import models diff --git a/enhydris/admin/station.py b/enhydris/admin/station.py index 610dc4a1..e0cc1241 100644 --- a/enhydris/admin/station.py +++ b/enhydris/admin/station.py @@ -8,7 +8,7 @@ from django.contrib import admin, messages from django.contrib.sites.models import Site from django.db.models import Q, TextField -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ import nested_admin import pandas as pd diff --git a/enhydris/forms/auth.py b/enhydris/forms/auth.py index 3332901f..afffe87c 100644 --- a/enhydris/forms/auth.py +++ b/enhydris/forms/auth.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from captcha.fields import CaptchaField from registration.forms import RegistrationFormTermsOfService diff --git a/enhydris/forms/timeseries.py b/enhydris/forms/timeseries.py index 50a3008b..a660b3a4 100644 --- a/enhydris/forms/timeseries.py +++ b/enhydris/forms/timeseries.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from enhydris import models diff --git a/enhydris/models/timeseries.py b/enhydris/models/timeseries.py index 41bf92b8..33e00a42 100644 --- a/enhydris/models/timeseries.py +++ b/enhydris/models/timeseries.py @@ -146,7 +146,10 @@ def get_start_date(): return self.timeseriesrecord_set.earliest().timestamp.astimezone( ZoneInfo(self.timeseries_group.gentity.display_timezone) ) - except TimeseriesRecord.DoesNotExist: + except (TimeseriesRecord.DoesNotExist, ValueError): + # The ValueError above is for the case where the Timeseries object does + # not have a primary key yet (has not been saved), which causes a + # problem in Django>=4. return None return cache.get_or_set(f"timeseries_start_date_{self.id}", get_start_date) @@ -158,7 +161,10 @@ def get_end_date(): return self.timeseriesrecord_set.latest().timestamp.astimezone( ZoneInfo(self.timeseries_group.gentity.display_timezone) ) - except TimeseriesRecord.DoesNotExist: + except (TimeseriesRecord.DoesNotExist, ValueError): + # The ValueError above is for the case where the Timeseries object does + # not have a primary key yet (has not been saved), which causes a + # problem in Django>=4. return None return cache.get_or_set(f"timeseries_end_date_{self.id}", get_end_date) diff --git a/enhydris/tasks.py b/enhydris/tasks.py index eee4d284..1b5f8adc 100644 --- a/enhydris/tasks.py +++ b/enhydris/tasks.py @@ -4,7 +4,7 @@ from django.conf import settings from django.contrib.auth.models import User from django.core.mail import send_mail -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ import celery diff --git a/enhydris/telemetry/forms.py b/enhydris/telemetry/forms.py index 7363f51b..6b9e04d0 100644 --- a/enhydris/telemetry/forms.py +++ b/enhydris/telemetry/forms.py @@ -1,5 +1,5 @@ from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from enhydris.telemetry import TelemetryError from enhydris.telemetry.models import Telemetry, timezone_choices diff --git a/enhydris/telemetry/models.py b/enhydris/telemetry/models.py index ac0e31e7..63bf15af 100644 --- a/enhydris/telemetry/models.py +++ b/enhydris/telemetry/models.py @@ -8,7 +8,7 @@ from django.core.validators import MaxValueValidator, MinValueValidator from django.db import IntegrityError, models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ import iso8601 diff --git a/enhydris/telemetry/types/__init__.py b/enhydris/telemetry/types/__init__.py index c18438db..c7968e13 100644 --- a/enhydris/telemetry/types/__init__.py +++ b/enhydris/telemetry/types/__init__.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class TelemetryAPIClientBase: diff --git a/enhydris/telemetry/types/addupi.py b/enhydris/telemetry/types/addupi.py index 95791b37..66b89215 100644 --- a/enhydris/telemetry/types/addupi.py +++ b/enhydris/telemetry/types/addupi.py @@ -1,7 +1,7 @@ import datetime as dt from io import StringIO -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ import requests from defusedxml import ElementTree diff --git a/enhydris/telemetry/types/meteoview2.py b/enhydris/telemetry/types/meteoview2.py index c650183e..d6fdc342 100644 --- a/enhydris/telemetry/types/meteoview2.py +++ b/enhydris/telemetry/types/meteoview2.py @@ -3,7 +3,7 @@ from io import StringIO from zoneinfo import ZoneInfo -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ import requests diff --git a/enhydris/telemetry/views.py b/enhydris/telemetry/views.py index 35c1e7b4..f3cf4814 100644 --- a/enhydris/telemetry/views.py +++ b/enhydris/telemetry/views.py @@ -2,7 +2,7 @@ from django.http import Http404, HttpResponseRedirect from django.shortcuts import render from django.urls import reverse -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views.generic.base import View from django.views.generic.detail import DetailView from django.views.generic.list import ListView diff --git a/requirements-dev.txt b/requirements-dev.txt index 7e58594a..7d524165 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,5 +1,5 @@ model-mommy>=1.6.0 -django-cors-headers<4 +django-cors-headers>=4,<5 sphinx>=4 django-selenium-clean>=1,<2 beautifulsoup4>=4.4 diff --git a/requirements.txt b/requirements.txt index a820c776..26dcdad3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -Django>=3.2,<4 +Django>=4.2,<5 djangorestframework>=3.9,<4 gdal>=1.6 iso8601 @@ -11,7 +11,7 @@ django-rest-captcha>=0.1.0,<1 django-parler>=2.2,<3 django-parler-rest>=2,<3 django-geowidgets>=0.1.1,<1 -django-nested-admin>=3.2,<4 +django-nested-admin>=4.1,<5 django-crequest celery>=5.2.2,<6 django-registration-redux>=2.9,<3