Tests against Django 4.2, and 5.0 (dropping testing against 3.2, 4.0, and 4.1)
Test against all valid python versions 3.8 and above for the versions of Django we test against.
Massive update of dependencies as well.
Add tzdata as a dependency due to container instances possibly not having it by default.
Note: This relies on django-rest-framework 3.14.0 and not 3.15.1 (which has formal Django 5 support)... Iin 3.15.* there were changes with regards to unique_together in models. For us, that hits Ipaddress when creating a host, where we get:
ERROR django.request:log.py:241 Internal Server Error: /api/v1/hosts/
Traceback (most recent call last):
File ".../projects/uio/mreg/env/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File ".../projects/uio/mreg/env/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../projects/uio/mreg/env/lib/python3.11/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
return view_func(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../projects/uio/mreg/env/lib/python3.11/site-packages/django/views/generic/base.py", line 104, in view
return self.dispatch(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../projects/uio/mreg/env/lib/python3.11/site-packages/rest_framework/views.py", line 509, in dispatch
response = self.handle_exception(exc)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../projects/uio/mreg/env/lib/python3.11/site-packages/rest_framework/views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File ".../projects/uio/mreg/env/lib/python3.11/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
raise exc
File ".../projects/uio/mreg/env/lib/python3.11/site-packages/rest_framework/views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../projects/uio/mreg/mreg/api/v1/views.py", line 354, in post
if ipserializer.is_valid():
^^^^^^^^^^^^^^^^^^^^^^^
File ".../projects/uio/mreg/env/lib/python3.11/site-packages/rest_framework/serializers.py", line 223, in is_valid
self._validated_data = self.run_validation(self.initial_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../projects/uio/mreg/env/lib/python3.11/site-packages/rest_framework/serializers.py", line 444, in run_validation
self.run_validators(value)
File ".../projects/uio/mreg/env/lib/python3.11/site-packages/rest_framework/serializers.py", line 477, in run_validators
super().run_validators(to_validate)
File ".../projects/uio/mreg/env/lib/python3.11/site-packages/rest_framework/fields.py", line 553, in run_validators
validator(value, self)
File ".../projects/uio/mreg/env/lib/python3.11/site-packages/rest_framework/validators.py", line 169, in __call__
checked_values = [
^
File ".../projects/uio/mreg/env/lib/python3.11/site-packages/rest_framework/validators.py", line 172, in <listcomp>
if field in self.fields and value != getattr(serializer.instance, field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../projects/uio/mreg/env/lib/python3.11/site-packages/django/db/models/fields/related_descriptors.py", line 264, in __get__
raise self.RelatedObjectDoesNotExist(
mreg.models.host.Ipaddress.host.RelatedObjectDoesNotExist: Ipaddress has no host.
coverage: 98.849% (-0.08%) from 98.925%
when pulling 21cc0e13d549b515a03c522089d41db05b07ce1a on django_5_support
into b4975799aaa18905e704182cead4f990aaad896a on master.
Note: This relies on django-rest-framework 3.14.0 and not 3.15.1 (which has formal Django 5 support)... Iin 3.15.* there were changes with regards to
unique_together
in models. For us, that hits Ipaddress when creating a host, where we get:The issue comes from this bit of code: https://github.com/unioslo/mreg/blob/fa6ca20a41bd486cc8053a116f412b1d526a72ef/mreg/api/v1/views.py#L345-L351 combined with the
unique_together
constraint inIpaddress
: https://github.com/unioslo/mreg/blob/fa6ca20a41bd486cc8053a116f412b1d526a72ef/mreg/models/host.py#L25-L36.Reported as part of https://github.com/encode/django-rest-framework/issues/9358.