From 2fc30b117b664b7e7092fb658f6762101d5e7410 Mon Sep 17 00:00:00 2001 From: Yohan Boniface Date: Wed, 22 Feb 2023 15:19:38 +0100 Subject: [PATCH] Prepare for Django 4.x --- setup.cfg | 6 +++--- umap/admin.py | 2 +- umap/apps.py | 6 ++++++ umap/fields.py | 4 ++-- umap/settings/base.py | 6 ++++-- umap/urls.py | 2 +- umap/views.py | 4 ++-- 7 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 umap/apps.py diff --git a/setup.cfg b/setup.cfg index 2bd4a8ae..36786c10 100644 --- a/setup.cfg +++ b/setup.cfg @@ -26,9 +26,9 @@ classifiers = packages = find: include_package_data = True install_requires = - Django>=3.2.5,<4 - django-agnocomplete==1.0.0 - django-compressor==2.4.1 + Django==4.1.7 + django-agnocomplete==2.2.0 + django-compressor==4.3.1 Pillow==8.4.0 psycopg2==2.9.3 requests==2.26.0 diff --git a/umap/admin.py b/umap/admin.py index b583dc2c..f686786d 100644 --- a/umap/admin.py +++ b/umap/admin.py @@ -7,7 +7,7 @@ class TileLayerAdmin(admin.ModelAdmin): list_editable = ('rank', ) -class MapAdmin(admin.OSMGeoAdmin): +class MapAdmin(admin.GISModelAdmin): search_fields = ("name",) autocomplete_fields = ("owner", "editors") list_filter = ("share_status",) diff --git a/umap/apps.py b/umap/apps.py new file mode 100644 index 00000000..d7047f93 --- /dev/null +++ b/umap/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class UmapConfig(AppConfig): + name = "umap" + verbose_name = "uMap" diff --git a/umap/fields.py b/umap/fields.py index 00dbf1e5..4798b0b4 100644 --- a/umap/fields.py +++ b/umap/fields.py @@ -2,7 +2,7 @@ import json import six from django.db import models -from django.utils.encoding import smart_text +from django.utils.encoding import smart_str class DictField(models.TextField): @@ -30,4 +30,4 @@ class DictField(models.TextField): def value_to_string(self, obj): """Return value from object converted to string properly""" - return smart_text(self.get_prep_value(self.value_from_object(obj))) + return smart_str(self.get_prep_value(self.value_from_object(obj))) diff --git a/umap/settings/base.py b/umap/settings/base.py index 1126a6dd..a5d98cc7 100644 --- a/umap/settings/base.py +++ b/umap/settings/base.py @@ -42,7 +42,6 @@ LANG_INFO.update({ TIME_ZONE = 'UTC' USE_TZ = True USE_I18N = True -USE_L10N = True LANGUAGE_CODE = 'en' LANGUAGES = ( ('am-et', 'Amharic'), @@ -108,7 +107,10 @@ INSTALLED_APPS = ( 'umap', 'compressor', 'social_django', - 'agnocomplete', + # See https://github.com/peopledoc/django-agnocomplete/commit/26eda2dfa4a2f8a805ca2ea19a0c504b9d773a1c + # Django does not find the app config in the default place, so the app is not loaded + # so the "autodiscover" is not run. + 'agnocomplete.app.AgnocompleteConfig', ) DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' diff --git a/umap/urls.py b/umap/urls.py index e0ff193b..b9895366 100644 --- a/umap/urls.py +++ b/umap/urls.py @@ -1,5 +1,5 @@ from django.conf import settings -from django.conf.urls import include, re_path +from django.urls import include, re_path from django.conf.urls.i18n import i18n_patterns from django.conf.urls.static import static from django.contrib import admin diff --git a/umap/views.py b/umap/views.py index 56eb50ca..e2e39f7c 100644 --- a/umap/views.py +++ b/umap/views.py @@ -605,7 +605,7 @@ class MapDelete(DeleteView): model = Map pk_url_kwarg = "map_id" - def delete(self, *args, **kwargs): + def form_valid(self, form): self.object = self.get_object() if self.object.owner and self.request.user != self.object.owner: return HttpResponseForbidden( @@ -801,7 +801,7 @@ class DataLayerUpdate(FormLessEditMixin, GZipMixin, UpdateView): class DataLayerDelete(DeleteView): model = DataLayer - def delete(self, *args, **kwargs): + def form_valid(self, form): self.object = self.get_object() if self.object.map != self.kwargs['map_inst']: return HttpResponseForbidden()