174 lines
3.8 KiB
Nix
174 lines
3.8 KiB
Nix
{
|
|
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";
|
|
};
|
|
}
|