1{
2 lib,
3 stdenv,
4 buildPythonPackage,
5 fetchPypi,
6 pythonOlder,
7 setuptools,
8 defusedxml,
9 lxml,
10 relatorio,
11 genshi,
12 python-dateutil,
13 polib,
14 python-sql,
15 werkzeug,
16 passlib,
17 pydot,
18 levenshtein,
19 html2text,
20 weasyprint,
21 gevent,
22 pillow,
23 withPostgresql ? true,
24 psycopg2,
25 unittestCheckHook,
26}:
27
28buildPythonPackage rec {
29 pname = "trytond";
30 version = "7.2.6";
31 pyproject = true;
32
33 disabled = pythonOlder "3.7";
34
35 src = fetchPypi {
36 inherit pname version;
37 hash = "sha256-Vz1bYIwhvH8SHZnmv9ZuaoOnNe378gtIWK2UQDBQxas=";
38 };
39
40 build-system = [ setuptools ];
41
42 dependencies =
43 [
44 defusedxml
45 lxml
46 relatorio
47 genshi
48 python-dateutil
49 polib
50 python-sql
51 werkzeug
52 passlib
53
54 # extra dependencies
55 pydot
56 levenshtein
57 html2text
58 weasyprint
59 gevent
60 pillow
61 ]
62 ++ relatorio.optional-dependencies.fodt
63 ++ passlib.optional-dependencies.bcrypt
64 ++ passlib.optional-dependencies.argon2
65 ++ lib.optional withPostgresql psycopg2;
66
67 nativeCheckInputs = [ unittestCheckHook ];
68
69 preCheck = ''
70 export HOME=$(mktemp -d)
71 export TRYTOND_DATABASE_URI="sqlite://"
72 export DB_NAME=":memory:";
73 '';
74
75 unittestFlagsArray = [
76 "-s"
77 "trytond.tests"
78 ];
79
80 meta = with lib; {
81 description = "Server of the Tryton application platform";
82 longDescription = ''
83 The server for Tryton, a three-tier high-level general purpose
84 application platform under the license GPL-3 written in Python and using
85 PostgreSQL as database engine.
86
87 It is the core base of a complete business solution providing
88 modularity, scalability and security.
89 '';
90 homepage = "http://www.tryton.org/";
91 changelog = "https://foss.heptapod.net/tryton/tryton/-/blob/trytond-${version}/trytond/CHANGELOG?ref_type=tags";
92 license = licenses.gpl3Plus;
93 broken = stdenv.isDarwin;
94 maintainers = with maintainers; [
95 udono
96 johbo
97 ];
98 };
99}