diff --git a/django-stubs/contrib/gis/admin/options.pyi b/django-stubs/contrib/gis/admin/options.pyi index ecab4c4af..c19a058f0 100644 --- a/django-stubs/contrib/gis/admin/options.pyi +++ b/django-stubs/contrib/gis/admin/options.pyi @@ -1,10 +1,14 @@ -from typing import Any +from typing import Any, ClassVar from django.contrib.admin import ModelAdmin -from django.contrib.gis.forms import BaseGeometryWidget +from django.contrib.gis.forms import OSMWidget +from django.db.models import Field +from django.forms.fields import Field as FormField +from django.http import HttpRequest -spherical_mercator_srid: int +class GeoModelAdminMixin: + gis_widget: ClassVar[type[OSMWidget]] + gis_widget_kwargs: ClassVar[dict[str, Any]] + def formfield_for_dbfield(self, db_field: Field, request: HttpRequest, **kwargs: Any) -> FormField: ... -class GISModelAdmin(ModelAdmin): - gis_widget: BaseGeometryWidget - gis_widget_kwargs: dict[str, Any] +class GISModelAdmin(GeoModelAdminMixin, ModelAdmin): ... diff --git a/scripts/stubtest/allowlist.txt b/scripts/stubtest/allowlist.txt index 75c82ff46..d7e4608eb 100644 --- a/scripts/stubtest/allowlist.txt +++ b/scripts/stubtest/allowlist.txt @@ -387,3 +387,6 @@ django.urls.resolvers.URLPattern.lookup_str django.urls.resolvers.URLResolver.url_patterns django.urls.resolvers.URLResolver.urlconf_module django.utils.connection.BaseConnectionHandler.settings + +# Potential stubtest bug with metaclass +django.contrib.gis.admin.options.GeoModelAdminMixin.gis_widget diff --git a/scripts/stubtest/allowlist_todo.txt b/scripts/stubtest/allowlist_todo.txt index 7158e0a71..d22d2d158 100644 --- a/scripts/stubtest/allowlist_todo.txt +++ b/scripts/stubtest/allowlist_todo.txt @@ -225,7 +225,6 @@ django.contrib.flatpages.models.FlatPage.template_name django.contrib.flatpages.models.FlatPage.title django.contrib.flatpages.models.FlatPage.url django.contrib.gis.admin.GISModelAdmin -django.contrib.gis.admin.GISModelAdmin.gis_widget django.contrib.gis.admin.ModelAdmin django.contrib.gis.admin.ModelAdmin.log_addition django.contrib.gis.admin.ModelAdmin.log_change @@ -235,8 +234,6 @@ django.contrib.gis.admin.TabularInline django.contrib.gis.admin.action django.contrib.gis.admin.display django.contrib.gis.admin.options.GISModelAdmin -django.contrib.gis.admin.options.GISModelAdmin.gis_widget -django.contrib.gis.admin.options.GeoModelAdminMixin django.contrib.gis.admin.site django.contrib.gis.db.backends.base.features.BaseSpatialFeatures.can_alter_geometry_field django.contrib.gis.db.backends.base.features.BaseSpatialFeatures.empty_intersection_returns_none diff --git a/scripts/stubtest/allowlist_todo_django50.txt b/scripts/stubtest/allowlist_todo_django50.txt index b0a884779..d7e534f60 100644 --- a/scripts/stubtest/allowlist_todo_django50.txt +++ b/scripts/stubtest/allowlist_todo_django50.txt @@ -30,7 +30,6 @@ django.contrib.contenttypes.fields.GenericForeignKey.get_content_type django.contrib.contenttypes.fields.GenericForeignKey.get_prefetch_querysets django.contrib.contenttypes.prefetch django.contrib.gis.admin.OpenLayersWidget -django.contrib.gis.admin.options.spherical_mercator_srid django.contrib.gis.admin.widgets django.contrib.gis.db.backends.spatialite.schema.SpatialiteSchemaEditor.alter_db_table django.contrib.gis.db.models.Case.allowed_default