diff options
| author | Giannis Adamopoulos <gadamopoulos@outlook.com> | 2020-12-09 19:12:56 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-09-17 08:56:16 +0200 |
| commit | 4555aa0a489cb9dcf764edf12339097cdfa5ff84 (patch) | |
| tree | 45862fd927ecc343590ed0827af911dd9002c266 /django | |
| parent | b5bf026813ca9aff83243f901edd722e0d60c2ea (diff) | |
Fixed #27674 -- Deprecated GeoModelAdmin and OSMGeoAdmin.
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/gis/admin/__init__.py | 8 | ||||
| -rw-r--r-- | django/contrib/gis/admin/options.py | 36 |
2 files changed, 42 insertions, 2 deletions
diff --git a/django/contrib/gis/admin/__init__.py b/django/contrib/gis/admin/__init__.py index b0edaf0193..4abc4898ae 100644 --- a/django/contrib/gis/admin/__init__.py +++ b/django/contrib/gis/admin/__init__.py @@ -2,11 +2,15 @@ from django.contrib.admin import ( HORIZONTAL, VERTICAL, AdminSite, ModelAdmin, StackedInline, TabularInline, action, autodiscover, display, register, site, ) -from django.contrib.gis.admin.options import GeoModelAdmin, OSMGeoAdmin +from django.contrib.gis.admin.options import ( + GeoModelAdmin, GISModelAdmin, OSMGeoAdmin, +) from django.contrib.gis.admin.widgets import OpenLayersWidget __all__ = [ 'HORIZONTAL', 'VERTICAL', 'AdminSite', 'ModelAdmin', 'StackedInline', 'TabularInline', 'action', 'autodiscover', 'display', 'register', 'site', - 'GeoModelAdmin', 'OSMGeoAdmin', 'OpenLayersWidget', + 'GISModelAdmin', 'OpenLayersWidget', + # RemovedInDjango50Warning. + 'GeoModelAdmin', 'OSMGeoAdmin', ] diff --git a/django/contrib/gis/admin/options.py b/django/contrib/gis/admin/options.py index 9b758a742d..524ba4bdc5 100644 --- a/django/contrib/gis/admin/options.py +++ b/django/contrib/gis/admin/options.py @@ -1,12 +1,38 @@ +import warnings + from django.contrib.admin import ModelAdmin from django.contrib.gis.admin.widgets import OpenLayersWidget from django.contrib.gis.db import models +from django.contrib.gis.forms import OSMWidget from django.contrib.gis.gdal import OGRGeomType from django.forms import Media +from django.utils.deprecation import RemovedInDjango50Warning + + +class GeoModelAdminMixin: + gis_widget = OSMWidget + gis_widget_kwargs = {} + + def formfield_for_dbfield(self, db_field, request, **kwargs): + if ( + isinstance(db_field, models.GeometryField) and + (db_field.dim < 3 or self.gis_widget.supports_3d) + ): + kwargs['widget'] = self.gis_widget(**self.gis_widget_kwargs) + return db_field.formfield(**kwargs) + else: + return super().formfield_for_dbfield(db_field, request, **kwargs) + +class GISModelAdmin(GeoModelAdminMixin, ModelAdmin): + pass + + +# RemovedInDjango50Warning. spherical_mercator_srid = 3857 +# RemovedInDjango50Warning. class GeoModelAdmin(ModelAdmin): """ The administration options class for Geographic models. Map settings @@ -44,6 +70,15 @@ class GeoModelAdmin(ModelAdmin): debug = False widget = OpenLayersWidget + def __init__(self, *args, **kwargs): + warnings.warn( + 'django.contrib.gis.admin.GeoModelAdmin and OSMGeoAdmin are ' + 'deprecated in favor of django.contrib.admin.ModelAdmin and ' + 'django.contrib.gis.admin.GISModelAdmin.', + RemovedInDjango50Warning, stacklevel=2, + ) + super().__init__(*args, **kwargs) + @property def media(self): "Injects OpenLayers JavaScript into the admin." @@ -124,6 +159,7 @@ class GeoModelAdmin(ModelAdmin): return OLMap +# RemovedInDjango50Warning. class OSMGeoAdmin(GeoModelAdmin): map_template = 'gis/admin/osm.html' num_zoom = 20 |
