1{
2 lib,
3 buildPythonPackage,
4 braintree,
5 cryptography,
6 django,
7 django-phonenumber-field,
8 fetchFromGitHub,
9 mercadopago,
10 pythonOlder,
11 requests,
12 setuptools-scm,
13 sphinx-rtd-theme,
14 stripe,
15 xmltodict,
16}:
17
18buildPythonPackage rec {
19 pname = "django-payments";
20 version = "2.0.0";
21 format = "setuptools";
22
23 disabled = pythonOlder "3.7";
24
25 src = fetchFromGitHub {
26 owner = "jazzband";
27 repo = "django-payments";
28 rev = "refs/tags/v${version}";
29 hash = "sha256-6WPV08CV+rko/tRnsT5GyTGYaJbiIKTvpisfRwizBIo=";
30 };
31
32 postPatch = ''
33 substituteInPlace setup.py \
34 --replace "django-phonenumber-field[phonenumberslite]" "django-phonenumber-field"
35 '';
36
37 nativeBuildInputs = [ setuptools-scm ];
38
39 propagatedBuildInputs = [
40 django
41 django-phonenumber-field
42 requests
43 ] ++ django-phonenumber-field.optional-dependencies.phonenumbers;
44
45 # require internet connection
46 doCheck = false;
47
48 pythonImportsCheck = [ "payments" ];
49
50 passthru.optional-dependencies = {
51 all = [
52 braintree # suds-community
53 mercadopago
54 cryptography
55 xmltodict
56 stripe
57 ];
58 braintree = [ braintree ];
59 cybersource = [
60 # suds-community
61 ];
62 docs = [ sphinx-rtd-theme ];
63 mercadopago = [ mercadopago ];
64 sagepay = [ cryptography ];
65 sofort = [ xmltodict ];
66 stripe = [ stripe ];
67 };
68
69 meta = with lib; {
70 description = "Universal payment handling for Django.";
71 homepage = "https://github.com/jazzband/django-payments/";
72 changelog = "https://github.com/jazzband/django-payments/releases/tag/v${version}";
73 license = licenses.bsd3;
74 maintainers = with maintainers; [ derdennisop ];
75 };
76}