{ stdenv
, python3Packages
, withPostgresql ? true
}:

with stdenv.lib;

python3Packages.buildPythonApplication rec {
  pname = "trytond";
  version = "5.6.2";
  src = python3Packages.fetchPypi {
    inherit pname version;
    sha256 = "0mlfl34zmmqrwip39mvhkk0h6dsljqwff2mk1ldahm253d4vzflp";
  };

  # Tells the tests which database to use
  DB_NAME = ":memory:";

  buildInputs = with python3Packages; [
    mock
  ];
  propagatedBuildInputs = with python3Packages; [
    lxml
    relatorio
    genshi
    dateutil
    polib
    python-sql
    werkzeug
    wrapt
    passlib

    # extra dependencies
    bcrypt
    pydot
    python-Levenshtein
    simplejson
    html2text
  ] ++ stdenv.lib.optional withPostgresql psycopg2;

  # If unset, trytond will try to mkdir /homeless-shelter
  preCheck = ''
    export HOME=$(mktemp -d)
  '';

  meta = {
    description = "The server of the Tryton application platform";
    longDescription = ''
      The server for Tryton, a three-tier high-level general purpose
      application platform under the license GPL-3 written in Python and using
      PostgreSQL as database engine.

      It is the core base of a complete business solution providing
      modularity, scalability and security.
    '';
    homepage = "http://www.tryton.org/";
    license = licenses.gpl3Plus;
    maintainers = with maintainers; [ udono johbo ];
  };
}