pretix: init at 2024.2.0
Reinventing ticket presales, one ticket at a time.
This commit is contained in:
parent
87bdd731fa
commit
1e20aea884
259
pkgs/by-name/pr/pretix/package.nix
Normal file
259
pkgs/by-name/pr/pretix/package.nix
Normal file
@ -0,0 +1,259 @@
|
||||
{ lib
|
||||
, buildNpmPackage
|
||||
, fetchFromGitHub
|
||||
, fetchPypi
|
||||
, fetchpatch2
|
||||
, nodejs
|
||||
, python3
|
||||
, gettext
|
||||
}:
|
||||
|
||||
let
|
||||
python = python3.override {
|
||||
packageOverrides = self: super: {
|
||||
django = super.django_4;
|
||||
|
||||
stripe = super.stripe.overridePythonAttrs rec {
|
||||
version = "7.9.0";
|
||||
|
||||
src = fetchPypi {
|
||||
pname = "stripe";
|
||||
inherit version;
|
||||
hash = "sha256-hOXkMINaSwzU/SpXzjhTJp0ds0OREc2mtu11LjSc9KE=";
|
||||
};
|
||||
};
|
||||
|
||||
pretix-plugin-build = self.callPackage ./plugin-build.nix { };
|
||||
};
|
||||
};
|
||||
|
||||
pname = "pretix";
|
||||
version = "2024.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pretix";
|
||||
repo = "pretix";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-emtF5dDXEXN8GIucHbjF+m9Vkg1Jj6nmQdHhBOkXMAs=";
|
||||
};
|
||||
|
||||
npmDeps = buildNpmPackage {
|
||||
pname = "pretix-node-modules";
|
||||
inherit version src;
|
||||
|
||||
sourceRoot = "${src.name}/src/pretix/static/npm_dir";
|
||||
npmDepsHash = "sha256-kE13dcTdWZZNHPMcHEiK0a2dEcu3Z3/q815YhaVkLbQ=";
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir $out
|
||||
cp -R node_modules $out/
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
};
|
||||
in
|
||||
python.pkgs.buildPythonApplication rec {
|
||||
inherit pname version src;
|
||||
pyproject = true;
|
||||
|
||||
patches = [
|
||||
# Discover pretix.plugin entrypoints during build and add them into
|
||||
# INSTALLED_APPS, so that their static files are collected.
|
||||
./plugin-build.patch
|
||||
|
||||
(fetchpatch2 {
|
||||
# Allow customization of cache and log directory
|
||||
# https://github.com/pretix/pretix/pull/3997
|
||||
name = "pretix-directory-customization.patch";
|
||||
url = "https://github.com/pretix/pretix/commit/e151d1d1f08917e547df49da0779b36bb73b7294.patch";
|
||||
hash = "sha256-lO5eCKSqUaCwSm7rouMTFMwauWl9Tz/Yf0JE/IO+bnI=";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
NODE_PREFIX=src/pretix/static.dist/node_prefix
|
||||
mkdir -p $NODE_PREFIX
|
||||
cp -R ${npmDeps}/node_modules $NODE_PREFIX/
|
||||
chmod -R u+w $NODE_PREFIX/
|
||||
|
||||
# unused
|
||||
sed -i "/setuptools-rust/d" pyproject.toml
|
||||
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail phonenumberslite phonenumbers \
|
||||
--replace-fail psycopg2-binary psycopg2 \
|
||||
--replace-fail vat_moss_forked==2020.3.20.0.11.0 vat-moss \
|
||||
--replace-fail "bleach==5.0.*" bleach \
|
||||
--replace-fail "dnspython==2.5.*" dnspython \
|
||||
--replace-fail "importlib_metadata==7.*" importlib_metadata \
|
||||
--replace-fail "protobuf==4.25.*" protobuf \
|
||||
--replace-fail "pycryptodome==3.20.*" pycryptodome \
|
||||
--replace-fail "pypdf==3.9.*" pypdf \
|
||||
--replace-fail "python-dateutil==2.8.*" python-dateutil \
|
||||
--replace-fail "sentry-sdk==1.40.*" sentry-sdk \
|
||||
--replace-fail "stripe==7.9.*" stripe
|
||||
'';
|
||||
|
||||
build-system = with python.pkgs; [
|
||||
gettext
|
||||
nodejs
|
||||
pythonRelaxDepsHook
|
||||
setuptools
|
||||
tomli
|
||||
];
|
||||
|
||||
dependencies = with python.pkgs; [
|
||||
arabic-reshaper
|
||||
babel
|
||||
beautifulsoup4
|
||||
bleach
|
||||
celery
|
||||
chardet
|
||||
cryptography
|
||||
css-inline
|
||||
defusedcsv
|
||||
dj-static
|
||||
django
|
||||
django-bootstrap3
|
||||
django-compressor
|
||||
django-countries
|
||||
django-filter
|
||||
django-formset-js-improved
|
||||
django-formtools
|
||||
django-hierarkey
|
||||
django-hijack
|
||||
django-i18nfield
|
||||
django-libsass
|
||||
django-localflavor
|
||||
django-markup
|
||||
django-oauth-toolkit
|
||||
django-otp
|
||||
django-phonenumber-field
|
||||
django-redis
|
||||
django-scopes
|
||||
django-statici18n
|
||||
djangorestframework
|
||||
dnspython
|
||||
drf-ujson2
|
||||
geoip2
|
||||
importlib-metadata
|
||||
isoweek
|
||||
jsonschema
|
||||
kombu
|
||||
libsass
|
||||
lxml
|
||||
markdown
|
||||
mt-940
|
||||
oauthlib
|
||||
openpyxl
|
||||
packaging
|
||||
paypalrestsdk
|
||||
paypal-checkout-serversdk
|
||||
pyjwt
|
||||
phonenumbers
|
||||
pillow
|
||||
pretix-plugin-build
|
||||
protobuf
|
||||
psycopg2
|
||||
pycountry
|
||||
pycparser
|
||||
pycryptodome
|
||||
pypdf
|
||||
python-bidi
|
||||
python-dateutil
|
||||
pytz
|
||||
pytz-deprecation-shim
|
||||
pyuca
|
||||
qrcode
|
||||
redis
|
||||
reportlab
|
||||
requests
|
||||
sentry-sdk
|
||||
sepaxml
|
||||
slimit
|
||||
static3
|
||||
stripe
|
||||
text-unidecode
|
||||
tlds
|
||||
tqdm
|
||||
vat-moss
|
||||
vobject
|
||||
webauthn
|
||||
zeep
|
||||
] ++ plugins;
|
||||
|
||||
optional-dependencies = with python.pkgs; {
|
||||
memcached = [
|
||||
pylibmc
|
||||
];
|
||||
};
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/bin
|
||||
cp ./src/manage.py $out/bin/pretix-manage
|
||||
|
||||
# Trim packages size
|
||||
rm -rfv $out/${python.sitePackages}/pretix/static.dist/node_prefix
|
||||
'';
|
||||
|
||||
dontStrip = true; # no binaries
|
||||
|
||||
nativeCheckInputs = with python.pkgs; [
|
||||
pytestCheckHook
|
||||
pytest-xdist
|
||||
pytest-mock
|
||||
pytest-django
|
||||
pytest-asyncio
|
||||
pytest-rerunfailures
|
||||
freezegun
|
||||
fakeredis
|
||||
responses
|
||||
] ++ lib.flatten (lib.attrValues optional-dependencies);
|
||||
|
||||
pytestFlagsArray = [
|
||||
"--reruns" "3"
|
||||
|
||||
# tests fail when run before 4:30am
|
||||
# https://github.com/pretix/pretix/pull/3987
|
||||
"--deselect=src/tests/base/test_orders.py::PaymentReminderTests::test_sent_days"
|
||||
"--deselect=src/tests/plugins/sendmail/test_rules.py::test_sendmail_rule_specified_subevent"
|
||||
];
|
||||
|
||||
preCheck = ''
|
||||
export PYTHONPATH=$(pwd)/src:$PYTHONPATH
|
||||
export DJANGO_SETTINGS_MODULE=tests.settings
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
inherit
|
||||
npmDeps
|
||||
python
|
||||
;
|
||||
plugins = lib.recurseIntoAttrs
|
||||
(python.pkgs.callPackage ./plugins {
|
||||
inherit (python.pkgs) callPackage;
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Ticketing software that cares about your event—all the way";
|
||||
homepage = "https://github.com/pretix/pretix";
|
||||
license = with licenses; [
|
||||
agpl3Only
|
||||
# 3rd party components below src/pretix/static
|
||||
bsd2
|
||||
isc
|
||||
mit
|
||||
ofl # fontawesome
|
||||
unlicense
|
||||
# all other files below src/pretix/static and src/pretix/locale and aux scripts
|
||||
asl20
|
||||
];
|
||||
maintainers = with maintainers; [ hexa ];
|
||||
};
|
||||
}
|
37
pkgs/by-name/pr/pretix/plugin-build.nix
Normal file
37
pkgs/by-name/pr/pretix/plugin-build.nix
Normal file
@ -0,0 +1,37 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchPypi,
|
||||
setuptools,
|
||||
django,
|
||||
gettext,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pretix-plugin-build";
|
||||
version = "1.0.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-iLbqcCAbeK4PyLXiebpdE27rt6bOP7eXczIG2bdvvYo=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
setuptools
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
django
|
||||
gettext
|
||||
];
|
||||
|
||||
doCheck = false; # no tests
|
||||
|
||||
meta = with lib; {
|
||||
description = "";
|
||||
homepage = "https://github.com/pretix/pretix-plugin-build";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ hexa ];
|
||||
};
|
||||
}
|
20
pkgs/by-name/pr/pretix/plugin-build.patch
Normal file
20
pkgs/by-name/pr/pretix/plugin-build.patch
Normal file
@ -0,0 +1,20 @@
|
||||
diff --git a/src/pretix/_build_settings.py b/src/pretix/_build_settings.py
|
||||
index c03f56a1a..d1ea73b84 100644
|
||||
--- a/src/pretix/_build_settings.py
|
||||
+++ b/src/pretix/_build_settings.py
|
||||
@@ -24,6 +24,8 @@
|
||||
This file contains settings that we need at wheel require time. All settings that we only need at runtime are set
|
||||
in settings.py.
|
||||
"""
|
||||
+from importlib_metadata import entry_points
|
||||
+
|
||||
from ._base_settings import * # NOQA
|
||||
|
||||
ENTROPY = {
|
||||
@@ -47,3 +49,6 @@ HAS_MEMCACHED = False
|
||||
HAS_CELERY = False
|
||||
HAS_GEOIP = False
|
||||
SENTRY_ENABLED = False
|
||||
+
|
||||
+for entry_point in entry_points(group='pretix.plugin'):
|
||||
+ INSTALLED_APPS.append(entry_point.module) # noqa: F405
|
6
pkgs/by-name/pr/pretix/plugins/default.nix
Normal file
6
pkgs/by-name/pr/pretix/plugins/default.nix
Normal file
@ -0,0 +1,6 @@
|
||||
{ callPackage
|
||||
, ...
|
||||
}:
|
||||
|
||||
{
|
||||
}
|
Loading…
Reference in New Issue
Block a user