1{
2 lib,
3 buildNpmPackage,
4 buildPythonPackage,
5 pythonOlder,
6 fetchFromGitHub,
7 setuptools,
8 django,
9}:
10let
11 pname = "django-admin-sortable2";
12 version = "2.2.8";
13
14 src = fetchFromGitHub {
15 owner = "jrief";
16 repo = "django-admin-sortable2";
17 tag = version;
18 hash = "sha256-T5dppM/o305GCg5uU7re/FdjhXFUyiH/DO2JTVf6Xgg=";
19 };
20
21 assets = buildNpmPackage {
22 pname = "${pname}-assets";
23 inherit version src;
24 npmDepsHash = "sha256-zM2iSCrGX5sS7Ysmmo8nR+/V9pMOatN6DX/G+hGdFEU=";
25
26 installPhase = ''
27 runHook preInstall
28
29 install -Dm644 adminsortable2/static/adminsortable2/js/*.js -t $out
30
31 runHook postInstall
32 '';
33 };
34in
35
36buildPythonPackage rec {
37 inherit pname version src;
38 pyproject = true;
39
40 disabled = pythonOlder "3.9";
41
42 build-system = [ setuptools ];
43
44 dependencies = [ django ];
45
46 preBuild = ''
47 install -Dm644 ${assets}/*.js -t adminsortable2/static/adminsortable2/js
48 '';
49
50 pythonImportsCheck = [ "adminsortable2" ];
51
52 # Tests are very slow (end-to-end with playwright)
53 doCheck = false;
54
55 meta = {
56 description = "Generic drag-and-drop ordering for objects in the Django admin interface";
57 homepage = "https://github.com/jrief/django-admin-sortable2";
58 changelog = "https://github.com/jrief/django-admin-sortable2/blob/${src.tag}/CHANGELOG.md";
59 license = lib.licenses.mit;
60 maintainers = with lib.maintainers; [ sephi ];
61 };
62}