diff --git a/src/backend/core/tests/documents/test_api_documents_search_descendants.py b/src/backend/core/tests/documents/test_api_documents_search_descendants.py index a97321bbed..df3f336363 100644 --- a/src/backend/core/tests/documents/test_api_documents_search_descendants.py +++ b/src/backend/core/tests/documents/test_api_documents_search_descendants.py @@ -68,8 +68,8 @@ def test_api_documents_search_descendants_list_anonymous_public_standalone(): }, { "abilities": child1.get_abilities(AnonymousUser()), - "ancestors_link_reach": document.link_reach, - "ancestors_link_role": document.link_role, + "ancestors_link_reach": child1.ancestors_link_reach, + "ancestors_link_role": child1.ancestors_link_role, "computed_link_reach": child1.computed_link_reach, "computed_link_role": child1.computed_link_role, "created_at": child1.created_at.isoformat().replace("+00:00", "Z"), @@ -91,10 +91,8 @@ def test_api_documents_search_descendants_list_anonymous_public_standalone(): }, { "abilities": grand_child.get_abilities(AnonymousUser()), - "ancestors_link_reach": document.link_reach, - "ancestors_link_role": document.link_role - if (child1.link_reach == "public" and child1.link_role == "editor") - else document.link_role, + "ancestors_link_reach": grand_child.ancestors_link_reach, + "ancestors_link_role": grand_child.ancestors_link_role, "computed_link_reach": "public", "computed_link_role": grand_child.computed_link_role, "created_at": grand_child.created_at.isoformat().replace("+00:00", "Z"), @@ -116,8 +114,8 @@ def test_api_documents_search_descendants_list_anonymous_public_standalone(): }, { "abilities": child2.get_abilities(AnonymousUser()), - "ancestors_link_reach": document.link_reach, - "ancestors_link_role": document.link_role, + "ancestors_link_reach": child2.ancestors_link_reach, + "ancestors_link_role": child2.ancestors_link_role, "computed_link_reach": "public", "computed_link_role": child2.computed_link_role, "created_at": child2.created_at.isoformat().replace("+00:00", "Z"), @@ -180,7 +178,7 @@ def test_api_documents_search_descendants_list_anonymous_public_parent(): # the search should include the parent document itself "abilities": document.get_abilities(AnonymousUser()), "ancestors_link_reach": "public", - "ancestors_link_role": grand_parent.link_role, + "ancestors_link_role": document.ancestors_link_role, "computed_link_reach": document.computed_link_reach, "computed_link_role": document.computed_link_role, "created_at": document.created_at.isoformat().replace("+00:00", "Z"), @@ -203,7 +201,7 @@ def test_api_documents_search_descendants_list_anonymous_public_parent(): { "abilities": child1.get_abilities(AnonymousUser()), "ancestors_link_reach": "public", - "ancestors_link_role": grand_parent.link_role, + "ancestors_link_role": child1.ancestors_link_role, "computed_link_reach": child1.computed_link_reach, "computed_link_role": child1.computed_link_role, "created_at": child1.created_at.isoformat().replace("+00:00", "Z"), @@ -249,7 +247,7 @@ def test_api_documents_search_descendants_list_anonymous_public_parent(): { "abilities": child2.get_abilities(AnonymousUser()), "ancestors_link_reach": "public", - "ancestors_link_role": grand_parent.link_role, + "ancestors_link_role": child2.ancestors_link_role, "computed_link_reach": "public", "computed_link_role": child2.computed_link_role, "created_at": child2.created_at.isoformat().replace("+00:00", "Z"), @@ -327,7 +325,7 @@ def test_api_documents_search_descendants_list_authenticated_unrelated_public_or { "abilities": child1.get_abilities(user), "ancestors_link_reach": reach, - "ancestors_link_role": document.link_role, + "ancestors_link_role": child1.ancestors_link_role, "computed_link_reach": child1.computed_link_reach, "computed_link_role": child1.computed_link_role, "created_at": child1.created_at.isoformat().replace("+00:00", "Z"), @@ -350,7 +348,7 @@ def test_api_documents_search_descendants_list_authenticated_unrelated_public_or { "abilities": grand_child.get_abilities(user), "ancestors_link_reach": reach, - "ancestors_link_role": document.link_role, + "ancestors_link_role": grand_child.ancestors_link_role, "computed_link_reach": grand_child.computed_link_reach, "computed_link_role": grand_child.computed_link_role, "created_at": grand_child.created_at.isoformat().replace("+00:00", "Z"), @@ -373,7 +371,7 @@ def test_api_documents_search_descendants_list_authenticated_unrelated_public_or { "abilities": child2.get_abilities(user), "ancestors_link_reach": reach, - "ancestors_link_role": document.link_role, + "ancestors_link_role": child2.ancestors_link_role, "computed_link_reach": child2.computed_link_reach, "computed_link_role": child2.computed_link_role, "created_at": child2.created_at.isoformat().replace("+00:00", "Z"), @@ -437,7 +435,7 @@ def test_api_documents_search_descendants_list_authenticated_public_or_authentic { "abilities": child1.get_abilities(user), "ancestors_link_reach": reach, - "ancestors_link_role": grand_parent.link_role, + "ancestors_link_role": child1.ancestors_link_role, "computed_link_reach": child1.computed_link_reach, "computed_link_role": child1.computed_link_role, "created_at": child1.created_at.isoformat().replace("+00:00", "Z"), @@ -460,7 +458,7 @@ def test_api_documents_search_descendants_list_authenticated_public_or_authentic { "abilities": grand_child.get_abilities(user), "ancestors_link_reach": reach, - "ancestors_link_role": grand_parent.link_role, + "ancestors_link_role": grand_child.ancestors_link_role, "computed_link_reach": grand_child.computed_link_reach, "computed_link_role": grand_child.computed_link_role, "created_at": grand_child.created_at.isoformat().replace("+00:00", "Z"), @@ -483,7 +481,7 @@ def test_api_documents_search_descendants_list_authenticated_public_or_authentic { "abilities": child2.get_abilities(user), "ancestors_link_reach": reach, - "ancestors_link_role": grand_parent.link_role, + "ancestors_link_role": child2.ancestors_link_role, "computed_link_reach": child2.computed_link_reach, "computed_link_role": child2.computed_link_role, "created_at": child2.created_at.isoformat().replace("+00:00", "Z"), diff --git a/src/backend/pyproject.toml b/src/backend/pyproject.toml index bd797c0b52..3e0fc0f6e0 100644 --- a/src/backend/pyproject.toml +++ b/src/backend/pyproject.toml @@ -26,7 +26,7 @@ readme = "README.md" requires-python = ">=3.12" dependencies = [ "beautifulsoup4==4.14.3", - "boto3==1.42.59", + "boto3==1.42.93", "Brotli==1.2.0", "celery[redis]==5.5.3", "django-configurations==2.5.1", @@ -34,38 +34,38 @@ dependencies = [ "django-countries==8.2.0", "django-csp==4.0", "django-filter==25.2", - "django-lasuite[all]==0.0.24", + "django-lasuite[all]==0.0.26", "django-parler==2.3", "django-redis==6.0.0", "django-storages[s3]==1.14.6", "django-timezone-field>=5.1", "django<6.0.0", "django-treebeard<5.0.0", - "djangorestframework==3.16.1", + "djangorestframework==3.17.1", "django-waffle==5.0.0", "drf_spectacular==0.29.0", - "dockerflow==2026.1.26", + "dockerflow==2026.3.4", "easy_thumbnails==2.10.1", "emoji==2.15.0", "factory_boy==3.3.3", - "gunicorn==25.1.0", + "gunicorn==25.3.0", "jsonschema==4.26.0", "langfuse==3.11.2", "lxml==6.1.0", "markdown==3.10.2", "mozilla-django-oidc==5.0.2", "nested-multipart-parser==1.6.0", - "openai==2.24.0", + "openai==2.32.0", "psycopg[binary,pool]==3.3.3", - "pycrdt==0.12.47", - "pydantic==2.12.5", + "pycrdt==0.12.50", + "pydantic==2.13.3", "pydantic-ai-slim[openai,logfire,web]==1.58.0", - "PyJWT==2.12.0", + "PyJWT==2.12.1", "python-magic==0.4.27", "redis<6.0.0", - "requests==2.33.0", - "sentry-sdk==2.53.0", - "uvicorn==0.41.0", + "requests==2.33.1", + "sentry-sdk==2.58.0", + "uvicorn==0.45.0", "whitenoise==6.12.0", ] @@ -79,21 +79,21 @@ dependencies = [ dev = [ "django-extensions==4.1", "django-test-migrations==1.5.0", - "drf-spectacular-sidecar==2026.3.1", + "drf-spectacular-sidecar==2026.4.14", "freezegun==1.5.5", "ipdb==0.13.13", - "ipython==9.10.0", - "pyfakefs==6.1.3", + "ipython==9.12.0", + "pyfakefs==6.2.0", "pylint-django==2.7.0", "pylint<4.0.0", - "pytest-cov==7.0.0", + "pytest-cov==7.1.0", "pytest-django==4.12.0", - "pytest==9.0.2", + "pytest==9.0.3", "pytest-icdiff==0.9", "pytest-xdist==3.8.0", "responses==0.26.0", - "ruff==0.15.4", - "types-requests==2.32.4.20260107", + "ruff==0.15.11", + "types-requests==2.33.0.20260408", ] [tool.setuptools] diff --git a/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts index 6b75b45d80..c51dc5ca17 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts @@ -131,7 +131,7 @@ test.describe('Language', () => { await waitForLanguageSwitch(page, TestLanguage.French); // Check for French 404 response - await check404Response('Pas trouvé.'); + await check404Response('Non trouvé.'); }); test('it check translations of the slash menu when changing language', async ({