From 8cedca33d90f763a224f89b8f084e335493f009f Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Sat, 18 Apr 2026 02:14:15 +0200 Subject: [PATCH] pretalx: 2025.2.2 -> 2026.1.0 https://pretalx.com/p/news/releasing-pretalx-2026-1-0/ https://docs.pretalx.org/changelog/v2026.1.0/ Fixes: GHSA-jm8c-9f3j-4378, GHSA-jm8c-9f3j-4378 --- pkgs/by-name/pr/pretalx/package.nix | 46 +++++--------------- pkgs/by-name/pr/pretalx/rebuild-no-npm.patch | 8 ++-- 2 files changed, 15 insertions(+), 39 deletions(-) diff --git a/pkgs/by-name/pr/pretalx/package.nix b/pkgs/by-name/pr/pretalx/package.nix index c15867c1ca82..9c934bb5a4e7 100644 --- a/pkgs/by-name/pr/pretalx/package.nix +++ b/pkgs/by-name/pr/pretalx/package.nix @@ -2,38 +2,27 @@ lib, buildNpmPackage, gettext, - python3, + python314, fetchFromGitHub, plugins ? [ ], nixosTests, }: let - python = python3.override { + python = python314.override { self = python; packageOverrides = final: prev: { - django = prev.django_5; - - django-countries = prev.django-countries.overridePythonAttrs (oldAttrs: rec { - version = "8.1.0"; - src = fetchFromGitHub { - owner = "SmileyChris"; - repo = "django-countries"; - tag = "v${version}"; - hash = "sha256-KtBFSkYNKwivCFlqlWm4idiMybqsqiV0SNZx3egLl6c="; - }; - build-system = with final; [ uv-build ]; - }); + django = prev.django_6; }; }; - version = "2025.2.2"; + version = "2026.1.0"; src = fetchFromGitHub { owner = "pretalx"; repo = "pretalx"; tag = "v${version}"; - hash = "sha256-2qru52/ZALBAdRh0I+3VimVsiRl71YZgbSUD/LdoA/0="; + hash = "sha256-oSqeqVQ/L6DBI2ZP0h+qz2QBB4evt7V99tLMTkXvAic="; }; meta = { @@ -55,7 +44,7 @@ let sourceRoot = "${src.name}/src/pretalx/frontend/schedule-editor"; - npmDepsHash = "sha256-voHiml0nFWZIST39D5ErB0xTiWAOHN9OZinYutuQcdg="; + npmDepsHash = "sha256-66PA2COL3lqMspYGoF/bOJje5URRu1voQbZspM7DTxs="; npmBuildScript = "build"; @@ -131,10 +120,8 @@ python.pkgs.buildPythonApplication rec { diff-match-patch django django-context-decorator - django-countries django-csp django-filter - django-formset-js-improved django-formtools django-hierarkey django-i18nfield @@ -159,6 +146,7 @@ python.pkgs.buildPythonApplication rec { ] ++ beautifulsoup4.optional-dependencies.lxml ++ django.optional-dependencies.argon2 + ++ whitenoise.optional-dependencies.brotli ++ plugins; optional-dependencies = { @@ -194,15 +182,16 @@ python.pkgs.buildPythonApplication rec { preCheck = '' export PRETALX_CONFIG_FILE="$src/src/tests/ci_sqlite.cfg" - cd src ''; nativeCheckInputs = with python.pkgs; [ faker + factory-boy freezegun jsonschema + polib pytest-cov-stub pytest-django pytest-mock @@ -213,21 +202,8 @@ python.pkgs.buildPythonApplication rec { ++ lib.concatAttrValues optional-dependencies; disabledTests = [ - # tries to run npm run i18n:extract - "test_common_custom_makemessages_does_not_blow_up" - # Expected to perform X queries or less but Y were done - "test_can_see_schedule" - "test_schedule_export_public" - "test_schedule_frab_json_export" - "test_schedule_frab_xcal_export" - "test_schedule_frab_xml_export" - "test_schedule_frab_xml_export_control_char" - "test_schedule_page_text_list" - "test_schedule_page_text_table" - "test_schedule_page_text_wrong_format" - "test_versioned_schedule_page" - # Test is racy - "test_can_reset_password_by_email" + # assert 'tests.dummy_app' in ['pretalx_pages'] + "test_event_wizard_plugin_form_init_creates_field_for_installed_plugins" ]; passthru = { diff --git a/pkgs/by-name/pr/pretalx/rebuild-no-npm.patch b/pkgs/by-name/pr/pretalx/rebuild-no-npm.patch index 579a630cda5f..0ca15e4fbd7c 100644 --- a/pkgs/by-name/pr/pretalx/rebuild-no-npm.patch +++ b/pkgs/by-name/pr/pretalx/rebuild-no-npm.patch @@ -1,8 +1,8 @@ diff --git a/src/pretalx/common/management/commands/rebuild.py b/src/pretalx/common/management/commands/rebuild.py -index 45c83aab3..8c8c1e590 100644 +index b7412498f..f9e2e24c3 100644 --- a/src/pretalx/common/management/commands/rebuild.py +++ b/src/pretalx/common/management/commands/rebuild.py -@@ -45,16 +45,6 @@ def handle(self, *args, **options): +@@ -57,16 +57,6 @@ def handle(self, *args, **options): call_command( "collectstatic", verbosity=silent, interactive=False, clear=options["clear"] ) @@ -14,8 +14,8 @@ index 45c83aab3..8c8c1e590 100644 - env["OUT_DIR"] = str(settings.STATIC_ROOT) - env["BASE_URL"] = settings.STATIC_URL - if options["npm_install"] or not (frontend_dir / "node_modules").exists(): -- subprocess.check_call(["npm", "ci"], cwd=frontend_dir) -- subprocess.check_call(["npm", "run", "build"], cwd=frontend_dir, env=env) +- subprocess.check_call(["npm", "ci"], cwd=frontend_dir) # noqa: S607 -- npm is commonly installed in user paths +- subprocess.check_call(["npm", "run", "build"], cwd=frontend_dir, env=env) # noqa: S607 -- npm is commonly installed in user paths # This fails if we don't have db access, which is fine with suppress(Exception):