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