diff --git a/pkgs/development/python-modules/django-filingcabinet/default.nix b/pkgs/development/python-modules/django-filingcabinet/default.nix new file mode 100644 index 000000000000..85ea4c200a18 --- /dev/null +++ b/pkgs/development/python-modules/django-filingcabinet/default.nix @@ -0,0 +1,131 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + django, + pytestCheckHook, + setuptools, + celery, + django-taggit, + feedgen, + reportlab, + jsonschema, + wand, + django-filter, + django-treebeard, + djangorestframework, + pikepdf, + pypdf, + pycryptodome, + python-poppler, + zipstream-ng, + django-json-widget, + factory-boy, + pytest-django, + camelot, + pytesseract, + pytest-factoryboy, + poppler_utils, + pytest-playwright, + playwright-driver, + pnpm, + nodejs, +}: + +buildPythonPackage rec { + pname = "django-filingcabinet"; + version = "0-unstable-2024-11-15"; + pyproject = true; + + src = fetchFromGitHub { + owner = "okfde"; + repo = "django-filingcabinet"; + # No release tagged yet on GitHub + # https://github.com/okfde/django-filingcabinet/issues/69 + rev = "33c88e1ca9fccd0ea70f8b609580eeec486bda5c"; + hash = "sha256-p7VJUiO7dhTR+S3/4QrmrQeJO6xGj7D7I8W3CBF+jo8="; + }; + + postPatch = '' + substituteInPlace pyproject.toml \ + --replace-fail "zipstream" "zipstream-ng" + ''; + + build-system = [ setuptools ]; + + nativeBuildInputs = [ + nodejs + pnpm.configHook + ]; + + dependencies = [ + celery + django + django-filter + django-json-widget + django-taggit + django-treebeard + djangorestframework + feedgen + jsonschema + pikepdf + pycryptodome + pypdf + python-poppler + reportlab + wand + zipstream-ng + ]; + + optional-dependencies = { + tabledetection = [ camelot ]; + ocr = [ pytesseract ]; + # Dependencies not yet packaged + #webp = [ webp ]; + #annotate = [ fcdocs-annotate ]; + }; + + pnpmDeps = pnpm.fetchDeps { + inherit pname version src; + hash = "sha256-32kOhB2+37DD4hKXKep08iDxhXpasKPfcv9fkwISxeU="; + }; + + postBuild = '' + pnpm run build + ''; + + postInstall = '' + cp -r build $out/ + ''; + + nativeCheckInputs = [ + poppler_utils + pytest-django + pytest-factoryboy + pytest-playwright + pytestCheckHook + ]; + + disabledTests = [ + # AssertionError: Locator expected to be visible + "test_keyboard_scroll" + "test_number_input_scroll" + # playwright._impl._errors.TimeoutError: Locator.click: Timeout 30000ms exceeded + "test_sidebar_hide" + "test_show_search_bar" + ]; + + preCheck = '' + export DJANGO_SETTINGS_MODULE="test_project.settings" + export PLAYWRIGHT_BROWSERS_PATH="${playwright-driver.browsers}" + ''; + + pythonImportCheck = [ "filingcabinet" ]; + + meta = { + description = "Django app that manages documents with pages, annotations and collections"; + homepage = "https://github.com/okfde/django-filingcabinet"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.onny ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 17438d55f238..d639e153ca79 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -3433,6 +3433,8 @@ self: super: with self; { django-filer = callPackage ../development/python-modules/django-filer { }; + django-filingcabinet = callPackage ../development/python-modules/django-filingcabinet { }; + django-filter = callPackage ../development/python-modules/django-filter { }; django-formtools = callPackage ../development/python-modules/django-formtools { };