From b59765289c3993b0a7029cd7407c94c139488220 Mon Sep 17 00:00:00 2001 From: Jonas Heinrich Date: Sun, 20 Oct 2024 09:15:19 +0000 Subject: [PATCH 1/2] froide: init at 0-unstable-2024-11-22 --- .../fr/froide/django_42_storages.patch | 19 ++ pkgs/by-name/fr/froide/package.nix | 174 ++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 3 files changed, 195 insertions(+) create mode 100644 pkgs/by-name/fr/froide/django_42_storages.patch create mode 100644 pkgs/by-name/fr/froide/package.nix diff --git a/pkgs/by-name/fr/froide/django_42_storages.patch b/pkgs/by-name/fr/froide/django_42_storages.patch new file mode 100644 index 0000000000000..28f7f25793fb5 --- /dev/null +++ b/pkgs/by-name/fr/froide/django_42_storages.patch @@ -0,0 +1,19 @@ +diff --git a/froide/settings.py b/froide/settings.py +index 428349cb..1e1bd7a8 100644 +--- a/froide/settings.py ++++ b/froide/settings.py +@@ -867,9 +867,11 @@ class Production(Base): + + ALLOWED_HOSTS = values.TupleValue(("example.com",)) + CELERY_TASK_ALWAYS_EAGER = values.BooleanValue(False) +- STATICFILES_STORAGE = ( +- "django.contrib.staticfiles.storage.ManifestStaticFilesStorage" +- ) ++ STORAGES = { ++ 'staticfiles': { ++ 'BACKEND': 'django.contrib.staticfiles.storage.StaticFilesStorage', ++ }, ++ } + + + class SSLSite(object): diff --git a/pkgs/by-name/fr/froide/package.nix b/pkgs/by-name/fr/froide/package.nix new file mode 100644 index 0000000000000..e33a08bfb9daf --- /dev/null +++ b/pkgs/by-name/fr/froide/package.nix @@ -0,0 +1,174 @@ +{ + lib, + python3Packages, + fetchFromGitHub, + makeWrapper, + gdal, + geos, + pnpm, + nodejs, + postgresql, + postgresqlTestHook, + playwright-driver, +}: +let + + python = python3Packages.python.override { + packageOverrides = self: super: { django = super.django.override { withGdal = true; }; }; + }; + +in +python.pkgs.buildPythonApplication rec { + pname = "froide"; + version = "0-unstable-2024-11-22"; + pyproject = true; + + src = fetchFromGitHub { + owner = "okfde"; + repo = "froide"; + rev = "a90f5c4d40b46a161111eefdc84e5214e85715b0"; + hash = "sha256-Q+iNI3yqxqAtDONHY+SaZeMyjY6hqTxwy7YmiiY94+0="; + }; + + patches = [ ./django_42_storages.patch ]; + + pythonRelaxDeps = [ + "pikepdf" + "channels" + ]; + + build-system = [ python.pkgs.setuptools ]; + + nativeBuildInputs = [ + makeWrapper + nodejs + pnpm.configHook + ]; + + dependencies = with python.pkgs; [ + bleach + celery + celery-singleton + channels + coreapi + dj-database-url + django + django-celery-beat + django-celery-email + django-configurations + django-contrib-comments + django-crossdomainmedia + django-elasticsearch-dsl + django-filingcabinet + django-filter + # Project discontinued upstream + # https://github.com/okfde/froide/issues/893 + django-fsm + django-json-widget + django-leaflet + django-mfa3 + django-oauth-toolkit + django-parler + django-storages + django-taggit + django-treebeard + djangorestframework + djangorestframework-csv + djangorestframework-jsonp + drf-spectacular + drf-spectacular-sidecar + easy-thumbnails + elasticsearch + elasticsearch-dsl + geoip2 + icalendar + markdown + phonenumbers + pillow + pikepdf + psycopg + pygtail + pyisemail + pypdf + python-magic + python-mimeparse + python-slugify + requests + wand + weasyprint + websockets + ]; + + pnpmDeps = pnpm.fetchDeps { + inherit pname version src; + hash = "sha256-DMoaXNm5S64XBERHFnFM6IKBkzXRGDEYWSTruccK9Hc="; + }; + + postBuild = '' + pnpm run build + ''; + + postInstall = '' + cp -r build manage.py $out/${python.sitePackages}/froide/ + makeWrapper $out/${python.sitePackages}/froide/manage.py $out/bin/froide \ + --prefix PYTHONPATH : "$PYTHONPATH" \ + --set GDAL_LIBRARY_PATH "${gdal}/lib/libgdal.so" \ + --set GEOS_LIBRARY_PATH "${geos}/lib/libgeos_c.so" + ''; + + nativeCheckInputs = with python.pkgs; [ + (postgresql.withPackages (p: [ p.postgis ])) + postgresqlTestHook + pytest-django + pytest-playwright + pytestCheckHook + ]; + + checkInputs = with python.pkgs; [ + beautifulsoup4 + pytest-factoryboy + time-machine + ]; + + disabledTests = [ + # Requires network connection: elastic_transport.ConnectionError + "test_search_similar" + "test_search" + "test_list_requests" + "test_list_jurisdiction_requests" + "test_tagged_requests" + "test_publicbody_requests" + "test_feed" + "test_request_list_filter_pagination" + "test_request_list_path_filter" + "test_web_page" + "test_autocomplete" + "test_list_no_identical" + "test_set_status" + "test_make_not_logged_in_request" + "test_make_logged_in_request" + # TypeError: Pygtail.with_offsets() got an unexpected keyword argument + "test_email_signal" + "test_pygtail_log_append" + "test_bouncing_email" + "test_multiple_partial" + "test_logfile_rotation" + ]; + + preCheck = '' + export PGUSER="froide" + export postgresqlEnableTCP=1 + export postgresqlTestUserOptions="LOGIN SUPERUSER" + export GDAL_LIBRARY_PATH="${gdal}/lib/libgdal.so" + export GEOS_LIBRARY_PATH="${geos}/lib/libgeos_c.so" + export PLAYWRIGHT_BROWSERS_PATH="${playwright-driver.browsers}" + ''; + + meta = { + description = "Freedom of Information Portal"; + homepage = "https://github.com/okfde/froide"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.onny ]; + mainProgram = "froide"; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index c4cd60b6fad7b..e2def4862c7ed 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4888,6 +4888,8 @@ self: super: with self; { fritzconnection = callPackage ../development/python-modules/fritzconnection { }; + froide = toPythonModule (pkgs.froide.override { python3Packages = self; }); + frozendict = callPackage ../development/python-modules/frozendict { }; frozenlist = callPackage ../development/python-modules/frozenlist { }; From a488b52c8ff0db4f3a96c7dc1c64a0a42dcebd92 Mon Sep 17 00:00:00 2001 From: Jonas Heinrich Date: Mon, 25 Nov 2024 18:39:34 +0100 Subject: [PATCH 2/2] python3Packages.django-fsm: init at 3.0.0 --- .../python-modules/django-fsm/default.nix | 42 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 44 insertions(+) create mode 100644 pkgs/development/python-modules/django-fsm/default.nix diff --git a/pkgs/development/python-modules/django-fsm/default.nix b/pkgs/development/python-modules/django-fsm/default.nix new file mode 100644 index 0000000000000..3e4c8819020a6 --- /dev/null +++ b/pkgs/development/python-modules/django-fsm/default.nix @@ -0,0 +1,42 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + django, + python3, + django-guardian, +}: + +buildPythonPackage rec { + pname = "django-fsm"; + version = "3.0.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "viewflow"; + repo = "django-fsm"; + rev = "refs/tags/${version}"; + hash = "sha256-woN0F4hTaPk8HTGNT6zQlZDJ9SCVRut9maKSlDmalUE="; + }; + + build-system = [ setuptools ]; + + dependencies = [ django ]; + + checkInputs = [ django-guardian ]; + + checkPhase = '' + ${python3.interpreter} tests/manage.py test + ''; + + pythonImportsCheck = [ "django_fsm" ]; + + meta = { + description = "Django friendly finite state machine support"; + homepage = "https://github.com/viewflow/django-fsm"; + license = lib.licenses.mit; + knownVulnerabilities = [ "Package is marked as discontinued upstream." ]; + maintainers = [ lib.maintainers.onny ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index e2def4862c7ed..0c0ed15e70372 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -3440,6 +3440,8 @@ self: super: with self; { django-formset-js-improved = callPackage ../development/python-modules/django-formset-js-improved { }; + django-fsm = callPackage ../development/python-modules/django-fsm { }; + django-graphiql-debug-toolbar = callPackage ../development/python-modules/django-graphiql-debug-toolbar { }; django-gravatar2 = callPackage ../development/python-modules/django-gravatar2 { };