Failed
OmeroWeb.test.integration.test_csrf.TestCsrf.test_ome_tiff_script (from pytest)
Error Message
TypeError: Object of type datetime is not JSON serializable
Stacktrace
self = <test_csrf.TestCsrf object at 0x7f88f63d3b10>
def test_ome_tiff_script(self):
"""
CSRF protection does not check `GET` requests so we need to be sure
that this request results in an HTTP 405 (method not allowed) status
code.
"""
img = self.create_test_image(session=self.sf)
request_url = reverse('ome_tiff_script', args=[img.id.val])
> post(self.django_client, request_url, {})
test/integration/test_csrf.py:251:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../../../.venv3/lib64/python3.11/site-packages/omeroweb/testlib/__init__.py:191: in post
return csrf_response(
../../../../.venv3/lib64/python3.11/site-packages/omeroweb/testlib/__init__.py:162: in csrf_response
return _response(
../../../../.venv3/lib64/python3.11/site-packages/omeroweb/testlib/__init__.py:119: in _response
response = getattr(django_client, method)(
../../../../.venv3/lib64/python3.11/site-packages/django/test/client.py:1153: in post
response = super().post(
../../../../.venv3/lib64/python3.11/site-packages/django/test/client.py:499: in post
return self.generic(
../../../../.venv3/lib64/python3.11/site-packages/django/test/client.py:671: in generic
return self.request(**r)
^^^^^^^^^^^^^^^^^
../../../../.venv3/lib64/python3.11/site-packages/django/test/client.py:1087: in request
self.check_exception(response)
../../../../.venv3/lib64/python3.11/site-packages/django/test/client.py:802: in check_exception
raise exc_value
../../../../.venv3/lib64/python3.11/site-packages/django/core/handlers/exception.py:55: in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
../../../../.venv3/lib64/python3.11/site-packages/django/utils/deprecation.py:122: in __call__
response = self.process_response(request, response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../../../../.venv3/lib64/python3.11/site-packages/django/contrib/sessions/middleware.py:59: in process_response
request.session.save()
../../../../.venv3/lib64/python3.11/site-packages/django/contrib/sessions/backends/file.py:171: in save
os.write(output_file_fd, self.encode(session_data).encode())
^^^^^^^^^^^^^^^^^^^^^^^^^
../../../../.venv3/lib64/python3.11/site-packages/django/contrib/sessions/backends/base.py:124: in encode
return signing.dumps(
../../../../.venv3/lib64/python3.11/site-packages/django/core/signing.py:150: in dumps
return TimestampSigner(key=key, salt=salt).sign_object(
../../../../.venv3/lib64/python3.11/site-packages/django/core/signing.py:225: in sign_object
data = serializer().dumps(obj)
^^^^^^^^^^^^^^^^^^^^^^^
../../../../.venv3/lib64/python3.11/site-packages/django/core/signing.py:125: in dumps
return json.dumps(obj, separators=(",", ":")).encode("latin-1")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib64/python3.11/json/__init__.py:238: in dumps
**kw).encode(obj)
^^^^^^^^^^^
/usr/lib64/python3.11/json/encoder.py:200: in encode
chunks = self.iterencode(o, _one_shot=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib64/python3.11/json/encoder.py:258: in iterencode
return _iterencode(o, 0)
^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <json.encoder.JSONEncoder object at 0x7f88f1d8cdd0>
o = datetime.datetime(2025, 10, 21, 4, 21, 15, 493736)
def default(self, o):
"""Implement this method in a subclass such that it returns
a serializable object for ``o``, or calls the base implementation
(to raise a ``TypeError``).
For example, to support arbitrary iterators, you could
implement default like this::
def default(self, o):
try:
iterable = iter(o)
except TypeError:
pass
else:
return list(iterable)
# Let the base class default method raise the TypeError
return super().default(o)
"""
> raise TypeError(f'Object of type {o.__class__.__name__} '
f'is not JSON serializable')
E TypeError: Object of type datetime is not JSON serializable
/usr/lib64/python3.11/json/encoder.py:180: TypeError