summary refs log tree commit diff
path: root/pkgs/development/python-modules/ihatemoney/default.nix
blob: dafea4e2cb20ec50473a9acac71e183b475d68d1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
{ lib
, buildPythonPackage
, pythonOlder
, nixosTests
, fetchPypi
, alembic
, aniso8601
, babel
, blinker
, cachetools
, click
, dnspython
, email_validator
, flask
, flask-babel
, flask-cors
, flask_mail
, flask_migrate
, flask-restful
, flask_sqlalchemy
, flask-talisman
, flask-wtf
, debts
, idna
, itsdangerous
, jinja2
, Mako
, markupsafe
, python-dateutil
, pytz
, requests
, sqlalchemy
, sqlalchemy-utils
, sqlalchemy-continuum
, sqlalchemy-i18n
, werkzeug
, wtforms
, psycopg2 # optional, for postgresql support
, flask-testing
, pytestCheckHook
}:

buildPythonPackage rec {
  pname = "ihatemoney";
  version = "5.2.0";
  format = "setuptools";

  disabled = pythonOlder "3.7";

  src = fetchPypi {
    inherit pname version;
    sha256 = "sha256-uQgZBbpqqbZYHpR+GwHWX0c7di2rVvEz0jPRY6+BkkQ=";
  };

  propagatedBuildInputs = [
    aniso8601
    babel
    blinker
    cachetools
    click
    debts
    dnspython
    email_validator
    flask
    flask_mail
    flask_migrate
    flask-wtf
    flask-babel
    flask-cors
    flask-restful
    flask-talisman
    idna
    itsdangerous
    jinja2
    Mako
    markupsafe
    psycopg2
    python-dateutil
    pytz
    requests
    sqlalchemy
    sqlalchemy-continuum
    werkzeug
    wtforms
  ];

  postPatch = ''
    substituteInPlace setup.cfg \
      --replace "cachetools>=4.1,<5" "cachetools>=4.1" \
      --replace "SQLAlchemy>=1.3.0,<1.4" "SQLAlchemy>=1.3.0,<1.5" \
      --replace "WTForms>=2.3.1,<3.1" "WTForms"
  '';

  checkInputs = [
    flask-testing
    pytestCheckHook
  ];

  pythonImportsCheck = [
    "ihatemoney"
  ];

  disabledTests = [
    # Requires running service
    "test_notifications"
    "test_invite"
    "test_access_other_projects"
    "test_authentication"
    "test_manage_bills"
    "test_member_delete_method"
    "test_membership"
    "test_bill_add_remove_add"
    "test_clear_ip_records"
    "test_disable_clear_no_new_records"
    "test_logs_for_common_actions"
    # Requires DNS resolution
    "test_invitation_email_failure"
  ];

  passthru.tests = {
    inherit (nixosTests.ihatemoney) ihatemoney-postgresql ihatemoney-sqlite;
  };

  meta = with lib; {
    description = "Shared budget manager web application";
    homepage = "https://ihatemoney.org";
    license = licenses.beerware;
    maintainers = with maintainers; [ symphorien ];
  };
}