Compare commits

...

3258 Commits

Author SHA1 Message Date
Raphael Michel 2b07d00d90 Remove eu_reverse_charge rule 2020-10-30 22:24:55 +01:00
Raphael Michel 4093c1d909 Remove buy from a string to make it more compatible for free events 2020-10-30 22:06:14 +01:00
Raphael Michel 9da14dfebe Widget API: Use sales channel of request 2020-10-30 22:05:55 +01:00
Raphael Michel a941378b80 Allow to book users to a seat even if self-seating is now available 2020-10-30 16:49:32 +01:00
Raphael Michel 9202aca26a Allow to keep a few per ticket when cancelling an event 2020-10-30 15:49:34 +01:00
Raphael Michel b841878dcb Ensure to return a 404 if an appending slash is missing 2020-10-30 14:40:55 +01:00
Raphael Michel 2cf6a4a6ab Add previously uncommitted tests 2020-10-29 18:47:27 +01:00
Raphael Michel 8759155357 Sendmail: Keep uploaded attachment when preview is used 2020-10-29 18:46:57 +01:00
Raphael Michel 1fe4d1a8ca Fix inconsistent naming of a scheme 2020-10-29 17:47:53 +01:00
Raphael Michel 73e0937d80 Merge pull request #1835 from pretix-translations/weblate-pretix-pretix 2020-10-29 11:22:45 +01:00
David Vaz 151d5c4f2b Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 100.0% (3797 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-29 11:22:34 +01:00
David Vaz 8486f66e69 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 100.0% (3797 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-29 11:22:34 +01:00
Jaakko Rinta-Filppula 9bb8f7b429 Translated on translate.pretix.eu (Finnish)
Currently translated at 11.2% (425 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fi/

powered by weblate
2020-10-29 11:22:34 +01:00
David Vaz 53ce1a53c6 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 100.0% (128 of 128 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pt_PT/

powered by weblate
2020-10-29 11:22:34 +01:00
Miguel Magalhães ce61c8a23a Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 100.0% (3797 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-29 11:22:34 +01:00
David Vaz 13f825ec1b Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 100.0% (3797 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-29 11:22:34 +01:00
Raphael Michel 4ff4402a5f Allow to cancel subevents by date range 2020-10-29 10:08:37 +01:00
Raphael Michel b4964b1460 Sendmail: Allow to notify a date range of subevents 2020-10-29 09:52:02 +01:00
Raphael Michel 710aaa5f1c Add icons to order status in backend 2020-10-29 09:17:00 +01:00
Raphael Michel ed12fd3cd5 Add lang_info for pt-pt 2020-10-28 18:17:56 +01:00
Raphael Michel ec7be3bd07 Add flag to PT input fields 2020-10-28 14:30:39 +01:00
Raphael Michel 95aa7b7619 Fix selection of the wrong Portoguese 2020-10-28 14:23:50 +01:00
Raphael Michel f9d1dc7181 Increase retry interval of emails 2020-10-27 09:23:59 +01:00
Raphael Michel ad094bcfc0 Remove pt-PT from incubating languages 2020-10-26 18:02:11 +01:00
Raphael Michel 2b1d9bc039 Merge pull request #1834 from pretix-translations/weblate-pretix-pretix 2020-10-26 16:41:09 +01:00
Miguel Magalhães 762d815cf5 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 82.9% (3147 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-26 15:14:05 +01:00
tlm06 6a71b9bf19 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 70.3% (2671 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-26 11:00:20 +01:00
David Vaz d2617ca104 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 69.9% (2656 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-26 11:00:20 +01:00
David Vaz a3573125df Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 69.1% (2624 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-26 11:00:20 +01:00
Raphael Michel 565a65f780 Clarify MANIFEST.in 2020-10-26 10:47:31 +01:00
Raphael Michel 9543d89014 Fix packaging bugs 2020-10-26 10:35:19 +01:00
julia-luna e61288ba67 Add option to send emails to attendees (#1833) 2020-10-26 10:31:45 +01:00
Raphael Michel 58af025fd8 Bump to 3.13.0.dev0 2020-10-26 10:27:39 +01:00
Raphael Michel db0aaf58b7 Bump to 3.12.0 2020-10-26 10:25:28 +01:00
Raphael Michel ae07e433d4 Merge pull request #1831 from pretix-translations/weblate-pretix-pretix 2020-10-26 09:30:24 +01:00
Martin Gross 4fed690209 Allow plugins to disable and pre-fill questions and contact form fields (#1824)
Co-authored-by: Raphael Michel <michel@rami.io>
Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
2020-10-26 09:30:16 +01:00
David Vaz 6ca6f7f3ef Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 68.7% (2607 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-26 09:10:59 +01:00
Miguel Magalhães 2cceb4f056 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 69.5% (89 of 128 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pt_PT/

powered by weblate
2020-10-26 09:10:59 +01:00
David Vaz bfa9b380bb Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 65.2% (2474 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-26 09:10:59 +01:00
Miguel Magalhães 65d9640dbc Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 65.2% (2474 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-26 09:10:59 +01:00
Maarten van den Berg b0221b0e92 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3797 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-10-26 09:10:59 +01:00
Miguel Magalhães 1233dd64a8 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 56.9% (2162 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-26 09:10:59 +01:00
David Vaz 9a5d17f14a Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 56.9% (2162 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-26 09:10:59 +01:00
David Vaz 65b0df056f Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 50.7% (1924 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-26 09:10:59 +01:00
David Vaz 997f56f758 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 48.2% (1830 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-26 09:10:59 +01:00
David Vaz f30541e465 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 11.7% (15 of 128 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pt_PT/

powered by weblate
2020-10-26 09:10:59 +01:00
David Vaz efb6a25387 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 47.9% (1818 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-26 09:10:59 +01:00
David Vaz 4a65828275 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 45.5% (1728 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-26 09:10:59 +01:00
Miguel Magalhães 9627d77a9d Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 45.5% (1728 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-26 09:10:59 +01:00
Raphael Michel c2069663f3 Add IBAN/BIC to doc spelling list 2020-10-26 09:10:42 +01:00
Raphael Michel 5ca1366fad Fix broken redirect after editing gates 2020-10-25 12:01:31 +01:00
Raphael Michel b0bdae33c1 Add IBAN/BIC fields to bank transfer import API 2020-10-24 23:31:38 +02:00
Raphael Michel 3ced206d04 Show identifier in list of questions 2020-10-24 22:42:27 +02:00
Raphael Michel 539ee2d9db Merge pull request #1830 from pretix-translations/weblate-pretix-pretix 2020-10-24 22:08:15 +02:00
Miguel Magalhães 8ed9684b5d Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 38.8% (1475 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-24 22:05:29 +02:00
Raphael Michel 882b1b6a80 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3797 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-10-24 22:05:29 +02:00
Raphael Michel 48b6c90a17 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3797 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-10-24 22:05:28 +02:00
David Vaz c4f6468579 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 38.7% (1471 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-24 22:02:59 +02:00
Miguel Magalhães b7cbe6054b Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 38.7% (1471 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-24 22:02:59 +02:00
Raphael Michel b38af13032 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-10-24 22:02:45 +02:00
Raphael Michel 142386cb9e Fix typos and whitespace 2020-10-24 22:02:11 +02:00
Raphael Michel d932aecc22 Merge pull request #1829 from pretix-translations/weblate-pretix-pretix 2020-10-24 22:02:07 +02:00
Miguel Magalhães 7fe68140fd Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 38.5% (1461 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-24 21:58:13 +02:00
David Vaz fdf69c4695 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 38.5% (1461 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-24 21:58:13 +02:00
Raphael Michel d57ac92676 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3797 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-10-24 21:58:12 +02:00
Raphael Michel 9578fa73ef Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3797 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-10-24 21:58:10 +02:00
Miguel Magalhães fcb68cb551 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 38.5% (1460 of 3797 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-24 21:56:15 +02:00
Raphael Michel 8b84aad39e Don't user |pluralize 2020-10-24 21:48:45 +02:00
Raphael Michel b698c8380c Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-10-24 19:39:32 +02:00
Raphael Michel f7b5f4744b Remove pt locale, we have pt_PT and pt_BR 2020-10-24 19:38:57 +02:00
Raphael Michel a999dd01d1 Merge pull request #1828 from pretix-translations/weblate-pretix-pretix 2020-10-24 19:38:26 +02:00
Raphael Michel a77a9d6891 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 38.4% (1436 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-24 19:36:25 +02:00
Raphael Michel b3bb3cb9a0 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 38.4% (1436 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-24 19:34:16 +02:00
David Vaz 1009ce52b2 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 37.7% (1410 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-24 19:21:15 +02:00
Jaakko Rinta-Filppula db420a56e1 Translated on translate.pretix.eu (Finnish)
Currently translated at 11.3% (424 of 3749 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fi/

powered by weblate
2020-10-24 19:21:15 +02:00
David Vaz cefdb9f65c Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 36.1% (1350 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-24 19:21:15 +02:00
David Vaz b7037b9432 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 36.1% (1350 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-24 19:21:15 +02:00
Raphael Michel 4f8de4e1fc Merge branch 'glossary' into master 2020-10-24 19:20:26 +02:00
Raphael Michel 987597b298 Add event selection endpoint (#1827)
* Add event selection endpoint

* Minor fixes

* Add filter by gate
2020-10-24 19:20:07 +02:00
Raphael Michel bb38e2216b Add a glossary to the documentation 2020-10-24 19:19:59 +02:00
Chessmaster 3865063b12 Added missing "und" in lang file (#1826) 2020-10-24 18:26:56 +02:00
Richard Schreiber 8037a8ce7f Update pytest version and related packages (#1820)
Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
2020-10-24 12:39:55 +02:00
Raphael Michel a0dd8f74e4 Add gates (groups of check-in devices) (#1825) 2020-10-24 12:22:02 +02:00
Raphael Michel 38e067da9c Add fi and pt-pt as incubating languages 2020-10-24 12:19:09 +02:00
Raphael Michel 3b6ce19959 Merge pull request #1823 from pretix-translations/weblate-pretix-pretix 2020-10-24 12:18:00 +02:00
Raphael Michel 2b8e6aab39 Add a glossary 2020-10-24 12:16:28 +02:00
Miguel Magalhães bc7444d7d9 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 22.3% (834 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-24 07:00:13 +02:00
Jaakko Rinta-Filppula 0436064d31 Translated on translate.pretix.eu (Finnish)
Currently translated at 11.2% (421 of 3749 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fi/

powered by weblate
2020-10-24 07:00:11 +02:00
Miguel Magalhães 1c6984fc2d Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 19.9% (745 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 21:44:46 +02:00
David Vaz 050b0888fb Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 19.9% (745 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 21:44:46 +02:00
Raphael Michel 1c1bca2dd3 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 10.9% (408 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:57:59 +02:00
David Vaz e499780414 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 10.9% (408 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:57:59 +02:00
Jaakko Rinta-Filppula 74b11305e9 Translated on translate.pretix.eu (Finnish)
Currently translated at 9.4% (351 of 3749 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fi/

powered by weblate
2020-10-23 18:53:11 +02:00
tlm06 4f0562e845 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 10.2% (381 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:11 +02:00
David Vaz 22c0209bed Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 10.2% (381 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:11 +02:00
Miguel Magalhães d4c26d00be Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 10.2% (381 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:11 +02:00
tlm06 ab40b3b06b Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 4.8% (180 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:11 +02:00
JPolonia dac0252326 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 4.8% (180 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:11 +02:00
Miguel Magalhães 9453f07059 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 4.8% (180 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:11 +02:00
David Vaz 74cac2a914 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 4.8% (180 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:11 +02:00
David Vaz 563886b901 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 1.2% (43 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:11 +02:00
Miguel Magalhães 7ef319fb35 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 1.2% (43 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:11 +02:00
David Vaz bc11e85e42 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 0.5% (20 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:11 +02:00
Miguel Magalhães 5d9cb2dc0d Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 0.5% (20 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:10 +02:00
David Vaz 9ad00b7ce6 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 0.3% (10 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:10 +02:00
Miguel Magalhães 02460fc648 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 0.7% (28 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:10 +02:00
David Vaz 70a2ebe830 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 0.7% (28 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:10 +02:00
David Vaz 522dbfe1c5 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 0.7% (28 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:10 +02:00
David Vaz 4e202f523d Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 0.4% (15 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:10 +02:00
Miguel Magalhães 0bad8d70c8 Translated on translate.pretix.eu (Portuguese (Portugal))
Currently translated at 0.4% (15 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_PT/

powered by weblate
2020-10-23 18:53:10 +02:00
Raphael Michel 1cf0fc9f96 Add health_check_interval to RedisClient 2020-10-23 18:52:50 +02:00
Raphael Michel 7b46292da3 Fix incorrect device security profiles 2020-10-23 18:52:39 +02:00
Raphael Michel 0482920a01 Clarify "full" security profile 2020-10-23 11:24:18 +02:00
Raphael Michel 07bd47d934 Docker: Allow to run custom exec commands 2020-10-23 11:21:37 +02:00
Raphael Michel 8241ddf5be runperiodic: Allow to execute specific tasks only 2020-10-22 21:05:10 +02:00
Felix Rindt a62c7939ae Improvements for bank transfer importing (#1762)
Co-authored-by: Raphael Michel <michel@rami.io>
Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
2020-10-22 11:00:36 +02:00
Sohalt 9e4dc344a4 Sendmail plugin: Allow to attach a file to emails (#1814)
* sendmail: allow to attach files to emails

* Fix mixup of model objects and model IDs

* Attach to order-level emails, not only position-level emails

* Give attachments a proper file type

* Add a warning note about higher spam chances

Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
2020-10-22 09:53:19 +02:00
Richard Schreiber d673a43130 Bump libsass-version to 0.20.* (#1821)
libsass 0.19.2 fails to install under latest OS X Catalina. As https://github.com/sass/libsass/issues/3053 seems to be fixed, bump to current version 0.20.*
2020-10-22 09:18:42 +02:00
Raphael Michel 92d7268945 Fix duplicate string 2020-10-21 19:04:39 +02:00
Raphael Michel 8e318dd95d Update locales 2020-10-21 19:02:58 +02:00
Raphael Michel 50a8063fd3 Merge pull request #1813 from pretix-translations/weblate-pretix-pretix 2020-10-21 18:27:16 +02:00
Jaakko Rinta-Filppula 6f41b039b4 Translated on translate.pretix.eu (Finnish)
Currently translated at 9.1% (340 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fi/

powered by weblate
2020-10-21 18:27:03 +02:00
Raphael Michel 12ca4552dd Added translation on translate.pretix.eu (Portuguese) 2020-10-21 18:27:03 +02:00
Raphael Michel 4f780031f7 Added translation on translate.pretix.eu (Portuguese) 2020-10-21 18:27:03 +02:00
Raphael Michel 9fe2b31620 Added translation on translate.pretix.eu (Portuguese (Portugal)) 2020-10-21 18:27:03 +02:00
Raphael Michel 93db33515f Added translation on translate.pretix.eu (Portuguese (Portugal)) 2020-10-21 18:27:03 +02:00
Jaakko Rinta-Filppula b06e849363 Translated on translate.pretix.eu (Finnish)
Currently translated at 9.1% (339 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fi/

powered by weblate
2020-10-21 18:27:03 +02:00
Jaakko Rinta-Filppula 95b001e109 Translated on translate.pretix.eu (Finnish)
Currently translated at 7.4% (275 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fi/

powered by weblate
2020-10-21 18:27:03 +02:00
Maarten van den Berg 52b940b0bf Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3739 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-10-21 18:27:03 +02:00
Maarten van den Berg d28fec544a Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3739 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-10-21 18:27:03 +02:00
Raphael Michel 7ca09cc73b Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3739 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-10-21 18:27:03 +02:00
Jaakko Rinta-Filppula 1f151c4a84 Translated on translate.pretix.eu (Finnish)
Currently translated at 6.8% (256 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fi/

powered by weblate
2020-10-21 18:27:03 +02:00
Jaakko Rinta-Filppula 1473845f33 Translated on translate.pretix.eu (Finnish)
Currently translated at 62.5% (80 of 128 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/fi/

powered by weblate
2020-10-21 18:27:03 +02:00
Jaakko Rinta-Filppula 659d166c02 Translated on translate.pretix.eu (Finnish)
Currently translated at 4.3% (159 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fi/

powered by weblate
2020-10-21 18:27:03 +02:00
Raphael Michel e3d9b3546d Add option to automatically check out all attendees at night (#1819) 2020-10-21 18:26:57 +02:00
Raphael Michel ffde521fcb Add order comment to positions sheet in order data export 2020-10-21 18:25:57 +02:00
Jonathan Berger ed0e28eee5 Fix DELETE endpoint for Events resource in doc (#1816) 2020-10-20 17:24:34 +02:00
Raphael Michel 22bba28bea Add pluggable ticket secret generators (#1809) 2020-10-19 15:00:55 +02:00
Raphael Michel 6e20f33ef5 Add logdisplay 2020-10-19 14:50:40 +02:00
Raphael Michel 4ef95346a7 API: Use algorithm to count number of checked in orders consistently with backend 2020-10-19 12:58:13 +02:00
Raphael Michel fcd0c65567 API: Add "currently inside" to checkin statistics 2020-10-19 12:43:16 +02:00
Raphael Michel 7c212ba79d Allow redeem by secret with special chars 2020-10-18 16:04:42 +02:00
Raphael Michel 0a1a9fcf88 Fix duplicate string 2020-10-16 22:57:13 +02:00
Raphael Michel bfabed5b44 Remove incorrect column in CSV header
Thanks to an anonymous @felixrindt
2020-10-16 22:53:33 +02:00
Raphael Michel 8883e2642a Fix typo (again) 2020-10-16 22:50:22 +02:00
Raphael Michel 460b5ee588 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-10-16 22:45:33 +02:00
Raphael Michel c74d8bb126 Add trace and turnover to wordlist 2020-10-16 22:44:51 +02:00
Raphael Michel 07c62f4362 Merge pull request #1810 from pretix-translations/weblate-pretix-pretix
Co-authored-by: Raphael Michel <michel@rami.io>
2020-10-16 22:43:35 +02:00
Raphael Michel bb59cbca75 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3739 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-10-16 22:40:48 +02:00
Raphael Michel fef3ebcb91 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3739 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-10-16 22:40:47 +02:00
Raphael Michel dfc7483b5d Translated on translate.pretix.eu (German (informal))
Currently translated at 99.6% (3724 of 3739 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-10-16 22:34:57 +02:00
Raphael Michel b80ed9079b Added translation on translate.pretix.eu (Finnish) 2020-10-16 22:34:57 +02:00
Raphael Michel 6801b027cd Added translation on translate.pretix.eu (Finnish) 2020-10-16 22:34:57 +02:00
Raphael Michel f7e0c76f0f Fix typo 2020-10-16 22:34:44 +02:00
Raphael Michel 02c59f85d9 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-10-16 22:26:19 +02:00
Raphael Michel 6257b8cb54 Fix incorrect link on position page 2020-10-16 22:25:22 +02:00
Raphael Michel fec682dddb Allow to require a verified email to download tickets 2020-10-16 22:10:37 +02:00
Raphael Michel ff74f13fce Add ZVT to word list 2020-10-16 21:39:08 +02:00
Raphael Michel d0d84f2a13 Fix test case 2020-10-16 10:35:01 +02:00
Raphael Michel bf59ce2661 Add SubEvent.last_modified 2020-10-15 18:32:10 +02:00
Raphael Michel b4a7729cb5 Fix duplicate invoice cancellation when changing free order to paid 2020-10-14 18:08:12 +02:00
Raphael Michel f2e5e89970 Order import: Allow to reference question options by value 2020-10-14 16:29:32 +02:00
Raphael Michel 4fd773caf6 Change calendar restriction from "100 events" to "50 future events" 2020-10-14 11:39:40 +02:00
Raphael Michel 6402f0d86e Add addresses to check-in lists 2020-10-14 11:34:41 +02:00
Raphael Michel f5d93eaffa s/WhiteList/AllowList/g 2020-10-14 11:23:47 +02:00
Raphael Michel 3f40a8e6fa Fix import of attendee addresses 2020-10-14 11:09:41 +02:00
Raphael Michel b947467589 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-10-13 18:13:07 +02:00
Raphael Michel 810f3d7d31 Minor improvements to security profiles 2020-10-13 18:02:56 +02:00
Raphael Michel e8f3ad633a Add device security profiles (#1806) 2020-10-13 17:40:25 +02:00
Raphael Michel 301849f771 Merge pull request #1800 from pretix-translations/weblate-pretix-pretix 2020-10-13 16:30:40 +02:00
Tobias Sundgren ee6a595e26 Translated on translate.pretix.eu (Swedish)
Currently translated at 11.0% (414 of 3762 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sv/

powered by weblate
2020-10-12 12:22:17 +02:00
Tobias Sundgren 980296e38a Translated on translate.pretix.eu (Swedish)
Currently translated at 10.8% (405 of 3762 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sv/

powered by weblate
2020-10-12 12:22:17 +02:00
Tobias Sundgren 0a62ee0e33 Translated on translate.pretix.eu (Swedish)
Currently translated at 10.6% (400 of 3762 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sv/

powered by weblate
2020-10-12 12:22:17 +02:00
Raphael Michel afc1013d69 Fix infinite price adjustment loop when combining free prices, country-dependent tax rates, and vouchers 2020-10-12 12:15:58 +02:00
Raphael Michel 16cf3cec76 Add tests for device API 2020-10-12 12:15:58 +02:00
Raphael Michel 0105b9642d Add compat function for date.fromisocalendar for Python 3.6-3.7 2020-10-12 12:15:58 +02:00
Raphael Michel 3ec15fa529 Fix widget test cases 2020-10-11 20:42:35 +02:00
Raphael Michel 703eebab47 Remove tests for deleted pretixdroid code 2020-10-11 20:32:25 +02:00
Raphael Michel 3aec3a52fc Merge pull request #1805 from Chessmasterrr/patch-1
Update plugin-development documentation
2020-10-11 14:48:11 +02:00
Chessmaster fd93cac8cf Update plugins.rst
Fixed small typo and update references
2020-10-11 13:58:01 +02:00
Raphael Michel e139924696 Add reason based classes to events in widget 2020-10-09 16:12:05 +02:00
Raphael Michel da725c0bff Backend forms: Do not allow to click empty labels 2020-10-09 12:19:44 +02:00
Raphael Michel dca61447cf Fix widget bug with large number of variations 2020-10-08 16:19:48 +02:00
Raphael Michel f54bf3f1ea Specific error message for payment_ended 2020-10-08 09:28:53 +02:00
Raphael Michel 3cef9bac26 Restrict collapsed days to large numbers 2020-10-07 15:02:12 +02:00
Raphael Michel 4f20849e4b Rewrite subquery in gift card list 2020-10-07 10:53:59 +02:00
Raphael Michel 758981fc1b Use internal name of product in OrderFilterForm 2020-10-07 10:49:20 +02:00
Raphael Michel 9b671d6370 Week calendar: Collapse days on mobile (except the current day) 2020-10-07 10:41:30 +02:00
Raphael Michel 3bfaf55094 Check-in list API: Show items in event default language 2020-10-07 10:04:26 +02:00
Raphael Michel 3708dab656 Add allow_entry_after_exit field to subevent editing 2020-10-07 09:25:53 +02:00
Raphael Michel 14ad7716bd Fix missing copy button for add-ons if only system fields match 2020-10-06 18:45:53 +02:00
Raphael Michel 985d3c3993 Add date column to web-based check-in list 2020-10-06 18:45:53 +02:00
Raphael Michel fa2222e629 Remove pretixdroid code 2020-10-06 18:45:53 +02:00
Raphael Michel 13eabdd7f4 Fix missing date column in list of refunds 2020-10-06 18:45:53 +02:00
Raphael Michel 4fd748e6d9 Merge pull request #1796 from pretix-translations/weblate-pretix-pretix 2020-10-06 16:00:19 +02:00
Tobias Sundgren f48ded0165 Translated on translate.pretix.eu (Swedish)
Currently translated at 8.1% (305 of 3762 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sv/

powered by weblate
2020-10-06 15:02:14 +02:00
Tobias Sundgren 903ea09140 Translated on translate.pretix.eu (Swedish)
Currently translated at 8.1% (304 of 3762 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sv/

powered by weblate
2020-10-06 15:02:14 +02:00
Maarten van den Berg fadc610b8e Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3762 of 3762 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-10-06 15:02:14 +02:00
Maarten van den Berg ac4b8a392b Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3762 of 3762 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-10-06 15:02:14 +02:00
ethan.wang 22d986a709 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 82.4% (3100 of 3762 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2020-10-06 15:02:14 +02:00
Martin Gross bca34145f1 Translated on translate.pretix.eu (Danish)
Currently translated at 42.6% (1603 of 3762 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/

powered by weblate
2020-10-06 15:02:14 +02:00
Mie Frydensbjerg 97af6f7311 Translated on translate.pretix.eu (Danish)
Currently translated at 42.6% (1603 of 3762 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/

powered by weblate
2020-10-06 15:02:14 +02:00
Martin Gross 67156a67aa Translated on translate.pretix.eu (Danish)
Currently translated at 42.6% (1602 of 3762 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/

powered by weblate
2020-10-06 15:02:14 +02:00
Raphael Michel 4ed872d4ef Calendar stuff is hard 2020-10-06 15:02:05 +02:00
Martin Gross 5cd6cba0a2 Fix accidential removal of gitcard-filter 2020-10-06 14:46:53 +02:00
Martin Gross 72bb5bd177 Only include Confirmed and Refunded Payments/completed Refunds in Giftcard-report 2020-10-06 14:30:39 +02:00
Raphael Michel d392e14a96 Fix date() usage 2020-10-06 12:50:37 +02:00
Raphael Michel d7459b3b83 Fix years with 52 weeks 2020-10-06 12:49:02 +02:00
Martin Gross b4778b5845 Allow to unselect product or quota from voucher (#1799) 2020-10-06 09:08:15 +02:00
Raphael Michel 5a09759cb9 Fix *yet* another time range issue 2020-10-05 17:39:41 +02:00
Raphael Michel 2fbaa90d76 Clarify docstring 2020-10-05 17:33:19 +02:00
Raphael Michel 93f10d33a9 Fix breakpoints of calendar week selection 2020-10-05 17:32:12 +02:00
Raphael Michel e9a972ad60 Show dates in calendar week selection 2020-10-05 17:29:19 +02:00
Raphael Michel a31f0c1bc8 Fix one more bug in calendar view 2020-10-05 17:29:11 +02:00
Raphael Michel 1b0c2f3bb7 Fix bug in previous commit 2020-10-05 17:17:28 +02:00
Raphael Michel 766428c469 Improve support for cross-midnight time slots 2020-10-05 17:14:49 +02:00
Raphael Michel d85583f70a Fix missing field description 2020-10-05 17:13:39 +02:00
Raphael Michel ee801bd717 Safety guard against unpaid giftcards 2020-10-05 16:09:24 +02:00
Martin Gross af0e8ec992 Fix test, Ref: 3cbcf663e5 2020-10-05 13:45:53 +02:00
Raphael Michel bc3325c1cb Order overview PDF: Print net and gross 2020-10-02 16:45:47 +02:00
Martin Gross 753c331887 Shutting up isort 2020-10-02 14:04:22 +02:00
Martin Gross cfc9055ec1 Fix giftcard API doc 2020-10-02 13:58:19 +02:00
Raphael Michel c131a2ac3a Import: Do not allow duplicate secrets even across events 2020-10-02 10:29:27 +02:00
Raphael Michel 17fe3355d1 pretixPOS: ZVT support 2020-09-29 19:10:48 +02:00
Martin Gross 0381d42d41 Fix flag for Swedish language (fixes #1795) 2020-09-29 11:11:25 +02:00
Raphael Michel b73db911e9 Add profile OAuth scope 2020-09-28 16:11:43 +02:00
Raphael Michel 1f3d4a2810 Fix name finding in placeholders 2020-09-28 16:11:30 +02:00
Raphael Michel 3cbcf663e5 OAuth: Add profile-only access 2020-09-28 16:01:59 +02:00
Raphael Michel ae0637a3d6 Merge pull request #1789 from pretix-translations/weblate-pretix-pretix 2020-09-28 12:15:22 +02:00
Raphael Michel a6a9c08a0a Translated on translate.pretix.eu (German)
Currently translated at 99.9% (3761 of 3762 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-09-28 12:15:08 +02:00
Raphael Michel f3b3d0b8f7 Translated on translate.pretix.eu (German (informal))
Currently translated at 99.9% (3761 of 3762 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-09-28 12:14:57 +02:00
Raphael Michel 9490f20a6c Revert "Do not allow to cancel gift card positions"
This reverts commit 951e99d0da.
2020-09-28 12:13:04 +02:00
Raphael Michel 4555a917b2 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-09-28 12:10:15 +02:00
Raphael Michel 951e99d0da Do not allow to cancel gift card positions 2020-09-28 11:51:06 +02:00
Raphael Michel d0b002cf0c Issue gift cards after order change 2020-09-28 11:48:55 +02:00
Felix Rindt 4fb0b948ec Add name scheme with salutation (#1779) 2020-09-28 11:41:59 +02:00
Felix Rindt 2384478b45 Support required-if and display-dependency for more elements (#1788) 2020-09-28 10:42:03 +02:00
Raphael Michel f3a2d0cb03 Merge pull request #1787 from pretix-translations/weblate-pretix-pretix 2020-09-28 09:24:07 +02:00
Maarten van den Berg 1b11d88442 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3757 of 3757 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-09-28 07:00:13 +02:00
Maarten van den Berg 954951ddfa Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3757 of 3757 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-09-28 07:00:12 +02:00
Raphael Michel c01b96bdfc Allow to sort list of quotas 2020-09-25 19:08:42 +02:00
Raphael Michel c78e88a1ba Allow to create devices through the API (#1785) 2020-09-25 18:16:18 +02:00
Raphael Michel 4cb18218b2 Do not show event time on invoice 2020-09-25 18:01:50 +02:00
Raphael Michel 450d017c32 Order API: Add `send_email` parameter to mark_paid and
payments/confirm
2020-09-25 15:12:06 +02:00
Raphael Michel 655977e33d Fix typo 2020-09-24 12:55:51 +02:00
Raphael Michel 0cb0620df0 Fix crash from previous deployment 2020-09-24 12:36:00 +02:00
Raphael Michel c8bf069650 Merge pull request #1784 from pretix-translations/weblate-pretix-pretix 2020-09-24 12:16:28 +02:00
Raphael Michel e65087fd68 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3757 of 3757 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-09-24 12:16:16 +02:00
Raphael Michel d67d389b9d Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3757 of 3757 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-09-24 12:16:16 +02:00
Raphael Michel 0e805e50f9 Widget: consistent rendering of date ranges 2020-09-24 12:15:54 +02:00
Raphael Michel a4d133731e Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-09-24 10:59:11 +02:00
Raphael Michel c74e7fd4fb Show time slot end time in calendars 2020-09-24 10:58:48 +02:00
Raphael Michel 0e405d2327 Widget: Align wording with standalone calendar 2020-09-24 10:58:48 +02:00
Raphael Michel 035c707427 Calendar: Show fully booked instead of sold out for free events 2020-09-24 10:58:48 +02:00
Raphael Michel 787e7ec993 Merge pull request #1783 from pretix-translations/weblate-pretix-pretix 2020-09-24 10:58:38 +02:00
Svyatoslav 09a9b4a456 Translated on translate.pretix.eu (Russian)
Currently translated at 78.1% (100 of 128 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ru/

powered by weblate
2020-09-23 19:00:12 +02:00
Svyatoslav e2547c2761 Translated on translate.pretix.eu (Russian)
Currently translated at 29.7% (1116 of 3756 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ru/

powered by weblate
2020-09-23 19:00:12 +02:00
Martin Gross c7b2baf40f Correct file type for shredder export zip (Fixes #1781, Z#153584) 2020-09-23 13:41:47 +02:00
Felix Rindt 59595c9db8 Add setting to disable copy-answers-button (#1778) 2020-09-22 18:09:44 +02:00
Nils Schneider 2f8baecd68 Fix #1127 -- Set loglevel from configfile (#1777) 2020-09-22 17:40:56 +02:00
Raphael Michel a76f74b161 Download reminders: Fix incomplete only() call 2020-09-21 18:26:38 +02:00
Raphael Michel f2518101ef Fix broken test after deprecation of pretixdroid 2020-09-21 18:23:25 +02:00
Raphael Michel ec667545e8 Fix crash/bug in order data export 2020-09-21 18:23:25 +02:00
Raphael Michel afb789226c Webhooks: Fix crash if object was deleted in meantime 2020-09-21 18:23:25 +02:00
Felix Rindt bca7a6db93 Mail service: Allow to attach arbitrary cached files (#1774) 2020-09-21 17:45:29 +02:00
Felix Rindt 429ad4da37 Refactor primary color to settings variable (#1775) 2020-09-21 17:44:43 +02:00
Raphael Michel cd6e6004af Merge pull request #1773 from pretix-translations/weblate-pretix-pretix 2020-09-21 17:43:59 +02:00
Tobias Sundgren e9d5665a3d Translated on translate.pretix.eu (Swedish)
Currently translated at 7.0% (262 of 3756 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sv/

powered by weblate
2020-09-19 20:00:13 +02:00
Tobias Sundgren 4cbc30a7ea Translated on translate.pretix.eu (Swedish)
Currently translated at 6.9% (261 of 3756 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sv/

powered by weblate
2020-09-18 18:20:26 +02:00
Tobias Sundgren 2b0388c2ee Translated on translate.pretix.eu (Swedish)
Currently translated at 5.8% (218 of 3756 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sv/

powered by weblate
2020-09-18 18:20:26 +02:00
Tobias Sundgren 06b8826e57 Translated on translate.pretix.eu (Swedish)
Currently translated at 100.0% (128 of 128 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/sv/

powered by weblate
2020-09-18 18:20:26 +02:00
Tobias Sundgren 7c6f0f45a3 Translated on translate.pretix.eu (Swedish)
Currently translated at 5.7% (213 of 3756 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sv/

powered by weblate
2020-09-18 18:20:26 +02:00
Tobias Sundgren 93399f51b3 Translated on translate.pretix.eu (Swedish)
Currently translated at 100.0% (128 of 128 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/sv/

powered by weblate
2020-09-18 18:20:26 +02:00
Pernilla Näsfors Östmar 87bd54b233 Translated on translate.pretix.eu (Swedish)
Currently translated at 100.0% (128 of 128 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/sv/

powered by weblate
2020-09-18 18:20:26 +02:00
Tobias Sundgren 3fb237f434 Translated on translate.pretix.eu (Swedish)
Currently translated at 5.6% (212 of 3756 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sv/

powered by weblate
2020-09-18 18:20:26 +02:00
Maarten van den Berg d7640d25f5 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3756 of 3756 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-09-18 18:20:26 +02:00
Maarten van den Berg 1669d3f5c7 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3756 of 3756 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-09-18 18:20:26 +02:00
Maarten van den Berg 5aa3f3e772 Translated on translate.pretix.eu (Dutch)
Currently translated at 99.6% (3741 of 3756 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-09-18 18:20:26 +02:00
Martin Gross b7a2f0257f Translated on translate.pretix.eu (French)
Currently translated at 80.5% (103 of 128 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/fr/

powered by weblate
2020-09-18 18:20:26 +02:00
Martin Gross 5c0f29f959 Translated on translate.pretix.eu (French)
Currently translated at 61.2% (2297 of 3756 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/

powered by weblate
2020-09-18 18:20:26 +02:00
Raphael Michel 59655dca82 Fix redemption of multiple gift cards 2020-09-18 18:20:08 +02:00
Raphael Michel af2b4ebb4b Properly deprecate pretixdroid 2020-09-18 16:28:19 +02:00
Martin Gross d5b3528f92 Localize Stripe Elements to Order Page Language 2020-09-18 16:26:10 +02:00
Martin Gross 0a1b41235b Add Seat to Order Data Export - but better 2020-09-18 16:25:49 +02:00
Felix Rindt 8ca544064b Fix #1759: order import increasing positionids (#1776) 2020-09-18 16:16:33 +02:00
Raphael Michel 1e2b305376 Quota and check-in list list: Include time of subevent 2020-09-18 13:12:04 +02:00
Raphael Michel bfa20e995a Order API: Include ID of check-in 2020-09-18 13:12:04 +02:00
Martin Gross e7fd0f116b Add Seat to Order Data Export 2020-09-17 09:53:26 +02:00
Raphael Michel e836da09cd Fix bug in a combination of timeouts and custom auth backends 2020-09-16 18:09:53 +02:00
Raphael Michel 22c6553a48 Fix API for organizers and events with a . in their slug 2020-09-16 16:37:55 +02:00
pretix translation bot ea5fc3df40 Translations update from Weblate (#1772)
Co-authored-by: Martin Gross <martin@pc-coholic.de>
2020-09-15 10:38:28 +02:00
pretix translation bot 7977b6dc15 Translations update from Weblate (#1771)
Co-authored-by: Mie Frydensbjerg <mif@aarhus.dk>
Co-authored-by: Maarten van den Berg <maartenberg1@gmail.com>
2020-09-15 09:55:20 +02:00
Raphael Michel 59df5fe052 Fix manifest config 2020-09-14 19:00:29 +02:00
Raphael Michel c4e00e7601 Bump to 3.12.0.dev0 2020-09-14 18:23:42 +02:00
Raphael Michel b3fd515652 Bump to 3.11.0 2020-09-14 18:22:03 +02:00
Raphael Michel 6ee54f6cc1 Add sentence to structure guide 2020-09-14 18:21:09 +02:00
Raphael Michel 403dc9cf98 Sort exported check-ins 2020-09-14 16:28:56 +02:00
Raphael Michel eb462b1950 Fix default item 2020-09-14 16:13:13 +02:00
Raphael Michel cb6d50e570 Merge pull request #1770 from pretix-translations/weblate-pretix-pretix 2020-09-14 14:04:01 +02:00
Raphael Michel 32a2a99b7b Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3756 of 3756 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-09-14 14:00:24 +02:00
Raphael Michel 7859985ff0 Translated on translate.pretix.eu (German)
Currently translated at 99.9% (3755 of 3756 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-09-14 14:00:23 +02:00
Raphael Michel 7b7cf76028 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-09-14 14:00:14 +02:00
Raphael Michel 4fda9b2205 Fix typo 2020-09-14 13:59:36 +02:00
Raphael Michel ede93f1669 Extend word list 2020-09-14 13:47:39 +02:00
Raphael Michel 4af4dbd9cf Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-09-14 13:46:26 +02:00
Raphael Michel 820f6d52a5 Fix incorrect help text 2020-09-14 13:45:58 +02:00
Raphael Michel 8d04974caa Merge pull request #1769 from pretix-translations/weblate-pretix-pretix 2020-09-14 13:44:58 +02:00
Raphael Michel 8021c9e865 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3750 of 3750 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-09-14 13:44:33 +02:00
Raphael Michel 874ea6750b Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3750 of 3750 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-09-14 13:44:33 +02:00
Felix Rindt 8f2c125435 Payment term in minutes (#1760)
Co-authored-by: Raphael Michel <michel@rami.io>
2020-09-14 13:44:28 +02:00
Raphael Michel 2f21dc8c3c Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-09-14 13:22:10 +02:00
Raphael Michel 05135c779c Add export of all check-in scans 2020-09-14 13:21:24 +02:00
Raphael Michel f08f06ddff Fix infinite recursion 2020-09-11 18:30:35 +02:00
Raphael Michel 9c28537d1c CSV exports: Fix running when file is opened in binary mode 2020-09-11 09:17:11 +02:00
Raphael Michel 95b1a4a434 Fix German language error 2020-09-10 20:23:14 +02:00
Raphael Michel 019801e9dc Cronjob: Fix issue in waiting list handling 2020-09-09 22:15:41 +02:00
Martin Gross 3e97fd87d1 Fix typo in process_waitinglist 2020-09-09 22:10:17 +02:00
Raphael Michel 8bcc0e4641 Cronjob: Try sync execute for quotas 2020-09-09 21:53:52 +02:00
Raphael Michel 878becfee9 Cronjob: Allow keyboard interrupt 2020-09-09 21:52:03 +02:00
Raphael Michel 273c34999c Cronjob: Ignore old events for waiting list 2020-09-09 21:50:55 +02:00
Raphael Michel 3f4f9d98de Increase length of multiple-choice country fields 2020-09-09 20:46:42 +02:00
Raphael Michel d703eeb770 Show device serial in backend 2020-09-09 16:30:14 +02:00
Felix Rindt b7754d8737 Command line exporter: support multiple and all events (#1766) 2020-09-09 16:19:12 +02:00
Raphael Michel ed62ecaccb Adjust "mobile" size of widget 2020-09-09 09:22:06 +02:00
Raphael Michel 5c3ef3f2b9 Widget: Fix CSS issue during load 2020-09-08 18:46:47 +02:00
Raphael Michel f3282807e2 Add documentation for check-in type 2020-09-08 18:26:50 +02:00
Raphael Michel 52944ff3a3 Fix obscure crash in log entry view 2020-09-07 11:27:23 +02:00
Raphael Michel 23a9018988 Remove break-all from email CSS 2020-09-07 11:10:11 +02:00
Raphael Michel 936c771d5e Fix FF Android detection 2020-09-07 10:31:23 +02:00
Raphael Michel d064a7affa Add verbose output to runperiodic management command 2020-09-06 22:34:40 +02:00
Raphael Michel 4b894eb433 Merge pull request #1764 from pretix/seat-orgchoice
Support seat choice by organizer
2020-09-06 19:06:33 +02:00
Raphael Michel 6c7ef89779 Add docs for pretix Webinar API 2020-09-06 17:26:20 +02:00
Raphael Michel e8f3a66a8e Add signal pretix.control.signals.event_dashboard_top 2020-09-06 17:25:47 +02:00
Raphael Michel d999971249 Allow to disable self-choice seating 2020-09-06 17:25:47 +02:00
Raphael Michel fb701f25f4 Merge pull request #1761 from pretix-translations/weblate-pretix-pretix 2020-09-04 15:40:20 +02:00
Svyatoslav 913596459a Translated on translate.pretix.eu (Russian)
Currently translated at 29.8% (1114 of 3733 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ru/

powered by weblate
2020-09-04 05:01:43 +02:00
Svyatoslav 04e9ea1ae7 Translated on translate.pretix.eu (Latvian)
Currently translated at 29.5% (1100 of 3733 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/lv/

powered by weblate
2020-09-04 05:01:43 +02:00
Maarten van den Berg 5dc09019ff Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3733 of 3733 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-09-04 05:01:43 +02:00
Maarten van den Berg 7c3671b383 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3733 of 3733 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-09-04 05:01:43 +02:00
Raphael Michel b91c16538e Improve mobile shopping cart experience 2020-09-04 05:01:22 +02:00
Raphael Michel 9ba517109d Allow to inspect logs by device 2020-09-03 14:40:19 +02:00
Raphael Michel 5f86fbc21d Allow to filter event log by device 2020-09-03 14:30:21 +02:00
Raphael Michel fae35cc56f Improve error handling of check-in scans 2020-09-03 14:30:18 +02:00
Raphael Michel 78c5eb4516 Merge branch 'master' of github.com:pretix/pretix 2020-09-02 18:58:22 +02:00
Raphael Michel 860f4c36a4 Name length validation 2020-09-02 18:13:42 +02:00
Martin Gross 311dcfaab0 Add notice that list-view is not available for eventseries with more than 100 dates. 2020-09-02 15:13:59 +02:00
Martin Gross 83a6041a32 Expose Order Time in OrderData-Export 2020-09-02 11:07:50 +02:00
Raphael Michel a2f9bb73ad Fix failing tests 2020-09-01 22:13:19 +02:00
Raphael Michel fb92c9dd64 Remove obsolete restriction from documentation 2020-09-01 21:52:03 +02:00
Raphael Michel aa1910fd70 Add pseudonymization ID to search fields 2020-09-01 16:51:07 +02:00
Raphael Michel f66c266ff7 Fix debugging code 2020-09-01 15:53:56 +02:00
Raphael Michel 7cc5179e85 Fix #1040 -- Work around firefox bug in widget 2020-09-01 15:46:31 +02:00
Raphael Michel f633cc3103 Fix errors around subevent editing 2020-09-01 15:06:03 +02:00
Raphael Michel 5e212c83e4 Add Kosovo to country list 2020-08-31 13:23:13 +02:00
Raphael Michel 2d5768aa20 Fix missing fields in CheckinListOrderPositionSerializer 2020-08-29 12:38:23 +02:00
Martin Gross 8ea66bc05b First try at working around Stripe's iDEAL idempotency issues 2020-08-28 23:21:35 +02:00
Raphael Michel eba17e22fb Show beneficiary on order confirmation page 2020-08-27 14:13:31 +02:00
Raphael Michel 620c956ef8 Delete vouchers when deleting events 2020-08-27 12:41:12 +02:00
Raphael Michel 35debba865 Further attempt at more efificent query 2020-08-26 16:42:34 +02:00
Raphael Michel a635ea527e Fix failing tests 2020-08-26 16:33:31 +02:00
Raphael Michel 6e76db40ed Order API: More efficient query for ?subevent_after_qs= 2020-08-26 15:43:22 +02:00
Raphael Michel 7956074d8b API: Add exclude parameter to check-in lists 2020-08-26 15:20:44 +02:00
Raphael Michel 7a3418e32f SubEvent: Automatically bump all orders when date is changed 2020-08-26 11:00:43 +02:00
Raphael Michel 0bfc436970 Check-in list: Redirect back toe diting after save 2020-08-25 16:19:11 +02:00
Raphael Michel b6fc02255d Allow to clone check-in lists 2020-08-25 15:52:46 +02:00
Raphael Michel a06f94fde1 Clarify "disabled" checkbox 2020-08-25 14:08:27 +02:00
Raphael Michel d5073f416c Merge pull request #1757 from pretix-translations/weblate-pretix-pretix 2020-08-25 12:20:32 +02:00
Dennis Lichtenthäler b32ea0dec4 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3733 of 3733 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-08-25 12:15:52 +02:00
Dennis Lichtenthäler 932851cf96 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3733 of 3733 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-08-25 12:15:51 +02:00
Dennis Lichtenthäler 4513cd7ec3 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (128 of 128 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate
2020-08-25 11:54:59 +02:00
Dennis Lichtenthäler 261878b3fe Translated on translate.pretix.eu (German)
Currently translated at 100.0% (128 of 128 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2020-08-25 11:54:59 +02:00
Dennis Lichtenthäler 31590f7e6c Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3733 of 3733 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-08-25 11:54:59 +02:00
Dennis Lichtenthäler ebe7560f14 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3733 of 3733 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-08-25 11:54:58 +02:00
Raphael Michel c5b722ebc1 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-08-25 11:54:50 +02:00
Raphael Michel 5ea961819d Remove field Seat.name 2020-08-25 11:54:19 +02:00
Martin Gross 983d734c6a Add .swi to allowed MT940 file extensions 2020-08-25 11:30:51 +02:00
Raphael Michel c1bca2f207 isort fix 2020-08-24 17:37:38 +02:00
Raphael Michel 118f0f55e9 Widget: Do not disable products with require_voucher if a voucher is
given
2020-08-24 17:31:57 +02:00
Raphael Michel d1146add38 Allow to re-check-in someone through the backend 2020-08-24 17:27:06 +02:00
Raphael Michel fc18788cb8 Order API: Add `subevent_after` query filter 2020-08-21 19:06:05 +02:00
Raphael Michel a2eb4444b4 Order API: Add `exclude` query parameter 2020-08-21 18:38:24 +02:00
Raphael Michel 606d13e303 Check-in list API: Add `subevent_match` filter 2020-08-21 17:20:37 +02:00
Raphael Michel d90fcee5e1 Fix crash related to vouchers and seats
PRETIXEU-2PY
2020-08-21 16:12:04 +02:00
Raphael Michel e9a4c3845a Fix crash when processing refund for empty order 2020-08-21 16:07:52 +02:00
Raphael Michel 018fac2361 Merge pull request #1756 from pretix/felix-patch 2020-08-21 15:19:45 +02:00
Raphael Michel 41dd71879e Allow to filter items with query parameters on event page 2020-08-21 15:18:37 +02:00
Felix Rindt 738e5d07aa reorder signal docs 2020-08-20 20:42:31 +02:00
Felix Rindt a22451140b fix typo 2020-08-20 20:42:23 +02:00
Raphael Michel 6759506838 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-08-20 13:52:24 +02:00
Raphael Michel 82bb3f3b6e RelativeDate: Allow to specify "minutes before x" 2020-08-20 13:51:55 +02:00
Raphael Michel cdb8a92a47 Merge pull request #1754 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-08-20 13:49:28 +02:00
Svyatoslav 7597344897 Translated on translate.pretix.eu (Russian)
Currently translated at 29.8% (1110 of 3731 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ru/

powered by weblate
2020-08-19 11:30:39 +02:00
Raphael Michel c94d384e86 Improve algorithm for {name} placeholder (#1745)
Co-authored-by: Felix Rindt <felix@rindt.me>
2020-08-19 11:30:34 +02:00
Raphael Michel b2357b7e29 Merge pull request #1751 from pretix-translations/weblate-pretix-pretix 2020-08-19 11:30:02 +02:00
Raphael Michel c7d1e5d069 Allow to reduce the interval of some cronjobs (#1753) 2020-08-19 11:29:53 +02:00
Svyatoslav 754d498938 Translated on translate.pretix.eu (Russian)
Currently translated at 29.5% (1102 of 3731 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ru/

powered by weblate
2020-08-18 18:21:44 +02:00
Maarten van den Berg ec7fc05108 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3731 of 3731 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-08-18 17:34:51 +02:00
Maarten van den Berg bbba0df6c4 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3731 of 3731 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-08-18 17:34:51 +02:00
Maarten van den Berg 65e87455ec Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 98.5% (3674 of 3731 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-08-18 17:34:51 +02:00
Maarten van den Berg e6d09baacc Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3731 of 3731 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-08-18 17:34:51 +02:00
Raphael Michel fbd38fef58 Fix issue in previous commit 2020-08-18 17:34:39 +02:00
Raphael Michel 253f944951 Quota cache refresh: work in chunks 2020-08-18 16:46:37 +02:00
Raphael Michel 7f30f753d7 Actually do not show date on invoices if not shown on frontpage 2020-08-18 13:57:35 +02:00
Raphael Michel 8789a42dc1 Fix tax calculation for negative fees 2020-08-17 15:56:03 +02:00
Raphael Michel e7740b1735 Fix crash on addons without tax rule
PRETIXEU-2MZ
2020-08-17 09:39:59 +02:00
Raphael Michel 586da71a64 Remove Raphael's personal mail address from the README 2020-08-16 19:21:24 +02:00
Martin Gross 68697f0c6a Update po files
[CI skip]

Signed-off-by: Martin Gross <gross@rami.io>
2020-08-13 14:29:53 +02:00
pretix translation bot a2e1bc9c20 Translations update from Weblate (#1744)
Co-authored-by: Maarten van den Berg <maartenberg1@gmail.com>
Co-authored-by: Martin Gross <martin@pc-coholic.de>
2020-08-13 14:26:14 +02:00
Martin Gross 89a82d75a9 Add eMail-Template for free approval orders (#1750)
Co-authored-by: Felix Rindt <felix@rindt.me>
2020-08-13 14:24:39 +02:00
Martin Gross a2414081af Widget: Do not preset item quantity to 1 if there is only one item but an active seating plan 2020-08-13 11:21:24 +02:00
Martin Gross c812d39b39 Filter BankImportJobs explicitly by organizer 2020-08-13 11:10:27 +02:00
Martin Gross c6f3fdd8e4 Move reserved explanation out of tooltip 2020-08-12 16:37:59 +02:00
Martin Gross 30e0f5ebc7 Show seat in checkout_question-fragment when adequate 2020-08-11 17:54:52 +02:00
Martin Gross f767f2f644 Fix encoding of Umlauts in widget (and hopefully don't break it...) 2020-08-10 17:23:05 +02:00
Martin Gross 750c3c5201 Allow for gt and gte selection of change_allow_user_price (#1746) 2020-08-07 11:54:27 +02:00
Raphael Michel 7d9220ae3e Fix issue in 69879bdae 2020-08-06 10:21:57 +02:00
Raphael Michel 69879bdae0 Fix API bug: Do not delete SubEventItems on PATCH request 2020-08-06 09:28:35 +02:00
Raphael Michel 0e245b41ee Fix duplicate call of form_success 2020-08-05 15:18:40 +02:00
Raphael Michel 2839ee1ffd Fix error in b6f47f6f4 2020-08-05 14:41:12 +02:00
Raphael Michel d72a03c434 Allow to adjust ticket cache duration 2020-08-05 13:23:20 +02:00
Raphael Michel b6f47f6f4a API: More validation in custom fields on event serializers 2020-08-05 11:26:11 +02:00
Raphael Michel ca2dd0d6b6 Limit maximum length of event names in email senders 2020-08-05 11:23:27 +02:00
Raphael Michel c4415beb8c Force Django version to be at least 3.0.9 2020-08-05 11:22:35 +02:00
Raphael Michel 35c8684cd4 Prevent issues with order fees and TaxRule.zero() 2020-08-04 14:07:26 +02:00
Raphael Michel 9bb5c57792 Fix possible crash in migration 2020-08-04 11:47:55 +02:00
Felix Rindt 1c8699662d Allow to create invoices before bank transfer runs (#1734)
Co-authored-by: Raphael Michel <michel@rami.io>
2020-08-04 10:53:59 +02:00
Felix Rindt 9b367cb28b Allow to set multiple confirm texts (#1735) 2020-08-04 10:20:55 +02:00
Felix Rindt 896ba5b06b Fix #1740 - Do not group gift card positions (#1743)
Co-authored-by: Raphael Michel <michel@rami.io>
2020-08-04 10:18:04 +02:00
Raphael Michel 8f3dbba859 PDF renderer: Fail silently if bidirectional string handling failes 2020-08-03 18:20:03 +02:00
Felix Rindt bf5b92c465 Copy answers button for addon products (#1733) 2020-08-03 18:15:23 +02:00
Raphael Michel aef09003d9 Make global_html_* signals actually global 2020-08-03 12:32:29 +02:00
Raphael Michel 9d22e833a6 Merge pull request #1737 from pretix-translations/weblate-pretix-pretix 2020-07-31 09:25:00 +02:00
Abdullah 1e121c0f75 Translated on translate.pretix.eu (Arabic)
Currently translated at 78.1% (100 of 128 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ar/

powered by weblate
2020-07-31 09:24:49 +02:00
Abdullah 373755a502 Translated on translate.pretix.eu (Arabic)
Currently translated at 87.6% (3260 of 3720 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ar/

powered by weblate
2020-07-31 09:24:49 +02:00
pajowu 6f694b60ca Add minimum postgres version to docs (#1738) 2020-07-31 09:24:43 +02:00
Felix Rindt 77f76195c8 isort 5.0 config/docs (#1736) 2020-07-30 17:57:26 +02:00
Raphael Michel 355dd4463b Fix typo in docs 2020-07-30 17:57:10 +02:00
Raphael Michel c0c39223aa Addendum to c15344ced 2020-07-30 17:47:05 +02:00
Raphael Michel db7f8d9658 Try to run apt-get update before installations 2020-07-30 16:33:14 +02:00
Raphael Michel c15344ced2 Docker: Pass environment variables when calling supervisord 2020-07-30 16:22:37 +02:00
Raphael Michel 0f3f15a736 Upgrade requests version 2020-07-29 18:30:25 +02:00
Raphael Michel 478f6e3029 Add a !default command to our _variables.scss 2020-07-29 18:30:25 +02:00
Raphael Michel 4c77e2f16e Add signals global_html_head, global_html_page_header, and global_html_footer 2020-07-29 18:30:25 +02:00
Felix Rindt 80b6a3d27d Fix #1675 -- Allow '0' as answer to number questions (#1732)
Co-authored-by: Raphael Michel <michel@rami.io>
2020-07-28 16:32:06 +02:00
Raphael Michel 89e8d3d12f Allow to disable some e-mails depending on sales channel (#1726)
Co-authored-by: Raphael Michel <michel@rami.io>
2020-07-28 09:26:18 +02:00
Raphael Michel baf8a4ae18 Update src/pretix/control/forms/event.py 2020-07-28 09:25:10 +02:00
Raphael Michel 2cdaf07c46 Update src/pretix/control/forms/event.py 2020-07-28 09:24:53 +02:00
Raphael Michel cf76a2e24d Fix typo in docs 2020-07-28 09:23:44 +02:00
Raphael Michel 559b4a8e66 Merge pull request #1730 from pretix-translations/weblate-pretix-pretix 2020-07-27 18:04:19 +02:00
Abdullah 59bf11b98d Translated on translate.pretix.eu (Arabic)
Currently translated at 87.6% (3257 of 3720 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ar/

powered by weblate
2020-07-27 18:03:45 +02:00
Yaling 5b3551fb60 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 82.8% (3081 of 3720 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2020-07-27 18:03:45 +02:00
Raphael Michel 72a5008513 Allow to remove a product from all sales channels 2020-07-27 18:03:26 +02:00
Raphael Michel c5ace8447d Fix country fields always being required 2020-07-27 18:03:10 +02:00
Raphael Michel 28b82841c2 Use edgecase words correctly 2020-07-27 17:55:19 +02:00
Raphael Michel fbe10a981b Add INV to edgecase words 2020-07-27 17:47:31 +02:00
Raphael Michel 21c22aa63a Revert "Next attempt to fix spellcheck"
This reverts commit fb4116012f.
2020-07-27 17:47:15 +02:00
Raphael Michel fb4116012f Next attempt to fix spellcheck 2020-07-27 16:28:51 +02:00
Raphael Michel 53fe4a32cd PyPI CI: Add check-manifest and twine check 2020-07-27 16:25:23 +02:00
Raphael Michel ff066898d4 Fix RTL issue 2020-07-27 16:25:23 +02:00
Felix Rindt cbb848b3fa style 2020-07-24 18:47:59 +02:00
Felix Rindt 98dfdd8b01 no ugettext 2020-07-24 18:44:35 +02:00
Felix Rindt 0e95a7863f tests for placed and paid mails 2020-07-24 18:44:24 +02:00
Raphael Michel 0913f5bc18 Merge pull request #1729 from pretix/project-setup-things 2020-07-24 18:12:34 +02:00
Raphael Michel d1eb4c4cce Add documentation on additional indices 2020-07-24 18:10:25 +02:00
Felix Rindt 4a0a3aff59 rename to download_reminder 2020-07-24 17:57:25 +02:00
Raphael Michel 83908fde45 [experimental] restructure order search query for different performance characteristics 2020-07-24 17:48:50 +02:00
Felix Rindt 143ac10991 rebase migration 2020-07-24 16:59:24 +02:00
Felix Rindt 413cbec4b9 code format 2020-07-24 16:58:05 +02:00
Felix Rindt b168516d78 user guide 2020-07-24 16:58:05 +02:00
Felix Rindt d0ccc42aff add test for ticket reminder (oops) 2020-07-24 16:58:05 +02:00
Felix Rindt 7aa793f4f7 fix name 2020-07-24 16:58:05 +02:00
Felix Rindt 1b48b519e3 add migration 2020-07-24 16:58:05 +02:00
Felix Rindt 5f502776b1 send canonical mails depending on sales channel 2020-07-24 16:58:05 +02:00
Felix Rindt 985e1ac9bf Fix TypeError: Unknown option(s) for shell command: skip_checks. 2020-07-24 16:53:51 +02:00
Felix Rindt df1014d62f modernize isort config for v5.0 2020-07-24 15:55:24 +02:00
Felix Rindt 062afc42d3 change _decimal to decimal 2020-07-24 15:55:05 +02:00
Raphael Michel 1fb861a117 New attempt at improving CheckinList.checkin_count 2020-07-24 15:41:41 +02:00
Raphael Michel 0a2346778d Revert "Refactor query for check-in count"
This reverts commit 60eee25cd1.
2020-07-24 15:37:45 +02:00
Raphael Michel 605a21a0cf Typeahead: Remove ordering of orders to improve query performance 2020-07-24 15:29:26 +02:00
Raphael Michel 1cfec9cc99 Revert "Typeahead: No substring match in admin sessions"
This reverts commit 2626259492.
2020-07-24 15:28:14 +02:00
Raphael Michel 0a97b0ce67 Add progress bar for checkin list export 2020-07-24 13:54:38 +02:00
Raphael Michel 60eee25cd1 Refactor query for check-in count 2020-07-24 13:54:30 +02:00
Raphael Michel 779ec6c3f6 Metrics: Return accurate counts for less interesting models 2020-07-24 13:53:59 +02:00
Raphael Michel 988eb85c05 Fix exporter issue 2020-07-24 11:40:45 +02:00
Raphael Michel 556cb7c46d Add INV to wordlist 2020-07-24 11:01:29 +02:00
Raphael Michel 86e3c30633 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-07-24 10:44:45 +02:00
Raphael Michel 6276f213b9 Increae field size for CachedFile.file 2020-07-24 10:44:08 +02:00
Raphael Michel 524f6c9975 Merge pull request #1727 from pretix-translations/weblate-pretix-pretix 2020-07-24 10:43:45 +02:00
Andreas Teuber 125a14c8e9 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 82.9% (3080 of 3714 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2020-07-24 09:35:20 +02:00
Yaling c7f0e6f652 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 82.9% (3080 of 3714 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2020-07-24 09:35:20 +02:00
Andreas Teuber 1e58ef6f9e Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 82.2% (3052 of 3714 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2020-07-24 09:35:20 +02:00
Raphael Michel 41127ce978 Fix issue in OrderListExporter when mixing subevents with non-subevents 2020-07-24 09:35:11 +02:00
Raphael Michel 99b42d201e Add missing tqdm binary 2020-07-24 09:08:22 +02:00
Raphael Michel 265da6c746 Progress bar instead of acks_late for event cancellation 2020-07-23 21:54:03 +02:00
Raphael Michel d58c8559fc Long-running async tasks: Expose running state 2020-07-23 21:39:13 +02:00
Raphael Michel b5dca762f0 Cancelling events: Fix send_waitinglist flag 2020-07-23 21:38:58 +02:00
Raphael Michel a310c33497 Add progress bar to some large exports 2020-07-23 21:35:58 +02:00
Raphael Michel fc5c3caf66 Fix memory usage in exporters by using chunked iterators 2020-07-23 20:39:49 +02:00
Raphael Michel bff1041878 Excel export: Use openpyxl's constant memory implementation 2020-07-23 20:37:15 +02:00
Raphael Michel 2626259492 Typeahead: No substring match in admin sessions 2020-07-23 18:20:41 +02:00
Martin Gross 18415c62bb Cancellations now use up to date invoice issuer information and do not copy the information over from the original invoice. 2020-07-23 18:02:18 +02:00
Raphael Michel 85f546a3a6 Ignore deadlock when writing quota caches 2020-07-23 17:48:56 +02:00
Raphael Michel 829b0041fc Use database replica for check-in count for statistical purposes 2020-07-23 17:48:31 +02:00
Raphael Michel 4968a6d995 Do not count exists for checkin count 2020-07-23 17:48:18 +02:00
Raphael Michel 033deb7cf2 Add seat information to check-in list export 2020-07-23 12:26:54 +02:00
Felix Rindt e23e88f5c3 Create invoice exporter mixin (#1725)
* Create invoice exporter mixin

* code style
2020-07-22 17:22:56 +02:00
Raphael Michel c3745e792b Fix PaymentProviderForm issue 2020-07-22 16:09:57 +02:00
Raphael Michel 735d4564f8 Allow to change length of invoice numbers 2020-07-21 18:11:39 +02:00
Raphael Michel b305ac012c Fix price field when increasing number of bundles in cart 2020-07-21 17:23:30 +02:00
Raphael Michel 7bd9a01f5e Fix error in price calculation in connection with free prices and bundles 2020-07-21 17:23:08 +02:00
Raphael Michel 8bebea61f1 Improve performance of quota cache task 2020-07-21 16:58:18 +02:00
Raphael Michel 6714ab24ee Force-upgrade hierarkey 2020-07-21 16:58:12 +02:00
Raphael Michel a54dbc0110 Allow file upload in payment provider settings 2020-07-21 11:52:46 +02:00
Raphael Michel 19fa2fb016 CSP: Remove child-src, as it is redundant with frame-src and will get deprecated again 2020-07-21 10:59:13 +02:00
Raphael Michel 12b5d6663e Adjust widget tests 2020-07-21 10:09:51 +02:00
Raphael Michel ca4db5f628 Widget: respect item.allow_waitinglist 2020-07-21 09:46:30 +02:00
Raphael Michel b6a343a623 Add umzubuchen to German spelling list 2020-07-20 17:28:19 +02:00
Raphael Michel dc451cdeea Merge pull request #1722 from pretix-translations/weblate-pretix-pretix 2020-07-20 17:24:51 +02:00
Raphael Michel 6732d13439 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3714 of 3714 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-07-20 17:24:32 +02:00
Raphael Michel 5bf67ba613 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3714 of 3714 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-07-20 17:24:31 +02:00
TimPrd 8885b50972 Translated on translate.pretix.eu (French)
Currently translated at 62.3% (2306 of 3699 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/

powered by weblate
2020-07-20 16:43:06 +02:00
Raphael Michel 940566ab93 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-07-20 16:42:55 +02:00
Raphael Michel e7b9c49620 Allow customers to change to a different product variation (#1719) 2020-07-20 16:36:24 +02:00
Raphael Michel c8ef825de5 Try again to fix export tests 2020-07-20 14:56:03 +02:00
Raphael Michel 5b25a68599 Fix tests broken in 684212780 2020-07-20 14:27:37 +02:00
Raphael Michel e26a07d44d Add documentation on URL interpolation in digital content module 2020-07-20 11:43:05 +02:00
Martin Gross 6842127802 Absent/Checked Out persons in Checkin lists (#1721) 2020-07-20 10:41:39 +02:00
Raphael Michel 3c5948d2e0 Allow selecting the same add-on multiple times (#1717) 2020-07-20 10:21:12 +02:00
Raphael Michel ed3542e219 Fix error in quota statistics 2020-07-20 10:10:36 +02:00
Raphael Michel e439b20618 Fix crash if gift card does not exist 2020-07-17 17:44:01 +02:00
Raphael Michel 5c1fe6f68c Bump to 3.11.0.dev0 2020-07-17 12:56:57 +02:00
Raphael Michel e4e91523a0 Bump to 3.10.0 2020-07-17 12:56:11 +02:00
Raphael Michel 00827700de Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-07-17 09:50:28 +02:00
Raphael Michel 0a87225a9a Add missing fields to API 2020-07-17 09:31:25 +02:00
Raphael Michel 9371d221bf Merge pull request #1720 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-07-17 08:56:50 +02:00
Dennis Lichtenthäler 08a3c846b6 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3700 of 3700 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-07-17 00:00:15 +02:00
Raphael Michel 1c84de9ab2 E-Mail: Do not use .prettify(), it does not preserve the original whitespsace 2020-07-16 17:45:17 +02:00
Raphael Michel 980f4012bc Make sure correct language is active when generating email attachments 2020-07-16 12:14:43 +02:00
Raphael Michel 591d70eabe Merge pull request #1718 from pretix-translations/weblate-pretix-pretix
Co-authored-by: Raphael Michel <michel@rami.io>
2020-07-16 09:03:15 +02:00
Raphael Michel 2c4609604d Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3700 of 3700 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-07-16 09:00:34 +02:00
Raphael Michel 30c2b8b03f Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3700 of 3700 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-07-16 09:00:33 +02:00
Raphael Michel a685af6433 Clone button for products 2020-07-16 08:53:18 +02:00
Raphael Michel f179a220bc Widget: Properly escape voucher codes 2020-07-16 08:42:40 +02:00
Raphael Michel b61893e3b1 Do not even import excluded plugins 2020-07-16 08:42:29 +02:00
Raphael Michel d3282a1acb Fix OrderChangeManager.change_price() for items without tax rule 2020-07-15 09:14:58 +02:00
Raphael Michel c585946e72 Drop "Presale ::" from event page title 2020-07-14 16:53:26 +02:00
Raphael Michel b6245b97ca Validate max length of attendee address 2020-07-14 16:26:46 +02:00
Raphael Michel 51720c3afe Fix irregular behaviour on second use of widget 2020-07-14 09:15:07 +02:00
Andreas Teuber 4746b8e456 Ask only for VAT ID if company is inside EU (#1709)
Co-authored-by: Andreas Teuber <andreas.teuber@passiv.de>
Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
2020-07-13 18:04:09 +02:00
Raphael Michel b2401f7641 Fix grammar error in German translation 2020-07-13 15:57:33 +02:00
Raphael Michel b4cd11ef94 Fix creation of tax rules with custom rules 2020-07-13 15:57:33 +02:00
Raphael Michel 33682e1b38 Fix incorrect preview/history of subject rendering 2020-07-13 15:57:33 +02:00
Raphael Michel e10e3300ba Fix ineffective translation of string 2020-07-12 11:01:15 +02:00
Raphael Michel 4f0eadfd6e Fix language file 2020-07-09 15:18:16 +02:00
Raphael Michel 0f9ec2ce7d Fix ZeroDivisionError in question statistics 2020-07-09 14:56:46 +02:00
Raphael Michel 93e3cf1d99 Update locales 2020-07-09 14:53:16 +02:00
Raphael Michel 3affaa8c85 Show local time if browser timezone is different 2020-07-09 14:51:16 +02:00
Raphael Michel fddf134755 Update spelling wordlist 2020-07-09 10:55:34 +02:00
Raphael Michel 568398e4e7 Merge pull request #1715 from pretix-translations/weblate-pretix-pretix 2020-07-09 10:51:46 +02:00
Raphael Michel fc08531639 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3700 of 3700 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-07-09 10:51:25 +02:00
Raphael Michel bd25ce238d Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3700 of 3700 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-07-09 10:51:24 +02:00
Raphael Michel c88ce8a9a8 Translated on translate.pretix.eu (German)
Currently translated at 99.4% (3673 of 3696 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-07-09 10:32:34 +02:00
Raphael Michel 004403e2c8 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-07-09 10:32:20 +02:00
Raphael Michel 0cde5288ac Fix trailing whitespace 2020-07-09 10:31:46 +02:00
Raphael Michel e585da2901 Merge pull request #1704 from pretix-translations/weblate-pretix-pretix
Co-authored-by: Frank <webappconcept@gmail.com>
Co-authored-by: Dennis Lichtenthäler <lichtenthaeler@rami.io>
Co-authored-by: Raphael Michel <michel@rami.io>
Co-authored-by: oocf <oswaldocerna@gmail.com>
Co-authored-by: Maarten van den Berg <maartenberg1@gmail.com>
2020-07-09 10:31:23 +02:00
Raphael Michel f369fca091 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3684 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-07-09 10:20:39 +02:00
Raphael Michel e0e638ac8c Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3684 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-07-09 10:20:39 +02:00
Dennis Lichtenthäler 4abe906511 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3684 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-07-09 10:20:38 +02:00
Maarten van den Berg 855a47776f Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3684 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-07-09 10:20:24 +02:00
Maarten van den Berg c63c499a95 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 99.8% (3676 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-07-09 10:20:23 +02:00
Maarten van den Berg f06a23ae95 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3684 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-07-09 10:20:09 +02:00
oocf 2b68a22aad Translated on translate.pretix.eu (Spanish)
Currently translated at 83.0% (3058 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2020-07-09 10:19:56 +02:00
Raphael Michel 86d42cc524 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3684 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-07-09 10:19:36 +02:00
Dennis Lichtenthäler 6e8040ac9d Translated on translate.pretix.eu (German)
Currently translated at 100.0% (125 of 125 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2020-07-09 10:19:35 +02:00
Dennis Lichtenthäler c742c9979b Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3684 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-07-09 10:19:19 +02:00
Frank 15f3880fcd Translated on translate.pretix.eu (Italian)
Currently translated at 17.2% (633 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-07-09 10:18:50 +02:00
Raphael Michel 6bf5d8cb5e Revert "Update po files"
This reverts commit 27d772f52f.
2020-07-09 10:07:18 +02:00
Raphael Michel 27d772f52f Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-07-09 09:58:56 +02:00
Raphael Michel 6e9d921af6 Allow country specific tax rules (#1714) 2020-07-08 15:00:13 +02:00
Martin Gross 1c9a1b5e02 Mark invoice as dirty when changing subevent through OCM. 2020-07-07 16:03:55 +02:00
Raphael Michel 640c05729b Backend: Improve asynctask status feedback 2020-07-07 10:42:06 +02:00
Raphael Michel fc9e5166da Order data and invoice data export: Add payment types 2020-07-07 09:14:06 +02:00
Raphael Michel b1eb5bb3df Fix incorrect link 2020-07-06 15:37:16 +02:00
Raphael Michel f690d74be7 Event list: Respect event date in "running" filter 2020-07-03 17:46:41 +02:00
Raphael Michel c52fdc95a7 Allow to disable display of foreign currencies on invoices 2020-07-03 16:44:26 +02:00
Raphael Michel 039ca36233 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-07-03 14:58:08 +02:00
Raphael Michel 9920a47580 Multi export: Allow restriction to organizer 2020-07-03 11:56:36 +02:00
Raphael Michel 74acfbe2fd Fix issue with new pycountry version 2020-07-02 20:11:39 +02:00
Raphael Michel b0b8f32cb9 Always show net total in backend 2020-07-02 19:32:11 +02:00
Raphael Michel 066cf510e3 Add tax total to cart view even if not showing net prices 2020-07-02 19:31:43 +02:00
Raphael Michel aca963d960 Fix tax rate changes if there hasn't been a tax rate before 2020-07-02 19:24:18 +02:00
Raphael Michel 582c7b50f7 Do not parse list in rich_text_snippet 2020-07-02 12:00:18 +02:00
Martin Gross d6b185193e Fix Timezone in Checkinlist 2020-07-01 12:24:04 +02:00
Raphael Michel fb92d500be Fix accidentally commited settings changes 2020-07-01 10:43:37 +02:00
Raphael Michel 27ed9ae4fd Adjust colors in question statistics 2020-06-30 23:57:47 +02:00
Raphael Michel 06fbf56c04 Question stats: Show percentage 2020-06-30 23:18:12 +02:00
Raphael Michel d843fc1545 Fix colors in graph of boolean questions 2020-06-30 23:04:17 +02:00
Raphael Michel cf2af3c94d Import/startup performance improvements 2020-06-30 11:36:30 +02:00
Martin Gross 5f50aa95eb Add TaxRule selection in OrderPositionChange (#1700)
Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
2020-06-30 11:13:33 +02:00
Raphael Michel 626e332886 Fix issue displaying unlimited quota 2020-06-30 10:04:45 +02:00
Gamy 507e1a5b83 Added various missing punctuation marks, changed "following" to "selected" to match the display. 2020-06-30 09:20:11 +02:00
MrGamy 0d1aa2f96e Localization string unification changes
unifying the text bit 'Go to shop' to display 'shop' with a lowercase s in base.html
2020-06-29 18:02:13 +02:00
Raphael Michel df6038e39b Merge pull request #1703 from pretix/quota_release_after_exit
Allow to release quota after exit scans
2020-06-29 14:35:39 +02:00
Raphael Michel 922f12f55e Allow to release quota after exit scans 2020-06-26 16:49:19 +02:00
Raphael Michel fdea190d72 Merge pull request #1702 from pretix-translations/weblate-pretix-pretix
Co-authored-by: Frank <webappconcept@gmail.com>
Co-authored-by: Maarten van den Berg <maartenberg1@gmail.com>
2020-06-25 12:46:43 +02:00
Maarten van den Berg 34fe34d50a Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3684 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-06-24 19:40:23 +02:00
Frank 3412c1d2a9 Translated on translate.pretix.eu (Italian)
Currently translated at 16.9% (623 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-24 19:40:23 +02:00
Maarten van den Berg 6f58f30d92 Translated on translate.pretix.eu (Dutch)
Currently translated at 99.8% (3676 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-06-24 19:40:23 +02:00
Frank 19b5610503 Translated on translate.pretix.eu (Italian)
Currently translated at 15.4% (569 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-24 19:40:23 +02:00
Raphael Michel 55670b92a8 Merge branch 'master' of github.com:pretix/pretix 2020-06-24 19:40:12 +02:00
Raphael Michel e5cc15ffac Improve responsiveness of organizer page 2020-06-24 19:39:57 +02:00
Martin Gross 249e6978ea Display subevent time for each item in addon and question step 2020-06-24 17:06:25 +02:00
Martin Gross a223d57124 Reduce minimal waitinglist voucher validity to 1 hour 2020-06-24 13:26:38 +02:00
Raphael Michel 2a5c24482e Question list: Drop pagination, allow to mix ordering with system fields 2020-06-23 13:05:54 +02:00
Martin Gross 868292f9b3 Fix All Invoice-export (missing file extension; missing "all payment providers") 2020-06-23 10:58:39 +02:00
Raphael Michel 5c24fd966a Fix locale error 2020-06-22 16:09:55 +02:00
Raphael Michel 61490a9ee8 Merge pull request #1701 from pretix-translations/weblate-pretix-pretix 2020-06-22 09:42:55 +02:00
Frank 3c3333c485 Translated on translate.pretix.eu (Italian)
Currently translated at 15.3% (565 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-22 09:42:19 +02:00
Frank 4c19002be6 Translated on translate.pretix.eu (Italian)
Currently translated at 14.7% (541 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-20 19:11:38 +02:00
Frank 2c49eaeef8 Translated on translate.pretix.eu (Italian)
Currently translated at 14.7% (540 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-20 19:11:38 +02:00
Raphael Michel 481e29c3b2 Allow to explicitly disable products for certain subevents 2020-06-20 19:10:44 +02:00
Raphael Michel 0aebde62eb Fix missing variation attributes when copying items 2020-06-20 18:21:12 +02:00
Raphael Michel 49e44f68ba Merge pull request #1699 from pretix-translations/weblate-pretix-pretix 2020-06-19 13:10:52 +02:00
Frank 84dc9f241d Translated on translate.pretix.eu (Italian)
Currently translated at 14.6% (538 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-19 13:07:28 +02:00
Frank 07b05f4a44 Translated on translate.pretix.eu (Italian)
Currently translated at 13.6% (500 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-19 01:00:12 +02:00
Raphael Michel d1c1aed1f2 Widget: Improve support for week calendars 2020-06-18 17:43:22 +02:00
Raphael Michel de9f7248cc Widget: Fix issue navigating back to month calendar 2020-06-18 16:38:58 +02:00
Raphael Michel 0d45706608 Try to fix widget bug in IE introduced in ebb1cc1be 2020-06-18 12:33:26 +02:00
Raphael Michel 016dd88e8b Remove Italian from incubating languages 2020-06-18 12:13:28 +02:00
Raphael Michel 6362c27cba Merge pull request #1697 from pretix-translations/weblate-pretix-pretix 2020-06-18 12:12:57 +02:00
Frank 7396f29b82 Translated on translate.pretix.eu (Italian)
Currently translated at 11.6% (427 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-18 12:00:52 +02:00
Frank ff9f6b6a36 Translated on translate.pretix.eu (Italian)
Currently translated at 10.3% (378 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-17 18:08:14 +02:00
Raphael Michel 7359b5543d Set calendar as default for event series 2020-06-17 18:07:54 +02:00
Raphael Michel 74a0cafa0f Revert "Switch to calendar at 25 subevents already"
This reverts commit 8001063347.
2020-06-17 18:07:07 +02:00
Raphael Michel 16472e915d PDF: Show event time on default layout 2020-06-17 12:27:38 +02:00
Martin Gross ec6844f900 Display Boxoffice iZettle payment details 2020-06-16 22:11:54 +02:00
Raphael Michel e6455f8204 Organizer-level export: Fix incorrect event queryset 2020-06-16 12:03:59 +02:00
Raphael Michel 4c48fcd861 Move export down in organizer navigation 2020-06-16 11:39:44 +02:00
Raphael Michel adfd7834fb Add subevent date to ticket filename 2020-06-16 11:37:47 +02:00
Raphael Michel a4b8315487 Merge pull request #1695 from pretix-translations/weblate-pretix-pretix 2020-06-16 11:07:08 +02:00
Frank 8594fecad4 Translated on translate.pretix.eu (Italian)
Currently translated at 9.0% (331 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-16 11:06:46 +02:00
Frank 61979f0c40 Translated on translate.pretix.eu (Italian)
Currently translated at 8.4% (311 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-16 11:06:46 +02:00
Frank df5f8a340b Translated on translate.pretix.eu (Italian)
Currently translated at 8.4% (310 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-16 11:06:46 +02:00
Frank 651e797264 Translated on translate.pretix.eu (Italian)
Currently translated at 7.9% (290 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-16 11:06:46 +02:00
Frank d40010fab6 Translated on translate.pretix.eu (Italian)
Currently translated at 7.4% (271 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-16 11:06:45 +02:00
Frank 89c3d59e6d Translated on translate.pretix.eu (Italian)
Currently translated at 7.0% (257 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-16 11:06:45 +02:00
Frank b30569a941 Translated on translate.pretix.eu (Italian)
Currently translated at 100.0% (125 of 125 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/it/

powered by weblate
2020-06-16 11:06:45 +02:00
Frank fe230fe56d Translated on translate.pretix.eu (Italian)
Currently translated at 6.4% (236 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2020-06-16 11:06:45 +02:00
Martin Gross 0b20d3f6f8 Organizer/MultiEvent-Exports (#1684)
Co-authored-by: Raphael Michel <michel@rami.io>
2020-06-16 11:06:40 +02:00
Raphael Michel e895c13b28 Re-label "Buy tickets" button 2020-06-16 10:35:07 +02:00
Martin Gross 5cc0bd5d36 Optional PayPal Reference Prefix (Z#2359330) (#1696)
* Optional PayPal Reference Prefix (Z#2359330)

* Move prefix to end
2020-06-15 18:23:01 +02:00
Raphael Michel 569379e508 Order API: Add search 2020-06-15 15:12:09 +02:00
Raphael Michel d975a68641 Allow to turn off CSP reporting 2020-06-15 15:12:09 +02:00
Raphael Michel c992de341f Revert "PayPal: Add additional protection against invalid sessions"
This reverts commit 99e02bde36.
2020-06-14 12:29:20 +02:00
Raphael Michel 11cc27dbd6 Fix crash when trying to refund an order with a disabled payment mehtod 2020-06-12 14:01:15 +02:00
Raphael Michel 90e70eae25 Fix test (see 45f120b0c) 2020-06-12 13:58:49 +02:00
Raphael Michel 9eacd38ec7 PayPal: Improve handling of exceptions form paypalrestsdk 2020-06-12 13:21:44 +02:00
Raphael Michel d1c96aa77c PayPal: Remove unused session key 2020-06-12 13:21:44 +02:00
Raphael Michel 99e02bde36 PayPal: Add additional protection against invalid sessions 2020-06-12 13:21:44 +02:00
Raphael Michel e7da2aec53 PayPal: Fix critical bug leading to wrong order being paid in a rare session constellation 2020-06-12 13:21:44 +02:00
Raphael Michel d0c6f0f0e9 Allow to shred data 30 days after event (instead of 60) 2020-06-11 10:44:27 +02:00
Raphael Michel 3ae148956f Add spellcheck lists 2020-06-10 18:24:00 +02:00
Raphael Michel e0436039d2 Merge pull request #1694 from pretix-translations/weblate-pretix-pretix 2020-06-10 18:15:40 +02:00
Raphael Michel 29510b8617 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3684 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-06-10 18:13:54 +02:00
Raphael Michel 2d88da3a67 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3684 of 3684 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-06-10 18:13:53 +02:00
Raphael Michel fbb88602d4 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-06-10 18:02:48 +02:00
Raphael Michel 7d7820a4ee Merge pull request #1693 from pretix/series-creation 2020-06-10 18:02:16 +02:00
Raphael Michel 8001063347 Switch to calendar at 25 subevents already 2020-06-10 18:01:52 +02:00
Raphael Michel 0c3a200355 Do not auto-create a first subevent 2020-06-10 17:59:59 +02:00
Maico Timmerman ebb1cc1be7 Fix #1689 -- Widget: disable buy button without selected products (#1692) 2020-06-10 17:58:10 +02:00
Raphael Michel 45f120b0c3 API: Modified settings endpoint for devices 2020-06-10 17:45:31 +02:00
Martin Gross bae0e45d00 Add W-indicator to Week-Calendar Dropdown 2020-06-10 12:59:21 +02:00
Martin Gross 057fd95706 Fix op.address_format() when no zip code is provided 2020-06-10 11:01:08 +02:00
Martin Gross 597d4aa206 Fix attendee_address 2020-06-10 10:32:20 +02:00
Raphael Michel 7f9b245eb5 Fix Preview button for ticket formats 2020-06-09 09:54:28 +02:00
Raphael Michel 42490c6dec New event series selection field 2020-06-08 16:20:50 +02:00
Raphael Michel 60c0b7da12 If date isn't shown on front page, don't show it on invoices 2020-06-08 14:49:06 +02:00
Raphael Michel 7d41922274 Minor improvemnet to widget views 2020-06-07 12:07:03 +02:00
Raphael Michel fc7fbf31c5 Keep cached tickets around for a shorter interval 2020-06-05 12:10:10 +02:00
Raphael Michel da5433325c Fix hardcoded ID in test 2020-06-05 10:03:16 +02:00
Raphael Michel 939a38d53b Fix subsequent issue on event level domains 2020-06-04 20:32:21 +02:00
Raphael Michel a57280004e Fix another multidomain issue 2020-06-04 20:15:26 +02:00
Raphael Michel ce896cec8f Fix bug in previosu commit 2020-06-04 19:05:07 +02:00
Raphael Michel effc9723f1 Add event meta data fields to order search form 2020-06-04 18:39:30 +02:00
Raphael Michel cd5f6b66a1 Do not cache event/organizer instance in multi domain middleware (might be harmful) 2020-06-04 18:33:15 +02:00
Raphael Michel 0d35064d21 Order create API: Fix addon_to in simulated mode
PRETIXEU-275
2020-06-02 16:48:52 +02:00
Raphael Michel 314ce5467f Disable autocomplete for all date/time picker fields 2020-06-02 12:42:12 +02:00
Raphael Michel d97ef380a4 Bump to 3.10.0.dev0 2020-06-02 12:33:17 +02:00
Raphael Michel d3498c419d Bump to 3.9.0 2020-06-02 12:32:09 +02:00
Raphael Michel 0d90ae9d53 SizedField: Do not crash without max_size 2020-06-02 12:31:52 +02:00
Raphael Michel 796d6f92ef Merge pull request #1690 from pretix-translations/weblate-pretix-pretix 2020-06-02 12:31:35 +02:00
Maarten van den Berg 73faecaa39 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3673 of 3673 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-06-02 06:00:10 +02:00
Maarten van den Berg e04e8e8ca6 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3673 of 3673 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-06-01 04:00:15 +02:00
Mikkel Ricky 89a9148073 Translated on translate.pretix.eu (Danish)
Currently translated at 43.6% (1602 of 3673 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/

powered by weblate
2020-05-31 12:35:03 +02:00
Maarten van den Berg 205faafc57 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (125 of 125 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate
2020-05-31 12:35:03 +02:00
Maarten van den Berg db8ed065df Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3673 of 3673 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-05-31 12:35:03 +02:00
Maarten van den Berg c84ae364ba Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3673 of 3673 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-05-31 12:35:03 +02:00
Raphael Michel 55a57dced2 Update seating-plan.schema.json 2020-05-31 12:34:46 +02:00
Raphael Michel 62db01e353 Check-in list export: Allow to filter by subevent date 2020-05-29 19:06:14 +02:00
Raphael Michel e435e7140c Check-in list PDF exporter: Cross-subevent improvements 2020-05-29 18:59:02 +02:00
Raphael Michel f4d38965cc Allow to limit distance metric to rows 2020-05-29 17:48:20 +02:00
Martin Gross 5d080a4ab2 Merge pull request #1688 from pretix/paypal_userinfo
Do not hard fail on Unauthorized PayPal Userinfo-calls
2020-05-29 14:30:05 +02:00
Martin Gross 7895729c38 Do not hard fail on Unauthorized PayPal Userinfo-calls (Fixes PRETIXEU-XQ) 2020-05-29 13:48:37 +02:00
Raphael Michel 3b003d0baa Merge pull request #1686 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-05-29 11:44:53 +02:00
Raphael Michel 69a4a16793 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3673 of 3673 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-05-29 11:43:59 +02:00
Raphael Michel cf3412d54d Implement corona-safe seating (#1685) 2020-05-29 11:39:47 +02:00
Raphael Michel 03bcfc7c5a Fix issues from 1c8468c21 2020-05-29 09:20:18 +02:00
Raphael Michel a6c1c85591 Fix broken tests 2020-05-28 22:47:32 +02:00
Raphael Michel 1c8468c21b Cancellation/refund: prefer placeholder over value 2020-05-28 18:55:37 +02:00
Raphael Michel dcc54a0204 SizeFileField: Fix error message format 2020-05-27 14:38:14 +02:00
Raphael Michel 435b32a6b8 Add full attendee address as PDF variable 2020-05-27 12:36:43 +02:00
Raphael Michel 9e93560f7c Add spacing around banners 2020-05-26 16:03:58 +02:00
pajowu e12e7a5dd3 Support HERMA Namensetiketten 50x80mm (4412) (#1681) 2020-05-26 13:50:44 +02:00
Raphael Michel e822ba5430 Only validate size on uploaded files 2020-05-25 16:06:06 +02:00
Raphael Michel b1ee355663 Fix Checkin.MultipleObjectsReturned in backend checkin 2020-05-25 15:46:31 +02:00
Raphael Michel ca40ddc39b Fix AttributeError in SizeFileField 2020-05-25 15:44:46 +02:00
Raphael Michel 1b85911a76 Fix locale to country guessing 2020-05-22 18:20:00 +02:00
Raphael Michel 27b56b5aea Limit extensions and sizes of further file uploads 2020-05-22 15:01:18 +02:00
Raphael Michel 5147508ef9 Fix TypeError 2020-05-22 12:31:07 +02:00
Raphael Michel 39ae22b8b2 Calendar view: Consistent sorting of events at the same time 2020-05-22 11:54:37 +02:00
Raphael Michel 65b612eabd Fix possible ZeroDivisionError in quota calculation 2020-05-19 17:22:52 +02:00
Raphael Michel 48d2f98815 Add acks_late for sendmail task 2020-05-19 16:39:25 +02:00
Raphael Michel 5dd5ff8a7c Set acks_late=True on celery tasks where we would prefer double execution over failure 2020-05-19 16:33:16 +02:00
Martin Gross 059bdc629e Merge pull request #1678 from pretix-translations/weblate-pretix-pretix 2020-05-19 11:20:16 +02:00
Mie Frydensbjerg 36532e5bbb Translated on translate.pretix.eu (Danish)
Currently translated at 43.3% (1591 of 3673 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/

powered by weblate
2020-05-19 11:19:44 +02:00
Mie Frydensbjerg ed318791fb Translated on translate.pretix.eu (Danish)
Currently translated at 75.2% (94 of 125 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/da/

powered by weblate
2020-05-19 11:19:09 +02:00
Maarten van den Berg 4d61ec4d86 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (125 of 125 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2020-05-19 09:35:27 +02:00
Maarten van den Berg cc2f8ac3da Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3673 of 3673 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-05-19 09:35:27 +02:00
Raphael Michel 770293e8ec Fix docs typo 2020-05-19 09:35:18 +02:00
Raphael Michel 0ab11a8134 Timeslot guide: Product creation 2020-05-16 11:52:35 +02:00
Raphael Michel 7e56100c21 Rebuild docs if code changes 2020-05-15 18:21:58 +02:00
Raphael Michel 6fecb42e26 Merge pull request #1677 from pretix/timeslot-docs 2020-05-14 15:29:53 +02:00
Raphael Michel 4c063272d4 Update timeslots.rst 2020-05-14 14:52:41 +02:00
Raphael Michel 029f113b06 Add docs on timeslots 2020-05-14 13:25:07 +02:00
Raphael Michel 7827b026fd Update screenshots in documentation 2020-05-14 13:16:00 +02:00
Raphael Michel bd4ccf4507 Merge pull request #1669 from pretix-translations/weblate-pretix-pretix 2020-05-14 09:42:44 +02:00
Raphael Michel f95d2972d3 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (125 of 125 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2020-05-14 09:40:32 +02:00
Raphael Michel e642098a5f Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3673 of 3673 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-05-14 09:40:32 +02:00
Raphael Michel bf11dea798 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3673 of 3673 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-05-14 09:40:32 +02:00
Raphael Michel 9e47f37097 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (125 of 125 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate
2020-05-14 09:40:32 +02:00
Martin Gross 149c25e609 Translated on translate.pretix.eu (Latvian)
Currently translated at 30.5% (1112 of 3647 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/lv/

powered by weblate
2020-05-14 09:40:32 +02:00
Raphael Michel fccd7a5499 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3647 of 3647 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-05-14 09:40:32 +02:00
Raphael Michel d16acf0bfd Add words to spelling wordlist 2020-05-14 09:40:19 +02:00
Raphael Michel 71c915f5f7 Fix incorrect foreign currency total on invoices 2020-05-14 09:22:52 +02:00
Raphael Michel f1c29daa42 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-05-13 18:45:12 +02:00
Raphael Michel fec31823ee Do not show "None" string to user 2020-05-13 18:41:45 +02:00
Raphael Michel c056db46b6 Overhaul of our check-in features (#1647) 2020-05-13 18:01:49 +02:00
Raphael Michel 640b9c876d Stripe: Lock payment object while processing refund 2020-05-13 16:43:46 +02:00
Martin Gross 25ad2ea475 Fix display of quota items. 2020-05-13 13:56:36 +02:00
Martin Gross d2dfbca913 Fix missing translation tag on order cancellation page 2020-05-13 09:50:19 +02:00
Raphael Michel 7287a16711 Add attendee country as a PDF variable 2020-05-11 10:32:04 +02:00
Raphael Michel c6e969b7fe Do not require rewriting of organizer and event tables because of a django-level field type change 2020-05-10 12:51:19 +02:00
Raphael Michel c03c278ecd Stop using Django's SlugField to avoid conflicting validation 2020-05-10 12:42:37 +02:00
Raphael Michel 140f041cc1 Gift card refund: Use order language 2020-05-07 16:53:16 +02:00
Raphael Michel de9c450648 Week calendar and more improvements to subevent calendars (#1672) 2020-05-07 15:48:47 +02:00
Raphael Michel 6a4c81ff3c Fix two bugs introduced in e117545b3 2020-05-07 14:48:14 +02:00
Raphael Michel e117545b3f Refactor quota calculation (#1668) 2020-05-07 09:34:27 +02:00
Raphael Michel feb7f419d3 Minor performance improvements for generating many subevents 2020-05-06 16:19:46 +02:00
Raphael Michel ea04c85486 Various improvements to the subevent creation form (#1670) 2020-05-06 15:50:43 +02:00
Raphael Michel 094450564a Merge pull request #1671 from pretix/gobal_order_filters_improvements 2020-05-06 14:12:54 +02:00
Martin Gross 66d3c4516f Move stuff to OrderFilterForm 2020-05-06 13:48:45 +02:00
Martin Gross 4b01c42f31 Improve global order filters 2020-05-06 13:12:17 +02:00
Raphael Michel c0972ef39d Re-run form handlers when validation of an async form fails 2020-05-06 09:51:45 +02:00
Raphael Michel 4d1cbd8248 Merge pull request #1667 from pretix-translations/weblate-pretix-pretix 2020-05-05 16:46:31 +02:00
Raphael Michel 07eb71400a Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3647 of 3647 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-05-05 16:43:54 +02:00
Raphael Michel f6f72d4b7f Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3647 of 3647 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-05-05 13:15:15 +02:00
Raphael Michel 08d89acffd Translated on translate.pretix.eu (German)
Currently translated at 99.9% (3646 of 3647 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-05-05 13:15:04 +02:00
Raphael Michel 28831d674f Fix typo in language files 2020-05-05 13:01:58 +02:00
Raphael Michel 65f1c20af0 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-05-05 12:42:49 +02:00
Raphael Michel 5b2b3d71ec Change "Paid" to "confirmed" for free orders 2020-05-05 12:41:58 +02:00
Raphael Michel 15bdcb9973 Change "SOLD OUT" to "FULLY BOOKED" for free tickets 2020-05-05 12:17:31 +02:00
Raphael Michel 1a1afcddc6 Self-service canellations with custom fee: More tolerant decimal parsing 2020-05-04 17:29:29 +02:00
Raphael Michel 219c82b028 Always allow to shred empty event series
PRETIXEU-24B
2020-05-04 17:24:49 +02:00
Raphael Michel 19e2158f19 Payment list export: Allow to filter by payment/refund state 2020-05-04 17:09:12 +02:00
Raphael Michel 23055cfe09 Merge pull request #1665 from pretix-translations/weblate-pretix-pretix 2020-05-04 13:22:25 +02:00
Raphael Michel 790f248388 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3642 of 3642 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-05-04 13:16:23 +02:00
Raphael Michel ef8d9bdb93 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3642 of 3642 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-05-04 13:16:23 +02:00
Maarten van den Berg 0d9b534cee Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3642 of 3642 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-05-04 13:16:23 +02:00
Gonzalo Gabriel Perez b1b303e598 Translated on translate.pretix.eu (Spanish)
Currently translated at 96.2% (102 of 106 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/es/

powered by weblate
2020-05-04 13:16:23 +02:00
Maarten van den Berg b4f3a665af Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3642 of 3642 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-05-04 13:16:23 +02:00
Raphael Michel f71153db4a De-emphasize resend links button 2020-05-04 13:16:10 +02:00
Raphael Michel 1643005a4b simple_logo email renderer: Add top margin to logo 2020-05-04 12:58:22 +02:00
Raphael Michel 0ee2f674bc Stop asking for provinces in china (causes problems for users
apparently)
2020-05-04 11:57:20 +02:00
Martin Gross d142a09ad3 Order Data Export: Add locale to position-sheet 2020-05-04 10:59:30 +02:00
Martin Gross 68c13aaa3c Reverse-sort TLDs for markdown, so longer TLDs match first (.com before .co) 2020-05-04 10:49:43 +02:00
Martin Gross 556c77a54b Correctly process missing, redacted data (Fix PRETIXEU-23M) 2020-04-30 11:56:09 +02:00
Martin Gross 5b689e5fd2 Correctly process missing, redacted data (Fix PRETIXEU-23M) 2020-04-30 11:48:36 +02:00
Raphael Michel 57f5fbc131 Fix race condition when loading styles within the widget 2020-04-29 11:40:25 +02:00
Raphael Michel 7e80ec93d5 Hide PayPal secret key in global settings 2020-04-29 11:27:38 +02:00
Raphael Michel ee1928aeed Do not expose secret keys in global settings 2020-04-29 11:25:22 +02:00
Raphael Michel 5c62f2b852 Fix documentation copy-and-paste error (danke @luto) 2020-04-29 10:52:13 +02:00
Martin Gross ad8be705fd Update bleach to 3.1.4 2020-04-28 15:07:35 +02:00
Raphael Michel 4635d9b5f7 Ensure order gets canceled when locked 2020-04-28 12:32:07 +02:00
Raphael Michel ace32f3fc4 Remove one more usage of non-cached Countries() 2020-04-27 18:06:48 +02:00
Raphael Michel 88a235da30 Allow to set event_list_type on event level 2020-04-27 18:06:37 +02:00
Raphael Michel 4ec24fc884 PayPal: Show sale ID in backend 2020-04-27 11:39:57 +02:00
Raphael Michel e2b9fe8e71 Fix crash in self-service cancellation
PRETIXEU-23B
2020-04-24 16:52:11 +02:00
Raphael Michel 6f1c29581d Merge pull request #1662 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-04-24 09:59:07 +02:00
Raphael Michel 9bf0a6dfcd Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3642 of 3642 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-04-24 09:43:28 +02:00
Raphael Michel 3e6e324027 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3642 of 3642 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-04-24 09:43:27 +02:00
Raphael Michel 912e6816df Translated on translate.pretix.eu (German (informal))
Currently translated at 99.9% (3638 of 3642 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-04-24 09:41:46 +02:00
Raphael Michel d00aa2f3ad Translated on translate.pretix.eu (German)
Currently translated at 99.9% (3638 of 3642 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-04-24 09:41:46 +02:00
Raphael Michel 41fecf366c Fix translation typos again 2020-04-24 09:41:29 +02:00
Raphael Michel f7f751bda7 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-04-24 09:37:15 +02:00
Raphael Michel 7b68614de3 Merge pull request #1660 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-04-24 09:36:37 +02:00
Maarten van den Berg c0fc259d17 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3639 of 3639 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-04-24 09:36:21 +02:00
Maarten van den Berg d6cad265fc Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3639 of 3639 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-04-24 09:36:21 +02:00
Raphael Michel bb1882aca5 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3639 of 3639 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-04-24 09:36:21 +02:00
Raphael Michel b887c2c43d More precise texts in the download fragment 2020-04-24 09:36:01 +02:00
Raphael Michel c05bf779bd Remove icon again 2020-04-24 09:35:55 +02:00
Raphael Michel 68ff001bb6 Do not run tests on translation-only PRs 2020-04-24 09:15:49 +02:00
Martin Gross 3c6fdd15af Expose apple-developer-merchantid-domain-association on event_p… (#1661) 2020-04-24 09:14:39 +02:00
Raphael Michel 16957eec33 Initialize bulk create form with weekly instead of yearly events 2020-04-22 16:57:28 +02:00
Raphael Michel 1bcf1ec26a Actually run isort instead of flake8 2020-04-22 12:16:29 +02:00
Raphael Michel d224b5387d Replace Travis with GitHub actions and fix many typos (#1657)
* Create django.yml

* Fix working directory

* ..

* .

* ..

* a.

* ..

* .

* Fix typo

* Install hunspell

* maxfail

* Fix install

* .

* Reduce number of typos

* Even less typos

* Postgres debug

* Spelling fixes, yet again

* Postgres with PW

* Fix failing test

* New workflows

* Fix syntax error

* Install gettext

* Test aginst python 3.6 as well

* Clean up strategies

* Add badge, do not ignore migrations

* Use pip cache
2020-04-22 12:07:58 +02:00
Raphael Michel 27d6e49c4a GiftcarD Only allow reversal for refunds 2020-04-22 09:34:15 +02:00
Raphael Michel 50bb66a32b Merge pull request #1658 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-04-21 18:45:16 +02:00
Raphael Michel 207149f681 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3639 of 3639 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-04-21 18:44:51 +02:00
Raphael Michel e0ed25a1d3 Translated on translate.pretix.eu (German)
Currently translated at 99.9% (3638 of 3639 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-04-21 18:44:49 +02:00
Raphael Michel c0c177d755 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-04-21 15:57:55 +02:00
Raphael Michel f2844ac686 Add expiry dates and individual conditions to gift cards (#1656)
* Add expiry dates and individual conditions to gift cards

* Display refund gift cards with more details and prettier interface

* Allow to set gift card expiry and conditions when cancelling event

* Extend gift card search

* Fix #1565 -- Some gift card filters

* Improve list of gift cards

* Allow to edit gift cards

* Note on validity
2020-04-21 15:57:02 +02:00
Raphael Michel d9fd4b33a0 Enforce language in timeline test 2020-04-21 11:14:29 +02:00
Raphael Michel d2415f46df Hide some header elements when printing 2020-04-21 11:14:09 +02:00
Raphael Michel ad7c745465 Fix bug introduced in last commit 2020-04-21 10:44:40 +02:00
Raphael Michel b260cca412 Event setup: Do not create additional teams for staff 2020-04-21 09:33:50 +02:00
Raphael Michel 82c84a0fdc Merge pull request #1655 from pretix-translations/weblate-pretix-pretix 2020-04-20 19:18:03 +02:00
Raphael Michel d703c4de7a Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3622 of 3622 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-04-20 19:17:24 +02:00
Raphael Michel ff5fbf1c15 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3622 of 3622 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-04-20 19:17:23 +02:00
Raphael Michel 41ff4bca7f Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-04-20 19:14:38 +02:00
Raphael Michel 37f45de8a5 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3621 of 3621 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-04-20 19:14:30 +02:00
Raphael Michel 71f01c17bd Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3621 of 3621 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-04-20 19:14:29 +02:00
Raphael Michel 43b1df572f Add translation context 2020-04-20 19:14:02 +02:00
Raphael Michel ecda905ceb Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-04-20 19:06:28 +02:00
Raphael Michel 4e59b02bb1 Re-label cart button if cart is not visible or all products are free 2020-04-20 19:05:21 +02:00
Raphael Michel 234bf093ff Fix isort issues 2020-04-20 17:46:27 +02:00
Raphael Michel ae9bd1b6ba Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-04-20 17:46:02 +02:00
Raphael Michel b84b51250f More visible download buttons for single tickets 2020-04-20 17:45:20 +02:00
Raphael Michel d0dd2116ca Enlarge download button for multi downloads 2020-04-20 17:45:19 +02:00
Raphael Michel 945218035e Re-design number of products in cart overview 2020-04-20 17:45:19 +02:00
Raphael Michel 89f8436e9a Merge pull request #1649 from pretix-translations/weblate-pretix-pretix 2020-04-20 17:44:52 +02:00
Raphael Michel 4992b17966 Squash some migrations 2020-04-20 17:16:02 +02:00
Raphael Michel f7d057f9fa Translated on translate.pretix.eu (French)
Currently translated at 64.1% (2315 of 3609 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/

powered by weblate
2020-04-20 17:15:54 +02:00
Maarten van den Berg 96ba32b1bb Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3609 of 3609 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-04-20 17:15:54 +02:00
Maarten van den Berg 02792e3ae8 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3609 of 3609 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-04-20 17:15:54 +02:00
Raphael Michel a87fe3ef41 Allow to revert a gift card refund 2020-04-20 13:19:32 +02:00
Raphael Michel bb673e0cc9 Fix localized decimal validation when creating manual gift card transactions 2020-04-20 12:57:03 +02:00
Raphael Michel 0b02bcea8b Prevent cancelling all subevents by accident 2020-04-19 14:17:41 +02:00
Martin Gross 1d8668aaf1 Exclude all kinds of Umlauts from GiroCodes (Fix: #1314) 2020-04-17 19:14:54 +02:00
Martin Gross 0783add3b9 Restrict PayPal plugin to supported PayPal currencies (Fix: #1160) 2020-04-17 18:56:00 +02:00
Martin Gross 2030aaf12e Fix #1488 some more: compile the regex' less often for better performance 2020-04-17 17:53:57 +02:00
Martin Gross 7ce4c30922 Parse more nTLDs and gTLDs (Fix #1488) 2020-04-17 17:44:08 +02:00
Raphael Michel f1e772c829 Bump to 3.9.0.dev0 2020-04-17 17:19:40 +02:00
Raphael Michel 31d1fc31cd Bump version to 3.8.0 2020-04-17 17:19:02 +02:00
Raphael Michel 597211d83a Merge pull request #1646 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-04-17 17:11:24 +02:00
Raphael Michel 17679d4304 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3609 of 3609 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-04-17 17:11:08 +02:00
Raphael Michel 0fb70c78a9 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3609 of 3609 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-04-17 17:11:07 +02:00
Raphael Michel e254e90e49 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-04-17 16:26:52 +02:00
Raphael Michel 9c6e5f025d Merge pull request #1642 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-04-17 16:26:21 +02:00
Raphael Michel 3c86532218 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3601 of 3601 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-04-17 16:25:29 +02:00
Raphael Michel 3834ae566f Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3601 of 3601 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-04-17 16:25:29 +02:00
Raphael Michel 6766b2b19e Fix #1645 -- Allow one-letter event slugs 2020-04-17 16:25:04 +02:00
Raphael Michel b6d2f67c7c Cache sorting of countries 2020-04-17 13:21:13 +02:00
Raphael Michel e70f593a94 Minor SQL performance improvements 2020-04-17 12:14:37 +02:00
Raphael Michel ed5726fc0c Merge branch 'master' of github.com:pretix/pretix 2020-04-17 12:04:41 +02:00
Martin Gross 5400d26c60 Log the reason for failed PayPal refunds 2020-04-17 12:02:43 +02:00
Raphael Michel 0bb6104532 Flip order of invoices and tickets in email attachments 2020-04-16 13:14:06 +02:00
Raphael Michel 16aa403735 Fix incorrect checkin list tests 2020-04-15 13:06:24 +02:00
Martin Gross 1c279a92a7 Merge pull request #1643 from pretix/event_cancellation_giftcard_refund
Allow to issue gift card refunds when cancelling whole events
2020-04-15 13:00:41 +02:00
Martin Gross 35985dcb11 Remove legal warning, make refund_as_giftcard-option clearer. 2020-04-15 12:58:43 +02:00
Raphael Michel b0dcbe31fa Fix incorrect quota error when changing subevent and item of a position 2020-04-15 12:54:57 +02:00
Martin Gross b3c3ee3b22 Allow to issue gift card refunds when cancelling whole events 2020-04-15 10:08:12 +02:00
Raphael Michel aab340fd87 Fix missing translation context 2020-04-15 09:43:58 +02:00
Raphael Michel 1871324ef4 Restrict length of item name in quick setup
PRETIXEU-21V
2020-04-15 09:20:55 +02:00
Raphael Michel d799d560b7 Fix typo in settings definition 2020-04-14 09:47:47 +02:00
Raphael Michel 01e2851a76 Invoice model: Do not crash on invalid states 2020-04-14 09:47:34 +02:00
Raphael Michel ef2a4244ed Merge branch 'master' of github.com:pretix/pretix 2020-04-09 09:29:58 +02:00
Raphael Michel 55539dc8e5 Fix confusing background color in subevents 2020-04-09 09:29:40 +02:00
Martin Gross ef303bfcc4 Add cancel_allow_user_paid_adjust_fees_explanation (#1639)
* Add cancel_allow_user_paid_adjust_fees_explanation

* Cleanup
2020-04-08 17:49:36 +02:00
Martin Gross fff9ac04a9 Fix test (Caused by 31fdf8721b) 2020-04-08 17:49:16 +02:00
Martin Gross 76d27fbfaa Cleanup 2020-04-08 17:08:58 +02:00
Martin Gross 2b1123b487 Add cancel_allow_user_paid_adjust_fees_explanation 2020-04-08 16:43:29 +02:00
pretix translation bot 3607d8706d Translations update from Weblate (#1638)
* Translated on translate.pretix.eu (German)

Currently translated at 100.0% (106 of 106 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate

* Translated on translate.pretix.eu (German (informal))

Currently translated at 100.0% (106 of 106 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate

* Translated on translate.pretix.eu (Dutch)

Currently translated at 100.0% (3601 of 3601 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate

* Translated on translate.pretix.eu (Dutch (informal))

Currently translated at 100.0% (106 of 106 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate

* Translated on translate.pretix.eu (Dutch (informal))

Currently translated at 100.0% (3601 of 3601 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate

Co-authored-by: Martin Gross <martin@pc-coholic.de>
Co-authored-by: Maarten van den Berg <maartenberg1@gmail.com>
2020-04-08 15:48:55 +02:00
Raphael Michel 31fdf8721b API: Fix selecting checkin question answers by option identifier 2020-04-07 15:16:58 +02:00
Raphael Michel 128a1f349a Revert accidentally commited change 2020-04-03 14:47:44 +02:00
Raphael Michel 7d432f0639 Improve display of attendee addresses 2020-04-03 14:35:38 +02:00
Raphael Michel 1ffc799c4d Split banner text into top and bottom 2020-04-03 13:02:23 +02:00
Raphael Michel 25dd8f2e2f Introduce banner text 2020-04-02 18:35:28 +02:00
Raphael Michel b121596e4b Merge pull request #1635 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-04-02 18:28:50 +02:00
Raphael Michel cf835df62e Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3601 of 3601 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-04-02 18:28:27 +02:00
Raphael Michel 7a3b7d4f02 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3601 of 3601 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-04-02 18:28:26 +02:00
Maarten van den Berg b151d8f455 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3590 of 3590 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-04-02 18:17:28 +02:00
Raphael Michel 06de74d877 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-04-02 18:17:18 +02:00
Raphael Michel 2ae9e3e0d9 Directly load editor on supported browsers 2020-04-02 18:16:33 +02:00
Raphael Michel 0c0fe58bbf Improve UX of ticket download settings 2020-04-02 18:16:22 +02:00
Raphael Michel 7b1e1a48ef Enable PDF and passbook outputs for new events by default 2020-04-02 18:03:26 +02:00
Raphael Michel c7dd50de0d CartMixin: Prevent None values in sorting function 2020-04-02 16:53:17 +02:00
Raphael Michel a1caa65776 Revert "Upgrade jQuery version (but keep old one around for now for plugins)"
We've got to many instances of this around:
https://stackoverflow.com/questions/38871753/uncaught-typeerror-a-indexof-is-not-a-function-error-when-opening-new-foundat

This reverts commit cc46d55f5e.
2020-04-02 16:42:54 +02:00
Raphael Michel 260973345d Merge pull request #1634 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-04-02 14:41:19 +02:00
Raphael Michel 2c9b2620ea Add company and address fields to attendees (#1633)
* Add company and address fields to attendees

* Update src/pretix/control/templates/pretixcontrol/event/settings.html

Co-Authored-By: Martin Gross <gross@rami.io>

Co-authored-by: Martin Gross <gross@rami.io>
2020-04-02 14:41:09 +02:00
Maarten van den Berg 909c80e710 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (106 of 106 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2020-04-02 09:51:33 +02:00
Maarten van den Berg 5a218ae6a9 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3590 of 3590 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-04-02 09:51:33 +02:00
Raphael Michel b498d45621 Pass gift_cards to order_fee_calculation 2020-04-02 09:50:44 +02:00
Raphael Michel b02196434b Re-compute fees after applying a giftcard 2020-04-01 17:09:58 +02:00
Raphael Michel c0edce7760 AJAX: Do not throw error on "abort" in Safari 2020-04-01 16:06:46 +02:00
Raphael Michel cc46d55f5e Upgrade jQuery version (but keep old one around for now for plugins) 2020-04-01 16:06:46 +02:00
Martin Gross ea8abb8dab Add Giftcard Redemption Export 2020-04-01 15:46:40 +02:00
Raphael Michel f765d094b4 Fix crash in UCBrowser (PRETIXEU-20M) 2020-04-01 11:14:30 +02:00
Raphael Michel 86f222870d Cancelling orders: Do not send email to organizer if the refund is in transit 2020-03-31 17:56:51 +02:00
Martin Gross 19b5270d76 Fix tests (Caused by 61a1368ed2) 2020-03-31 14:34:10 +02:00
Martin Gross db76b9b0ef Tiny fix to make Edge happy and display cancellation-slider 2020-03-31 14:04:57 +02:00
pretix translation bot d23e53873f Translations update from Weblate (#1632)
* Translated on translate.pretix.eu (German)

Currently translated at 100.0% (106 of 106 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate

* Translated on translate.pretix.eu (German (informal))

Currently translated at 100.0% (106 of 106 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate

Co-authored-by: Martin Gross <martin@pc-coholic.de>
2020-03-31 13:35:14 +02:00
pretix translation bot c116a4b998 Translations update from Weblate (#1631)
* Translated on translate.pretix.eu (German)

Currently translated at 100.0% (106 of 106 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate

* Translated on translate.pretix.eu (German (informal))

Currently translated at 100.0% (106 of 106 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate

* Translated on translate.pretix.eu (Dutch)

Currently translated at 100.0% (106 of 106 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate

* Translated on translate.pretix.eu (Dutch (informal))

Currently translated at 100.0% (106 of 106 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate

* Translated on translate.pretix.eu (Dutch)

Currently translated at 99.4% (3569 of 3589 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate

* Translated on translate.pretix.eu (Dutch)

Currently translated at 100.0% (3589 of 3589 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate

* Translated on translate.pretix.eu (Dutch (informal))

Currently translated at 100.0% (3589 of 3589 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate

Co-authored-by: Raphael Michel <michel@rami.io>
Co-authored-by: Maarten van den Berg <maartenberg1@gmail.com>
2020-03-31 13:28:34 +02:00
Martin Gross 2471d4bca5 Update po files
[CI skip]

Signed-off-by: Martin Gross <gross@rami.io>
2020-03-31 12:47:09 +02:00
Martin Gross 8e04dbdcca Change "we keep" to "The organizer keeps" to avoid confusion 2020-03-31 12:45:32 +02:00
Raphael Michel 0928358396 Fix > vs >= in gift card message 2020-03-29 13:53:58 +02:00
Raphael Michel 23f783c15c Force django-libsass version to be upgraded 2020-03-26 20:51:54 +01:00
Raphael Michel edae96c84f Fix TypeError during cancellation 2020-03-26 20:49:53 +01:00
Martin Gross 242ebdfae9 Show Subevent start time in select2-pickers (#1630)
* Add Subevent time to __str__

* Show subevent-dates in select2 picker

* Show event-dateblock (if enabled) on Widget Voucher redemption page

* Update src/pretix/base/models/event.py

Co-Authored-By: Raphael Michel <michel@rami.io>

* Update src/pretix/control/templates/pretixcontrol/vouchers/index.html

Co-Authored-By: Raphael Michel <michel@rami.io>

* Update src/pretix/control/views/typeahead.py

Co-Authored-By: Raphael Michel <michel@rami.io>

* Remove date-block on non-subevent voucher redemption pages

Co-authored-by: Raphael Michel <michel@rami.io>
2020-03-26 13:10:45 +01:00
Raphael Michel 0ee502abec Improve performance by not re-evaluating main context processors on
every template rendering in a signal receiver
2020-03-26 09:50:58 +01:00
Raphael Michel 29cb1e93d8 Reduce number of queries on the order change form 2020-03-26 09:50:14 +01:00
Raphael Michel c89242855c Reduce number of SQL queries on order detail page 2020-03-26 09:38:56 +01:00
Raphael Michel 61a1368ed2 Widget: Show date and time of subevent after calendar selection 2020-03-25 17:48:24 +01:00
Raphael Michel ac3e00fa03 Color buttons green if they otherwise look like a headline 2020-03-25 17:48:09 +01:00
Raphael Michel d9d0f7b6f3 Add Order.cancellation_date (#1629)
* Add Order.cancellation_date

* Add tests
2020-03-25 16:37:34 +01:00
Raphael Michel ad5e2df3be Merge pull request #1628 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-03-25 14:59:07 +01:00
Raphael Michel ec34561815 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3589 of 3589 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-03-25 14:58:32 +01:00
Raphael Michel e1540b1648 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3589 of 3589 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-03-25 14:58:31 +01:00
Raphael Michel a6b265455d Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-03-25 14:14:28 +01:00
Raphael Michel 8a6334bd86 Introduce cancellation requests (#1627)
* Allow to adjust the cancellation fee without JS

* Introduce cancellation requests

* ignore→delete

* Change a few things after Martin's review

* Add a few tests
2020-03-25 14:13:55 +01:00
Raphael Michel 173a23722a Merge pull request #1625 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-03-25 14:12:26 +01:00
Raphael Michel ab8eb2a34d Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3546 of 3546 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-03-25 13:03:51 +01:00
pajowu 30dcda616b Send checkin list mapping in event_copy_data signal (#1624)
* Send checkin list map in event_copy_data signal

* Add checkin_list_map to documentation and definition of event_copy_data
2020-03-25 13:03:45 +01:00
Raphael Michel 3eafec9d6e Allow customers to choose to receive their refund as a gift card (#1626)
* Minor text adjustments

* Allow users to receive their cancellation as a gift card
2020-03-25 11:41:40 +01:00
Raphael Michel a5910016fd Allow users to increase cancellation fees (#1622)
* Allow users to increase cancellation fees

* Fix typo
2020-03-25 10:11:29 +01:00
pajowu 0a49b93b26 Render remaining badges onto new page even if it doesn't fill t… (#1621) 2020-03-24 17:43:58 +01:00
Raphael Michel 7449bea836 Add request argument to order_info/position_info signals 2020-03-24 15:57:00 +01:00
Raphael Michel 0fc4478332 Add docs on pretix-digital 2020-03-24 15:56:51 +01:00
Raphael Michel 0df4a6e7ed Add signals order_info_top and position_info_top 2020-03-24 14:22:02 +01:00
Benjamin Hättasch a37cd380c8 Fix sample service config (#1620) 2020-03-24 09:10:56 +01:00
Raphael Michel 11b2bd8887 Allow markdown in multiple-choice question options 2020-03-23 17:55:52 +01:00
Raphael Michel 8986db0975 Merge pull request #1619 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-03-23 17:55:50 +01:00
Raphael Michel 2921611cb1 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3546 of 3546 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-03-23 17:55:20 +01:00
Raphael Michel 785fb29513 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3546 of 3546 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-03-23 17:55:19 +01:00
Raphael Michel 81c3d7fa17 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-03-23 17:02:11 +01:00
Raphael Michel 8ff963698d Text change "Modify" → "Add or remove tickets" on review order page 2020-03-23 16:47:25 +01:00
Raphael Michel 6da63e0169 Question form: Guess default country 2020-03-23 16:44:37 +01:00
Raphael Michel f84903ae27 Drop removed context attribute from from_db_value 2020-03-23 16:44:37 +01:00
Raphael Michel a0a7859b33 Update redis 2020-03-23 16:03:19 +01:00
Raphael Michel af23d6e4bf Upgrade to Django 3.0 and other dependencies (#1568)
* Upgrade Django to 3.0 and other dependencies to recent versions

* Fix otp version contsraint

* Remove six dependency

* Resolve some warnings

* Fix failing tests

* Update django-countries

* Resolve all RemovedInDjango31Warnings in test suite

* Run isort

* Fix import

* Update PostgreSQL version on travis
2020-03-23 15:02:20 +01:00
Raphael Michel 7e9c9beace Allow to use a custom domain per event (#1617)
* Drop support for maindomain_urls/subdomain_urls in plugins

* Allow to use a custom domain per event

* Fix bug when manually saving domains

* Fix custom domains in debugging

* Fix middleware

* Fix middleware again, update docs
2020-03-23 13:03:14 +01:00
Raphael Michel ac2fc2de5c Cancelling events: Allow to cancel all dates in a series 2020-03-23 10:37:10 +01:00
Raphael Michel 45e548873e Do not crash event page on social image generation 2020-03-22 11:04:51 +01:00
Raphael Michel f484eb65df PayPal: Do not crash on failed refund 2020-03-22 11:04:51 +01:00
Raphael Michel 027a785ab5 Log out other sessions after email or 2FA changes 2020-03-22 11:04:51 +01:00
Raphael Michel 25b80cbb57 Fix invalid requirement spec 2020-03-20 12:46:15 +01:00
Raphael Michel 589fa0f9de Cancelling events: Send email even if refund failed 2020-03-20 12:38:57 +01:00
Raphael Michel 6d2989d15a Run a forked version of vat_moss 2020-03-20 11:06:19 +01:00
Raphael Michel 5bb27b29ae Seat statistics: Only use active variations 2020-03-16 16:32:34 +01:00
Raphael Michel d17f8a71e6 Fix crashes in new statistical feature 2020-03-16 16:12:48 +01:00
Raphael Michel b664cc712a Cancelling events: Allow to create manual and partial refunds 2020-03-16 16:00:44 +01:00
Raphael Michel d61e8a9204 Cancelling events: Allow to select fee types to keep 2020-03-16 15:44:37 +01:00
Martin Gross f00012a63e Statistics on sold and unsold seats, as well as potential profi… (#1613)
* Statistics on sold and unsold seats, as well as potential profits

* Rework of seats-stats

* Fix crash when all seats are assigned

* Update src/pretix/plugins/statistics/views.py

Co-Authored-By: Raphael Michel <michel@rami.io>

* Update src/pretix/plugins/statistics/views.py

Co-Authored-By: Raphael Michel <michel@rami.io>

* Update src/pretix/plugins/statistics/views.py

Co-Authored-By: Raphael Michel <michel@rami.io>

* Fix count of sold seats

Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
Co-authored-by: Raphael Michel <michel@rami.io>
2020-03-16 15:20:30 +01:00
Raphael Michel bd238f76ce Fix broken test 2020-03-16 13:29:12 +01:00
Raphael Michel 703ae97820 Fix typo in German translation 2020-03-16 13:27:33 +01:00
Raphael Michel 1a60c5ea64 Fix missing bleach call in invoice renderer 2020-03-16 11:44:31 +01:00
Raphael Michel 1d3ac5f02f Fix StaticDevice.MultipleObjectsReturned
PRETIXEU-1YX
2020-03-16 11:41:33 +01:00
Raphael Michel 8d23d75dfd Only send download reminders if there's actually a download 2020-03-16 09:26:11 +01:00
Maico Timmerman 9a32668ee1 Make next url authentication backend dependent (#1609)
* Make next url authentication backend dependent

* Rename authentication next_url to get_next_url.

* Add test for custom authentication backend get_next_url.

* Fix typo in docstring of authentication backend get_next_url.
2020-03-15 11:05:57 +01:00
pajowu ca0407a133 Subclass MultipleChoiceField to serialize to list (#1605)
* Subclass MultipleChoiceField to serialize to list

* Rename pretix.api.serializers.MultipleChoiceField to ListMultipleChoiceField

* Keep order in ListMultipleChoiceField
2020-03-14 22:04:12 +01:00
Raphael Michel 1de77b0784 Translations update from Weblate (#1612)
Translations update from Weblate
2020-03-14 22:02:09 +01:00
Maarten van den Berg d0907d3dcf Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3516 of 3516 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-03-13 08:00:11 +01:00
pajowu 81cc4bd768 Do not validate event creation form on back button (#1611) 2020-03-12 19:17:49 +01:00
pajowu 262639e063 Show checkbox if items per order limit is 1 (#1610) 2020-03-12 18:47:14 +01:00
Martin Gross dedd93fb89 Add Support for Square POS payment_data 2020-03-12 14:33:37 +01:00
Raphael Michel 45f94aee03 Merge pull request #1602 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-03-12 13:31:40 +01:00
Maarten van den Berg d36e7d033f Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3516 of 3516 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-03-12 13:31:17 +01:00
Maarten van den Berg b94bd277bf Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3516 of 3516 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-03-12 13:31:16 +01:00
Maico Timmerman e5095185d9 Send widget_data in voucher redeem request. (#1606) 2020-03-12 13:31:12 +01:00
pajowu d76ce47597 Allow creating question with dependency_question=None (#1607) 2020-03-12 13:30:18 +01:00
Martin Gross 58717850c2 Add date-on-frontpage check to secondary template 2020-03-12 12:06:26 +01:00
Martin Gross 29d52d4fe5 Second attempt at hiding date on frontpage in title 2020-03-12 12:00:18 +01:00
Martin Gross 34c9c40ddc Option to hide date-block on frontpage (#1603)
* Option to hide date-block on frontpage

* Also hide date in headline
2020-03-12 10:28:47 +01:00
Martin Gross 39d05a6c40 Duplicate generate_ticket for items on duplication 2020-03-11 18:44:29 +01:00
Martin Gross b664222c62 Calculation fix for unlimited Quota w/ Waitinglist 2020-03-11 16:48:57 +01:00
Raphael Michel 1ee48a10b5 Allow to reactivate canceled orders (#1601) 2020-03-11 11:40:56 +01:00
Raphael Michel 2431a8b767 Fix typo 2020-03-09 17:37:13 +01:00
Raphael Michel af84354e51 Resolve some warnings in the test suite 2020-03-09 14:57:19 +01:00
Raphael Michel b04de880fc Bump to 3.8.0.dev0 2020-03-09 14:34:00 +01:00
Raphael Michel 11f3057f76 Bump version to 3.7.0 2020-03-09 14:33:17 +01:00
Raphael Michel ba164c16f6 Fix test failure that only happens in the 20 days before daylight saving time changes 2020-03-09 12:56:58 +01:00
Raphael Michel 7ef766ddfa Cancelling events: Only show email fields conditionally 2020-03-09 11:44:25 +01:00
Raphael Michel bcafcc7dd8 Fix invalid translation file 2020-03-09 11:36:59 +01:00
Raphael Michel e5b7102abc Merge pull request #1600 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-03-09 11:21:33 +01:00
Raphael Michel 3601dd6bee Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3516 of 3516 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-03-09 11:20:45 +01:00
Raphael Michel a1d5854fbf Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3516 of 3516 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-03-09 11:20:44 +01:00
Raphael Michel 09544a688d Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-03-09 11:11:54 +01:00
Raphael Michel 58a5892cc0 Merge pull request #1598 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-03-09 11:11:12 +01:00
Maarten van den Berg c9af76b46e Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 97.9% (3436 of 3510 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-03-09 01:00:13 +01:00
Maarten van den Berg 91753935cf Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3510 of 3510 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-03-09 01:00:12 +01:00
Raphael Michel 23a52eb12a Add lang attribute to <html> tag in presale 2020-03-08 15:23:47 +01:00
Raphael Michel 79ecb231f2 Fix placement of back link when a header is used 2020-03-08 15:07:59 +01:00
Raphael Michel 08de7f59a3 Move iframe.js into main JS file 2020-03-08 15:07:59 +01:00
Raphael Michel 0de3c33bab Remove unused bootstrap components from CSS 2020-03-08 15:07:59 +01:00
Raphael Michel a4ae8b0e66 Include lightbox in main.scss file 2020-03-08 15:07:59 +01:00
Raphael Michel be1bf81298 Add font-display: swap to custom shop fonts 2020-03-08 15:07:59 +01:00
Raphael Michel b7528ae1cf Cancelling events: Fix incorrect refund amount in emails 2020-03-06 18:09:38 +01:00
Raphael Michel 4f6712ccbe OrderChangeManager: Prevent creation of 0 € invoices 2020-03-06 17:05:15 +01:00
Raphael Michel 939335f94b Widget: Fix incorrect computation of cache key 2020-03-06 17:00:47 +01:00
Raphael Michel c849276a35 Widget: Allow to filter by product 2020-03-06 17:00:26 +01:00
Raphael Michel 8e9f0f07a1 Optimize performance of waiting list dashboard tile 2020-03-06 14:03:28 +01:00
Raphael Michel 389884d191 shell_scoped: Fall back to shell if shell_plus is not installed 2020-03-06 14:03:06 +01:00
Raphael Michel d8c2c82da7 Update invoice language in build_invoice 2020-03-06 09:36:20 +01:00
Raphael Michel c3ed3d4899 Adjust tests for last commit 2020-03-05 18:12:40 +01:00
Raphael Michel e9235cd433 Bank transfer: ignore order status when manually assigning amount 2020-03-05 17:37:54 +01:00
Raphael Michel 975b6d800a Fix hardcoded PK in test 2020-03-05 17:09:33 +01:00
Raphael Michel ee260c8231 API: Allow to simulate orders 2020-03-05 16:37:55 +01:00
Raphael Michel f7fddc05dd Improve caching of widget.js 2020-03-05 13:09:42 +01:00
Raphael Michel eaa61c7795 Add @gzip_page to widget views 2020-03-05 12:53:17 +01:00
Raphael Michel d4994258e6 Avoid issues with duplicate ItemBundles 2020-03-05 12:53:02 +01:00
Raphael Michel 9b50ec2d74 Cancelling events: Allow to inform waiting list 2020-03-05 10:22:59 +01:00
Raphael Michel 447b6b7fee Waiting list: Do not send notifications for disabled items 2020-03-05 09:37:35 +01:00
Raphael Michel 40f763c999 Cancelling events: Create special log entry 2020-03-05 09:37:17 +01:00
Raphael Michel 6a3d05be9e Cancelling events: Fix invalid email logging 2020-03-05 09:23:07 +01:00
Raphael Michel 766447f021 Fix typo in form field name 2020-03-04 14:45:54 +01:00
Raphael Michel 5fbeb90f00 Order import: Fix crash on unknown delimiter
PRETIXEU-1Y0
2020-03-04 14:44:55 +01:00
Raphael Michel c01cc85eda Merge pull request #1597 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-03-03 17:13:10 +01:00
Raphael Michel 4a054da6ee Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3510 of 3510 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-03-03 17:11:12 +01:00
Raphael Michel 583a2b6572 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3510 of 3510 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-03-03 17:11:11 +01:00
Raphael Michel fbe025afb2 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3488 of 3488 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-03-03 16:56:06 +01:00
Raphael Michel 66e6191122 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3488 of 3488 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-03-03 16:56:05 +01:00
Raphael Michel 0f26f0787c Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-03-03 16:55:56 +01:00
Raphael Michel 62a86c9b4a Allow to cancel all orders in an event (#1596)
* Allow to cancel all orders in an event

* Add tests

* Actually add tests
2020-03-03 16:55:05 +01:00
Raphael Michel 07318be4c9 Fix incorrect total in invoice preview 2020-03-03 16:45:18 +01:00
Raphael Michel 3c8ef2c620 Fix incorrect result message 2020-03-03 16:43:36 +01:00
Raphael Michel a858f47220 API: Fix crash when cancelling a redeemed gift card 2020-03-02 13:18:16 +01:00
Raphael Michel 381fa5e1cd Allow to add a text to gift card transactions 2020-03-02 12:47:39 +01:00
Raphael Michel 1539eea664 API: Allow devices to access gift cards 2020-03-02 12:19:19 +01:00
Raphael Michel 3d41d1331a API: Support for cross-organizer gift cards 2020-03-02 12:19:02 +01:00
Raphael Michel 00848b3339 Remove "default" flag from cloned layouts 2020-03-02 09:35:53 +01:00
Raphael Michel d174b11c6a Reduce retention time of sass compiler cache 2020-02-28 16:21:34 +01:00
Raphael Michel a501ce496a Fix broken sass compiler cache 2020-02-28 16:21:18 +01:00
Raphael Michel de277cc959 Badges, PDF tickets: Allow to copy layouts 2020-02-28 12:50:31 +01:00
Raphael Michel 12b3ae81d6 Mark payment_term_days settings as required in the backend 2020-02-28 12:24:00 +01:00
Raphael Michel fcdb40dda0 Refs #1593 -- Fix subsequent issue when clearing the cart 2020-02-27 16:28:07 +01:00
Raphael Michel f65cf8e86a Fix checks for min_per_order and max_per_order in combination with variations 2020-02-27 15:08:35 +01:00
Raphael Michel 12540238b7 Ignore replica database in tests 2020-02-27 14:44:20 +01:00
Raphael Michel 398a30e33a Merge pull request #1592 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-02-27 11:05:27 +01:00
Raphael Michel 3410640618 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3488 of 3488 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-02-27 11:05:05 +01:00
Raphael Michel 7b45cfccc2 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3488 of 3488 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-02-27 11:05:04 +01:00
Raphael Michel 33f503aea1 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-02-27 10:55:11 +01:00
Raphael Michel 3fd650081b Allowing more options to style pretix shops (#1585)
* Fix caching issues in SASS compilation

* Allow to set a custom page background color

* Allow to disable round corners

* Support larger header pictures

* Allow to show title despite header

* Move language picker

* FIx widget styles
2020-02-27 10:54:00 +01:00
Martin Gross b622854be6 Fix versionchanged for item_meta_data 2020-02-27 09:25:44 +01:00
Raphael Michel 6d00daa9ee Fix crash when sending mails with empty mail_from 2020-02-26 17:34:37 +01:00
Raphael Michel f27148998a Support for itemmeta: objects in the API 2020-02-26 15:59:42 +01:00
Raphael Michel 4a0369cc37 REbase migration 2020-02-26 15:22:41 +01:00
Martin Gross 76aaf61e19 Add meta_data for items (#1576)
* PoC for ItemMetaProperties/Values

* Missing is_valid

* ItemMetaProperties/Values in editable via API, cloneable

* Tests

* Add Docs

* Fix import order

* Fix another import sorting...

* Typeahead for ItemMetaValues

* Test for editing event-objects

* Fix typeahead permission checks

* Further access restriction

Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
2020-02-26 15:06:24 +01:00
Raphael Michel dd1e5fa929 Test suite: Allow to cancel expired orders 2020-02-26 11:56:23 +01:00
Raphael Michel 4a2516e303 Allow to cancel expired orders 2020-02-26 11:23:52 +01:00
Raphael Michel cf06712eca Merge pull request #1590 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-02-26 08:51:30 +01:00
Maarten van den Berg 6185d675f0 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 97.5% (3388 of 3474 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-02-26 04:00:13 +01:00
David100mark a53cd3abce Translated on translate.pretix.eu (French)
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/fr/

powered by weblate
2020-02-26 04:00:12 +01:00
David100mark ebe86a17fb Translated on translate.pretix.eu (French)
Currently translated at 66.9% (2325 of 3474 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/

powered by weblate
2020-02-26 04:00:11 +01:00
David100mark d189b16ee7 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3474 of 3474 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-02-26 04:00:11 +01:00
Raphael Michel d70ce4491a Merge pull request #1584 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-02-20 16:12:22 +01:00
Maarten van den Berg 607ff48d70 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 97.4% (3382 of 3474 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-02-19 18:25:18 +01:00
Maarten van den Berg 4bab44ca85 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3474 of 3474 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2020-02-19 18:25:18 +01:00
Raphael Michel a5cdb485d0 Fix faulty test cases 2020-02-19 18:25:05 +01:00
Raphael Michel 282ef792c4 Do not show "create new event" if there are no permissions to dos o 2020-02-19 18:24:47 +01:00
Raphael Michel 6cd888a1dc Fix date parsing issue in Danish locale 2020-02-19 18:00:02 +01:00
Raphael Michel 2e5b80c83c Fix missing fees in order overview 2020-02-19 16:09:40 +01:00
Raphael Michel 4511110069 Fix timezone of notifications 2020-02-19 14:28:06 +01:00
Raphael Michel 1af1d8c658 Add rich_text_snippet 2020-02-18 09:45:20 +01:00
Raphael Michel 9f6a3f9a6a Add custom field for invoice addresses 2020-02-18 09:21:00 +01:00
Raphael Michel 1c03d5d305 Invoices: Label tax ID as ABN in Australia 2020-02-18 09:05:09 +01:00
Raphael Michel 69a1fccd20 Fix #1582 - Add explicit requirement to packaging library 2020-02-17 21:00:44 +01:00
Raphael Michel 2a54aa2d83 Bump to 3.7.0.dev0 2020-02-17 16:39:27 +01:00
Raphael Michel 2269c8dee0 Bump version to 3.6.0 2020-02-17 16:38:53 +01:00
Raphael Michel 46295ea887 Merge pull request #1581 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-02-17 16:31:00 +01:00
Raphael Michel e41863229b Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3474 of 3474 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-02-17 16:30:22 +01:00
Raphael Michel ca5a6ddba1 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3474 of 3474 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-02-17 16:30:21 +01:00
Raphael Michel 4d4dafb5dd Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-02-17 16:22:55 +01:00
Raphael Michel 9c2af952b7 Fix another empty sequence error 2020-02-17 14:00:15 +01:00
Raphael Michel dc6e425c2a Fix accidental string interpolation in a test case 2020-02-17 13:57:36 +01:00
Raphael Michel 5f65b9528f Fix a migration exception 2020-02-17 13:30:19 +01:00
Raphael Michel 8957c2f106 Seating: Support custom row and seat labels 2020-02-17 13:15:49 +01:00
Raphael Michel 2bbbc88a9c Allow duplicate ticket secrets in different organizers 2020-02-17 12:35:02 +01:00
Raphael Michel 162b7c1b52 Fixed subsequent issue with failed paypal payments 2020-02-14 14:22:05 +01:00
Raphael Michel 755f3d53b6 Fix issue with failed paypal payments 2020-02-14 13:24:18 +01:00
Raphael Michel f6db62d6ce Add retry button to cookie failure page 2020-02-14 11:43:14 +01:00
Raphael Michel aa1ffc402c Remove some unnecessary queries 2020-02-14 11:25:28 +01:00
Raphael Michel 2c9b96f0c5 Fix various issues with min() statements 2020-02-14 09:16:04 +01:00
Raphael Michel 16599e242d Partially revert last change 2020-02-13 17:39:17 +01:00
Raphael Michel 19c13d7f38 Improved order position secret generation 2020-02-13 17:04:50 +01:00
Raphael Michel 65db8cd583 Widget: Pass referer to cart session 2020-02-13 09:58:08 +01:00
Raphael Michel d0794d7b94 Optionally allow to automatically reissue an invoice after a data change 2020-02-13 09:49:21 +01:00
Raphael Michel a770f5a8e7 Add FAQ section on payment deadlines 2020-02-13 09:37:25 +01:00
Raphael Michel 80a3063799 Fix KeyError in sendmail history 2020-02-13 09:22:50 +01:00
Raphael Michel 34ec11ecfa Fix KeyError for form validation 2020-02-13 09:21:23 +01:00
Martin Gross a1da2eafdc Reinstate MOTO-Flagging for Reseller Scheme-TX (#1570) 2020-02-12 09:49:33 +01:00
Raphael Michel 6bc2175ea9 More robust redis connections 2020-02-12 09:29:30 +01:00
Raphael Michel 21dcb4f43d Revert "Optional MOTO-Flagging for Reseller Scheme-TXs (#1570)"
This reverts commit 0a920ac21c.
2020-02-12 08:01:24 +01:00
Raphael Michel e9722bcdbd Merge pull request #1578 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-02-11 17:22:04 +01:00
Raphael Michel e7eb8e3111 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3472 of 3472 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-02-11 17:21:00 +01:00
Raphael Michel a895d83764 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3472 of 3472 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-02-11 17:20:59 +01:00
Raphael Michel b6697b838b Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-02-11 16:55:36 +01:00
Raphael Michel 0d8c4271a9 Show successful payments on the invoice 2020-02-11 16:54:02 +01:00
Raphael Michel d226bbda5c Order data export: Add column with the number of positions 2020-02-11 16:25:48 +01:00
Raphael Michel 38d0198dea Do not show a flag for single language events 2020-02-11 13:19:46 +01:00
Martin Gross 0a920ac21c Optional MOTO-Flagging for Reseller Scheme-TXs (#1570)
* Optional MOTO-Flagging for Reseller Scheme-TXs

* Update src/pretix/plugins/stripe/payment.py

Co-Authored-By: Raphael Michel <michel@rami.io>

* Update src/pretix/plugins/stripe/payment.py

Co-Authored-By: Raphael Michel <michel@rami.io>

* Manually rebase again...

* Fix a single whitespace for style...

Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
2020-02-11 11:08:28 +01:00
Raphael Michel 7acee9458d Move bulk_create logic during bulk voucher creation 2020-02-09 12:17:48 +01:00
Raphael Michel 82e40ce664 Merge pull request #1574 from pretix-translations/weblate-pretix-pretix
Translations update from Weblate
2020-02-08 13:45:16 +01:00
Raphael Michel 4632269ac3 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3463 of 3463 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-02-08 13:44:32 +01:00
Raphael Michel 6d7e1ef53d Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3463 of 3463 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-02-08 13:44:30 +01:00
Raphael Michel 3ea4cdc3b3 Small categorization adjustments 2020-02-08 13:14:19 +01:00
Raphael Michel e4619eeca3 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2020-02-08 12:42:35 +01:00
Raphael Michel bb5c7c5ad7 Re-introduce plugin categories 2020-02-08 12:38:43 +01:00
Raphael Michel 9984fe97ba Add OrderPayment.fail() to prevent race conditions (#1572) 2020-02-07 09:00:35 +01:00
Martin Gross 242dd24caa Fix hiding of payment methods 2020-02-06 10:53:02 +01:00
Raphael Michel 2482d9390a Fix incorrect settings field type 2020-02-05 21:29:22 +01:00
Raphael Michel 3b4923ccae Fix required field 2020-02-05 18:34:58 +01:00
Raphael Michel 8a2e4385ff Fix required field 2020-02-05 18:33:40 +01:00
Raphael Michel e83b8ac218 Allow to hide payment methods behind a secret link 2020-02-05 18:09:27 +01:00
Raphael Michel b387fba5f4 Hide time on list of events for event series 2020-02-05 17:30:15 +01:00
Raphael Michel da68cb618e Improved logging and transaction handling around payment confirmations 2020-02-05 12:02:02 +01:00
Raphael Michel eb11dac21e Fix single badge downloads 2020-02-05 10:31:11 +01:00
Raphael Michel 6e531ee067 Event list filters: Deal with events without presale start/end 2020-02-05 10:31:11 +01:00
Raphael Michel c8e6daa7a1 Do not show disabled sub-methods in timeline 2020-02-05 10:31:11 +01:00
Martin Gross b3e3d427cb Add more Stripe Payment Methods, simplify forms (#1571)
* Add more Stripe Payment Methods, simplify forms

* Revert accidential commit of boxoffice control renderer...

* Use existing QR-Code encoding in presale
2020-02-05 09:50:29 +01:00
pajowu 6e88054af7 Send signal on checkin (#1546)
* Send signal when orderposition is checked in

* Add position_checked_in signal to documentation

* Rename signal to checkin_created

* Update general.rst

* Update signals.py

Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
2020-02-04 18:26:35 +01:00
Raphael Michel 22dfa0e61d Use select2 input for category fields 2020-02-04 18:22:03 +01:00
Alexander Schwartz 833cd32578 Comparison for file extensions should be case insensitive (#1563) 2020-02-04 17:09:12 +01:00
Raphael Michel fd1c964c92 Fix #1378 -- API: Allow to access and modify (some) event setti… (#1569)
* API: Allow to access event settings

* Convert most "general" settings

* Smaller fixes

* Add more settings

* Relative dates, nulling

* Fix a test failure

* Fix wrong attribute access
2020-02-04 17:06:23 +01:00
Raphael Michel 87b10ef055 Allow to print multiple badges on one page (#1380)
* Allow to print multiple badges on one page

* Fix test

* Add more sizes

* Add A4 sizes
2020-02-04 17:02:33 +01:00
Raphael Michel 734f65b10b Ask Google not to index the "Resend order links" site 2020-02-04 16:26:05 +01:00
Martin Gross 0f826a6f76 Show payment card information for Stripe PaymentIntents 2020-02-04 15:09:34 +01:00
Raphael Michel 35e521cc55 Merge pull request #1564 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2020-02-03 17:58:29 +01:00
Martin Gross 63c845574f Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3363 of 3363 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-02-03 15:39:33 +01:00
Raphael Michel 5a675cc75d Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3363 of 3363 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-02-03 15:39:33 +01:00
András Veres-Szentkirályi 994dc9bf76 Translated on translate.pretix.eu (Hungarian)
Currently translated at 2.8% (94 of 3363 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/hu/

powered by weblate
2020-02-03 15:39:33 +01:00
Raphael Michel cc4a07e3b0 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3363 of 3363 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2020-02-03 15:39:33 +01:00
Raphael Michel 2ca88d5328 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3363 of 3363 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2020-02-03 15:39:33 +01:00
Raphael Michel 0bca9b9bf1 Box office: Support for Stripe Terminal 2020-02-03 15:39:19 +01:00
Raphael Michel 742d2f11be SCSS: Fix font generation error 2020-02-01 16:25:05 +01:00
Raphael Michel 5ea5b82994 Docs: Fix typo 2020-02-01 16:25:00 +01:00
Raphael Michel 81245cf125 Fix #1549 -- JS API to open pretix Button 2020-02-01 15:59:24 +01:00
Raphael Michel c6bcd05404 Widget: Fix button behaviour without iframe 2020-02-01 15:39:03 +01:00
Raphael Michel 1999a25095 Widget: no reload on buttons 2020-02-01 14:19:39 +01:00
Raphael Michel 62f7c5ba0f Doc spelling: Add SQL to wordlist 2020-02-01 14:08:24 +01:00
Raphael Michel d11b0e92f1 Reverse default order of subevents 2020-02-01 13:59:55 +01:00
Raphael Michel 662bdea45b Preload all samples 2020-02-01 13:48:56 +01:00
Raphael Michel d37cc4f641 Font API: Support for script-specific samples 2020-02-01 13:46:50 +01:00
Raphael Michel 6b2bc71be9 Order list export: consistent decimals 2020-02-01 13:06:40 +01:00
Raphael Michel f267940562 Update Sphinx 2020-02-01 12:57:19 +01:00
Raphael Michel 7140406f35 Order data export: Split multiple choice questions in multiple columns 2020-02-01 12:47:39 +01:00
Raphael Michel e275e2e240 API: Add endpoint to expose pretix version 2020-01-31 11:11:24 +01:00
Raphael Michel 75c0920f5e API: Allow to mark order as pending when creating refunds 2020-01-31 10:48:32 +01:00
Raphael Michel b6efe9ae1e Fix middleware name 2020-01-29 12:44:39 +01:00
Raphael Michel a28378bac9 Fix further problems with middleware ordering 2020-01-29 11:50:09 +01:00
Raphael Michel a940fa9eb7 Correct order of middlewares, thereby fix event list widget on custom domains
With the incorrect order, Django used the wrong URL config file to
determine whether this URL is valid and APPEND_SLASH kicked in too
often.
2020-01-28 23:38:09 +01:00
Raphael Michel 332fba6168 DOwngrade libsass 2020-01-28 22:46:43 +01:00
Raphael Michel 41655532e9 Upgrade bootstrap to 3.4.0 2020-01-28 22:46:43 +01:00
Martin Gross 6cc9801fe1 Only allow letters, numbers, dots and dashes for giftcard codes 2020-01-28 16:53:44 +01:00
Raphael Michel 29ff5b9416 Use correct timezone for events in event list view 2020-01-28 13:32:43 +01:00
Raphael Michel 889dd651ef Add BasePaymentProvider.matching_id() 2020-01-27 21:46:36 +01:00
Raphael Michel 8c7d7a3055 Add documentation on the campaign module api 2020-01-27 21:24:48 +01:00
Raphael Michel ff67931c04 Fix a documentation error 2020-01-27 16:51:50 +01:00
Raphael Michel faa6f0e0a3 Correctly copy seats when copying events 2020-01-27 10:52:25 +01:00
Raphael Michel 68ec37605f Fix another doc typo 2020-01-26 19:35:58 +01:00
Raphael Michel 2ef8b89da0 Add reseller to doc wordlist 2020-01-25 17:16:09 +01:00
Raphael Michel dfc746ea7a Add documentation on VAR API 2020-01-25 15:26:32 +01:00
Raphael Michel 661546f130 Update from Weblate (#1560)
Update from Weblate
2020-01-25 15:23:29 +01:00
Raphael Michel 5e61342ff5 Add an API for teams (#1562)
* Add Team resource to API

* Add team memer endpoints

* Add team invites endpoint

* Add token endpoints
2020-01-25 15:22:50 +01:00
Prokaj Miklós 4eadfdeec2 Translated on translate.pretix.eu (Hungarian)
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/hu/

powered by weblate
2020-01-25 10:07:47 +00:00
Prokaj Miklós 8284a9de44 Translated on translate.pretix.eu (Hungarian)
Currently translated at 1.0% (35 of 3363 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/hu/

powered by weblate
2020-01-25 10:07:47 +00:00
Prokaj Miklós ae2e70245f Added translation on translate.pretix.eu (Hungarian) 2020-01-25 10:07:47 +00:00
Prokaj Miklós a92e283a66 Added translation on translate.pretix.eu (Hungarian) 2020-01-25 10:07:47 +00:00
Mie Frydensbjerg 9e2c0d8152 Translated on translate.pretix.eu (Danish)
Currently translated at 47.7% (1603 of 3360 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/

powered by weblate
2020-01-25 10:07:47 +00:00
Raphael Michel 57453a5b00 Fix missing known_errortypes attribute 2020-01-25 11:07:42 +01:00
gnomus 1ccf677ea2 Solve some Docker Setup scaling issues (#1561) 2020-01-24 14:14:36 +01:00
Raphael Michel 0a9daf0d3a API: Fix crash when passing an empty seat_category_mapping during event creation 2020-01-23 14:27:43 +01:00
Raphael Michel 934217ee4f Attach invoices to order changed/canceled emails 2020-01-23 14:25:20 +01:00
Raphael Michel deff282a63 Do not allow slugs to start with a non-alphanumeric character 2020-01-23 09:39:39 +01:00
Raphael Michel bcd687764c API: Allow to create payments directly 2020-01-22 17:15:40 +01:00
Raphael Michel 8d7224fecc Force-escape all PDF values on the renderer level (#1556)
* Force-escape all PDF values

* Do not concatenate empty strings to name combinations
2020-01-22 14:56:25 +01:00
Martin Gross 3fff3378c0 Handle media_url of embedded images in simple mail renderer better for instances with dedicated media-hosts 2020-01-21 10:36:46 +01:00
Raphael Michel 91ae89d463 Add cache to sass compiler 2020-01-20 12:04:58 +01:00
Martin Gross 5c0d112def Add simple e-mail-renderer with logo (#1552)
* Add unembellished eMail-renderer

* Fix layout issues with very wide images

* Use prettier padding

* Rename to "simple with logo"

Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
2020-01-20 11:26:53 +01:00
Raphael Michel f7ae90811e Merge pull request #1548 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2020-01-20 10:50:34 +01:00
Luka 6ec8c33ecc Translated on translate.pretix.eu (Slovenian)
Currently translated at 20.8% (698 of 3360 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sl/

powered by weblate
2020-01-20 08:46:31 +00:00
Mie Frydensbjerg f991d5434f Translated on translate.pretix.eu (Danish)
Currently translated at 47.7% (1602 of 3360 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/

powered by weblate
2020-01-20 08:46:31 +00:00
Raphael Michel 7cf1688de5 PDF: Allow to use combinations of attendee name parts 2020-01-20 09:46:09 +01:00
Raphael Michel 298b3c3660 Consistently put original price in its own line 2020-01-17 17:04:13 +01:00
Raphael Michel 5ea1c96e19 Bump to 3.6.0.dev0 2020-01-12 14:44:25 +01:00
Raphael Michel d29b8eba01 Bump to 3.5.0 2020-01-12 14:42:57 +01:00
Raphael Michel f566b353f2 Retry more email failures 2020-01-11 14:11:20 +01:00
Raphael Michel c2221fad32 Update from Weblate (#1544)
Update from Weblate
2020-01-11 14:00:18 +01:00
Maarten van den Berg 06a8a804f4 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3360 of 3360 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2020-01-11 12:54:54 +00:00
Raphael Michel 5832429540 Fix unrecognized user agents seen in the wild 2020-01-11 13:52:37 +01:00
Raphael Michel 7913de971c Fix timezone assumptions in test fixtures 2020-01-11 13:45:49 +01:00
Raphael Michel 9b91e3e4f6 Fix doc typos 2020-01-11 13:34:11 +01:00
Raphael Michel 402730df43 API: Add timezone attribute to events
Note: I still believe the issues described in https://github.com/pretix/pretix/issues/1378
are a problem, and I'm still not keen on adding settings properties to
the API until we have a proper design for it. However, I'm making an
exception here since the list of events can't be used in a very useful
way with not access to the timezone.
2020-01-11 13:24:19 +01:00
Raphael Michel c1d6d9bf1a Downgrade openpyxl since we still support Python 3.5 2020-01-11 13:15:58 +01:00
Raphael Michel ddbe27f351 API: Allow to return canceled positions and fees 2020-01-11 12:57:43 +01:00
Raphael Michel 35f2b10069 Compatibility with new openpyxl 2020-01-11 12:12:53 +01:00
Raphael Michel 0d2a534982 Bank transfer: Show date of last import 2020-01-09 21:41:08 +01:00
Raphael Michel a1ad00a30c Add anchors for products/categories 2020-01-09 10:19:44 +01:00
Raphael Michel 07d2463960 Correctly set timezone when cloning events 2020-01-09 09:19:11 +01:00
Raphael Michel 08de722525 Prevent showing internal product name in question step 2020-01-09 09:19:11 +01:00
Raphael Michel 891e740ede Update from Weblate (#1541)
Update from Weblate
2020-01-08 16:52:20 +01:00
pajowu 87645a0b1f Limit Payment Term Days Field (#1542) 2020-01-08 16:52:02 +01:00
oocf d7a575683e Translated on translate.pretix.eu (Spanish)
Currently translated at 91.6% (3077 of 3360 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2020-01-08 12:17:00 +00:00
Raphael Michel ca83a44489 PDF Editor: Fix compatibility problems with older text objects 2020-01-08 13:16:42 +01:00
Raphael Michel 40da03f979 Improve text rendering options in PDF editor (#1540)
Improve text rendering options in PDF editor
2020-01-07 12:23:37 +01:00
Raphael Michel fdd45a85f0 Do not send download reminders if order is placed after download date 2020-01-07 11:54:06 +01:00
Raphael Michel 47579d0517 Fix #505 -- Allow to let text flow downwards 2020-01-07 11:48:04 +01:00
Raphael Michel 8704a7f3dd Fix #1053 -- Rotation support in reportlab renderer 2020-01-07 11:26:28 +01:00
Raphael Michel 244e0695b1 PDF editor: Do not catch keyboard events inside source view 2020-01-03 18:30:33 +01:00
Raphael Michel 8e2821b398 Add a maximum budget to vouchers (#1526)
* Data model changes

* Fix test failures

* Adjustments

* Some tests and API support

* Check when extending orders

* Make things more deterministic, fix style

* Do not apply negative discounts

* Update price_before_voucher on item/subevent changes

* Add tests for price_before_voucher in combination with free price

* Fix InvoiceAddress.DoesNotExist
2020-01-03 16:15:17 +01:00
Raphael Michel b738e3bd9d Do not show canceled payment to user 2020-01-03 10:48:57 +01:00
Raphael Michel fa224fd17e Allow to use invoice address city in PDFs 2020-01-03 10:47:53 +01:00
Raphael Michel 76359c859f Improve logging of gift card changes and show logs 2020-01-02 17:40:11 +01:00
Katharina Bogad ff98ae3200 Update oauthlib to ==3.1.* (#1538)
* Bumped oauthlib to ==3.1.*

* Fix tests for oauthlib 3.1

In some cases, oauthlib now returns 400 instead of 401.
2020-01-02 13:15:24 +01:00
Raphael Michel 2ffb4edee9 Import: Do not set country to NULL
PRETIXEU-1QJ
2020-01-02 10:53:01 +01:00
Raphael Michel 902f589ee6 Update from Weblate (#1536)
Update from Weblate
2020-01-02 10:11:49 +01:00
Raphael Michel 2a6dc22d7b Allow to use datetime components in invoice prefixes (#1529) 2020-01-02 09:46:07 +01:00
Abdullah 4d9ec7c8e4 Translated on translate.pretix.eu (Arabic)
Currently translated at 97.1% (100 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ar/

powered by weblate
2019-12-25 19:33:08 +00:00
Abdullah b84a0e93ae Translated on translate.pretix.eu (Arabic)
Currently translated at 98.5% (3310 of 3359 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ar/

powered by weblate
2019-12-25 19:33:08 +00:00
Abdullah 534f09bdc6 Translated on translate.pretix.eu (Arabic)
Currently translated at 98.5% (3310 of 3359 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ar/

powered by weblate
2019-12-25 19:33:08 +00:00
Patrick Arminio 370aa63ead Translated on translate.pretix.eu (Italian)
Currently translated at 47.6% (49 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/it/

powered by weblate
2019-12-25 19:33:08 +00:00
Raphael Michel fb7e859e72 Ticket download: Fix error message representation 2019-12-25 20:32:22 +01:00
Raphael Michel 80a7c45e05 Fix missing checks in 38a19bb58 2019-12-25 20:26:47 +01:00
Raphael Michel 38a19bb58b Allow to download tickets through GET requests 2019-12-23 22:07:32 +01:00
Patrick Arminio 19873e2a09 Expose help texts on questions' API (#1534)
* Expose help texts on questions' API

* Update questions docs to show help_text

* Update questions.rst

Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
2019-12-22 19:30:17 +01:00
Raphael Michel eb7e938af6 Allow to explicitly set ticket language 2019-12-20 18:17:00 +01:00
Raphael Michel 614c40596f Move revoked devices to the bottom in the list of devices 2019-12-19 09:22:42 +01:00
Raphael Michel 4db56e218e Update from Weblate (#1530)
Update from Weblate
2019-12-19 08:56:49 +01:00
Abdullah ed9b96a41c Translated on translate.pretix.eu (Arabic)
Currently translated at 98.5% (3310 of 3359 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ar/

powered by weblate
2019-12-19 02:00:10 +00:00
Raphael Michel e839dbc7d4 Emulate secure request in samesite tests 2019-12-18 19:37:43 +01:00
Raphael Michel 982fb0149d Never set SameSite=None without HTTPS 2019-12-18 19:03:17 +01:00
Raphael Michel 4597cb9849 Drop typeahead for seats 2019-12-18 13:48:15 +01:00
Raphael Michel 9f629fc1c9 Do not show subject prefix in HTML email headline 2019-12-17 11:09:05 +01:00
Raphael Michel 387e1b4998 Fix issue that blocks seat sold in canceled position 2019-12-16 14:00:08 +01:00
Raphael Michel 84415864e5 Note cloning of objects to log 2019-12-16 14:00:08 +01:00
Maico Timmerman 82feca6e38 Fix #1521 -- External authenticated users cannot delete events (#1523)
* Remove check password for event deletion, instead require recent login.

* Reauthenticate for backends using authentication_url.

* Require recent login for data shredder and prompt slug instead of password.

* Fix tests for recent login required on event delete and data shred.

* Pull request remarks for recent login required for event delete and data shred.

* Remove unused imported check_password.
2019-12-16 10:45:01 +01:00
Maico Timmerman 28242e52aa Fix #1522 -- Login button redirects to authentication url with… (#1525) 2019-12-16 10:42:51 +01:00
Raphael Michel 488ee19b11 Set direction:rtl in emails 2019-12-16 10:35:54 +01:00
Raphael Michel ba4f00cfc0 Update from Weblate (#1520)
Update from Weblate
2019-12-16 10:33:56 +01:00
Maarten van den Berg eb392ebf20 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate
2019-12-16 08:54:34 +00:00
Maarten van den Berg 3cef690779 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3360 of 3360 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-12-16 08:54:34 +00:00
Abdullah 294fc4735a Translated on translate.pretix.eu (Arabic)
Currently translated at 98.5% (3310 of 3359 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ar/

powered by weblate
2019-12-16 08:54:34 +00:00
Abdullah 6d17cad529 Translated on translate.pretix.eu (Arabic)
Currently translated at 98.5% (3310 of 3359 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ar/

powered by weblate
2019-12-16 08:54:34 +00:00
Abdullah 668380cc3f Translated on translate.pretix.eu (Arabic)
Currently translated at 98.5% (3310 of 3359 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ar/

powered by weblate
2019-12-16 08:54:34 +00:00
Abdullah 3bf8de39a0 Translated on translate.pretix.eu (Arabic)
Currently translated at 98.5% (3310 of 3359 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ar/

powered by weblate
2019-12-16 08:54:34 +00:00
saad91 1986cdf4b9 Translated on translate.pretix.eu (Arabic)
Currently translated at 98.5% (3310 of 3359 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ar/

powered by weblate
2019-12-16 08:54:34 +00:00
Raphael Michel 577729a271 Add customer data to OrderTaxListReport 2019-12-16 09:54:16 +01:00
Raphael Michel 9033e5b6f7 Propose a gift card code when creating new cards 2019-12-16 09:45:36 +01:00
Raphael Michel c1fa0d1559 Fix #1524 -- Bug in CartManager's max_per_item validation 2019-12-16 09:45:36 +01:00
Raphael Michel e1a4dd6e43 Revert "Data model changes"
This reverts commit 089a468a5d.
2019-12-15 19:00:02 +01:00
Raphael Michel 089a468a5d Data model changes 2019-12-15 18:28:51 +01:00
Raphael Michel 018d345008 Add trust-x-forwarded-proto settings 2019-12-14 13:37:44 +01:00
Raphael Michel 529e2a0286 Re-set redeemed property when copying vouchers 2019-12-13 15:52:27 +01:00
Raphael Michel 1d36ef3c24 Allow to ignore plugin conflicts via environment 2019-12-13 12:57:25 +01:00
Raphael Michel 282ad2c869 Do not check compatibiliy while upgrading 2019-12-13 12:55:33 +01:00
Raphael Michel e67ff83378 Do not allow to create negative gift cards through the API 2019-12-12 14:18:47 +01:00
Raphael Michel 21be22e489 Add typeahead when filling event meta parameters 2019-12-12 12:21:53 +01:00
Raphael Michel 3da79ad36b Remove positivity constraint in apply_voucher 2019-12-12 12:02:12 +01:00
Raphael Michel 8a17fedaa6 Clarify show_vouchers constraint with subevents 2019-12-12 11:56:36 +01:00
Raphael Michel 7d6b3e7140 Set sales channel on all cart operations 2019-12-12 10:06:00 +01:00
Raphael Michel f80ba365a5 Fix test for voucher csv 2019-12-11 18:13:38 +01:00
Raphael Michel 8156cdd539 Add seat to voucher CSV export 2019-12-11 17:30:53 +01:00
Raphael Michel cd55146867 Add request and subevent parameters to front page widgets 2019-12-11 17:05:05 +01:00
Raphael Michel 3cb7482bae Add signal pretix.presale.signals.front_page_bottom_widget 2019-12-11 17:04:59 +01:00
Raphael Michel 99f3db04a9 Allow to redeem a voucher for an existing cart (#1517)
* Allow to redeem a voucher for an existing cart

* Bundle behaviour
2019-12-11 15:58:22 +01:00
Raphael Michel 352942b7d6 Allow sale of blocked seats on specific channels (#1518)
* Allow sale of blocked seats on specific channels

* Add docs
2019-12-11 15:56:20 +01:00
Raphael Michel 6d3ccc0182 More useful titles in select2 widget for seats 2019-12-11 13:05:04 +01:00
Raphael Michel 49b73fc096 Fix redemption of all-product vouchers with seating plans 2019-12-11 12:06:23 +01:00
Raphael Michel 24b931e1c3 Allow to import orders (#1516)
* Allow to import orders

* seats, subevents

* Plugin support

* Add docs

* Warn about lack of quota handling

* Control interface test

* Test skeleton

* First tests for the impotr columns

* Add tests for all columns

* Fix question validation
2019-12-11 11:44:06 +01:00
Raphael Michel 1c99e01af9 Fix test failure introduced in last commit 2019-12-11 11:22:52 +01:00
Raphael Michel 66183e805e Check-in list export: Filter by checkin_attention 2019-12-11 09:16:58 +01:00
Raphael Michel d33c9332c6 Show event time in list of events on organizer page 2019-12-11 09:11:54 +01:00
Raphael Michel 2284def607 Fix package name of dependency 2019-12-10 18:10:29 +01:00
Raphael Michel 15c25a5a0d PDF renderer: Support for arabic 2019-12-10 17:57:48 +01:00
Martin Gross cf5ac6af4b Organizer-level override for giftcard code length 2019-12-09 13:55:26 +01:00
Raphael Michel 2a929200b5 Vouchers: Fix CSV export for all-product vouchers 2019-12-09 10:23:50 +01:00
Raphael Michel 3f77d34026 Use the arab league flag to represent Arabic, for now
https://www.quora.com/Which-flag-represents-the-Arabic-language
http://www.flagsarenotlanguages.com/blog/the-arab-league-flag-for-arabic-language/
2019-12-07 15:30:14 +01:00
Raphael Michel a395b24b80 Add arabic, re-order languages 2019-12-07 15:08:57 +01:00
Raphael Michel 984ef60099 Fix issues in translation 2019-12-07 15:06:15 +01:00
saad91 5b6f0df963 Translated on translate.pretix.eu (Arabic)
Currently translated at 98.5% (3309 of 3359 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ar/

powered by weblate
2019-12-07 13:56:30 +00:00
saad91 509c7d98cc Translated on translate.pretix.eu (Arabic)
Currently translated at 97.4% (3271 of 3359 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ar/

powered by weblate
2019-12-07 13:20:50 +00:00
saad91 3bd4959efe Translated on translate.pretix.eu (Arabic)
Currently translated at 97.4% (3271 of 3359 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ar/

powered by weblate
2019-12-07 13:20:50 +00:00
Maarten van den Berg 4faaa8e521 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2019-12-07 13:20:49 +00:00
Maarten van den Berg 0e8832fd54 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3360 of 3360 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-12-07 13:20:49 +00:00
Raphael Michel 4faa76d9c7 Translated on translate.pretix.eu (Arabic)
Currently translated at 98.5% (3274 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ar/

powered by weblate
2019-12-07 13:20:49 +00:00
Raphael Michel 8d1f9bf0f3 Fix TypeError during widget loading 2019-12-07 14:18:04 +01:00
Raphael Michel 4afef62cbd Fix typo 2019-12-07 13:24:35 +01:00
Raphael Michel 3d5cfdd9c7 Fix conflict between are-you-sure.js and async tasks
Thanks @luto for reporting and helping to debug
2019-12-07 13:23:33 +01:00
Raphael Michel b3b1d09690 Use "Tax Invoice" as the invoice headline in Australia 2019-12-07 12:12:20 +01:00
Raphael Michel 381ecd6d75 Update German translation 2019-12-06 20:47:51 +01:00
Raphael Michel a12fea71e5 Include expire date on invoices 2019-12-06 20:43:01 +01:00
Raphael Michel a6dd6ac537 Fix AttributeError in e275677a0 2019-12-06 20:31:17 +01:00
Raphael Michel c3041aa8c4 Fix ItemBundle.MultipleObjectsReturned error when extending cart lifetimes 2019-12-06 20:30:35 +01:00
Raphael Michel e275677a0a Default to modern invoice renderer for new events 2019-12-06 20:25:05 +01:00
Raphael Michel fff14c31ba Add Event.set_defaults 2019-12-06 20:24:34 +01:00
Raphael Michel a74bde60eb Show invoice address form once again before generating a new invoice 2019-12-06 20:03:22 +01:00
Raphael Michel 12b9d23efb Hide "Generate invoice" button if no payment method is selected 2019-12-06 20:03:11 +01:00
Raphael Michel afec39ce57 Fix exception when submitting cart positions with invalid subevent IDs 2019-12-06 15:58:13 +01:00
Raphael Michel 4ae22c4a1e Bump to 3.5.0.dev0 2019-12-06 15:36:27 +01:00
Raphael Michel a928d8c781 Bump version to 3.4.0 2019-12-06 15:35:44 +01:00
Raphael Michel 27b7a756fb Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate
2019-12-06 15:07:44 +01:00
Raphael Michel 7252167cc7 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2019-12-06 15:07:44 +01:00
Raphael Michel d6ac337bde Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3360 of 3360 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-12-06 15:07:44 +01:00
Raphael Michel aa9d3ab614 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3360 of 3360 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-12-06 15:07:44 +01:00
Martin Gross 186fb851e6 Translated on translate.pretix.eu (Russian)
Currently translated at 33.5% (1127 of 3360 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ru/

powered by weblate
2019-12-06 13:07:26 +01:00
Martin Gross 97f7507dad Translated on translate.pretix.eu (Latvian)
Currently translated at 33.5% (1124 of 3360 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/lv/

powered by weblate
2019-12-06 13:07:19 +01:00
Martin Gross e4582dd9ed Add itemcount (Items, excluding AddOns) to fragment_cart (#1514)
* Add itemcount (Items, excluding AddOns) to fragment_cart

* Simplify itemcount
2019-12-05 16:45:41 +01:00
Raphael Michel 090d5bfe94 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-12-05 14:34:15 +01:00
Martin Gross b4e98e21a1 Translated on translate.pretix.eu (Russian)
Currently translated at 33.8% (1124 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ru/

powered by weblate
2019-12-05 14:20:29 +01:00
Carolina Fernández 4571abe496 Translated on translate.pretix.eu (Spanish)
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/es/

powered by weblate
2019-12-05 14:20:20 +01:00
Carolina Fernández f86520af37 Translated on translate.pretix.eu (Spanish)
Currently translated at 92.5% (3074 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-12-05 14:20:15 +01:00
Jaroslav Lichtblau 1a5b8a2e07 Translated on translate.pretix.eu (Czech)
Currently translated at 0.2% (8 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/cs/

powered by weblate
2019-12-05 14:20:07 +01:00
Maico Timmerman dddf91d3bf Feature/optional team provisioning (#1487)
* Event creation: Add option to select existing team instead of provisioning.

* Event creation: disallow event team provisioning on organizer level.

* Event team provisioning: update default setting location and display strings.

* Update src/pretix/control/views/main.py

Co-Authored-By: Raphael Michel <mail@raphaelmichel.de>
2019-12-05 12:20:40 +01:00
Martin Gross f88a09a78c Update reportlab requirement 2019-12-05 10:43:38 +01:00
Raphael Michel adebcc31d4 Call order_paid when creating paid orders through the API 2019-12-05 10:02:46 +01:00
Raphael Michel 5645a07cdc Email design: Make height of separator more reliable 2019-12-05 10:02:27 +01:00
Martin Gross 1d732e9675 Update pillow requirement from 5.* to 6.* 2019-12-04 18:47:18 +01:00
Martin Gross 61de010bbb Put customer VAT ID in the same line as the descriptor 2019-12-04 17:55:13 +01:00
Martin Gross 22eb9d3493 Add "Are you sure?"-dialog to dirty forms (#1506)
* Add "Are you sure?"-dialog to dirty forms

* Better form detection
2019-12-04 13:59:08 +01:00
Raphael Michel 4e8bda0c96 Improve email contents (#1510)
Improve email contents
2019-12-04 13:58:20 +01:00
Raphael Michel 0c83e5a50c Use a narrower separator PNG to reduce wrong-looking area in dark mode 2019-12-04 12:23:45 +01:00
Raphael Michel 745d7f74a1 Fix a display issue in GMail 2019-12-04 11:56:14 +01:00
Raphael Michel 8c86169d3f Fix #1415 -- Proper MIME structure 2019-12-04 11:56:02 +01:00
Raphael Michel 3c87272fdc Bank transfer import: Fix crash when no date column is selected 2019-12-04 10:29:26 +01:00
Raphael Michel f1142560f6 Fix crash with specific chromium user agents 2019-12-04 10:29:18 +01:00
Raphael Michel d46278f04f Set cookies with SameSite=None if possible (#1509) 2019-12-03 14:50:18 +01:00
Raphael Michel 098b7363e6 Waren about products with hidden_if_available 2019-12-01 12:34:47 +01:00
Raphael Michel 11d0c37415 Try to discourage accidentally setting Item.hidden_if_available 2019-12-01 12:31:09 +01:00
Raphael Michel 99607aa74a Fix AttributeError in sendmail form
PRETIXEU-1NQ
2019-12-01 11:17:30 +01:00
Raphael Michel d44b75388e RelativeDate: Fix parsing of invalid strings
PRETIXEU-1NH
2019-11-29 10:29:53 +01:00
Raphael Michel 531c8aedc2 Remove logging statement 2019-11-28 16:32:02 +01:00
Martin Gross 0474651070 Add unlimited_items_per_order-flag to Sales Channels (#1508)
* Add unlimited_items_per_order-flag to Sales Channels

* Test for unlimited_items_per_order Sales Channels-flag

* Fix test
2019-11-28 16:31:38 +01:00
Raphael Michel fd7ad3cb16 Fix docs typo 2019-11-28 15:10:26 +01:00
Raphael Michel d5b932e0d9 Add data-fix option to widget 2019-11-28 14:26:14 +01:00
Raphael Michel 5462e256ac Allow to create a new gift card when refunding 2019-11-28 13:50:10 +01:00
Raphael Michel 46d4d97c13 Add BasePaymentProvider.refund_control_render 2019-11-28 13:50:10 +01:00
Raphael Michel 8b5241d520 Improve error messages when changing seating plans 2019-11-28 12:12:12 +01:00
Raphael Michel ee06844b0d Allow to sort the list of vouchers 2019-11-28 11:29:33 +01:00
Raphael Michel d4a491fc1b Add new signal pretix.control.signals.order_search_filter_q 2019-11-28 11:18:09 +01:00
Raphael Michel bb3348022f Allow to configure help text of email field 2019-11-28 11:11:55 +01:00
Raphael Michel a10082a46f CSV exports: Subevent name and date in separate columns 2019-11-28 10:24:12 +01:00
Raphael Michel ef555eaff1 Fix new tests on real databases 2019-11-27 17:40:42 +01:00
Raphael Michel 31adc37599 API: Add convenience methods to make it easier to create fees 2019-11-27 17:14:44 +01:00
Raphael Michel 1d02764be2 Do not show "other fee" text on invoices 2019-11-27 16:55:53 +01:00
Raphael Michel f80f2e9bf9 Show "choose other event date" button even in iframes 2019-11-27 16:09:46 +01:00
Raphael Michel f5e7e0e309 Fix crash if Bundle.designated_price is set to null 2019-11-27 16:07:22 +01:00
Raphael Michel bbc70447a2 Allow to create vouchers for *all* products (#1504) 2019-11-27 14:57:09 +01:00
Raphael Michel 530632d624 Add invoice_line_text to documentation 2019-11-26 17:15:13 +01:00
Raphael Michel 370130f047 Add signal invoice_line_text 2019-11-26 16:41:41 +01:00
Raphael Michel 14575693b8 Add signal item_description 2019-11-26 16:36:25 +01:00
Raphael Michel 436dcc68f2 Show link for other dates in widget checkout 2019-11-25 16:44:42 +01:00
Raphael Michel b49e02d988 Voucher redemption: Disable add-on-cart button if no products are
selected
2019-11-25 15:54:11 +01:00
Raphael Michel 037644421b Question statistics: Do not include canceled orders 2019-11-25 15:42:37 +01:00
Raphael Michel 654faa5a10 Order list: Filter by answers should be case-sensitive 2019-11-25 15:42:37 +01:00
Raphael Michel 53a22e0e88 Expiry warnings: Pre-fetch expiry column 2019-11-24 16:27:47 +01:00
Raphael Michel f8a080d180 Refs #1289 -- Download reminders for subevents and download reminder performance 2019-11-24 16:05:03 +01:00
Raphael Michel b013737d70 Fix AttributeError introduced in last commit 2019-11-24 15:40:14 +01:00
Raphael Michel 24d6816dac Improve performance of send_expire_warnings and expire_orders 2019-11-24 15:28:03 +01:00
Maico Timmerman 2eb92bef9b Send widget_data when opening waiting list (#1502) 2019-11-24 11:33:56 +01:00
Raphael Michel 8d5b4d190c Fix TypeError introduced in 50dabb5b2 2019-11-22 16:10:58 +01:00
Raphael Michel 50dabb5b26 Show seat in web and PDF check-in list 2019-11-22 13:32:39 +01:00
Raphael Michel 84fb25e4d9 Voucher creation: Auto-select products based on seat 2019-11-22 13:25:20 +01:00
Raphael Michel ee4f75c2fb Introduce Seat.sorting_rank (#1499)
* Introduce Seat.sorting_rank

* Fix comments

* Comments, for real
2019-11-22 13:25:08 +01:00
Raphael Michel 1e63eb743c Merge pull request #1498 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-11-22 13:24:21 +01:00
Mie Frydensbjerg 09477e1431 Translated on translate.pretix.eu (Danish)
Currently translated at 48.1% (1600 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/

powered by weblate
2019-11-21 17:00:11 +00:00
Raphael Michel 2be49d8cab Bank transfer: Do not cause duplicate payments 2019-11-21 17:22:11 +01:00
Raphael Michel 808ccfee75 Bank import: useful matching of negative transactions
Negative transactions are never matched automatically, which does not
change. However, when matching them manually, a negative payment was
created, which does not make much sense. Now, if a negative payment is
manually matched, the system checks whether:

a) There is a manual refund in pending state. In this case, the refund
   will be marked as done.

b) There is a bank transfer payment of the same amount, in which case
   this is handled like a credit card chargeback (i.e. notification on
   the dashboard, ...)

c) Otherwise, an error will be returned asking the user to create a
   refund object manually.
2019-11-20 18:35:15 +01:00
Raphael Michel 485766e247 Sendmail plugins: Fix issues around history of checkin-filtered emails 2019-11-20 18:08:22 +01:00
Martin Gross bab27f5ab6 Respect payment-saleschannel restrictions also on order change 2019-11-20 17:18:51 +01:00
Martin Gross 26141da1b3 Update from Weblate (#1497)
Currently translated at 70.9% (73 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/da/

powered by weblate

Co-authored-by: Mie Frydensbjerg <mif@aarhus.dk>
2019-11-20 15:42:27 +01:00
Mie Frydensbjerg 4c6cf63d68 Translated on translate.pretix.eu (Danish)
Currently translated at 70.9% (73 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/da/

powered by weblate
2019-11-20 14:41:46 +00:00
Martin Gross 24fa251b05 Update from Weblate (#1496)
Update from Weblate

Co-authored-by: Mie Frydensbjerg <mif@aarhus.dk>
2019-11-20 15:01:16 +01:00
Mie Frydensbjerg d65eaf7b95 Translated on translate.pretix.eu (Danish)
Currently translated at 48.1% (1598 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/

powered by weblate
2019-11-20 13:59:25 +00:00
Mie Frydensbjerg e24a7f3887 Translated on translate.pretix.eu (Danish)
Currently translated at 69.9% (72 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/da/

powered by weblate
2019-11-20 13:54:08 +00:00
Martin Gross ec66b20798 Fix ToC for docs 2019-11-20 12:55:19 +01:00
Martin Gross 2c3c9a4ba1 Merge pull request #1495 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-11-20 10:04:41 +01:00
Martin Gross 4c8e1cef7f Translated on translate.pretix.eu (Russian)
Currently translated at 33.8% (1123 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ru/

powered by weblate
2019-11-20 09:02:33 +00:00
Raphael Michel 180963c787 Widget: Auto-open seating plan in some situations 2019-11-19 22:48:47 +01:00
Raphael Michel ee96fb2ca1 Fix widget test cases 2019-11-19 22:42:51 +01:00
Raphael Michel 5563259b11 Fix gettext import 2019-11-19 21:44:34 +01:00
Raphael Michel e7b86e0deb Refactor attribution note in the widget 2019-11-19 21:16:04 +01:00
Raphael Michel 067c3b1abc Update from Weblate (#1494)
Update from Weblate
2019-11-19 17:00:48 +01:00
Maarten van den Berg 3fff04bcda Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3323 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-11-19 15:55:59 +00:00
Maarten van den Berg 150ebc7ddb Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3323 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-11-19 15:55:56 +00:00
Raphael Michel 2f906bae5c Translated on translate.pretix.eu (Latvian)
Currently translated at 33.7% (1120 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/lv/

powered by weblate
2019-11-19 15:55:01 +00:00
Raphael Michel 82d1927fe7 Fix date range shown for one-day event 2019-11-19 16:16:08 +01:00
Raphael Michel cde87b437a Update from Weblate (#1493)
Update from Weblate
2019-11-18 16:01:00 +01:00
Zane Smite 9cbf3490cf Translated on translate.pretix.eu (Latvian)
Currently translated at 33.7% (1120 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/lv/

powered by weblate
2019-11-18 15:00:25 +00:00
Raphael Michel 56cfdfc5b3 Stripe: Only use alphanumeric characters in statement descriptors 2019-11-18 10:47:43 +01:00
Raphael Michel 8564d20183 Update from Weblate (#1492)
Update from Weblate
2019-11-18 10:46:11 +01:00
Raphael Michel c3155ad16d Translated on translate.pretix.eu (Arabic)
Currently translated at 98.1% (101 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ar/

powered by weblate
2019-11-18 09:44:59 +00:00
Raphael Michel 7fce062c2a Translated on translate.pretix.eu (Arabic)
Currently translated at 98.1% (101 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ar/

powered by weblate
2019-11-18 09:41:05 +00:00
Raphael Michel 05311fda54 Update from Weblate (#1490)
Update from Weblate
2019-11-17 19:40:39 +01:00
Raphael Michel 0396c851ed Translated on translate.pretix.eu (Arabic)
Currently translated at 98.1% (101 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ar/

powered by weblate
2019-11-17 18:35:20 +00:00
Zane Smite 1d2094f5ea Translated on translate.pretix.eu (Latvian)
Currently translated at 33.7% (1120 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/lv/

powered by weblate
2019-11-17 18:35:20 +00:00
Maarten van den Berg 44b8531614 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 97.1% (3225 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-11-17 18:35:20 +00:00
Raphael Michel 5e9610eecf Fix typo in function call 2019-11-17 19:35:06 +01:00
Raphael Michel 1c40351b27 Bulk voucher sending: Correctly strip lines of whitespace 2019-11-17 19:31:41 +01:00
Martin Gross 3a4196c087 Remove seating-icon filler to stop Chrome complaining about the CSP for inline-styling 2019-11-15 20:53:20 +01:00
Martin Gross 080b5f02cb Fix FAQ on linear barcodes spelling even more, ffs... 2019-11-15 19:21:30 +01:00
Martin Gross 21c052918c Fix FAQ on linear barcodes spelling 2019-11-15 18:53:58 +01:00
Raphael Michel 9515249098 Bulk voucher creation: Fix spaces in seat IDs 2019-11-15 18:44:47 +01:00
Martin Gross a0dd495cc3 FAQ on linear barcodes 2019-11-15 16:27:07 +01:00
Martin Gross 46ce9904cd Fix documentation for override_layout signal 2019-11-15 15:54:50 +01:00
Martin Gross 600310da0f Fix override_layout signal 2019-11-15 12:12:13 +01:00
Martin Gross 3b306de1bb New signal: ticketoutput_override_layout (#1483)
* Add signal to override ticketoutput layout

* Change Signal collection to send_chained

* Move ticketoutput_override_layout to ticketoutputpdf-plugin
2019-11-15 11:18:52 +01:00
Raphael Michel a2c1c69d7e Seat-specific vouchers (#1486)
* Basic functionality

* API

* Do not delete seats with vouchers

* Show seat in list of seats

* Validate availability of seats

* Fix invalid logic in Seat.is_available

* Show voucher name in edit form
2019-11-15 10:56:34 +01:00
Raphael Michel f79df47b78 Add specific social media image 2019-11-15 10:33:55 +01:00
Raphael Michel 1703f3d636 Update from Weblate (#1489)
Update from Weblate
2019-11-15 09:47:48 +01:00
Raphael Michel 580ae7a2e9 Translated on translate.pretix.eu (Latvian)
Currently translated at 33.5% (1113 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/lv/

powered by weblate
2019-11-15 08:42:30 +00:00
Raphael Michel 34703cf6de Translated on translate.pretix.eu (Russian)
Currently translated at 33.8% (1123 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ru/

powered by weblate
2019-11-15 08:32:53 +00:00
Raphael Michel 1999495638 Translated on translate.pretix.eu (Russian)
Currently translated at 33.8% (1123 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ru/

powered by weblate
2019-11-15 08:30:51 +00:00
Raphael Michel 00798d9207 Payment providers: Add priority flag 2019-11-15 09:29:38 +01:00
Raphael Michel ac2ff6c2aa Phone number fields: Do not crash on invalid default value 2019-11-15 08:48:14 +01:00
Raphael Michel 35ac2f0d2b Merge pull request #1482 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-11-14 12:38:43 +01:00
Raphael Michel 3432bb089a Translated on translate.pretix.eu (Latvian)
Currently translated at 33.4% (1110 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/lv/

powered by weblate
2019-11-14 11:37:41 +00:00
Zane Smite 69b03b24a1 Translated on translate.pretix.eu (Latvian)
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/lv/

powered by weblate
2019-11-14 11:12:30 +00:00
Raphael Michel 520dd3e254 Refunds: Do not try to cancel canceled order 2019-11-14 12:12:15 +01:00
Raphael Michel d98fce3594 Fix cancelling payments through the API 2019-11-14 12:10:45 +01:00
Raphael Michel aa5ae8b2bd Do not crash because of invalid phone numbers in the database 2019-11-14 11:36:31 +01:00
Raphael Michel b148182240 Cancel payments when cancelling order 2019-11-14 10:42:33 +01:00
Raphael Michel 339d7f06ed Payment provider API: Add method cancel_payment 2019-11-14 10:39:54 +01:00
Raphael Michel b876293453 Fix problem when cancelling an order with invoices with different prefixes 2019-11-13 14:14:14 +01:00
Martin Gross 54091b9721 Add question type: phone number (#1462)
* Add Phonenumber-Field as to Questions

* Add setup requirements

* Add list of ask-during-checkin restricted question types and enforce it

* Fix requirements

* Fix crash using custom locales

* Re-format phone numbers when outputting to humans

* Initialize country code field with a guess for the customer's country

* Document TEL type in API docs
2019-11-13 12:52:07 +01:00
Raphael Michel 06a744ea2d Refactor cart management into new helper function cached_invoice_address 2019-11-13 11:42:03 +01:00
Raphael Michel c24ab642ce Fix logic bug introduced in 0e9d2cfc1 during form validation 2019-11-13 10:30:29 +01:00
Raphael Michel 2ab3e1d420 Explicitly write Latvian with L 2019-11-13 10:08:51 +01:00
Raphael Michel 0e9d2cfc10 Require certain parts of names if names are required 2019-11-12 18:15:25 +01:00
Raphael Michel 63a46d0156 Fix russian translation 2019-11-12 17:28:49 +01:00
Martin Gross 6896682dd1 Restrict Payment Providers to Sales Channels (#1481)
* Allow to restrict payment providers to specific sales channels

* Fix test

* Add `payment_restrictions_supported`-property to SalesChannels
2019-11-12 17:11:43 +01:00
Raphael Michel 384e7f8fc1 Update from Weblate (#1479)
Update from Weblate
2019-11-12 17:11:29 +01:00
Mie Frydensbjerg d403b3d433 Translated on translate.pretix.eu (Danish)
Currently translated at 48.0% (1595 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/

powered by weblate
2019-11-12 10:11:34 +00:00
Zane Smite 552e523229 Translated on translate.pretix.eu (Latvian)
Currently translated at 98.1% (101 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/lv/

powered by weblate
2019-11-12 10:11:34 +00:00
Maarten van den Berg 95ca6da74a Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3323 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-11-12 10:11:34 +00:00
Zane Smite bce8879804 Translated on translate.pretix.eu (Latvian)
Currently translated at 49.5% (51 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/lv/

powered by weblate
2019-11-12 10:11:34 +00:00
Raphael Michel a05cce8af7 Translated on translate.pretix.eu (Russian)
Currently translated at 97.1% (100 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ru/

powered by weblate
2019-11-12 10:11:34 +00:00
Zane Smite dd6f1ee70f Translated on translate.pretix.eu (Latvian)
Currently translated at 10.7% (11 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/lv/

powered by weblate
2019-11-12 10:11:34 +00:00
Raphael Michel ad91ed4a30 Correctly deal with tax rules that used to have custom rules 2019-11-12 11:11:21 +01:00
Raphael Michel e3c3154469 Fix invoice duplication when importing payments for expired orders 2019-11-11 18:59:33 +01:00
Raphael Michel 54cd38bbaa Always render product names bold 2019-11-11 17:13:54 +01:00
Raphael Michel 8dbba1cfd3 Order details: Do not show download note when disabled on product level 2019-11-11 12:38:33 +01:00
Raphael Michel 0bf3ee1a6f Refactor into method in ClassicInvoiceRenderer 2019-11-10 13:07:06 +01:00
Raphael Michel da7e1dee3e Offset refunds: Catch exceptions in the right place 2019-11-10 12:59:10 +01:00
Raphael Michel df3cc1499f Fix #1480 -- Remove apparently obsolete code 2019-11-08 16:13:23 +01:00
Raphael Michel 2d066e3b5e Add CSS required for font preview to organizer settings 2019-11-08 09:19:27 +01:00
Raphael Michel 25cfa8973c API: Add invoice line position to invoice object 2019-11-07 15:43:22 +01:00
Raphael Michel 3f7f04ed21 Enable Russian and Latvian languages 2019-11-07 13:50:41 +01:00
Raphael Michel 88b2f4738a Ticket preview: use an existing subevent 2019-11-07 13:06:01 +01:00
Raphael Michel ea71b1f04e Fix typo 2019-11-06 15:42:20 +01:00
Raphael Michel 03a06b6997 Fix wrong attribute name 2019-11-06 15:42:12 +01:00
Raphael Michel 1cd319357d Add "Invoice" to the filename of attached invoices 2019-11-06 14:10:42 +01:00
Raphael Michel 4c653aa4f1 Bump to 3.4.0.dev0 2019-11-06 14:05:54 +01:00
Raphael Michel 5b4e27c47b Bump version to 3.3.0 2019-11-06 13:10:40 +01:00
Raphael Michel 919afb94c4 Fix outdated API documentation 2019-11-05 19:00:09 +01:00
Raphael Michel 8f112f8d9a Pass cart positions to fee_calculation_for_cart 2019-11-04 11:00:48 +01:00
Raphael Michel d15e37d93e Do not show availability for currently-selected add-on 2019-11-04 09:55:00 +01:00
Raphael Michel 47cf019079 Make voucher send task transaction-aware 2019-11-04 09:18:23 +01:00
Raphael Michel f51521143b PDF: Fix incorrect type of position id 2019-11-02 12:33:29 +01:00
Raphael Michel a0ca76f0ec Fix incorrect offset payments when changing and splitting orders at the same time 2019-11-02 11:15:26 +01:00
Raphael Michel d7f71948c1 Fix typo in docstring of a signal 2019-11-01 14:30:51 +01:00
Raphael Michel 7d72611851 Allow to add order position number to PDFs 2019-11-01 14:30:51 +01:00
Raphael Michel 2e9e5a8994 Fix untranslated email subject 2019-10-31 16:00:44 +01:00
Raphael Michel c8289877bb Update from Weblate (#1476)
Update from Weblate
2019-10-31 15:40:39 +01:00
Raphael Michel bb0ad6fb11 Translated on translate.pretix.eu (Turkish)
Currently translated at 77.9% (2587 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/tr/

powered by weblate
2019-10-31 14:39:48 +00:00
Raphael Michel 6dcdb87725 Translated on translate.pretix.eu (Spanish)
Currently translated at 90.2% (2997 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-10-31 14:39:47 +00:00
Raphael Michel c2c8f36724 Translated on translate.pretix.eu (Greek)
Currently translated at 91.8% (3051 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-10-31 14:39:46 +00:00
Raphael Michel 11c0a38665 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3323 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-10-31 14:39:45 +00:00
Raphael Michel c1c5388923 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3323 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-10-31 14:39:43 +00:00
Raphael Michel c7054fe72d Translated on translate.pretix.eu (French)
Currently translated at 69.7% (2317 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/

powered by weblate
2019-10-31 14:39:42 +00:00
Raphael Michel 13be3b7899 Translated on translate.pretix.eu (Danish)
Currently translated at 47.5% (1580 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/

powered by weblate
2019-10-31 14:39:41 +00:00
Raphael Michel d9fe3e51da Translated on translate.pretix.eu (Catalan)
Currently translated at 31.4% (1044 of 3323 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ca/

powered by weblate
2019-10-31 14:39:40 +00:00
telegnom e381e50fbf missing dot in docker command (#1474) 2019-10-30 18:00:33 +01:00
Raphael Michel 73a323528b Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-10-30 17:23:53 +01:00
Raphael Michel 3a0aaa3f92 Stripe: Relax same-session requirement for iDEAL payments
This security mechanism caused problems with banking apps who open the
return view in a separate browser session inside the banking app.
2019-10-30 17:23:11 +01:00
Martin Gross 2a9c105e51 PayPal: Show payment ID on paid invoices (#1471)
* Always call render_invoice_text - even if order is already paid

* Print PayPal payment ID on invoice if available and invoice is paid

* Also display Sale ID on invoice

* try/except for paymentId/SaleId
2019-10-30 10:48:15 +01:00
Raphael Michel 038533ad63 Allow to change fees in existing orders (#1472)
* Allow to change fees in existing orders

* Add tests

* Add special case for payment options

* Fix PK reference in tests
2019-10-29 22:04:42 +01:00
Raphael Michel fcf9f0054e Fix #1328 -- Show internal name in list of categories 2019-10-29 20:01:35 +01:00
Raphael Michel 621b0c8c95 Fix #1390 -- Fix string on frontpage being evaluated before translations are loaded 2019-10-29 20:00:00 +01:00
Raphael Michel 4a40312a32 Fix #1377 -- Copy has_subevents when cloning events through the API 2019-10-29 19:54:45 +01:00
Raphael Michel b156efaae8 Fix #1468 -- Fix sorting by fallback name parts in check-in lists 2019-10-29 19:53:52 +01:00
Felix Schäfer f473439f77 PDF renderer: Properly escape HTML answer fields (#1473) 2019-10-29 17:58:10 +01:00
Raphael Michel 9ed49fb379 PDF renderer: Properly escape HTML in some fields 2019-10-29 12:10:30 +01:00
Martin Gross 70e95b42fa Add manual order-matching field for duplicate bankimport transactions (#1461)
* Add manual order-matching field for duplicate bankimport transactions

* Only show matching-field for already matched transactions - not for errored ones.
2019-10-29 11:54:36 +01:00
Raphael Michel 1e0e8184c8 Fix #312 -- Bulk-send vouchers via email (#1469)
* Allow to directly bulk-send vouchers via email

* Send mails

* Log messages

* Fix test failures

* Add new test cases
2019-10-29 11:53:59 +01:00
Raphael Michel 161f4a8132 Update from Weblate (#1467)
Update from Weblate
2019-10-29 11:51:13 +01:00
Raphael Michel 8ac978062f Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3302 of 3302 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-10-29 10:50:30 +00:00
Raphael Michel 619435d0f6 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3302 of 3302 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-10-29 10:50:29 +00:00
Maarten van den Berg 7e9e03cef4 Translated on translate.pretix.eu (Dutch)
Currently translated at 97.5% (3219 of 3302 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-10-29 08:42:26 +00:00
Raphael Michel dc3e76d6d3 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-10-29 09:42:15 +01:00
Raphael Michel df2c9bdce5 Adjust strings in tests 2019-10-29 09:41:33 +01:00
Raphael Michel 20a6decb3a Notifications: Add details about subevents and products 2019-10-28 22:54:56 +01:00
Raphael Michel 3d31b95201 Event list: Autocomplete meta values 2019-10-28 22:35:16 +01:00
Raphael Michel cc970caad8 Allow to filter global event list using organizer parameters 2019-10-28 22:03:09 +01:00
Raphael Michel 845f231446 Replace "Tickets on sale" with "Book now" in frontend 2019-10-28 21:46:33 +01:00
Raphael Michel 538d1b6b58 Adjust order of events on dashboard 2019-10-28 17:01:05 +01:00
Raphael Michel 601fefc57f Remove any doubt from dashboard order 2019-10-28 16:58:32 +01:00
Raphael Michel 645b9696b7 Increase length of OAuthGrant.redirect_uri 2019-10-28 16:42:17 +01:00
Raphael Michel ee5ce900d2 Update from Weblate (#1460)
Update from Weblate
2019-10-25 17:04:58 +02:00
Martin Gross ab0be57106 API: Allow to filter events by attributes (#1466)
* Allow filtern events-ressource on API by attrs

* Document meta-data attr-filter for order resource

* Actually document the change and not some random other nonsensical thing...

* Doc for subevent-filtering

* Test for attr-filtering on events resource

* Allow attr-filtering on subevents

* Add attr-filter test for subevent

* Update doc/api/resources/subevents.rst

* Update src/tests/api/test_subevents.py

* Update doc/api/resources/events.rst
2019-10-25 17:04:20 +02:00
oocf ee6c4551b3 Translated on translate.pretix.eu (Spanish)
Currently translated at 90.9% (3000 of 3302 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-10-25 14:50:08 +00:00
yichengsd d63956fe25 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 94.1% (3107 of 3302 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-10-25 14:50:08 +00:00
yichengsd 27fb9cd8b0 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 92.5% (3056 of 3302 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-10-25 14:50:08 +00:00
yichengsd ada2de8bc9 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 92.2% (3046 of 3302 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-10-25 14:50:08 +00:00
yichengsd 7fe3ac3b5e Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 91.6% (3026 of 3302 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-10-25 14:50:08 +00:00
yichengsd 13cf24d7fa Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 90.3% (2981 of 3302 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-10-25 14:50:08 +00:00
Felix Rindt 6d95603aa8 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3302 of 3302 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-10-25 14:50:08 +00:00
Raphael Michel 97fbec804b Stripe: Include event name in statement descriptors 2019-10-25 16:49:13 +02:00
Raphael Michel 8f16145dda Order creation API: Use correct language for email subjects 2019-10-25 09:02:38 +02:00
Raphael Michel 3f5e835367 Add safeguards and tests against duplicate cancellations 2019-10-24 16:07:59 +02:00
Tobias Kunze fe92af10fb Ignore whitespace on typeahead queries (#1464)
Whitespace is often added when you copy/paste order or voucher codes
2019-10-24 10:29:57 +02:00
Martin Gross 5e88dcf329 Fix saleschannels testmode-support-message check 2019-10-23 17:54:07 +02:00
Raphael Michel d7c8460c28 Fix failing widget tests 2019-10-23 17:40:33 +02:00
Raphael Michel 837775c8d4 Correctly respect mail_attach_ical setting on order payments 2019-10-23 16:17:39 +02:00
Raphael Michel 2a51969b04 Add (hidden) location field to event list widget 2019-10-23 15:28:15 +02:00
Martin Gross 357972c8f8 Rearrange order_gracefully_delete signal-call (#1463) 2019-10-23 15:17:46 +02:00
Raphael Michel 08460f9918 Add loading callback to widget 2019-10-23 15:09:20 +02:00
Raphael Michel 277b7ad71c Hide manual refunds from users as well 2019-10-23 14:39:21 +02:00
Raphael Michel d0340044d3 Order transition: Deal with empty cancellation fee 2019-10-22 17:58:51 +02:00
Raphael Michel 8abaa16fab Change log level of widget loading 2019-10-22 10:40:14 +02:00
Raphael Michel 5e4a16bd44 Allow to filter event list in organizer view by meta data 2019-10-21 19:03:51 +02:00
Raphael Michel b219faafaa Work around a potential Django bug on MySQL
On MySQL, we observe that the preloaded items are missing everywhere
except the first time they occur.
2019-10-21 16:13:48 +02:00
Martin Gross 3006d35622 Skip ticket-attachment for text/uri-list 2019-10-21 16:00:42 +02:00
Martin Gross a879a86dff Remove unused property 2019-10-21 15:02:44 +02:00
Raphael Michel 926b94c88f Update from Weblate (#1459)
Update from Weblate
2019-10-21 14:43:56 +02:00
Raphael Michel 638f1324fe Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3302 of 3302 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-10-21 12:43:10 +00:00
Raphael Michel be7fea4e2e Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3302 of 3302 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-10-21 12:42:57 +00:00
Raphael Michel adf7b6a4ed Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-10-21 14:07:43 +02:00
pajowu fc4c6444cb Sendmail plugin: Allow filtering for check-ins (#1382)
* Allow filtering mass-emails for Checkin Lists

* Allow filtering mass emails for not checked in

* Fix email filtering logic issue

* Use Select2 for checkin lists selection

* sendmail plugin: Make checkin list filtering optional

* Remove unused constant

* Re-size panel to only fit the right column

* Revert incorrect JavaScript change

* Change semantics of not_checked_in

* Introduce a subquery to filter on position properties
2019-10-21 14:06:11 +02:00
Martin Gross 03c760c2bb Allow ticket output providers to handle downloads externally (#1402)
* TicketOutput-Providers: Make preview optional; download/attachable optional; optional specific target; update doc

* Spelling fixes in doc

* Changes after code-review

* Changes after code-review

* Commit missing template file

* Allow for redirects instead of files

* Return HTTPResponse with Content-Type text/uri-list on API

* Update API-doc

* Add viewable to spellinglist, fixing doc-test
2019-10-21 14:05:09 +02:00
Raphael Michel 27538d220e Fix #1416 -- Add canonical geodata field (#1458)
* Fix #1416 -- Add canonical geodata field for events and subevents

* Add optional geocoding through OpenCageData

* Fix markup everywhere

* Add Leaflet map to geo coordinates

* Fix tests, add credits

* Fix spelling
2019-10-21 13:07:35 +02:00
Raphael Michel 19b10e3ca4 Add option to attach calendar files to emails (#1457) 2019-10-21 10:41:22 +02:00
Martin Gross 2b18621c76 Add flag testmode_supported to sales channels (#1455)
* Add testmode-support-flag to SalesChannels

* Make saleschannels/testmode-warnings even more dangerous!

* Add warning for payment-methods that do support testmode but are being used in a non-testmode order caused by a saleschannel in a testmode-shop.

* Remove redundant testmode_supported-flag for WebshopSalesChannel

* Raise error on API when sales_channel does not support testmode

* Tests

* Fix style issue after merge
2019-10-21 10:07:02 +02:00
Raphael Michel e8a2f7e349 Collapse gift card option when the gift card is not enough 2019-10-18 18:18:45 +02:00
Raphael Michel a326ee8f75 Prevent creating negative gift code values 2019-10-18 17:54:23 +02:00
Raphael Michel 147b90b9e8 Update from Weblate (#1456)
Update from Weblate
2019-10-18 17:54:01 +02:00
Raphael Michel 1a461531eb Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3284 of 3284 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-10-18 15:51:52 +00:00
Raphael Michel f854a0f8d6 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3284 of 3284 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-10-18 15:51:51 +00:00
Raphael Michel 137ed5da6a Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3218 of 3218 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-10-18 15:23:12 +00:00
Raphael Michel 6695fef3ee Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3218 of 3218 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-10-18 15:23:12 +00:00
Raphael Michel 4a8827cc2b Do not show "a refund is on its way" message for internal refunds 2019-10-18 17:22:50 +02:00
Raphael Michel 328b4ec633 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-10-18 17:17:48 +02:00
Raphael Michel 974a84fefe Merge pull request #1396 from pretix/giftcard
Support for gift cards
2019-10-18 17:08:45 +02:00
Raphael Michel 94b6b86696 Fix faulty test 2019-10-18 15:42:46 +02:00
Raphael Michel 8fe9b35dea Add more tests 2019-10-18 15:12:26 +02:00
Raphael Michel 2c87d5ece3 Update src/pretix/control/templates/pretixcontrol/organizers/giftcards.html
Co-Authored-By: Martin Gross <gross@rami.io>
2019-10-18 15:09:06 +02:00
Raphael Michel f8433b5cc9 Add some tests 2019-10-18 13:08:25 +02:00
Martin Gross 0a200de41c Fix spelling in order_gracefully_delete signal 2019-10-18 12:07:33 +02:00
Martin Gross 25a998a510 Add order_gracefully_delete signal (#1454) 2019-10-18 11:38:26 +02:00
Raphael Michel a1c7a6f2b0 Fix items test 2019-10-17 21:31:45 +02:00
Raphael Michel 1fe93ac6b7 Do not allow to pay gift cards with gift cards 2019-10-17 18:12:06 +02:00
Raphael Michel 4b2f25ce8a Add testmode for gift cards 2019-10-17 18:05:04 +02:00
Raphael Michel 33cee65d7f Add a tooltip with the date to pending orders 2019-10-17 17:27:33 +02:00
Raphael Michel 302966808e More docs and payments 2019-10-17 17:19:31 +02:00
Raphael Michel 767e679140 Show issued gift card in order view 2019-10-17 17:07:59 +02:00
Raphael Michel 1a07686b79 Merge branch 'giftcard' of github.com:pretix/pretix into giftcard 2019-10-17 17:00:10 +02:00
Raphael Michel 7b4c3a00a0 Update src/pretix/control/templates/pretixcontrol/organizers/giftcards.html
Co-Authored-By: Martin Gross <gross@rami.io>
2019-10-17 16:59:53 +02:00
Raphael Michel 7db87af754 Update src/pretix/control/templates/pretixcontrol/organizers/giftcards.html
Co-Authored-By: Martin Gross <gross@rami.io>
2019-10-17 16:59:44 +02:00
Raphael Michel da9c30089a Fix sv translation 2019-10-17 16:40:46 +02:00
Raphael Michel 89a85392a9 Fixes 2019-10-17 16:39:42 +02:00
Raphael Michel 02b6cc5aad Update from Weblate (#1450)
Update from Weblate
2019-10-17 16:06:38 +02:00
Raphael Michel b3e6f44027 Add double-spend safeguard 2019-10-17 16:04:22 +02:00
Raphael Michel ac2df35db6 Allow configuring cross-organizer acceptance 2019-10-17 16:04:22 +02:00
Raphael Michel ac212b798d Remove unneeded settings 2019-10-17 16:04:22 +02:00
Raphael Michel 195d418e00 Add spelling word 2019-10-17 16:04:22 +02:00
Raphael Michel ba286d96cb Rebase and manually squash migrations 2019-10-17 16:04:22 +02:00
Raphael Michel 9842fcf7da Allow order change 2019-10-17 16:04:22 +02:00
Raphael Michel e97ae04581 Helpful error messages 2019-10-17 16:04:22 +02:00
Raphael Michel 346f215c50 Refator payment provider, deal with cancellations 2019-10-17 16:04:22 +02:00
Raphael Michel e099fad0ca Refator payment provider, deal with cancellations 2019-10-17 16:04:22 +02:00
Raphael Michel 4aeada0bfb Fix KeyError 2019-10-17 16:04:22 +02:00
Raphael Michel 73dd94fe73 Actually issue giftcards 2019-10-17 16:04:22 +02:00
Raphael Michel 8c50b7409f Add Item.issue_giftcard 2019-10-17 16:04:22 +02:00
Raphael Michel b07d9d167d Add an API 2019-10-17 16:04:22 +02:00
Raphael Michel f22d5915ea Handle refunds 2019-10-17 16:04:22 +02:00
Raphael Michel e37d85f517 Cross-organizer acceptance 2019-10-17 16:04:22 +02:00
Raphael Michel c68f715e07 Pending display 2019-10-17 16:04:22 +02:00
Raphael Michel db71ec92be Payment step 2019-10-17 16:04:22 +02:00
Raphael Michel 85e7a16880 Backend management of gift cards 2019-10-17 16:04:22 +02:00
Raphael Michel ed370fa913 Proof of concept 2019-10-17 16:04:22 +02:00
Raphael Michel f7f00fe735 Data model 2019-10-17 16:04:22 +02:00
Tobias Sundgren 37b05fb4f4 Translated on translate.pretix.eu (Swedish)
Currently translated at 6.7% (217 of 3218 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sv/

powered by weblate
2019-10-17 13:34:04 +00:00
Maarten van den Berg defd00ffdf Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3218 of 3218 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-10-17 13:34:04 +00:00
Maarten van den Berg 9f44d7bbf5 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3218 of 3218 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-10-17 13:34:04 +00:00
Raphael Michel 28e27e91b2 Added translation on translate.pretix.eu (Latvian) 2019-10-17 13:34:04 +00:00
Raphael Michel e519a50805 Added translation on translate.pretix.eu (Latvian) 2019-10-17 13:34:04 +00:00
Raphael Michel b11b79b559 Update .travis.sh 2019-10-17 15:33:59 +02:00
Raphael Michel 88378be14e Add word to wordlist 2019-10-17 14:54:37 +02:00
Raphael Michel 8a8f8ae10a Fix KeyError in question_is_visible if question dependency is unknown 2019-10-17 12:57:17 +02:00
Raphael Michel 404d88a220 Fix #1451 -- Make event slug available in email templates 2019-10-17 11:50:01 +02:00
Raphael Michel a48d461c22 Docs: Fix incorrect headline 2019-10-17 11:39:44 +02:00
Raphael Michel 5e59d41f6e Offset payment provider: Catch QuotaExceededException 2019-10-17 10:15:10 +02:00
Raphael Michel 7fb77eef34 Offset payment provider: Ignore payment term 2019-10-17 10:13:56 +02:00
Raphael Michel f1321b67f9 Add missing docs file 2019-10-17 09:52:49 +02:00
Raphael Michel 8a6a515b6a Refs #775 -- Pluggable authentication backends (#1447)
* Drag-and-drop: Force csrf_token to be present

* Rough design

* Missing file

* b.visble

* Forms

* Docs

* Tests

* Fix variable
2019-10-17 09:11:03 +02:00
Martin Gross e34511b984 Fix #1446 - Migrate NullBooleanSelect from 1/2/3 to unknown/true/false 2019-10-16 10:11:51 +02:00
Raphael Michel fa3b40f53c Drag-and-drop: Force csrf_token to be present 2019-10-15 15:55:39 +02:00
Sohalt b870dde301 Replace occurrences of "blacklist" with "banlist" (#1434)
* Rename blacklist to banlist

* Rename more cases of blacklist to banlist

* Rename Blacklist -> Banlist in migrations
2019-10-15 14:58:48 +02:00
Raphael Michel a4d8c810ce Support for right-to-left languages (#1438)
* play around

* Flip things in presale

* Convert backend

* Remove test settings

* Safe getattr
2019-10-15 11:41:23 +02:00
Felix Schäfer 4152ee4e50 Fix #1408 -- Don't mark upload question fields as required if… (#1443) 2019-10-15 11:40:28 +02:00
Raphael Michel 7eb5b09b84 Merge remote-tracking branch 'origin/stripe-connect-fees' 2019-10-15 10:06:24 +02:00
Raphael Michel 2f7c16d18b Remove JavaScript lambda function (not supported in IE) 2019-10-15 10:04:17 +02:00
Raphael Michel 49bff3cc33 Fix field requirement display 2019-10-14 13:56:53 +02:00
Raphael Michel 80c9d1ff9e Allow requiring invoice name even if invoice address is required 2019-10-14 13:55:19 +02:00
Martin Gross dc51d51338 Add hint to devices in checkinlist overview 2019-10-14 11:40:57 +02:00
Raphael Michel 8aa8a2265f Update from Weblate (#1441)
Update from Weblate
2019-10-14 11:24:49 +02:00
Maarten van den Berg 971275e774 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3218 of 3218 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-10-14 08:54:27 +00:00
Sohalt 91b586ce08 Reordering questions with drag'n'drop (#1433)
* Reordering questions with drag'n'drop

* Add permission check

* Test permissions for question reordering

* Handle malformed requests for question reordering

* Show first up arrow and last down arrow

* Provide page offset

* Revert "Provide page offset"

This reverts commit 8090bd573f851a74cca442f4651c111b8750948d.

* Reorder questions endpoint with pagination support

* Rudimentary test for reordering endpoint

* Make reordering questions atomic

* cache questions

* Properly support pagination for reorder_questions

* appease linter

* Fix test
2019-10-14 10:54:20 +02:00
Johan von Forstner f10d1bd236 fix typo (#1442) 2019-10-14 10:44:03 +02:00
Martin Gross eafed2e213 Enforce that questions cannot depend on other question which are asked during checkin (Z#2352753) 2019-10-14 10:12:09 +02:00
Raphael Michel 02c81e0fa7 Stripe connect: Allow to set application fee 2019-10-13 13:30:58 +02:00
Raphael Michel 8e9a5e371c Fix documentation of Enterprise instlalations 2019-10-11 17:14:09 +02:00
Martin Gross 25345275c7 Link to ticket cancelation settings in timeline 2019-10-11 13:30:40 +02:00
Raphael Michel b9a911dd97 Fix #1440 -- API confusion about creating free orders 2019-10-11 09:00:46 +02:00
Raphael Michel 361488f3e6 Bump to 3.3.0.dev0 2019-10-10 18:17:27 +02:00
Raphael Michel b704d21e88 Bump to 3.2.0 2019-10-10 18:16:25 +02:00
Raphael Michel 4bfe0e3784 Order change manager: Allow to add multiple products 2019-10-10 12:59:16 +02:00
Raphael Michel d4d046ca60 Order change manager: Allow to disable invoice issuing 2019-10-10 12:19:06 +02:00
Raphael Michel fb3fc05522 Remove references to our legacy apps 2019-10-10 09:27:14 +02:00
Raphael Michel fdcd750487 Disable autocomplete in context switcher 2019-10-09 17:16:47 +02:00
Raphael Michel 92754136a6 Refs #1432 -- Proper grouping of autocomplete properties 2019-10-09 12:40:05 +02:00
Raphael Michel 3b4d39ec27 Fix #1432 -- Correct autocomplete attributes of name part fields 2019-10-09 12:40:05 +02:00
Sohalt 88bb3b483c Only disable up arrow on first page and down arrow on last page (#1437) 2019-10-09 09:15:35 +02:00
Raphael Michel 247370839b Fix placeholder form validation 2019-10-09 08:58:05 +02:00
Raphael Michel b0510f47b3 Move new option down a little 2019-10-08 17:43:28 +02:00
Raphael Michel 4fa086bbc5 Update from Weblate (#1435)
Update from Weblate
2019-10-08 16:09:46 +02:00
Raphael Michel cb03e7c843 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3218 of 3218 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-10-08 14:09:12 +00:00
Raphael Michel d012d0804a Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3218 of 3218 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-10-08 14:09:11 +00:00
Raphael Michel 3731d5f431 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-10-08 15:57:05 +02:00
Raphael Michel 9f04d53564 Add safety mechanism for order code generation 2019-10-08 15:53:37 +02:00
Martin Gross 748a389acb Auto-check-in for specific sales channels (#1409)
* Autocheckin data model/cosmetics

* Expose automatically checked-in OrderPositions

* Expose automatically checked-in OrderPositions in CSV/PDF Exports

* Fix some tests, try to fix MultiStringField/CheckboxSelectMultiple

* Actually fix MultiStringField/CheckboxSelectMultiple.
(Not pretty, but it works)

* Fix more tests

* Squash migration

* Also fix CSV/nameparts-test

* Changes for Autocheckin code-review

* Perform Auto-Checkins through new core plugin

* Update config-doc to reflect also checkinlists

* Explicitly output AutoCheckin Yes/No for CSV-Export (+ fix test)

* Move autocheckin from plugin to service

* API-doc

* Fix API-doc spelling

* Checkinlist-API and autocheckin order tests

* Performance improvement when reading checkinlists for autocheckin

Co-Authored-By: Raphael Michel <michel@rami.io>

* Autocheckin test for order created through API

* Resolve migration conflict
2019-10-08 15:50:22 +02:00
Sohalt 05a1df244b Fix #1388 -- Prevent some words from occurring in order codes (#1422)
* prevent some words from occurring in order codes

* Use regex to match against blacklist

* Prevent some words from occurring in voucher codes

* Rename blacklist to banlist
2019-10-08 14:28:51 +02:00
Raphael Michel 9f7d5156cc Refs #1430 -- Fix untranslated string 2019-10-08 12:29:10 +02:00
Martin Gross 143fe6c1a6 Fix #1430 - Fix fieldname-filter for BaseInvoiceNameForm 2019-10-07 17:48:18 +02:00
Raphael Michel 1e3ccc4449 Merge pull request #1431 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-10-07 12:16:32 +02:00
Raphael Michel d09000b716 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3210 of 3210 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-10-07 10:14:52 +00:00
Raphael Michel fc4572767e Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3210 of 3210 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-10-07 10:14:51 +00:00
Raphael Michel eeedd9a9c2 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-10-07 11:49:10 +02:00
Raphael Michel 1d0c148170 Fix #467 -- Pluggable email placeholders (#1429)
* Fix #467 -- Pluggable email placeholders

* Previews

* Polishing

* Fix tests

* Add missing doc file
2019-10-07 11:48:25 +02:00
Raphael Michel cb37e7435d Use a different-colored favicon in development mode 2019-10-07 09:03:46 +02:00
Raphael Michel 749ddbf21c Allow topbar navigation subitems not to have an URL 2019-10-06 17:02:53 +02:00
Raphael Michel 9f6634025f Update from Weblate (#1425)
Update from Weblate
2019-10-06 11:56:32 +02:00
Chris Spy ad039ae08e Translated on translate.pretix.eu (Greek)
Currently translated at 96.1% (99 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-10-06 09:53:51 +00:00
Chris Spy eeaaca574d Translated on translate.pretix.eu (Greek)
Currently translated at 95.5% (3076 of 3220 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-10-06 09:53:51 +00:00
Fabian Rodriguez bef15ec442 Translated on translate.pretix.eu (French)
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/fr/

powered by weblate
2019-10-06 09:53:51 +00:00
Raphael Michel 447a8b0a8c Add missing mark_safe call 2019-10-06 11:53:37 +02:00
Sohalt 05b4d954d9 Make voucher code in notification clickable (#1423)
* Make voucher code in notification clickable

* Move html out of translated string
2019-10-06 11:52:34 +02:00
Felix Rindt 515d8c4899 remove .csv from default filename in List Exporter (#1428) 2019-10-06 11:51:24 +02:00
Raphael Michel 82497cfb89 Lazy-load widgets on global dashboard 2019-10-06 11:46:42 +02:00
Raphael Michel 4ade9d39cd Add "back" parameter to logout view 2019-10-06 11:35:29 +02:00
Raphael Michel 4360d5652b ALlow to pre-select organizer for event creation 2019-10-06 11:35:29 +02:00
Raphael Michel 9fca3188b2 Device and team creation: List events ordered and with date 2019-10-04 17:28:48 +02:00
Raphael Michel 0ed48fac7f Add pagination to event list on organizer detail page 2019-10-04 17:28:48 +02:00
Raphael Michel 27a32173e6 Move more code into change_payment_provider 2019-10-04 17:28:48 +02:00
Martin Gross 81b6188777 New ApplePay domain association file for Stripe 2019-10-02 21:31:40 +02:00
Raphael Michel 9e85d3c94c PDF editor: Catch ValueError during float conversion 2019-09-30 14:37:09 +02:00
Raphael Michel 4e58ba7594 money_filter: Idempotency on empty strings
PRETIXEU-1EH
2019-09-30 14:37:09 +02:00
Raphael Michel 248493dbf2 Stripe plugin: Fix AttributeError 2019-09-29 18:32:19 +02:00
Raphael Michel f1bd240096 Update from Weblate (#1417)
Update from Weblate
2019-09-29 14:05:15 +02:00
Serge Bazanski 0b673dc68c Translated on translate.pretix.eu (Polish)
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pl/

powered by weblate
2019-09-27 07:11:22 +00:00
Serge Bazanski b2a7fe13da Translated on translate.pretix.eu (Polish)
Currently translated at 14.7% (474 of 3220 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pl/

powered by weblate
2019-09-27 07:11:22 +00:00
Martin Gross d28f735fca Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3220 of 3220 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-09-27 07:11:22 +00:00
Jonathan Oberländer 7a3b450bc6 Added translation on translate.pretix.eu (Romanian) 2019-09-27 07:11:22 +00:00
Raphael Michel f1ec129c0a Fix ZeroDivisionError 2019-09-27 09:11:03 +02:00
Raphael Michel ce6e46dfd2 Fix performance of check-in list API list 2019-09-26 15:18:53 +02:00
Martin Gross f296f262e6 Properly indent handling for non-addons 2019-09-23 11:12:50 +02:00
Martin Gross 7f8d290ae1 Add-Ons inhert question-answers from parent item if necessary 2019-09-23 10:47:05 +02:00
Raphael Michel ca0c0f4ae3 Revert to multipart/related 2019-09-20 11:22:11 +02:00
Sohalt ac1e69f2d8 Install pretix into system-site-packages in Docker image (#1410) 2019-09-20 09:43:00 +02:00
Raphael Michel 6338cc69ae docs: fix BaseDataShredder class documentation (#1412)
The BaseDataShredder documentation contained two references to BaseInvoiceRenderer, probably due to a minor copy/paste mistake
2019-09-20 09:41:32 +02:00
Felix Rindt 39eaf3ad6a Code style improvements (#1411)
* docstring corrections

* move omit_hyphen formfield
2019-09-20 09:34:24 +02:00
Raphael Michel 76e75bef65 Fix broken organizer settings test 2019-09-19 18:33:30 +02:00
Raphael Michel a39822aedc Use transaction aware task for regenerate_css 2019-09-19 18:17:43 +02:00
Raphael Michel 73d5a2cec0 Revert "Make all EventTasks transaction-aware"
This reverts commit 3f7807d242.
2019-09-19 18:15:47 +02:00
Raphael Michel 9f668e5fd6 Fix crash in OrderEmailHistory for unknown orders 2019-09-19 18:04:31 +02:00
Raphael Michel 1b92a891d7 Fix issues with context providers in error pages 2019-09-19 18:03:35 +02:00
Raphael Michel 827925e3c9 Fix bug in 3f7807d24 2019-09-19 18:03:28 +02:00
Johannes Lauinger c0be574974 docs: fix BaseDataShredder class documentation
The BaseDataShredder documentation contained two references to BaseInvoiceRenderer, probably due to a minor copy/paste mistake
2019-09-19 17:57:07 +02:00
Raphael Michel 738413e8fd Allow to copy categories and quotas 2019-09-19 16:59:25 +02:00
Raphael Michel 2c6125adeb Allow to copy vouchers 2019-09-19 16:33:59 +02:00
Raphael Michel 3f7807d242 Make all EventTasks transaction-aware 2019-09-19 16:23:40 +02:00
Raphael Michel 59b7f0a03d Fix a new bug in Stripe webhooks PRETIXEU-64 2019-09-19 10:36:33 +02:00
Raphael Michel b7dea16db3 Promote danish to an inofficial language 2019-09-19 10:13:34 +02:00
Raphael Michel 3a81706aeb Fix KeyError in bank import 2019-09-17 16:48:41 +02:00
Raphael Michel ad3369b059 Fix issue on old-style webhook URLs (#1385)
* Fix issue on old-style webhook URLs

* Fix test issue
2019-09-17 13:59:57 +02:00
Martin Gross ab0709558d Fix #1389: PaymentIntents are 'processing' and not 'pending' 2019-09-17 13:03:22 +02:00
Raphael Michel e2e64ac01d Event selector: Prevent race conditions 2019-09-17 10:08:58 +02:00
Martin Gross cf14dcf889 Add Subevent-Filter for Voucher-Tags (#1407)
* Add Subevent-Filter for Voucher-Tags

* Filter Subevent Voucher-Tags with proper Filter

* Apply filter before annotating totals and usage
2019-09-16 14:08:23 +02:00
Raphael Michel a884a25d2b Update from Weblate (#1403)
Update from Weblate
2019-09-16 13:42:41 +02:00
Gianmarco Palumbo 8493778028 Translated on translate.pretix.eu (Italian)
Currently translated at 44.7% (46 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/it/

powered by weblate
2019-09-13 18:00:10 +00:00
Martin Gross 36a276c360 Translated on translate.pretix.eu (French)
Currently translated at 72.5% (2335 of 3220 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/

powered by weblate
2019-09-13 18:00:09 +00:00
Maarten van den Berg 795c423d73 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3220 of 3220 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-09-12 22:00:12 +00:00
Maarten van den Berg 3ce9ec79f0 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3220 of 3220 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-09-12 22:00:10 +00:00
Translators EN IT Team debc5e255b Translated on translate.pretix.eu (Italian)
Currently translated at 4.7% (151 of 3220 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2019-09-12 00:00:09 +00:00
Raphael Michel 145aa0d7fd Merge pull request #1397 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-09-11 08:58:42 +02:00
Raphael Michel 3997bdd098 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3220 of 3220 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-09-11 06:58:06 +00:00
Raphael Michel a51a905512 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3220 of 3220 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-09-11 06:58:06 +00:00
Maarten van den Berg d3ac9e8880 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3220 of 3220 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-09-11 06:55:48 +00:00
Maarten van den Berg 07402c9ea0 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3220 of 3220 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-09-11 06:55:47 +00:00
Raphael Michel 5f81bf55ca Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-09-11 08:55:36 +02:00
Raphael Michel 0120a5a930 Clarify cancellation description 2019-09-11 08:55:03 +02:00
Raphael Michel ba555f956e Fix #1395 -- Incorrect data in tax list exporter if an order contains multiple tax rates 2019-09-10 14:41:49 +02:00
Raphael Michel 5e3876ddde Tax exporters: Use lazy gettext calls 2019-09-10 14:40:05 +02:00
Raphael Michel f5719687aa Use lazy translation for exporter name 2019-09-10 13:13:15 +02:00
Raphael Michel 18449efcc7 Fix #1394 -- Forcefully update defusedcsv 2019-09-10 12:10:41 +02:00
Raphael Michel 3bb20d943a Fix incorrect condition in template 2019-09-10 11:58:02 +02:00
Raphael Michel 586e544fce Add "resend link" option to attendees 2019-09-10 11:44:59 +02:00
Raphael Michel 3a4fc69db1 Add link to ticket page to order page in backend 2019-09-10 11:34:52 +02:00
Raphael Michel 8b5d49d82f Dekodi exporter: Fix AttributeError 2019-09-10 11:34:19 +02:00
Raphael Michel 7665faa39f Bump version to 3.2.0.dev0 2019-09-10 10:54:25 +02:00
Raphael Michel 027d28e646 Bump verstion to 3.1.0 2019-09-10 10:50:18 +02:00
Raphael Michel babcf66a2e Update from Weblate (#1393)
Update from Weblate
2019-09-10 10:18:46 +02:00
Raphael Michel 20f9e88d61 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3220 of 3220 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-09-10 08:16:51 +00:00
Raphael Michel 9594607a8c Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3220 of 3220 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-09-10 08:16:50 +00:00
Raphael Michel ad3bcaf43a Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-09-10 10:00:56 +02:00
Raphael Michel 2c4ee3b3c7 Replace U2F with WebAuthn (#1392)
* Replace U2F with WebAuthn

* Imports

* Fix backwards compatibility

* Add explanatory comment

* Fix tests
2019-09-10 09:58:31 +02:00
Raphael Michel 21451db412 Fix Greek VAT IDs 2019-09-10 09:46:00 +02:00
Raphael Michel 12b1f7d90e Fix #1374 -- Correct encoding of images 2019-09-10 09:39:16 +02:00
Raphael Michel c3901c567e Correctly respect both attention flag in check-in list exports 2019-09-09 11:07:22 +02:00
Raphael Michel 0a3eddcd5c Merge pull request #1384 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-09-09 09:48:36 +02:00
Raphael Michel dfa99cd325 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3219 of 3219 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-09-09 07:48:08 +00:00
Raphael Michel 62a040255e Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3219 of 3219 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-09-09 07:48:07 +00:00
Maarten van den Berg 0e2b02c778 Translated on translate.pretix.eu (Dutch)
Currently translated at 99.9% (3216 of 3219 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-09-09 05:00:09 +00:00
Ture Gjørup 0f0ed90be9 Translated on translate.pretix.eu (Danish)
Currently translated at 61.2% (63 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/da/

powered by weblate
2019-09-08 19:26:46 +00:00
Raphael Michel b1e19d776c Fix exporter tests 2019-09-08 21:26:31 +02:00
Raphael Michel 0bcc784aaf Include attention flag and comment in order and check-in list exports 2019-09-08 20:52:15 +02:00
Raphael Michel 262fb82237 Add-ons should not have a seat 2019-09-06 11:54:18 +02:00
Raphael Michel adbe959314 Merge pull request #1383 from pajowu/pajowu/no_test_data
Remove obsolete reference to test data
2019-09-05 23:04:15 +02:00
pajowu 02d0a68d57 Remove obsolete reference to test data 2019-09-05 19:29:04 +02:00
Raphael Michel d6985123b4 Regenerate event CSS on plugins change 2019-09-04 15:39:23 +02:00
Raphael Michel f7a356c340 Fixed bug in card extensions 2019-09-03 12:51:38 +02:00
Raphael Michel c6265b4517 Fix allow_ignore_quota with bundled items 2019-09-03 12:25:22 +02:00
Raphael Michel 1ee352e114 Fix error in locale file 2019-09-03 11:59:05 +02:00
Raphael Michel 6c830a7d36 Do not enforce voucher constraints for bundled items 2019-09-03 11:51:29 +02:00
Raphael Michel 129c360fff Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-09-03 11:36:55 +02:00
Raphael Michel b5c7ad92b6 Merge pull request #1379 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-09-03 11:36:19 +02:00
Raphael Michel 33efd8c157 order_overview: Allow to restrict to admission products 2019-09-03 11:34:00 +02:00
Bostjan Marusic f318c8e017 Translated on translate.pretix.eu (Slovenian)
Currently translated at 21.9% (702 of 3208 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sl/

powered by weblate
2019-09-03 09:22:31 +00:00
Bostjan Marusic 319334706d Translated on translate.pretix.eu (Slovenian)
Currently translated at 18.8% (602 of 3208 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sl/

powered by weblate
2019-09-03 09:22:31 +00:00
Raphael Michel 1a25138bef PDF editor: Allow to easily change the page size 2019-09-03 11:22:21 +02:00
Raphael Michel daa5383b89 Fix a layout animation issue in the sidebar 2019-09-02 18:07:10 +02:00
Raphael Michel 31333280d2 Fix download link for addons on ticket pages 2019-08-31 11:59:17 +02:00
Raphael Michel b78f8d70e8 Add serializable to spelling whitelist 2019-08-30 17:46:15 +02:00
Raphael Michel a847538a2e Merge pull request #1367 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-08-30 17:40:38 +02:00
Raphael Michel e3ef9eba9e Widget: Fix invalid coloring of days in mobile calendar 2019-08-30 17:37:37 +02:00
Bostjan Marusic 9e4a4402fb Translated on translate.pretix.eu (Slovenian)
Currently translated at 15.6% (502 of 3208 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sl/

powered by weblate
2019-08-30 15:25:28 +00:00
Bostjan Marusic 96ed9f5cf5 Translated on translate.pretix.eu (Slovenian)
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/sl/

powered by weblate
2019-08-30 15:25:28 +00:00
oocf 7216cebce5 Translated on translate.pretix.eu (Spanish)
Currently translated at 94.3% (3025 of 3208 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-08-30 15:25:28 +00:00
Bostjan Marusic a3892fd4de Translated on translate.pretix.eu (Slovenian)
Currently translated at 10.7% (343 of 3208 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sl/

powered by weblate
2019-08-30 15:25:28 +00:00
saad91 7718462528 Translated on translate.pretix.eu (Arabic)
Currently translated at 0.2% (8 of 3208 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ar/

powered by weblate
2019-08-30 15:25:28 +00:00
Maarten van den Berg 60b20829f3 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3208 of 3208 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-08-30 15:25:28 +00:00
Maarten van den Berg e11d03f418 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3208 of 3208 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-08-30 15:25:28 +00:00
Tobias Sundgren 69e4db58fd Translated on translate.pretix.eu (Swedish)
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/sv/

powered by weblate
2019-08-30 15:25:28 +00:00
Tobias Sundgren 9f27a84f52 Translated on translate.pretix.eu (Swedish)
Currently translated at 1.0% (33 of 3208 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sv/

powered by weblate
2019-08-30 15:25:28 +00:00
Maarten van den Berg e5c204dc95 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3208 of 3208 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-08-30 15:25:28 +00:00
Raphael Michel 7fc7dd0163 Allow to print question answers on invoices 2019-08-30 17:24:57 +02:00
Raphael Michel aa99dbc830 Add payment provider specific details to the API 2019-08-30 17:04:22 +02:00
Raphael Michel e3a4ec93fc Fix user log that always shows empty 2019-08-30 13:01:35 +02:00
Raphael Michel 67da6a18a8 Add missing signal to documentation 2019-08-30 12:58:20 +02:00
Raphael Michel adc4128f9f Fix exceptions introduced in last commit 2019-08-30 11:56:04 +02:00
Raphael Michel eed217262f Add signal global_email_filter 2019-08-30 11:02:59 +02:00
Raphael Michel 4bae824a03 Add user argument to email_filter 2019-08-30 11:02:59 +02:00
Martin Gross be1a1f7995 Fix widget-URL for subevents 2019-08-30 10:41:08 +02:00
Martin Gross f4b81aa032 Fix import sorting 2019-08-28 17:17:42 +02:00
Martin Gross 2559439c4e Fix eMail-previews for per-attendant emails 2019-08-28 16:48:59 +02:00
Martin Gross fce9117dfd Fix explanation on per-attendant emails 2019-08-28 16:47:54 +02:00
Martin Gross 4c8dc8f31c Show attendee-name of item - even if item is an add-on 2019-08-28 09:04:41 +02:00
Martin Gross b4f69fb13f Move question hint-icons into their own columns 2019-08-27 15:43:02 +02:00
Martin Gross 2aed894bd4 Hide hidden questions from users in presale 2019-08-27 15:31:22 +02:00
Martin Gross 2ff5416afb Show hints for hidden/check-in questions in question overview 2019-08-27 15:19:28 +02:00
Raphael Michel 59f7098a70 Clean up duplicate seats when generating seats 2019-08-26 16:57:48 +02:00
Raphael Michel 83dd865b78 Fix crash when de-selecting all languages 2019-08-26 16:44:20 +02:00
Raphael Michel ebf411b7a0 Fail gracefully if seats exist multiple times 2019-08-26 16:33:35 +02:00
Raphael Michel 733a4ce8f4 Fix seatingframe for subevents 2019-08-26 16:27:43 +02:00
Raphael Michel ad94263374 Fix i18n of OrderError 2019-08-17 14:07:56 +02:00
Raphael Michel 102772ec55 Disable Sentry in shell sessions 2019-08-17 14:05:06 +02:00
Raphael Michel 9a826b694f Fix a type error PRETIXEU-1BF 2019-08-17 12:39:38 +02:00
Raphael Michel bcf8e9cd04 Add short option to get_date_*_display 2019-08-16 16:44:01 +02:00
Raphael Michel 200ce93bb4 Prevent autoresponders 2019-08-14 15:09:19 +02:00
Raphael Michel 0582a4d9e5 Lazy widgets: Fix missing ID 2019-08-14 09:57:55 +02:00
Raphael Michel 1cbab04108 Docs: Add API guide on custom checkout 2019-08-14 09:22:58 +02:00
Raphael Michel 98c18b162f Order creation API: Add support for reverse charge 2019-08-14 09:22:58 +02:00
Raphael Michel d972cd4c49 Add new bundled plugin "returnurl" 2019-08-14 09:22:58 +02:00
Raphael Michel 985f354293 Order API: Add order URL 2019-08-14 09:22:58 +02:00
Raphael Michel 9c23216bd1 Order creation API: Do not allow empty orders 2019-08-14 09:22:58 +02:00
Raphael Michel f8bf44c262 Order payment flow: Allow to be used as an iframe session start 2019-08-14 09:22:58 +02:00
Raphael Michel 6badfdf576 Order API: Expose explicit URL of payment steps 2019-08-14 09:22:58 +02:00
Raphael Michel c2eba21359 Order creation API: Allow to create orders without payment provider 2019-08-14 09:22:58 +02:00
Raphael Michel 5cda04a994 Order creation API: Allow to pass vouchers 2019-08-14 09:22:58 +02:00
Raphael Michel bc9d8f5bd8 Order creation API: Do not consume expired carts 2019-08-14 09:22:58 +02:00
Raphael Michel 9d6ff20191 Order creation API: Allow to auto-calculate prices 2019-08-14 09:22:58 +02:00
Raphael Michel 82684e6df3 Order creation API: Allow to send emails 2019-08-14 09:22:58 +02:00
Martin Gross d681ae4dce Only output GA if event is using seating 2019-08-13 13:26:44 +02:00
Martin Gross 213e724e18 Include Seating in default PDF ticket template 2019-08-13 13:26:21 +02:00
Raphael Michel 6e0b80706c Badge exporter: Exclude add-on positions by default 2019-08-13 10:11:24 +02:00
Raphael Michel 5363f4206e Lazy-load dashboard widgets 2019-08-12 12:19:02 +02:00
Raphael Michel 9bdb715874 Re-order list of devices 2019-08-12 11:48:50 +02:00
Raphael Michel 90a9709838 Redirect to profile after creating a new organizer 2019-08-12 11:45:54 +02:00
Raphael Michel 669b438c91 Allow to disables fee in stats module 2019-08-09 15:02:59 +02:00
Raphael Michel a1353b3773 Add a note on Google Analytics in the widget documentation 2019-08-09 15:02:59 +02:00
Martin Gross f5c611982a Do not localize date, time, datetime in csv/excel exports 2019-08-09 13:40:32 +02:00
Raphael Michel e9ab56486a Fix broken test case 2019-08-09 12:53:56 +02:00
Raphael Michel 74bc495eb7 PDF exporter: Deal with duplicate question answers 2019-08-09 12:36:01 +02:00
Raphael Michel b0b0f7474d Allow state selection without JavaScript 2019-08-09 12:13:09 +02:00
Raphael Michel 663ff60d0a Update from Weblate (#1363)
Update from Weblate
2019-08-09 11:51:59 +02:00
Raphael Michel 7bafb0bc76 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3208 of 3208 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-08-09 08:26:33 +00:00
Raphael Michel 1ab225f40a Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3208 of 3208 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-08-09 08:26:33 +00:00
Raphael Michel 3b09456755 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-08-09 09:58:52 +02:00
Raphael Michel d919605d79 Invoice addresses: Ask for a state in some countries (#1362)
* Invoice addresses: Ask for a state in some countries

* API, tests, noscript

* Fix shredder tests

* Add test for addresses with long state names
2019-08-09 09:55:46 +02:00
Raphael Michel 547f71aac6 Widget builder: explicit encoding for file reading 2019-08-08 19:43:44 +02:00
Raphael Michel 191729c07a Remove "3DS mode" setting as it no longer has an effect 2019-08-08 19:25:31 +02:00
Raphael Michel 8f0a5d859d Bump version to 3.1.0.dev0 2019-08-08 10:48:59 +02:00
Raphael Michel 9286ca14f9 Bump version to 3.0.0 2019-08-08 10:48:27 +02:00
Raphael Michel c5f9a78bdb Update from Weblate (#1361)
Update from Weblate
2019-08-08 10:48:13 +02:00
Raphael Michel 08eb5bfb8f Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3211 of 3211 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-08-08 08:47:28 +00:00
Raphael Michel 804e33b773 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3211 of 3211 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-08-08 08:47:28 +00:00
Raphael Michel c264d8bd5b Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-08-08 09:55:08 +02:00
Raphael Michel cd7be48cf2 Merge pull request #1359 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-08-07 15:47:42 +02:00
Raphael Michel 2290b00161 MIMEEncode inline images as CID (#1358)
MIMEEncode inline images as CID
2019-08-07 15:47:22 +02:00
Raphael Michel 9fb2d3a43b Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 97.5% (3128 of 3209 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-08-07 13:39:12 +00:00
Raphael Michel d0f3c24b2a Fix button without voucher 2019-08-07 15:39:03 +02:00
Martin Gross 94e2c2fa3c Deduplicate CID images 2019-08-07 13:24:13 +02:00
Martin Gross a0e3bbcc82 Fix payment cancelation of Stripe sources 2019-08-07 10:11:07 +02:00
Raphael Michel 9a9de523e0 Allow separate numbering schemes for invoices and cancellations 2019-08-06 14:18:31 +02:00
Raphael Michel 6dd1c927ef Add fail_on_no_quotas parameter to Item.check_quotas 2019-08-06 14:08:34 +02:00
Raphael Michel 51446574e2 Do not allow misleading NULL value in mail_days_order_expire_warning 2019-08-06 11:09:17 +02:00
Raphael Michel cfbfb74996 Move method once again 2019-08-06 11:03:52 +02:00
Raphael Michel 527a250435 Deal with bundled products with no quotas
Fix PRETIXEU-1A8
2019-08-06 10:31:57 +02:00
Raphael Michel 87fb5f06ff Move method to correct class
Fix PRETIXEU-1A4
2019-08-06 10:22:04 +02:00
Raphael Michel 661cba876f French gets a capital F 2019-08-06 10:02:24 +02:00
Raphael Michel be37e3635b Merge pull request #1355 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-08-06 10:02:16 +02:00
Raphael Michel 8bc4793f4e Translated on translate.pretix.eu (French)
Currently translated at 73.0% (2342 of 3209 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/

powered by weblate
2019-08-06 08:00:32 +00:00
Maarten van den Berg 1604d0bf7a Translated on translate.pretix.eu (Dutch)
Currently translated at 98.6% (3165 of 3209 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-08-05 10:16:39 +00:00
Maarten van den Berg f042932d1d Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate
2019-08-05 10:16:39 +00:00
Maarten van den Berg bfc6422e6e Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2019-08-05 10:16:39 +00:00
Maarten van den Berg 942feb09fc Translated on translate.pretix.eu (Dutch)
Currently translated at 97.6% (3131 of 3209 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-08-05 10:16:39 +00:00
Martin Gross b372ce84a5 Translated on translate.pretix.eu (French)
Currently translated at 64.1% (66 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/fr/

powered by weblate
2019-08-05 10:16:39 +00:00
Martin Gross 7c0c7202da Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 98.1% (101 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate
2019-08-05 10:16:39 +00:00
Martin Gross b8bf5ce2d3 Translated on translate.pretix.eu (Dutch)
Currently translated at 98.1% (101 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2019-08-05 10:16:39 +00:00
Martin Gross d25a9d077d Translated on translate.pretix.eu (French)
Currently translated at 73.0% (2341 of 3209 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/

powered by weblate
2019-08-05 10:16:39 +00:00
Martin Gross 4a4dad3d5c Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 97.5% (3128 of 3209 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-08-05 10:16:39 +00:00
Christophe Piret 7b6b83eaf4 Translated on translate.pretix.eu (French)
Currently translated at 73.0% (2341 of 3209 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/

powered by weblate
2019-08-05 10:16:39 +00:00
Martin Gross bf54222cac Handle PayPal-declines if organizer-account is blocked by risk 2019-08-05 12:16:29 +02:00
Martin Gross d37939bc2a Change BS-parser to lxml insted of html5lib, do prevent another dependency 2019-08-04 17:25:02 +02:00
Martin Gross 4b3f6ba94b Fix urlparse import 2019-08-04 14:55:54 +02:00
Martin Gross 18c8933c64 MIMEEncode inline images as CID 2019-08-04 14:46:47 +02:00
Martin Gross 6a6a84e8c8 Fix eMail-renderer documentation 2019-08-01 20:41:04 +02:00
Raphael Michel 32edf4b833 Fix attributeerror 2019-07-30 18:18:28 +02:00
Raphael Michel 35ae7e4968 Tabs: Do not hide HTMl5 validation 2019-07-30 14:38:16 +02:00
Raphael Michel b5fb48a55f Widget: Remove confusion with resuming sessions 2019-07-30 14:16:33 +02:00
Raphael Michel 814364fbda Add waitinglist to word whitelist 2019-07-29 16:52:35 +02:00
Raphael Michel 5bff5053be Update from Weblate (#1354)
Update from Weblate
2019-07-29 16:34:48 +02:00
Raphael Michel 32f4813d33 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3209 of 3209 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-07-29 14:34:29 +00:00
Raphael Michel 871a677e5e Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3209 of 3209 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-07-29 14:33:59 +00:00
Raphael Michel 95a777516e Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-07-29 16:28:32 +02:00
Raphael Michel ad8f109e77 Add Item.allow_waitinglist 2019-07-29 16:27:27 +02:00
Raphael Michel c60d1c8a5d Subevent editor: Redirect back to same page/filter 2019-07-29 16:05:13 +02:00
Raphael Michel 49288ff4e5 Fix incorrect link 2019-07-29 15:39:59 +02:00
Raphael Michel e90356546f Backend: Modify order information: Do not send email by default 2019-07-29 15:35:14 +02:00
Raphael Michel a664d51dbc Persist and show full "path" of seats 2019-07-29 15:23:09 +02:00
Raphael Michel 79ee851fae Fix broken order process 2019-07-29 14:59:36 +02:00
Raphael Michel 00905836dc Merge pull request #1353 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-07-29 10:36:58 +02:00
Raphael Michel e5f57c8ff4 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate
2019-07-29 08:36:22 +00:00
Raphael Michel c4cbfc726c Translated on translate.pretix.eu (German)
Currently translated at 100.0% (103 of 103 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2019-07-29 08:36:22 +00:00
Raphael Michel 869694a026 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3200 of 3200 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-07-29 08:36:21 +00:00
Raphael Michel 843f28d94e Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3200 of 3200 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-07-29 08:36:20 +00:00
Raphael Michel ce35551e97 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-07-29 10:18:15 +02:00
Raphael Michel 3dae8bcdec Widget: Do not label button "Buy" if all items are free 2019-07-29 10:17:33 +02:00
Raphael Michel 3763edbc57 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-07-29 09:35:42 +02:00
Raphael Michel c1d89284a4 Use tabs for all long settings and CRUD forms (#1352)
* First tabs

* Convert more pages

* Convert question page

* Item form

* Add item_formsets signal

* Revert "Add new signal nav_item"

This reverts commit 1ce613ff89.

* Formset is a word!
2019-07-29 09:35:00 +02:00
Raphael Michel 609f0b632c Do not block "add to cart" button when seating is used 2019-07-28 16:06:14 +02:00
Raphael Michel 10aeadf835 Do not show +/- icons for cart rows with seats 2019-07-28 16:06:00 +02:00
Raphael Michel 26726043c2 Update seating plan schema 2019-07-27 16:48:47 +02:00
Martin Gross 34d1fcf077 Add PayPal-Partner-Attribution-Id to PayPal API-Calls 2019-07-26 10:59:57 +02:00
Raphael Michel e83e8cdcc0 Allow to hide a product unless a specific quota is sold out (#1351)
* Allow to hide a product unless a specific quota is sold out

* Fix required property

* Add API property and copy between events
2019-07-25 16:14:24 +02:00
Raphael Michel 2dd75ea252 Hide fees on changing payment method when no fees are taken 2019-07-25 11:47:23 +02:00
Raphael Michel 4857cfad6e Fix another waiting list bug with subevents 2019-07-25 10:49:18 +02:00
Raphael Michel 55f8e1c123 Fix waiting list assignment for subevents 2019-07-25 09:39:05 +02:00
Raphael Michel 6df1960f79 Use robust plugin calling in runperiodic 2019-07-25 09:20:34 +02:00
Raphael Michel 3091139aab Update from Weblate (#1350)
Update from Weblate
2019-07-24 15:57:33 +02:00
Raphael Michel 020c7faaef Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3191 of 3191 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-07-24 13:56:48 +00:00
Raphael Michel e9b26cc51e Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3191 of 3191 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-07-24 13:56:47 +00:00
Raphael Michel 7948cefee1 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (102 of 102 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate
2019-07-24 13:45:19 +00:00
Raphael Michel 62195f14be Translated on translate.pretix.eu (German)
Currently translated at 100.0% (102 of 102 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2019-07-24 13:45:19 +00:00
Martin Gross 5a216b7be9 Fix Stripe refunds for PaymentIntents 2019-07-24 15:37:39 +02:00
Raphael Michel 20d79152a6 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-07-24 15:16:28 +02:00
Raphael Michel d97a0b1941 Consistent display of price ranges 2019-07-24 15:13:10 +02:00
Raphael Michel fe6e65ccb0 erge remote-tracking branch 'origin/pretixscan' 2019-07-23 19:08:35 +02:00
Raphael Michel 9886f22b83 Add pretix' Stripe partner ID 2019-07-23 09:50:23 +02:00
Sohalt 591ed969b8 Autofocus login form (#1346) 2019-07-22 14:31:18 +02:00
Raphael Michel 3ab475ba6d Fix order page 2019-07-18 19:45:05 +02:00
Raphael Michel 307b1a2748 Fix that allow_cancel is 0 for UI-created events 2019-07-18 17:38:12 +02:00
Raphael Michel cb3f3f5084 Advertise pretixSCAN 2019-07-18 17:26:49 +02:00
Raphael Michel 85edbe4837 Improved device validation 2019-07-18 17:26:34 +02:00
Raphael Michel 6d12b3780c Allow to hide all sold out items 2019-07-18 15:01:33 +02:00
Raphael Michel a99616b1e0 API: Check-in response code for canceled 2019-07-18 15:01:33 +02:00
Martin Gross a5ba7440fe Fix #1345 - Only enable payment button once Stripe Elements are ready 2019-07-16 15:41:37 +02:00
Raphael Michel a02ea45dba Allow quotas to "close" when once full (#1344)
* Model

* Some UI

* API and logging

* Permission check

* Add tests

* Move option around
2019-07-16 14:02:27 +02:00
Raphael Michel c1e2fb36ba Auto-expand variation description when variation is selected 2019-07-16 11:53:43 +02:00
Raphael Michel b67c684969 Revert "Allow to show description of add-on product variations by default"
This reverts commit 8d674965d1.
2019-07-16 11:46:11 +02:00
Raphael Michel dc42dbb837 Allow to use a selection for name titles 2019-07-16 10:23:43 +02:00
Raphael Michel 44ffc0685e Show date_to in PDF variable "event_date_range" regardless of event settings
Z#2349533
2019-07-16 09:31:40 +02:00
Raphael Michel a79a156a28 Show preview of answered images 2019-07-16 09:31:36 +02:00
Raphael Michel fb1f6c65af Display invoices as inline PDF
They are not user-controllable enough to cause any harm here
2019-07-16 09:16:33 +02:00
Raphael Michel 8d674965d1 Allow to show description of add-on product variations by default 2019-07-15 11:26:42 +02:00
Raphael Michel 020122b44f Fix missing words 2019-07-15 11:01:33 +02:00
Raphael Michel f55fff6495 Update from Weblate (#1342)
Update from Weblate
2019-07-15 11:01:31 +02:00
Raphael Michel 08316129d3 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3165 of 3165 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-07-15 09:00:55 +00:00
Raphael Michel a39563aa3e Translated on translate.pretix.eu (German)
Currently translated at 99.9% (3164 of 3165 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-07-15 09:00:54 +00:00
Raphael Michel a3707a962b Fix problems with CartMixin on empty order
Fix PRETIXEU-18A
2019-07-15 10:46:38 +02:00
Raphael Michel 4bb8c3991e Fix badge-creation task
PRETIXEU-150
2019-07-15 10:46:27 +02:00
Raphael Michel 0d5c2f6329 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-07-15 10:31:30 +02:00
Raphael Michel 17c0cfb395 Add signal: order_split 2019-07-15 10:30:44 +02:00
Raphael Michel e55f0cdf11 Retire make_testdata.py 2019-07-14 17:55:51 +02:00
Christian González a2fbc376a5 typo in comment (#1339) 2019-07-14 16:59:08 +02:00
Raphael Michel be310a4e47 Docs: Add agenda plugin to structure guide 2019-07-12 13:28:46 +02:00
Raphael Michel 35037c79cc Add signal validate_cart_addons 2019-07-12 13:06:29 +02:00
Raphael Michel f8bb139651 AddOnsForm: Already validate min_count/max_count 2019-07-12 12:32:43 +02:00
Raphael Michel 77046136f2 asynctask.js: Hack to allow form validation 2019-07-12 12:23:34 +02:00
Raphael Michel 53a0d62d93 Allow dependent questions to depend on multiple values (#1336) 2019-07-11 13:32:45 +02:00
Raphael Michel d994fc674a Do not CASCADE-delete vouchers when deleting items or quotas 2019-07-11 12:35:52 +02:00
Raphael Michel f066ed01ff Show event meta data in backend list of events 2019-07-11 11:16:36 +02:00
Raphael Michel fb66434fc9 Update from Weblate (#1335)
Update from Weblate
2019-07-11 10:37:46 +02:00
Vitor Piedras 3f9269f6e5 Translated on translate.pretix.eu (Portuguese (Brazil))
Currently translated at 15.9% (501 of 3152 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_BR/

powered by weblate
2019-07-11 06:56:27 +00:00
Raphael Michel 2a30a1a039 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3152 of 3152 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-07-11 06:56:27 +00:00
Raphael Michel 846f20692d Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3152 of 3152 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-07-11 06:56:27 +00:00
Raphael Michel 2eb5adb6c1 Stripe: Improve exception handling
PRETIXEU-17Y
2019-07-11 08:56:01 +02:00
Raphael Michel 491753008d Introduce Item.show_quota_left 2019-07-10 16:08:21 +02:00
Raphael Michel 6d6cd3b7cf [SECURITY] Fix XSS in global admin mode 2019-07-10 14:52:58 +02:00
Raphael Michel eaf6da7272 Protect against main javascript being loaded before translations 2019-07-10 14:31:49 +02:00
Raphael Michel 22ce7a388d Do not send notifications to disabled users 2019-07-10 09:00:41 +02:00
Raphael Michel e687eee9f1 Widget: Allow voucher with itemless button 2019-07-09 18:55:10 +02:00
Raphael Michel e7baca952b Fix voucher queryset (again) 2019-07-09 18:02:08 +02:00
Raphael Michel eef713816e Sort keys in JSON payment metadata 2019-07-09 16:13:37 +02:00
Raphael Michel 5a03033255 Add utility to get IP address 2019-07-09 16:13:37 +02:00
Raphael Michel 59daeba477 Do not redirect to order.pay.complete for pending orders 2019-07-09 16:13:37 +02:00
Raphael Michel c1a4b8d343 Payment provider API: Add payment argument to render_invoice_text and order_pending_mail_render 2019-07-09 16:13:37 +02:00
Raphael Michel 0ac98f5127 Use inspect instead of TypeError for backwards-compatible APIs 2019-07-09 16:13:37 +02:00
Raphael Michel 55d423af18 Widget: Allow to filter by attributes 2019-07-08 23:27:46 +02:00
Raphael Michel 285694955c Fix AttributeError 2019-07-08 18:25:31 +02:00
Raphael Michel 2352f3b811 Fix voucher validation in CartManager 2019-07-08 17:50:22 +02:00
Raphael Michel 08bfe13dc3 Re-add validation for hidden vouchers 2019-07-08 14:25:35 +02:00
Raphael Michel ec522ed7e5 Tax list exporter as Excel 2019-07-08 14:25:22 +02:00
Raphael Michel 197ec84f05 Order overview: Allow to filter by date 2019-07-08 14:25:22 +02:00
Martin Gross 42af8b1602 Remove excessive chars in U2F_GET_API_VERSION_RESPONSE 2019-07-08 13:39:12 +02:00
Raphael Michel f6a4c5271e Remove obsolete validation 2019-07-08 11:05:08 +02:00
Martin Gross fb53beee2d Option to notify users when questions have been changed in backend 2019-07-08 10:23:32 +02:00
Raphael Michel ca1c387a41 Allow quota-level vouchers for hidden products (#1123)
* Changes in checks

* Backwards-compatible implementation

* Add test

* Fix voucher bulk form
2019-07-07 13:36:04 +02:00
Raphael Michel 5180b5e48b Fix #1329 -- Fix image lightbox for products with variations 2019-07-05 16:58:39 +02:00
Raphael Michel a5e94bf63f Protect against fee signal returning None 2019-07-05 14:33:43 +02:00
Raphael Michel 09ef7aac6e Subevent: Allow to pass empty mapping 2019-07-04 18:25:48 +02:00
Raphael Michel d90510a1bd Fix incorrect headline 2019-07-04 17:59:25 +02:00
Raphael Michel 48790e7743 Fix incorrect header in documentation samples 2019-07-04 17:59:17 +02:00
Raphael Michel cbeaf399df Update Stripe API 2019-07-04 11:08:05 +02:00
Raphael Michel 779a3698a8 Catch general HTTP errors during VAT validation 2019-07-04 10:39:41 +02:00
Raphael Michel a5e2caf438 Consistently include other fees in percentual payment fee 2019-07-04 09:31:21 +02:00
Martin Gross ce79769293 Fix overlooked Stripe-Tests, still using _token instead of _payment_method_id 2019-07-03 22:04:05 +02:00
Martin Gross 9fbb8fa781 Do not _handle_payment_intent() in Stripe's pending order view 2019-07-03 19:19:40 +02:00
Raphael Michel 83c551c1ba API: Correctly set default position IDs for orders 2019-07-03 16:46:03 +02:00
Raphael Michel 328cd9bdc5 Use shell_plus in shell_scoped 2019-07-03 14:32:07 +02:00
Raphael Michel 4ce7655958 Docs: Remove experimental note from order creation endpoint 2019-07-03 13:39:43 +02:00
Raphael Michel bccc73f1dc Optimized command-line exports 2019-07-03 13:35:26 +02:00
Raphael Michel 5eeba88283 Stripe: Robust webhook recognition 2019-07-03 10:57:36 +02:00
Raphael Michel 4c2fe9fc20 Update from Weblate (#1326)
Update from Weblate
2019-07-02 12:41:13 +02:00
Maarten van den Berg f2ba409b03 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3152 of 3152 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-07-02 10:37:14 +00:00
Maarten van den Berg 296c2b6e28 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (100 of 100 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate
2019-07-02 10:37:14 +00:00
Maarten van den Berg ab27bcca42 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 99.9% (3151 of 3152 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-07-02 10:37:14 +00:00
Maarten van den Berg b0a365a099 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3152 of 3152 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-07-02 10:37:14 +00:00
Maarten van den Berg 97fc095d20 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (100 of 100 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2019-07-02 10:37:14 +00:00
Maarten van den Berg cfb1cd8fdb Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3152 of 3152 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-07-02 10:37:14 +00:00
Martin Gross 446cf68377 Stripe SCA (#1275)
* Stripe SCA
- Upgrade to latest Stripe API
- Deprecate Stripe Checkout for CC
- Migrate CC payments to Payment Intents

* Move SCA to its own view

* Handle CardErrors for PaymentIntents

* Abilty to handle charge webhooks with PaymentIntents

* Better handling of Stripe References

* Fix Stripe Tests

* Move SCA page into orderlayout; perform iFrame SCA

* Handle disputes and pi-webhooks better, fill more into ReferencedStripeObject

* Optionally pass prefetched PaymentIntent to handle-func

* Fix style

* Send message to window.parent not window.top (widget compatibility)

* More accurate loading message

* Show a cog on sca_return.html. On a good internet connection, you barely see it, but on a bad one…

* Robust error handling

* If it's a method and used like a method, let's actually call it like a method!

* Remove logging statement

* Fix JavaScript interference with other frame events

* Use 4:3 aspect ratio, but at least 600px

* Adjust to django_scopes
2019-07-02 12:37:07 +02:00
Raphael Michel b727207e79 API: Fix query for check-in list status 2019-07-01 17:18:22 +02:00
Raphael Michel fcc4170a4a Add shell_scoped command. Thanks @rixx! 2019-06-27 11:39:12 +02:00
Raphael Michel c7f345e98e Allow to filter order list by variations 2019-06-26 14:27:02 +02:00
Raphael Michel d30fbf4e6a Event front page: Show calendar by default when a month is selected 2019-06-25 13:02:38 +02:00
Raphael Michel 5326aa7486 Merge pull request #1325 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-06-25 11:33:19 +02:00
Raphael Michel 53147c0f0c Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3152 of 3152 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-06-25 09:32:44 +00:00
Raphael Michel fe31318413 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3152 of 3152 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-06-25 09:32:43 +00:00
Raphael Michel bb4821eeb5 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-06-25 11:08:47 +02:00
Raphael Michel 003d958cc5 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-06-25 11:04:17 +02:00
Raphael Michel 93089d87e3 Add support for reserved seating (#1228)
* Initial work on seating

* Add seat guids

* Add product_list_top

* CartAdd: Ignore item when a seat is passed

* Cart display

* product_list_top → render_seating_plan

* Render seating plan in voucher redemption

* Fix failing tests

* Add tests for extending cart positions with seats

* Add subevent_forms to docs

* Update schema, migrations

* Dealing with expired orders

* steps to order change

* Change order positions

* Allow to add seats

* tests for ocm

* Fix things after rebase

* Seating plans API

* Add more tests for cart behaviour

* Widget support

* Adjust widget tests

* Re-enable CSP

* Update schema

* Api: position.seat

* Add guid to word list

* API: (sub)event.seating_plan

* Vali fixes

* Fix api

* Fix reference in test

* Fix test for real
2019-06-25 11:00:03 +02:00
Raphael Michel f79d17cb6a Navigation: Only show orders/vouchers with a search query 2019-06-24 11:41:36 +02:00
Raphael Michel 0e8db3181c OrderChangeManager: Allow to add positions to empty orders 2019-06-21 14:33:10 +02:00
Raphael Michel 23031642bd Fix crash when re-using logged emails
Fix PRETIXEU-16Q
2019-06-21 12:01:51 +02:00
Raphael Michel 93cca34eab PayPal: Add scopes decorator to oauth_return 2019-06-20 19:29:23 +02:00
Raphael Michel e29c8a1708 Stripe: disable scopes for oauth return 2019-06-20 13:57:15 +02:00
Raphael Michel acfec59abc Fix ineffective permission check in typeahead 2019-06-19 09:32:30 +02:00
Raphael Michel 7adf203863 Make order search search in used voucher codes 2019-06-19 09:17:46 +02:00
Raphael Michel 3c2de09216 Integrate orders and vouchers into navigation typeahead 2019-06-19 09:16:33 +02:00
Raphael Michel 26a96f107f Add signal quota_availability 2019-06-18 16:52:01 +02:00
Raphael Michel 819dd7eee6 Correctly show infinite quotas in backend 2019-06-18 16:29:36 +02:00
Raphael Michel ccc662228c Force evaluation of template responses in frontend 2019-06-17 22:59:45 +02:00
Raphael Michel 99a2fde373 Voucher form: Move product above price mode 2019-06-17 22:56:51 +02:00
Raphael Michel dda48d92c6 Update from Weblate (#1317)
Update from Weblate
2019-06-17 17:08:44 +02:00
Martin Gross 0a1429ed60 Add setting for enforcing 2FA (#1259)
* Add setting for enforcing 2FA

* Changes after code-review

* Add Test-Cases for Obligatory 2FA
2019-06-17 17:08:27 +02:00
Mattias Axell 8487a5446d Translated on translate.pretix.eu (Swedish)
Currently translated at 100.0% (99 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/sv/

powered by weblate
2019-06-17 12:57:56 +00:00
Vlad 64833c0bab Translated on translate.pretix.eu (Russian)
Currently translated at 63.6% (63 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ru/

powered by weblate
2019-06-17 12:57:56 +00:00
Vlad 3f40525af5 Translated on translate.pretix.eu (Russian)
Currently translated at 0.6% (19 of 3125 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ru/

powered by weblate
2019-06-17 12:57:56 +00:00
Maarten van den Berg 7b6b3b1348 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (99 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate
2019-06-17 12:57:56 +00:00
Maarten van den Berg 0b9f4cd739 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (99 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2019-06-17 12:57:56 +00:00
Maarten van den Berg 885eefbcb0 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3125 of 3125 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-06-17 12:57:56 +00:00
Maarten van den Berg 573757e2bf Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3125 of 3125 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-06-17 12:57:56 +00:00
Raphael Michel c5a2bd35b7 Devices list: Correctly use revoked parameter 2019-06-17 14:41:23 +02:00
Raphael Michel 4b65b94bd5 Disable scopes for all unique ID generation 2019-06-17 14:05:05 +02:00
Raphael Michel d716f7e014 Fix scoping issue in mail_send_task 2019-06-17 11:07:05 +02:00
Raphael Michel d85ddb5bda Integrate django-scopes (#1319)
* Install django-scopes

* Fix tests.api

* Update tasks and cronjobs

* Fix remaining tests

* Remove unused import

* Fix tests after rebase

* Disable scopes for get_Events_with_any_permission

* Disable scopes for a management command
2019-06-17 10:46:55 +02:00
Martin Gross b1db5dbb3e Decrement voucher usage counter when deleting testmode orders (#1321)
* Decrement voucher usage counter when deleting testmode orders

* Only decrement voucher usage counter for uncancelled orders and on uncancelled positions

* Have the tests actually test something
2019-06-14 12:41:07 +02:00
Raphael Michel fed389b990 Remove plugins task from travis 2019-06-14 12:21:34 +02:00
Raphael Michel 1ce613ff89 Add new signal nav_item 2019-06-14 12:20:27 +02:00
Raphael Michel 44bef85b66 Require recent django-localflavor 2019-06-12 12:49:22 +02:00
Raphael Michel 49c4acefd0 Fix critical error in previous commit 2019-06-10 17:18:08 +02:00
Raphael Michel 61e111742d Avoid unneccesary logs in some highly-used API endpoints 2019-06-09 23:54:48 +02:00
Raphael Michel b2274039b3 Sendmail: Fix using old log entries 2019-06-06 11:40:21 +02:00
Raphael Michel 4913190730 Update from Weblate (#1312)
Update from Weblate
2019-06-06 11:25:58 +02:00
Raphael Michel 276a087fdb Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3125 of 3125 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-06-06 09:24:50 +00:00
Raphael Michel 3639f2cea1 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3125 of 3125 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-06-06 09:24:49 +00:00
Raphael Michel 692e9c38f1 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-06-06 11:11:46 +02:00
Raphael Michel dd4075b2cc Clarify UX around subevent selection 2019-06-06 11:10:51 +02:00
Raphael Michel b549cb451a Fix invalid signature 2019-06-05 16:44:49 +02:00
Raphael Michel 576132b2d0 Bump to 2.9.0.dev0 2019-06-05 16:28:49 +02:00
Raphael Michel e0c432d014 [SECURITY] Do not allow to enumerate organizers 2019-06-05 16:27:21 +02:00
Raphael Michel b66a35df7a Bump to 2.8.0 2019-06-05 16:13:37 +02:00
Raphael Michel 2e1347cf9a Update from Weblate (#1311)
Update from Weblate
2019-06-05 13:39:11 +02:00
Raphael Michel 8d1c9e44fc Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3123 of 3123 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-06-05 11:38:38 +00:00
Raphael Michel a187a02daa Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3123 of 3123 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-06-05 11:38:37 +00:00
Raphael Michel b9d100b5a8 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-06-05 12:21:46 +02:00
Raphael Michel f1e097c1b1 Update from Weblate (#1309)
Update from Weblate
2019-06-05 12:20:14 +02:00
ThanosTeste 91a5b1546a Translated on translate.pretix.eu (Greek)
Currently translated at 100.0% (99 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-06-05 07:18:57 +00:00
ThanosTeste 3532f9c5a9 Translated on translate.pretix.eu (Greek)
Currently translated at 100.0% (3116 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-06-05 07:18:57 +00:00
ThanosTeste 884e54180a Translated on translate.pretix.eu (Greek)
Currently translated at 100.0% (99 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-06-05 07:18:57 +00:00
ThanosTeste e17ddb0cc8 Translated on translate.pretix.eu (Greek)
Currently translated at 100.0% (3116 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-06-05 07:18:57 +00:00
Raphael Michel 55edc8a3d6 Order change interface: Fix taxation edge case 2019-06-05 09:18:03 +02:00
Raphael Michel bd79a93737 Fix spelling error 2019-06-03 11:53:26 +02:00
Raphael Michel 12ab260eb1 Add documentation for billing_invoices API 2019-06-03 11:29:54 +02:00
Raphael Michel 30f0318de6 API: Add stable and configurable filtering to events and organizers endpoints 2019-06-03 10:19:16 +02:00
Raphael Michel 52e072e68f Dekodi export: Deal with raw Stripe sources
Fix PRETIXEU-14B
2019-06-03 09:59:51 +02:00
Raphael Michel f25bb571b9 Typeahead: Fix ValueError introduced in b3436c1
Fix PRETIXEU-14A
2019-06-03 09:57:35 +02:00
Martin Gross ae71492902 Assign flag for Greek (el) 2019-05-31 12:41:33 +02:00
Raphael Michel 57375eb9b6 Update from Weblate (#1308)
Update from Weblate
2019-05-31 10:50:55 +02:00
Raphael Michel 0657ef2e0c Add missing log descriptions 2019-05-31 10:50:10 +02:00
Raphael Michel f63907fb16 Do not show infinitely long logs in sidebars 2019-05-31 10:49:57 +02:00
ThanosTeste e266d3808f Translated on translate.pretix.eu (Greek)
Currently translated at 100.0% (99 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-05-30 16:39:05 +00:00
ThanosTeste 180f9a356f Translated on translate.pretix.eu (Greek)
Currently translated at 100.0% (3116 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-30 16:39:05 +00:00
mapostolopoulou 480b71bd50 Translated on translate.pretix.eu (Greek)
Currently translated at 93.4% (2910 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-30 16:39:05 +00:00
ThanosTeste 79839e3735 Translated on translate.pretix.eu (Greek)
Currently translated at 93.4% (2910 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-30 16:39:05 +00:00
markiousi 6ba5c58556 Translated on translate.pretix.eu (Greek)
Currently translated at 93.4% (2910 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-30 16:39:05 +00:00
Raphael Michel a5e3bab107 Fix missing argument in HTML email preview 2019-05-30 18:37:18 +02:00
Raphael Michel 4dcce70ab3 Fix doc spelling 2019-05-29 16:32:22 +02:00
Raphael Michel 8a5332f415 Promote Greek to an inofficial language 2019-05-29 16:09:53 +02:00
Raphael Michel 58ce1cbab7 Allow to configure locale path and incubating languages 2019-05-29 16:09:53 +02:00
Raphael Michel 27c3e5d875 Update from Weblate (#1305)
Update from Weblate
2019-05-29 15:57:18 +02:00
ThanosTeste caac517c0d Translated on translate.pretix.eu (Greek)
Currently translated at 100.0% (99 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-05-29 13:24:30 +00:00
mapostolopoulou 58b9052164 Translated on translate.pretix.eu (Greek)
Currently translated at 100.0% (99 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-05-29 13:24:30 +00:00
ThanosTeste 2d223a9e11 Translated on translate.pretix.eu (Greek)
Currently translated at 96.0% (95 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-05-29 13:22:27 +00:00
mapostolopoulou fe37ab9286 Translated on translate.pretix.eu (Greek)
Currently translated at 96.0% (95 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-05-29 13:22:08 +00:00
ThanosTeste 95cc661a05 Translated on translate.pretix.eu (Greek)
Currently translated at 96.0% (95 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-05-29 13:22:08 +00:00
mapostolopoulou 9a98d16949 Translated on translate.pretix.eu (Greek)
Currently translated at 90.9% (90 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-05-29 13:21:26 +00:00
ThanosTeste 50ba019a07 Translated on translate.pretix.eu (Greek)
Currently translated at 90.9% (90 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-05-29 13:21:25 +00:00
ThanosTeste 7d3e9b1777 Translated on translate.pretix.eu (Greek)
Currently translated at 86.9% (86 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-05-29 13:21:07 +00:00
ThanosTeste f82640d763 Translated on translate.pretix.eu (Greek)
Currently translated at 86.9% (86 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-05-29 13:21:07 +00:00
markiousi d84cd71a5c Translated on translate.pretix.eu (Greek)
Currently translated at 83.8% (83 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-05-29 13:19:25 +00:00
ThanosTeste 74105ddd53 Translated on translate.pretix.eu (Greek)
Currently translated at 83.8% (83 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-05-29 13:19:25 +00:00
Andrikopoulos-Giannis 3a2f915ac9 Translated on translate.pretix.eu (Greek)
Currently translated at 92.3% (2877 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 13:14:52 +00:00
ThanosTeste 9024a552a9 Translated on translate.pretix.eu (Greek)
Currently translated at 92.3% (2877 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 13:14:51 +00:00
mapostolopoulou bae9fab2c4 Translated on translate.pretix.eu (Greek)
Currently translated at 92.3% (2877 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 13:14:51 +00:00
markiousi ee3cd6d465 Translated on translate.pretix.eu (Greek)
Currently translated at 92.3% (2877 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 13:14:50 +00:00
ThanosTeste ccdcd380fa Translated on translate.pretix.eu (Greek)
Currently translated at 91.8% (2859 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 13:12:11 +00:00
mapostolopoulou 3c0f0434cd Translated on translate.pretix.eu (Greek)
Currently translated at 91.8% (2859 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 13:12:10 +00:00
markiousi 58dba57bef Translated on translate.pretix.eu (Greek)
Currently translated at 91.1% (2840 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 13:09:49 +00:00
mapostolopoulou 9178aef323 Translated on translate.pretix.eu (Greek)
Currently translated at 91.1% (2840 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 13:09:49 +00:00
ThanosTeste e9d696ea5e Translated on translate.pretix.eu (Greek)
Currently translated at 91.1% (2840 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 13:09:49 +00:00
markiousi 983ffdd8a8 Translated on translate.pretix.eu (Greek)
Currently translated at 89.7% (2794 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 13:05:26 +00:00
mapostolopoulou 294d47ccfc Translated on translate.pretix.eu (Greek)
Currently translated at 89.7% (2794 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 13:05:26 +00:00
ThanosTeste a14b1a5a14 Translated on translate.pretix.eu (Greek)
Currently translated at 89.7% (2794 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 13:05:23 +00:00
Andrikopoulos-Giannis a28c5f71c9 Translated on translate.pretix.eu (Greek)
Currently translated at 73.5% (2290 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 11:52:18 +00:00
ThanosTeste 35bd9d1c22 Translated on translate.pretix.eu (Greek)
Currently translated at 73.5% (2290 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 11:52:18 +00:00
mapostolopoulou b070fc0297 Translated on translate.pretix.eu (Greek)
Currently translated at 73.5% (2290 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 11:52:15 +00:00
markiousi f7fd3596a6 Translated on translate.pretix.eu (Greek)
Currently translated at 73.5% (2290 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 11:52:14 +00:00
markiousi 3b4f758c82 Translated on translate.pretix.eu (Greek)
Currently translated at 65.8% (2050 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 10:36:35 +00:00
Andrikopoulos-Giannis df8c8f2063 Translated on translate.pretix.eu (Greek)
Currently translated at 65.8% (2050 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 10:36:35 +00:00
markiousi ebb6b5b469 Translated on translate.pretix.eu (Greek)
Currently translated at 65.8% (2050 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 10:36:34 +00:00
ThanosTeste 16ad39bb16 Translated on translate.pretix.eu (Greek)
Currently translated at 65.8% (2050 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 10:36:32 +00:00
mapostolopoulou 6ca65edde9 Translated on translate.pretix.eu (Greek)
Currently translated at 65.8% (2050 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 10:36:31 +00:00
markiousi 02684a0fcd Translated on translate.pretix.eu (Greek)
Currently translated at 55.4% (1727 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 09:47:39 +00:00
mapostolopoulou 141ba6e50d Translated on translate.pretix.eu (Greek)
Currently translated at 55.4% (1727 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 09:47:38 +00:00
ThanosTeste 6681eb1a27 Translated on translate.pretix.eu (Greek)
Currently translated at 55.4% (1727 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 09:47:38 +00:00
mapostolopoulou 2b515ea30c Translated on translate.pretix.eu (Greek)
Currently translated at 54.2% (1690 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 09:44:07 +00:00
ThanosTeste 7997882e24 Translated on translate.pretix.eu (Greek)
Currently translated at 54.2% (1690 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 09:44:07 +00:00
markiousi a8190258a4 Translated on translate.pretix.eu (Greek)
Currently translated at 53.8% (1676 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 09:42:12 +00:00
mapostolopoulou 9376a26709 Translated on translate.pretix.eu (Greek)
Currently translated at 53.8% (1676 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 09:42:12 +00:00
mapostolopoulou d8e2e0e217 Translated on translate.pretix.eu (Greek)
Currently translated at 53.7% (1672 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 09:41:18 +00:00
GiorgosPap f9c942bc6f Translated on translate.pretix.eu (Greek)
Currently translated at 53.7% (1672 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 09:41:16 +00:00
markiousi f9b7696366 Translated on translate.pretix.eu (Greek)
Currently translated at 53.7% (1672 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 09:41:15 +00:00
ThanosTeste 2143135285 Translated on translate.pretix.eu (Greek)
Currently translated at 53.7% (1672 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 09:41:14 +00:00
ThanosTeste 54146bb9e8 Translated on translate.pretix.eu (Greek)
Currently translated at 36.7% (1143 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 08:09:15 +00:00
GiorgosPap d1f702cafd Translated on translate.pretix.eu (Greek)
Currently translated at 36.7% (1143 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 08:09:15 +00:00
markiousi 54e7b8da89 Translated on translate.pretix.eu (Greek)
Currently translated at 36.7% (1143 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 08:09:14 +00:00
GiorgosPap 25af386d87 Translated on translate.pretix.eu (Greek)
Currently translated at 36.0% (1121 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 08:04:19 +00:00
markiousi 51fa9e78dd Translated on translate.pretix.eu (Greek)
Currently translated at 36.0% (1121 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 08:04:19 +00:00
ThanosTeste 6cf244bb4b Translated on translate.pretix.eu (Greek)
Currently translated at 36.0% (1121 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 08:04:19 +00:00
mapostolopoulou 6a0e3b1b46 Translated on translate.pretix.eu (Greek)
Currently translated at 36.0% (1121 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 08:04:17 +00:00
mapostolopoulou 571b0e9aa8 Translated on translate.pretix.eu (Greek)
Currently translated at 29.7% (924 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
ThanosTeste 8075d3e385 Translated on translate.pretix.eu (Greek)
Currently translated at 29.6% (922 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
mapostolopoulou 411f5c358f Translated on translate.pretix.eu (Greek)
Currently translated at 29.6% (922 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
ThanosTeste 94d3eff799 Translated on translate.pretix.eu (Greek)
Currently translated at 79.8% (79 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-05-29 07:19:38 +00:00
markiousi a073d66213 Translated on translate.pretix.eu (Greek)
Currently translated at 29.4% (916 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
mapostolopoulou 7b2dda9cd9 Translated on translate.pretix.eu (Greek)
Currently translated at 29.4% (916 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
ThanosTeste e9c66f5bb1 Translated on translate.pretix.eu (Greek)
Currently translated at 29.4% (916 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
mapostolopoulou 24aa8fc033 Translated on translate.pretix.eu (Greek)
Currently translated at 16.8% (522 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
Chris Spy ee74f75913 Translated on translate.pretix.eu (Greek)
Currently translated at 16.8% (522 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
ThanosTeste b484675aeb Translated on translate.pretix.eu (Greek)
Currently translated at 16.8% (522 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
Chris Spy 88379d7c25 Translated on translate.pretix.eu (Greek)
Currently translated at 16.7% (519 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
ThanosTeste 4e8bdb4427 Translated on translate.pretix.eu (Greek)
Currently translated at 16.7% (519 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
Chris Spy f68c29ca95 Translated on translate.pretix.eu (Greek)
Currently translated at 16.6% (517 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
ThanosTeste eb7154a55b Translated on translate.pretix.eu (Greek)
Currently translated at 16.6% (517 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
Chris Spy ed19cc99f3 Translated on translate.pretix.eu (Greek)
Currently translated at 16.6% (516 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
mapostolopoulou 51ae1e5e33 Translated on translate.pretix.eu (Greek)
Currently translated at 16.6% (516 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
ThanosTeste 132f8d8cb3 Translated on translate.pretix.eu (Greek)
Currently translated at 16.6% (516 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
mapostolopoulou cd4b4b98b8 Translated on translate.pretix.eu (Greek)
Currently translated at 16.5% (513 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
Chris Spy 07e0ffd4f3 Translated on translate.pretix.eu (Greek)
Currently translated at 16.5% (513 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
ThanosTeste 1d2a6d55b9 Translated on translate.pretix.eu (Greek)
Currently translated at 16.5% (513 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
mapostolopoulou 33b893b0ba Translated on translate.pretix.eu (Greek)
Currently translated at 15.8% (492 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
Chris Spy 03ebe0e528 Translated on translate.pretix.eu (Greek)
Currently translated at 15.8% (492 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
ThanosTeste 28797b8cc6 Translated on translate.pretix.eu (Greek)
Currently translated at 15.8% (492 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
mapostolopoulou 691ba3a1a7 Translated on translate.pretix.eu (Greek)
Currently translated at 15.3% (477 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
Chris Spy 656673ccde Translated on translate.pretix.eu (Greek)
Currently translated at 15.3% (477 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
ThanosTeste 7073622ab3 Translated on translate.pretix.eu (Greek)
Currently translated at 15.3% (477 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
Chris Spy b8f71d2428 Translated on translate.pretix.eu (Greek)
Currently translated at 15.2% (473 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
ThanosTeste 2a8bdc29f4 Translated on translate.pretix.eu (Greek)
Currently translated at 15.2% (473 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
Chris Spy a6da1bb4e9 Translated on translate.pretix.eu (Greek)
Currently translated at 15.1% (471 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
ThanosTeste d1e67d38d9 Translated on translate.pretix.eu (Greek)
Currently translated at 15.1% (471 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
mapostolopoulou a5214d459c Translated on translate.pretix.eu (Greek)
Currently translated at 15.1% (471 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
markiousi 9ad2891d17 Translated on translate.pretix.eu (Greek)
Currently translated at 13.6% (424 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
Chris Spy 4b2d55a2fb Translated on translate.pretix.eu (Greek)
Currently translated at 13.6% (424 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
mapostolopoulou 5cfed32d61 Translated on translate.pretix.eu (Greek)
Currently translated at 13.6% (424 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
ThanosTeste 06ccd83921 Translated on translate.pretix.eu (Greek)
Currently translated at 13.6% (424 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
ThanosTeste ba417b6e3c Translated on translate.pretix.eu (Greek)
Currently translated at 4.3% (134 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
markiousi f7ed0236f3 Translated on translate.pretix.eu (Greek)
Currently translated at 4.0% (126 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
markiousi 4491b80786 Translated on translate.pretix.eu (Greek)
Currently translated at 4.0% (125 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
Chris Spy 37bcb520cc Translated on translate.pretix.eu (Greek)
Currently translated at 4.0% (125 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
Chris Spy 782e957c3a Translated on translate.pretix.eu (Greek)
Currently translated at 3.7% (116 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
Andrikopoulos-Giannis 953890c269 Translated on translate.pretix.eu (Greek)
Currently translated at 3.7% (116 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:38 +00:00
Martin Gross 60d9c1080a Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3116 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-05-29 07:19:38 +00:00
Raphael Michel 364e7cefda Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3116 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-05-29 07:19:38 +00:00
Martin Gross 33accf3250 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3116 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-05-29 07:19:37 +00:00
Raphael Michel be4d9ac00e Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3116 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-05-29 07:19:37 +00:00
Andrikopoulos-Giannis 8ca5e4dd54 Translated on translate.pretix.eu (Greek)
Currently translated at 3.7% (114 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:37 +00:00
markiousi 1394cf3148 Translated on translate.pretix.eu (Greek)
Currently translated at 3.7% (114 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:37 +00:00
Andrikopoulos-Giannis de58b35bf4 Translated on translate.pretix.eu (Greek)
Currently translated at 3.6% (111 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:37 +00:00
markiousi 490b421d53 Translated on translate.pretix.eu (Greek)
Currently translated at 3.6% (111 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:37 +00:00
markiousi 61d45f26dd Translated on translate.pretix.eu (Greek)
Currently translated at 3.4% (105 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:37 +00:00
Andrikopoulos-Giannis a8b0475c6d Translated on translate.pretix.eu (Greek)
Currently translated at 3.4% (105 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:37 +00:00
Chris Spy 31cf94eb02 Translated on translate.pretix.eu (Greek)
Currently translated at 3.4% (105 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-05-29 07:19:37 +00:00
Raphael Michel dc0590ea91 Fix grammar 2019-05-29 09:19:26 +02:00
Raphael Michel bc5e5d0a27 Fix #1307 -- Document hierarchies in navigation signals 2019-05-29 09:17:43 +02:00
Raphael Michel 0fc448fbd3 Refs #1307 -- fix navigation hierarchies being broken by sorting 2019-05-29 09:17:43 +02:00
Raphael Michel 67d5c1ccad Refs #1307 -- Fix crash when assigning a navigation parent without a children list 2019-05-29 09:17:43 +02:00
Raphael Michel 779ad11640 Timeline: Do not show disabled payment providers 2019-05-29 09:17:43 +02:00
Martin Gross 70e9d9faad Add documentation change for cloning events with testmode-attribute 2019-05-28 12:42:03 +02:00
Martin Gross 51f5b0645a Respect testmode in CloneEventSerializer 2019-05-28 12:38:10 +02:00
Martin Gross b3436c1a93 Prepend current organizer to typeahead 2019-05-28 12:29:54 +02:00
Raphael Michel 9eef5d5d6d Fix failing test after update 2019-05-28 12:07:57 +02:00
Martin Gross e139de3c19 Create new events in Testmode by default 2019-05-28 11:14:03 +02:00
Martin Gross 74f861bd48 Respect Testmode when cloning events 2019-05-28 11:13:20 +02:00
Raphael Michel 35c02f35d7 Event selection: Fix typeahead query 2019-05-28 10:52:34 +02:00
Raphael Michel d5c0b0f71d Event creation: Use select2 for event/organizer selection and properly support admin sessions 2019-05-28 10:42:14 +02:00
Raphael Michel 6c701d66b1 Removed setter for cached_property 2019-05-28 10:37:41 +02:00
Martin Gross 8d62b509a2 Fix #1292 -- Fix build of PDF documentation 2019-05-28 10:26:05 +02:00
Raphael Michel 9e0b97e88e Fix #601 -- provide setters for meta_info_data 2019-05-28 10:16:54 +02:00
Raphael Michel 28a5519881 Fix #1270 -- Provide preview for fonts in display settings 2019-05-28 10:07:42 +02:00
Raphael Michel 363826e294 Fix #1292 -- Use standard naming of sphinx document root 2019-05-28 09:50:29 +02:00
Raphael Michel eb8ea6d477 Fix #1296 -- Show last_login in user admin 2019-05-28 09:49:28 +02:00
Raphael Michel 77be4d835b Fix #1301 -- Do not export empty files 2019-05-28 09:43:21 +02:00
Raphael Michel c6390520a7 Warn about hidden product limitations 2019-05-28 09:25:05 +02:00
Raphael Michel 594803ec17 Make product.tax_rule required as soon as tax rules exist to avoid users from screwing up their taxes 2019-05-28 08:59:02 +02:00
Raphael Michel 32ce3a4319 Event list: Ignore invalid filter attributes 2019-05-27 23:04:37 +02:00
Raphael Michel d3f01832fe Fix a bug during validation 2019-05-27 18:27:20 +02:00
lislis bba702489d rm superfluous closing anchor
in templates/pretixpresale/events/index.html
2019-05-27 18:26:36 +02:00
Raphael Michel 85fe7e55be Guess and pre-fill invoice address country 2019-05-27 17:48:22 +02:00
Martin Gross 92c9216fbd Adding Greek to incubating languages 2019-05-27 17:02:26 +02:00
Raphael Michel db63e20708 Optimize refresh_quota_caches for less long-running queries 2019-05-27 10:09:29 +02:00
Raphael Michel e2ce35a85b Order details: Do not show empty cancellation section 2019-05-24 13:59:58 +02:00
Martin Gross d39964b021 Show information, when item contained in product bundle is disabled 2019-05-24 12:30:31 +02:00
Martin Gross 59beba5069 Allow to unset QuestionAnswers 2019-05-24 11:15:35 +02:00
Raphael Michel 1bd3a63959 Update from Weblate (#1300)
Update from Weblate
2019-05-24 10:45:35 +02:00
Raphael Michel 1d644e90c9 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3116 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-05-24 08:34:07 +00:00
Raphael Michel e0e66c903e Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3116 of 3116 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-05-24 08:34:06 +00:00
Raphael Michel bc08bdebb5 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-05-24 09:42:41 +02:00
Raphael Michel edd92ac34d Update from Weblate (#1297)
Update from Weblate
2019-05-24 09:42:04 +02:00
Raphael Michel f1bce0c08b Allow to send e-mails to attendees individually (#1299)
* .

* Add a position detail page to the frontend

* Mail templates

* Send mails

* Send reminder email

* Add position support to sendmail plugin

* Add and fix some tests

* Fix failing test on real databases
2019-05-24 09:41:44 +02:00
Raphael Michel 68c24ebea3 Translated on translate.pretix.eu (German (informal))
Currently translated at 99.9% (3083 of 3084 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-05-23 12:33:05 +00:00
Raphael Michel d22a7844ea Fix TypeError PRETIXEU-12W 2019-05-23 14:32:55 +02:00
Martin Gross 6238e1df98 Add Mail sender name option 2019-05-22 16:09:52 +02:00
Martin Gross 6acca4c4ba Show event time in event series cart 2019-05-22 16:09:25 +02:00
Raphael Michel 1a9f6e49d4 Refactor product list into own template 2019-05-22 09:48:07 +02:00
Raphael Michel efa1d2683e rich_text: allow a[class] 2019-05-22 08:20:00 +02:00
Martin Gross 9b39d34f81 Fix style - again 2019-05-21 15:33:07 +02:00
Martin Gross 96c5c8c4ff Fix style 2019-05-21 14:30:38 +02:00
Martin Gross 3254ac36a2 Add option to exclude Sales Channels from invoice generation 2019-05-21 14:18:31 +02:00
Raphael Michel 52d10957a1 Timeline: Fix issues with relative dates 2019-05-19 14:42:19 +02:00
Raphael Michel f9d4669423 Timeline: Fix padding 2019-05-19 14:18:23 +02:00
Raphael Michel 6e220cbbd8 Update djangojs.js to current Django 2019-05-19 14:10:22 +02:00
Raphael Michel 036a555374 Update from Weblate (#1295)
Update from Weblate
2019-05-19 13:50:18 +02:00
Raphael Michel 861a41c95f Translated on translate.pretix.eu (German (informal))
Currently translated at 99.9% (3083 of 3084 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-05-19 11:14:43 +00:00
Raphael Michel e2abc19fe3 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3084 of 3084 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-05-19 11:13:59 +00:00
ligi 97fc226e07 Document development dependency libenchant1c2a (#1294) 2019-05-19 13:06:24 +02:00
Raphael Michel d73c98bff0 Document Debian dependency python-venv (#1293)
Add external dependency python-venv
2019-05-19 13:02:58 +02:00
Raphael Michel aa186f7a09 Update setup.rst 2019-05-19 13:02:05 +02:00
ligi 1b434b40d2 Add external dependency python-venv
otherwise in the next step I get
```
$ python3 -m venv env
The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt-get install python3-venv
```
2019-05-17 19:32:32 +02:00
Raphael Michel 71475c5863 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-05-17 17:41:30 +02:00
Raphael Michel 71b544d951 Update from Weblate (#1291)
Update from Weblate
2019-05-17 17:40:52 +02:00
pretix Translation Platform b0685437f1 Merge branch 'master' of https://github.com/pretix/pretix 2019-05-17 17:39:03 +02:00
Raphael Michel 2d99828eab Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-05-17 17:33:45 +02:00
pretix translation bot 2ffc1b8eaf Update from Weblate (#1278)
* Translated on translate.pretix.eu (Slovenian)

Currently translated at 0.1% (1 of 3067 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sl/

powered by weblate

* Translated on translate.pretix.eu (Slovenian)

Currently translated at 0.3% (9 of 3067 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sl/

powered by weblate
2019-05-17 17:32:54 +02:00
Bostjan Marusic 893f47d365 Translated on translate.pretix.eu (Slovenian)
Currently translated at 0.3% (9 of 3067 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sl/

powered by weblate
2019-05-17 15:32:43 +00:00
Bostjan Marusic 7de1fca2f4 Translated on translate.pretix.eu (Slovenian)
Currently translated at 0.1% (1 of 3067 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sl/

powered by weblate
2019-05-17 15:32:43 +00:00
Raphael Michel c6b18b31a1 Display a timeline on the dashboard (#1290)
* Timeline data model

* Display timeline

* …

* More events

* Plugin support

* Fix docs typo
2019-05-17 17:32:38 +02:00
Raphael Michel ecc9c7f39f Try to fix a flaky test 2019-05-17 13:09:30 +02:00
Raphael Michel b9aba9cf56 Fix issue in offset calculation of relative dates 2019-05-17 12:37:00 +02:00
Raphael Michel 33f0892052 Adjust tests to c7774dfdb 2019-05-16 12:02:49 +02:00
Raphael Michel 4bf3d48549 Open graph contents for organizer pages 2019-05-16 12:02:19 +02:00
Raphael Michel 32aa4b4f3e Fix #1286 -- Autofill quota names with products 2019-05-16 11:41:30 +02:00
Raphael Michel e1992bb99f Refs #1286 -- Show variations in list of quotas 2019-05-16 11:35:19 +02:00
Raphael Michel 45e98546d6 Add open graph tags to event pages 2019-05-16 11:30:25 +02:00
Raphael Michel c7774dfdb8 Allow to set a custom payment date for manual payments 2019-05-16 11:21:00 +02:00
Raphael Michel 6c582b8f8c Prefix notification emails with the event slug 2019-05-16 11:09:20 +02:00
Raphael Michel 5f82db3949 Fix #1205 -- Layout bug on order page if only some tickets can be downloaded 2019-05-16 10:52:11 +02:00
Raphael Michel 2b818f42cd Raise 404 on opening unknown order
PRETIXEU-12Q
2019-05-16 10:05:58 +02:00
Raphael Michel b19df33dda Fix a bug during deletion of vouchers 2019-05-15 15:57:08 +02:00
Raphael Michel dba8761bc5 Fix a bug around bundles and carts 2019-05-15 15:56:54 +02:00
Raphael Michel 0311c0251a Fix an unlogical comparison in a query 2019-05-15 15:23:02 +02:00
Raphael Michel 5b99bf3623 Fix missing encoding 2019-05-15 09:39:32 +02:00
Raphael Michel 4137e0fc1f Add new signal validate_order 2019-05-15 09:37:34 +02:00
Raphael Michel b32c6033f1 Bump to 2.8.0.dev0 2019-05-15 09:37:34 +02:00
Raphael Michel de0e700fec Store whether we know email addresses are working because links have been clicked 2019-05-15 08:22:53 +02:00
Raphael Michel 00bc5f4fae Fix another crash around original prices 2019-05-14 17:20:22 +02:00
Raphael Michel 6ef3603d9f Allow to add multiple Bcc addresses 2019-05-14 10:18:09 +02:00
Raphael Michel 2c7cefea35 Fix #1279 -- Incorrect initial price value in widget in German locale 2019-05-14 09:08:33 +02:00
Tobias Kunze a10b31cacb Remove dead test fixtures (#1284) 2019-05-14 08:55:12 +02:00
Raphael Michel 4e9e925b32 Fix #1282 -- Work around issues in file backends 2019-05-12 14:49:45 +02:00
Raphael Michel f4415cf906 Ensure deterministic test collection order 2019-05-10 09:13:18 +02:00
Raphael Michel bf4fcfd914 Add tests to ensure that we documented all signals 2019-05-10 08:58:42 +02:00
Raphael Michel 7021c178ab Set original_price to TaxedPrice even with variations 2019-05-09 23:30:50 +02:00
Raphael Michel 5d8e3e28d6 Assign flag for zh_Hans 2019-05-09 17:00:30 +02:00
Raphael Michel e89aaf4059 Bump to 2.7.0 2019-05-09 16:20:40 +02:00
Raphael Michel db270b3bf2 Update from Weblate (#1276)
Update from Weblate
2019-05-09 14:48:51 +02:00
Raphael Michel d8b78c3a7a Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3067 of 3067 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-05-09 12:48:23 +00:00
Raphael Michel 67c448a29e Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3067 of 3067 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-05-09 12:48:22 +00:00
Raphael Michel 5b7906f2a1 Translated on translate.pretix.eu (German (informal))
Currently translated at 99.8% (3060 of 3067 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-05-09 12:45:12 +00:00
Raphael Michel 0612d42607 Translated on translate.pretix.eu (German)
Currently translated at 99.8% (3060 of 3067 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-05-09 12:45:12 +00:00
Raphael Michel 83f866034a Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-05-09 14:45:03 +02:00
Raphael Michel b1fa214869 Clarify a description 2019-05-09 14:44:06 +02:00
Raphael Michel aa53b5235a Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-05-09 14:39:58 +02:00
Raphael Michel 61a13256a0 Update from Weblate (#1269)
Update from Weblate
2019-05-09 14:39:16 +02:00
Raphael Michel 64e2336014 Added translation on translate.pretix.eu (Slovenian) 2019-05-09 11:47:16 +00:00
Bostjan Marusic 3411abd1e6 Added translation on translate.pretix.eu (Slovenian) 2019-05-09 11:47:16 +00:00
Allan Nordhøy 2a34e54fae Added translation on translate.pretix.eu (Norwegian Bokmål) 2019-05-09 11:47:16 +00:00
Alvaro Enrique Ruano 9863dc35d6 Translated on translate.pretix.eu (Spanish)
Currently translated at 99.0% (3031 of 3063 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-05-09 11:47:16 +00:00
Raphael Michel 690883a198 Fix #480 -- Allow plugins to specify a minimum pretix version 2019-05-09 13:46:54 +02:00
Raphael Michel d8ded08a46 Checkin list PDF: Remove date from headline, it's in the page header now 2019-05-09 10:52:42 +02:00
Raphael Michel 4aab5daa57 Fixing import order 2019-05-09 10:22:09 +02:00
Raphael Michel e87628c902 Ensure that we document all signals 2019-05-09 10:02:12 +02:00
Raphael Michel 3c7bf46268 Resolve requests/urllib versions 2019-05-09 10:02:12 +02:00
Raphael Michel a1dacb1897 Remove outdated reference from docs 2019-05-09 10:02:12 +02:00
Raphael Michel 08d5626704 Simplify the future of our migration history 2019-05-09 10:02:12 +02:00
Raphael Michel c8a1481f93 Fix #1154 -- Add country-typed questions 2019-05-09 10:02:12 +02:00
Raphael Michel e7c4121745 Add hidden questions 2019-05-09 10:02:12 +02:00
Sohalt 35ddd8dd28 Typo (#1274) 2019-05-08 13:13:27 +02:00
Raphael Michel e2ec6eb156 Dekodi: Change semantics of signs 2019-05-08 11:47:57 +02:00
Raphael Michel 42edc4c3aa money_filter: Ignore case of currency 2019-05-07 16:20:24 +02:00
Raphael Michel 1cb2f99f3a Tax calculation of "original prices" 2019-05-06 12:33:21 +02:00
Raphael Michel d4146e08b1 Fix widget tests 2019-05-06 12:06:45 +02:00
Raphael Michel 79ae9b6501 Revert "updatestyles: Fix a TypeError"
This reverts commit 53053f19e4.
2019-05-06 11:43:40 +02:00
Raphael Michel c23f71a19c Widget: Add voucher explanation text 2019-05-06 11:33:48 +02:00
Raphael Michel 53053f19e4 updatestyles: Fix a TypeError 2019-05-06 11:33:36 +02:00
Raphael Michel a42b2d76f6 Add scalability to docs word list 2019-05-06 08:50:56 +02:00
Raphael Michel 51392f73a8 Locking optimizations 2019-05-05 17:31:08 +02:00
Raphael Michel 465a5b01b9 Offload more work to database replica 2019-05-05 17:31:08 +02:00
Raphael Michel 74a6004613 Documentation on scaling 2019-05-05 17:31:08 +02:00
Sohalt f9fc33eba1 Fix #1266 -- Make references to plugin settings clickable links (#1268) 2019-05-02 09:18:42 +02:00
Raphael Michel 363dc74c31 Dekodi: Try to find correct PayPal ID 2019-05-02 09:12:57 +02:00
Raphael Michel efb598e93a Update from Weblate (#1267)
Update from Weblate
2019-05-01 14:13:47 +02:00
Raphael Michel bcfaf2801d Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3063 of 3063 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-05-01 12:13:28 +00:00
Raphael Michel 98db417fe6 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (99 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2019-05-01 12:13:18 +00:00
Raphael Michel a03ffd949e Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3063 of 3063 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-05-01 12:12:58 +00:00
Raphael Michel 88ef46dee9 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (99 of 99 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate
2019-05-01 12:12:39 +00:00
Raphael Michel 9bc6941c14 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-05-01 14:02:11 +02:00
Raphael Michel 987da83894 Refs #1102 -- Accept order URLs in order lookup 2019-05-01 14:01:26 +02:00
Raphael Michel d029d92a92 Fix #1102 -- "View in backend" (doesn't work with custom domains) 2019-05-01 14:01:26 +02:00
Raphael Michel f1b07777bc Timezone indicators in the backend 2019-05-01 14:01:26 +02:00
Raphael Michel db187a2537 Fix #1126 -- Use short datetime format on order details page 2019-05-01 14:01:26 +02:00
Raphael Michel e9a340d9ca Refs #1128 -- Popover on disabled "add to cart" button 2019-05-01 14:01:26 +02:00
Raphael Michel 6841a30d8f Fix #1153 -- Show preview of uploaded pictures in the backend 2019-05-01 14:01:26 +02:00
Raphael Michel 30b8c0f4b9 Fix ClearableBasenameFileInput with current Django 2019-05-01 14:01:26 +02:00
Raphael Michel 3e8f32e7e3 Fix #1178 -- Invalidate ticket cache after order locale change 2019-05-01 14:01:26 +02:00
Raphael Michel 2b145e254b Fix #1211 -- Locale selection on organizer profile 2019-05-01 14:01:26 +02:00
Raphael Michel e5c2470fde "Go to shop" for organizers 2019-05-01 14:01:26 +02:00
Raphael Michel 2da93eba26 Fix #1230 -- Stripe: Recognize canceled sources in webhook 2019-05-01 14:01:26 +02:00
Raphael Michel 788f73d842 Fix #1255 -- Approvals of free orders after last date of payments 2019-05-01 14:01:26 +02:00
Raphael Michel d86b3a2173 Update from Weblate (#1265)
Update from Weblate
2019-04-30 09:51:49 +02:00
Tobias Sundgren 7be6046ed5 Translated on translate.pretix.eu (Swedish)
Currently translated at 100.0% (97 of 97 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/sv/

powered by weblate
2019-04-30 07:51:24 +00:00
Maarten van den Berg 6b90689067 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (97 of 97 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate
2019-04-30 07:51:24 +00:00
Maarten van den Berg 815816b9d6 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (97 of 97 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2019-04-30 07:51:24 +00:00
Tobias Sundgren 3199687fe4 Translated on translate.pretix.eu (Swedish)
Currently translated at 0.8% (24 of 3060 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/sv/

powered by weblate
2019-04-30 07:51:24 +00:00
Maarten van den Berg 6d8b8c6346 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3060 of 3060 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-04-30 07:51:24 +00:00
Maarten van den Berg 8a850773f4 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3060 of 3060 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-04-30 07:51:24 +00:00
Raphael Michel 2a10f875e4 Added translation on translate.pretix.eu (Swedish) 2019-04-30 07:51:24 +00:00
Raphael Michel d8d2a21bda Added translation on translate.pretix.eu (Swedish) 2019-04-30 07:51:24 +00:00
oocf 18eb468d8e Translated on translate.pretix.eu (Spanish)
Currently translated at 99.0% (3028 of 3060 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-04-30 07:51:24 +00:00
ThanosTeste 2842b0e720 Translated on translate.pretix.eu (Greek)
Currently translated at 81.4% (79 of 97 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-04-30 07:51:24 +00:00
Chris Spy 42936a931b Translated on translate.pretix.eu (Greek)
Currently translated at 81.4% (79 of 97 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/el/

powered by weblate
2019-04-30 07:51:24 +00:00
Raphael Michel a6c72abe75 Change semantics of changing orders (#1260)
* Change semantics of changing orders

This basically does two things to the "Change products" view of orders and the
OrderChangeManager program API:

1) It decouples changing items or subevents from changing prices.
   OrderChangeManager.change_item() and .change_subevent() no longer
   touch the price of a position. Instead .change_price() needs to be
   called explicitly. However, a client-side JavaScript component now
   *proposes* a new price based on the changed item or subevent.

2) The user interface now exposes the possibility of doing multiple
   things at the same time, i.e. changing the item, subevent and price
   in the same operation. OrderChangeManager already allowed this
   before.

(1) is basically a consequence of (2), while (2) is a prerequesite for
e.g. the `seating` branch, where changing the subevent will always
require changing the seat.

* Add tests for price calculation API
2019-04-30 09:51:19 +02:00
Raphael Michel df3e6f4b9a dekodi: Fix version and mandatory fields 2019-04-30 09:50:47 +02:00
Raphael Michel 8ef99ba828 Dekodi: Merchant PayPal IDs 2019-04-30 09:50:17 +02:00
Raphael Michel e8e5f5c7bf Dekodi: Get rid of null values 2019-04-29 15:46:48 +02:00
Martin Gross f0128429e4 Format amount in GiroCode/EPC-QR with dot instead of locale 2019-04-29 13:54:53 +02:00
Raphael Michel cc8e5a7f83 Widget: original price for variations 2019-04-29 09:30:03 +02:00
Raphael Michel d4d3928146 Expose is_public in subevent editor 2019-04-29 09:30:03 +02:00
Raphael Michel cc4602c308 API Auth: Respect staff sessions 2019-04-26 16:24:13 +02:00
Raphael Michel 2bc0dd6076 Dekodi export: date filter 2019-04-26 15:22:10 +02:00
Raphael Michel f286c5af28 Dekodi: Never encode money as strings 2019-04-25 21:07:10 +02:00
Raphael Michel ec27ed198b Add Dekodi exporter 2019-04-25 20:36:24 +02:00
Raphael Michel 2ee0f684c5 PDF variable: price including add-ons 2019-04-25 19:34:51 +02:00
Raphael Michel 951386b32c Add subevent column to order list export 2019-04-25 15:08:22 +02:00
Raphael Michel f498e8fafa Fix faulty test cases 2019-04-25 14:00:55 +02:00
Raphael Michel b79947fba4 Widget: Original price for variations 2019-04-25 11:54:21 +02:00
Raphael Michel ef600ceddb Fix invalid handling of variations with quota-level vouchers 2019-04-25 11:54:03 +02:00
Raphael Michel 13bf975dd5 Fix KeyError during form validation 2019-04-25 10:36:29 +02:00
Raphael Michel 8e56c8dcf7 Fix documentation typos 2019-04-23 17:39:09 +02:00
Raphael Michel a42b31560c Check-in API: Fall back from attendee_name 2019-04-23 17:25:35 +02:00
Raphael Michel e15e7a5877 Check-in API: Return 400 instead of 404 on checking in unpaid orders 2019-04-23 17:18:16 +02:00
Raphael Michel e7384f7e85 Check-in API: require_attention and ignore_status 2019-04-23 17:06:24 +02:00
Raphael Michel 840b30c3c2 Linkify email addresses 2019-04-23 17:06:24 +02:00
Martin Gross 1adabec989 Fix test: Price override shows old price as <del> 2019-04-23 15:37:51 +02:00
Martin Gross 171bea59df Show strikethrough price when voucher is granting discount 2019-04-23 14:26:21 +02:00
Martin Gross 3c4b086992 Show strikethrough original_price when redeeming voucher 2019-04-23 11:55:31 +02:00
Raphael Michel 6a4e6e227c Fix isort issue 2019-04-23 11:19:19 +02:00
Raphael Michel 9c3abc5338 More precise log message for skipped attachments 2019-04-23 11:18:03 +02:00
Raphael Michel 91b2d7989a Update from Weblate (#1261)
Update from Weblate
2019-04-23 10:55:30 +02:00
Raphael Michel c5a80e6daf Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (97 of 97 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate
2019-04-23 08:55:15 +00:00
Raphael Michel 37ce9fa9af Translated on translate.pretix.eu (German)
Currently translated at 100.0% (97 of 97 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2019-04-23 08:55:14 +00:00
Raphael Michel 64fe3d772c Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3060 of 3060 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-04-23 08:55:14 +00:00
Raphael Michel 5c82781fcc Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3060 of 3060 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-04-23 08:54:56 +00:00
Raphael Michel 0d70e3c8e3 Specify minor version of urllib3 2019-04-23 10:50:59 +02:00
Raphael Michel 85a7f0c0cc Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-04-23 10:50:48 +02:00
Raphael Michel 6d0e1097e6 Update from Weblate (#1257)
Update from Weblate
2019-04-23 10:50:10 +02:00
David100mark c557087252 Translated on translate.pretix.eu (French)
Currently translated at 77.3% (2366 of 3059 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/

powered by weblate
2019-04-23 08:49:35 +00:00
David100mark 62796cdc5f Translated on translate.pretix.eu (French)
Currently translated at 77.2% (2362 of 3059 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/

powered by weblate
2019-04-23 08:49:35 +00:00
David100mark bbe5f9bd98 Translated on translate.pretix.eu (French)
Currently translated at 76.1% (2329 of 3059 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/

powered by weblate
2019-04-23 08:49:35 +00:00
Maarten van den Berg 003ccd83bf Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3059 of 3059 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-04-23 08:49:35 +00:00
Maarten van den Berg f8f6dc4a51 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3059 of 3059 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-04-23 08:49:35 +00:00
Raphael Michel cddf716784 Translated on translate.pretix.eu (German (informal))
Currently translated at 99.9% (3057 of 3059 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-04-23 08:49:35 +00:00
Raphael Michel ee495f2777 Add property SubEvent.is_public 2019-04-23 10:46:09 +02:00
Raphael Michel 5bdc9011c1 Widget: Specific wording for mobing back to subevents 2019-04-23 10:37:25 +02:00
Raphael Michel c6ea30ec1e Widget: Handle resize events 2019-04-23 10:35:07 +02:00
Raphael Michel f9341b4d47 Downgrade urllib3 2019-04-23 10:15:01 +02:00
Raphael Michel 2205e57650 Fail consistently on invalid payment providers 2019-04-23 09:47:55 +02:00
Raphael Michel ad8fdd6935 Ignore quota errors during order creation 2019-04-23 09:47:44 +02:00
Raphael Michel 02e936ee7a Fix #522 -- Do not allow any orders after the last date of payments 2019-04-23 09:46:34 +02:00
Raphael Michel 45a6923220 Refs #522 -- Do not allow to create orders after the last date of payments 2019-04-23 09:41:01 +02:00
Raphael Michel e4417305a2 Fix updatestyles not being sent to background queue 2019-04-18 17:44:14 +02:00
Raphael Michel bc5d0bea00 updatestyles: Prioritize future events over past ones 2019-04-18 17:27:34 +02:00
Raphael Michel dbce9b0395 Allow error pages to be embedded in frames (to ease widget troubleshooting) 2019-04-18 17:19:42 +02:00
Martin Gross 2eb88840bd Original price for variations (#1258)
* Original price for variations

* Documentation

* API-GET

* Fix existing tests to accomodate new attribute

* Test for variation's original_price on API
2019-04-18 16:13:49 +02:00
Martin Gross 4838835b1b Remove debug-toolbar template override 2019-04-18 12:21:42 +02:00
Raphael Michel ab452bd9e3 Fix typo 2019-04-18 09:50:07 +02:00
Raphael Michel ae298bddb8 Make FakeRedis play nice with metrics 2019-04-18 09:17:55 +02:00
Raphael Michel 9ad4607d26 Move ticket cache invalidation to background task 2019-04-18 09:17:01 +02:00
Raphael Michel b3684377cd Fix crash in item validation
Fixes Sentry PRETIXEU-10B
2019-04-17 15:40:25 +02:00
Raphael Michel 441badfdbd Bank transfer: Move ack field 2019-04-17 15:38:26 +02:00
Raphael Michel 0d242a0304 Fix internal error during validation
Sentry PRETIXEU-10A
2019-04-17 15:21:42 +02:00
Raphael Michel 2fac8592d4 Add modern invoice renderer 2019-04-17 15:08:58 +02:00
Raphael Michel 58b1a2f115 Fix timezone handling in widget 2019-04-17 14:42:00 +02:00
Raphael Michel 420d44e909 Fix #1170 -- E-mail address in check-in list 2019-04-17 12:12:07 +02:00
Raphael Michel e0063fce52 Allow superusers to inspect payments and refunds 2019-04-17 10:15:14 +02:00
Raphael Michel 21ef6c7950 Update framework classifier 2019-04-17 10:07:02 +02:00
Sohalt 651f429ffb Fix #1247 -- Allow team invites to be resent (#1250)
* Fix #1247 -- Allow team invites to be resent

* Test resending invalid invites

* Fix tooltip

* Fix test

* Handle invalid types for pk parameter

* Style button
2019-04-16 16:39:31 +02:00
Raphael Michel 66dd7c448b Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-04-16 13:35:36 +02:00
Raphael Michel e9b4205145 Fix translation of widget headlines 2019-04-16 13:35:07 +02:00
Raphael Michel 6dedea1025 Items API: Note that tax_rate is read-only 2019-04-16 13:35:07 +02:00
Raphael Michel 348ed4e909 Merge pull request #1244 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-04-16 13:34:26 +02:00
Maarten van den Berg 091b3358e4 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (96 of 96 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate
2019-04-16 05:00:07 +00:00
Maarten van den Berg 186e2a6b9a Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (96 of 96 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2019-04-16 05:00:06 +00:00
Maarten van den Berg 198b90972c Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3057 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-04-16 05:00:06 +00:00
Maarten van den Berg 4989b6235c Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3057 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-04-16 05:00:05 +00:00
mussol 4cfebab11c Translated on translate.pretix.eu (Catalan)
Currently translated at 35.1% (1073 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ca/

powered by weblate
2019-04-15 13:47:00 +00:00
Martin Gross fe944ec643 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3057 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-04-15 13:47:00 +00:00
Martin Gross 9d92c7b10f Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3057 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-04-15 13:47:00 +00:00
Maarten van den Berg 3b810a3a76 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3057 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-04-15 13:47:00 +00:00
Maarten van den Berg 7860417177 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 99.4% (3038 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-04-15 13:47:00 +00:00
Maarten van den Berg 1438edb3c8 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3057 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-04-15 13:47:00 +00:00
mussol a17720062b Translated on translate.pretix.eu (Catalan)
Currently translated at 31.8% (972 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ca/

powered by weblate
2019-04-15 13:47:00 +00:00
mussol 37ab45b352 Translated on translate.pretix.eu (Catalan)
Currently translated at 31.6% (966 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ca/

powered by weblate
2019-04-15 13:47:00 +00:00
mussol 6be212df8c Translated on translate.pretix.eu (Catalan)
Currently translated at 31.1% (952 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ca/

powered by weblate
2019-04-15 13:47:00 +00:00
mussol b4e85780f4 Translated on translate.pretix.eu (Catalan)
Currently translated at 30.0% (917 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ca/

powered by weblate
2019-04-15 13:47:00 +00:00
mussol a9732c4788 Translated on translate.pretix.eu (Catalan)
Currently translated at 30.0% (917 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ca/

powered by weblate
2019-04-15 13:47:00 +00:00
mussol 273316be25 Translated on translate.pretix.eu (Catalan)
Currently translated at 29.4% (900 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ca/

powered by weblate
2019-04-15 13:47:00 +00:00
Maarten van den Berg 0f3b269931 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 98.9% (3023 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-04-15 13:47:00 +00:00
Maarten van den Berg 4462054d0e Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3057 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-04-15 13:47:00 +00:00
Raphael Michel ec53022cc8 Do not call task synchronously inside task (celery doesn't allow it any more) 2019-04-15 15:46:37 +02:00
Raphael Michel 0b65b18459 Send emails in an TransactionAwareTask 2019-04-15 15:22:58 +02:00
Raphael Michel 2fac03f47b Add a test case for free orders 2019-04-15 15:14:35 +02:00
Raphael Michel 750d5eda48 Do not mark free orders as paid that require approval 2019-04-15 15:12:26 +02:00
Raphael Michel f2cd9a2002 Fix logic bug in attachment size check 2019-04-15 12:58:36 +02:00
Raphael Michel 874b38db17 Mark order as paid immediately 2019-04-15 12:58:20 +02:00
Raphael Michel 0f58e1c396 CSV import: Do not skip rows without a reference 2019-04-08 17:55:28 +02:00
Raphael Michel 36e0afc09e Further improvements to the print stylesheet 2019-04-08 17:42:06 +02:00
Raphael Michel 7164124a70 Display category description in add-on step 2019-04-08 15:23:40 +02:00
Raphael Michel 887d8832c0 Improve print CSS of order details 2019-04-07 18:12:12 +02:00
Raphael Michel beb144f9a0 Fix API log cleanup 2019-04-07 15:31:35 +02:00
Raphael Michel 6d1dea7922 Upgrade to Django 2.2 and modern DRF and py.test (#1246)
* Upgrade django and stuff

* Update to Django 2.2 and recent versions of similar packages

* Provide explicit orderings to all models used in paginated queries

* Resolve naive datetime warnings in test suite

* Deal with deprecation warnings

* Fix sqlparse version
2019-04-07 14:09:49 +01:00
Raphael Michel cb531a7a6a Cut test time by 65% by caching templates and not compiling sass 2019-04-07 13:53:59 +02:00
Raphael Michel d5820d74d3 Fix #1025 -- Python 3.7 support (#1245)
* Fix #1025 -- Python 3.7 support

* Upgrade redis-py

* Travis: xenial

* Fix version specifier
2019-04-06 22:58:36 +01:00
Raphael Michel b686978074 Add order lifecycle signals 2019-04-06 15:05:39 +02:00
Raphael Michel c372bffc57 Fix tests on PostgreSQL 2019-04-05 16:17:57 +02:00
Raphael Michel 282c6108bf Remove duplicate test 2019-04-05 15:32:25 +02:00
Raphael Michel f2437c7ff7 Correcly read bytesfield 2019-04-05 15:04:47 +02:00
Raphael Michel dd0b6e6647 Adjust test to internal type change 2019-04-05 14:59:05 +02:00
Raphael Michel f3128591d8 More flexible response content handling 2019-04-05 14:54:36 +02:00
Raphael Michel d395db8142 Box office payments: Always display device and receipt ID 2019-04-05 14:40:58 +02:00
Raphael Michel 0c82e92882 REST API: Add support for idempotency keys 2019-04-05 14:21:51 +02:00
Raphael Michel db0c13a3c2 REST API: Order creation: Allow to set payment_date 2019-04-05 08:55:57 +02:00
Raphael Michel 19a2f4163a Add a few permission tests 2019-04-04 18:17:56 +02:00
Raphael Michel 76526465c0 Fix a test failure in test_items 2019-04-04 18:14:27 +02:00
Raphael Michel d0d0f9aa4c Fix logic flaw in cart position deletion 2019-04-04 17:18:12 +02:00
Martin Gross 482f6b1eb8 Fix Item/Question tests to also include obligatory items[] as imposed by b931d27486 2019-04-04 16:12:20 +02:00
Raphael Michel 327418299a Cart view: Make questions a little bit less bold 2019-04-04 14:22:36 +02:00
Raphael Michel 5dfd1e6337 Prefill attendee name/email of first ticket with contact email and invoice recipient 2019-04-04 14:13:08 +02:00
Raphael Michel bc01124584 Fix stepping back to the invoice address 2019-04-04 14:12:51 +02:00
Raphael Michel c0df418265 Make sure package pinning is copied to setup.py 2019-04-04 13:45:07 +02:00
Martin Gross af06f6fc38 Pin pytest-xdist to 1.27.*, as 1.28.0++ requires pytest>=4.4.0 2019-04-04 10:24:59 +02:00
Raphael Michel 4c0e8f69ea Cancellation: Do not display refund notices if not required 2019-04-04 09:57:57 +02:00
Raphael Michel 243e4ac4c8 Allow not to ask for invoice addresses on free orders 2019-04-04 09:57:57 +02:00
Raphael Michel b931d27486 Solve cart deletion issues once and for all 2019-04-04 09:57:57 +02:00
Raphael Michel 2810e2a760 CartManager: Do not try to extend positions while they are being removed 2019-04-04 09:57:57 +02:00
Martin Gross 04465393b2 Set explicit description for Stripe Charges 2019-04-03 19:30:56 +02:00
Raphael Michel 4c9032f2a8 Bump version to 2.6.0 2019-04-03 16:02:39 +02:00
Raphael Michel cae2bb944a Merge pull request #1243 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-04-03 15:02:23 +01:00
Raphael Michel 724e745b8d Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3057 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-04-03 14:02:01 +00:00
Raphael Michel f4cead1c20 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3057 of 3057 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-04-03 13:26:15 +00:00
Raphael Michel 7cab1924bb Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-04-03 15:19:57 +02:00
Raphael Michel 641148fecc Merge pull request #1239 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-04-03 14:19:23 +01:00
mussol 9b3860e5fd Translated on translate.pretix.eu (Catalan)
Currently translated at 27.5% (839 of 3047 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ca/

powered by weblate
2019-04-03 11:13:19 +00:00
mussol cb9d4c10df Translated on translate.pretix.eu (Catalan)
Currently translated at 22.0% (669 of 3047 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ca/

powered by weblate
2019-04-03 11:13:19 +00:00
oocf 84105b9585 Translated on translate.pretix.eu (Spanish)
Currently translated at 100.0% (96 of 96 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/es/

powered by weblate
2019-04-03 11:13:19 +00:00
oocf 3f38caeb24 Translated on translate.pretix.eu (Spanish)
Currently translated at 99.3% (3026 of 3047 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-04-03 11:13:19 +00:00
mussol eae552e474 Translated on translate.pretix.eu (Catalan)
Currently translated at 21.1% (643 of 3047 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ca/

powered by weblate
2019-04-03 11:13:19 +00:00
mussol f27c10c2ac Translated on translate.pretix.eu (Catalan)
Currently translated at 8.8% (267 of 3047 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ca/

powered by weblate
2019-04-03 11:13:19 +00:00
Raphael Michel abd237b969 Checkout redirection: Respect cart_namespace 2019-04-03 13:12:49 +02:00
Raphael Michel 99c61c9060 Orders API: Add a missing sorting method to the documentation 2019-04-03 11:18:13 +02:00
Raphael Michel 246f307e21 Pin version of pillow (incompatibility with reportlab) 2019-04-02 11:31:01 +02:00
Raphael Michel 1f672e7df2 Fix incorrect test 2019-04-02 11:30:47 +02:00
Raphael Michel b261a2041a Actually set the revoked flag 2019-04-02 09:44:31 +02:00
Raphael Michel 2d37c6d94d Make device token revokation more explicit 2019-04-02 09:36:07 +02:00
Raphael Michel e75ae80fb5 REST API: Allow to filter orders by datetime 2019-03-29 17:15:15 +01:00
Raphael Michel 73ec5bac79 Allow to set a custom error message when presale is ended 2019-03-29 16:38:47 +01:00
Raphael Michel 46166159b0 Allow to force order creation through the API 2019-03-28 18:11:06 +01:00
Raphael Michel 598693fab2 Add Chinese as a selectable language 2019-03-28 17:06:28 +01:00
Raphael Michel 2420d884fc Merge pull request #1232 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-03-28 16:06:26 +00:00
Raphael Michel f95005a8d4 Added translation on translate.pretix.eu (Catalan) 2019-03-28 16:04:15 +00:00
Raphael Michel e773096df3 Added translation on translate.pretix.eu (Catalan) 2019-03-28 16:03:59 +00:00
yichengsd c42905421d Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 100.0% (96 of 96 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/zh_Hans/

powered by weblate
2019-03-28 15:58:20 +00:00
Alvaro Enrique Ruano 46c2e28def Translated on translate.pretix.eu (Spanish)
Currently translated at 99.0% (3018 of 3047 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-03-28 15:58:20 +00:00
yichengsd 07bc3df6d3 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 99.8% (3041 of 3047 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-28 15:58:20 +00:00
Maarten van den Berg 2992c4c48a Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (96 of 96 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate
2019-03-28 15:58:20 +00:00
Maarten van den Berg c53718381e Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3047 of 3047 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-03-28 15:58:20 +00:00
Maarten van den Berg 98e5f0b95d Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 71.9% (69 of 96 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate
2019-03-28 15:58:20 +00:00
Maarten van den Berg 7f11f06f3f Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (96 of 96 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2019-03-28 15:58:20 +00:00
Raphael Michel 949057a9cc Allow to persist filter attributes in session 2019-03-28 16:58:05 +01:00
Raphael Michel edd643cc32 Event index: Filter subevent list as well 2019-03-28 16:54:21 +01:00
Raphael Michel 5f15ebc46f Fix TypeError in offset calculation
sentry issue PRETIXEU-ZB
2019-03-27 18:12:49 +01:00
Raphael Michel 3415fd947a Hotfix: Redirect with a / 2019-03-27 17:46:14 +01:00
Raphael Michel a70a42c273 Hotfix: Do not use absolute URLs 2019-03-27 17:02:22 +01:00
Raphael Michel 697cdfd5c9 Allow to redirect to checkout directly after adding a product to the cart 2019-03-27 16:45:15 +01:00
Raphael Michel d8a7de8b23 Allow to filter subevents by attributes in query parameters 2019-03-27 16:15:16 +01:00
Raphael Michel 9f7f0e74ff Fix arrow position in month button 2019-03-27 16:15:16 +01:00
Martin Gross 7ef289da45 Minor JSON spelling mistakes 2019-03-27 15:41:56 +01:00
Raphael Michel e82bc732a3 Docs: Fix spelling issues 2019-03-27 12:08:22 +01:00
Raphael Michel 4636ccac3b Add signals html_page_header, sass_preamble, sass_postamble 2019-03-27 09:14:51 +01:00
Raphael Michel e3518bfb4b Fix date-dependent test 2019-03-26 10:20:26 +01:00
Raphael Michel b2471169af Bank transfer: Improve error message 2019-03-26 09:46:40 +01:00
Raphael Michel 487418678c Banktransfer: Workaround for OrderPayment.MultipleObjectsReturned
Fix sentry issue PRETIXEU-Z7
2019-03-26 09:44:26 +01:00
Raphael Michel d4795868d6 Correcly cancel payments when starting a new one 2019-03-26 09:41:03 +01:00
Raphael Michel 45af18a23d Work around SubEvent.DoesNotExist in refresh_quota_caches
Fix PRETIXEU-Z8
2019-03-26 09:06:34 +01:00
Raphael Michel a6de586b80 Make ItemBundle.designated_price non-nullable 2019-03-23 23:42:58 +01:00
Raphael Michel e6859fa82b Docs: Allow "subnet" in word list 2019-03-23 15:25:39 +01:00
Raphael Michel 2d5e14e517 Fix error in tests 2019-03-23 15:06:29 +01:00
Raphael Michel 7219575b84 Fix #1066 -- Change installation tutorials to PostgreSQL
This is the recommended database server so this documentation should use that
2019-03-23 15:04:12 +01:00
Raphael Michel 991e4127f6 Refs #654 -- Allow to update invoice addresses 2019-03-23 13:51:25 +01:00
Raphael Michel 420649e10a Refs #654 -- REST API: Allow to resend order link 2019-03-23 13:33:57 +01:00
Raphael Michel 0d02e2fe8c Refs #654 -- REST API: Allow to cycle order secrets 2019-03-23 13:25:23 +01:00
Raphael Michel afdba9f268 Refs #654 -- REST API: Allow invoice creation 2019-03-23 13:25:21 +01:00
Raphael Michel 394f7e04c3 Docs: Add a guide on building product structures 2019-03-23 13:06:13 +01:00
Martin Gross c3a5cef051 Merge pull request #1227 from felixrindt/patch-6
Fix doc typo
2019-03-23 11:25:53 +01:00
Felix Rindt 47b7bcbfca Fix doc typo 2019-03-23 11:15:35 +01:00
Raphael Michel 2cd1345035 Adjust item API tests 2019-03-23 00:43:02 +01:00
Raphael Michel c24ce551ba Refs #654 -- REST API: Allow PATCH for some order fields 2019-03-23 00:08:45 +01:00
Raphael Michel 0bb6e460e8 Fix #1195 -- REST API: Fix wrong data type of variation price 2019-03-23 00:08:45 +01:00
Raphael Michel 26257f0829 Refs #1195 -- Fix missing null annotations in the API 2019-03-23 00:08:45 +01:00
Raphael Michel 6badb342bf Merge pull request #1226 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-03-22 15:02:47 +00:00
Raphael Michel 865a70d5d5 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (96 of 96 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate
2019-03-22 15:00:25 +00:00
Raphael Michel df1c0d4f3a Translated on translate.pretix.eu (German)
Currently translated at 100.0% (96 of 96 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2019-03-22 15:00:25 +00:00
Raphael Michel adb982c451 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3047 of 3047 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-03-22 15:00:24 +00:00
Raphael Michel 94ba26d841 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3047 of 3047 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-03-22 15:00:05 +00:00
Raphael Michel 45d5487eb5 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-03-22 15:50:33 +01:00
Raphael Michel 38f5f75a1b Add deprecation note to the PayPal documentation 2019-03-22 15:49:44 +01:00
Raphael Michel 90f881c48e Fix #1001 -- Add product bundles (#1041)
* Data model + Editor

* Cart and order management

* Rebase migrations

* Fix typos, add tests on cart handling

* Add tests for checkout and quotas

* Add API endpoints

* Validation of settings

* Front page tax display

* Voucher handling

* Widget foo

* Show correct net pricing

* Front page tests

* reverse charge foo

* Allow to require bundling

* Fix test failure on postgres
2019-03-22 14:48:48 +00:00
Raphael Michel c4b18a4c81 Force widget data to be a dictionary 2019-03-22 12:16:20 +01:00
Raphael Michel 8e2ef604f7 Widget API: Fix parameters 2019-03-22 11:37:12 +01:00
Raphael Michel 970e4f6d52 Merge pull request #1225 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-03-22 09:43:56 +00:00
Raphael Michel 59c9731bae Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (94 of 94 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate
2019-03-22 09:43:24 +00:00
Raphael Michel 8afd09a647 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3027 of 3027 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-03-22 09:43:24 +00:00
Raphael Michel fa375950a7 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3027 of 3027 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-03-22 09:43:23 +00:00
Raphael Michel ccdfa716c0 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (94 of 94 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2019-03-22 09:42:51 +00:00
Raphael Michel 08ffa17e01 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-03-22 10:22:25 +01:00
Raphael Michel 7f8c91ec9d Merge pull request #1220 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-03-22 09:20:24 +00:00
yichengsd dde3a53e09 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 100.0% (3019 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-22 09:18:09 +00:00
徐志能 73bc3259e8 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 100.0% (3019 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-22 09:18:09 +00:00
徐志能 34767a2029 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 99.9% (3018 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-22 09:18:09 +00:00
Vitor Reis 85bd1a0d44 Translated on translate.pretix.eu (Portuguese (Brazil))
Currently translated at 98.6% (70 of 71 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pt_BR/

powered by weblate
2019-03-22 09:18:09 +00:00
Lorhan Sohaky 1ad4b6019e Translated on translate.pretix.eu (Portuguese (Brazil))
Currently translated at 98.6% (70 of 71 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pt_BR/

powered by weblate
2019-03-22 09:18:09 +00:00
yichengsd a778675857 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 100.0% (71 of 71 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/zh_Hans/

powered by weblate
2019-03-22 09:18:09 +00:00
Lorhan Sohaky e5a980aef4 Translated on translate.pretix.eu (Portuguese (Brazil))
Currently translated at 16.1% (487 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_BR/

powered by weblate
2019-03-22 09:18:09 +00:00
Vitor Reis e8338a2941 Translated on translate.pretix.eu (Portuguese (Brazil))
Currently translated at 16.1% (487 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_BR/

powered by weblate
2019-03-22 09:18:09 +00:00
徐志能 289bbf84a9 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 96.1% (2901 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-22 09:18:09 +00:00
Raphael Michel f13dbb85cb Fix #1224 -- Cache widget responses for a short time 2019-03-22 09:18:04 +00:00
Raphael Michel 49e706a580 Fix #878 -- Add multi-event widget 2019-03-22 09:18:04 +00:00
Martin Gross ca7d55082b Refs #654 -- Add writable API for subevents (#1217)
- [x] Write operations for subevents
- [x] Tests
- [x] Documentation
2019-03-21 20:40:59 +00:00
Raphael Michel 516fab52da Do not send payment reminders to orders pending approval 2019-03-20 23:09:13 +01:00
Raphael Michel ddf6af278c Widget: Return a useful error message on disabled events 2019-03-18 20:42:47 +01:00
Raphael Michel 07b4b8c473 Allow to add a custom text above the invoice address 2019-03-18 17:01:23 +01:00
Raphael Michel a0af0cfb06 Merge pull request #1218 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-03-18 17:00:00 +01:00
Raphael Michel 3eb86a371a Merge pull request #1216 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-03-18 16:54:38 +01:00
Raphael Michel ae7175c00b Translated on translate.pretix.eu (Greek)
Currently translated at 0.6% (17 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-03-18 15:54:26 +00:00
徐志能 4286176e73 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 80.6% (2433 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-18 15:54:26 +00:00
徐志能 0f53ab67df Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 80.3% (2424 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-18 15:54:26 +00:00
徐志能 0d6db082ca Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 77.5% (2339 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-18 15:54:26 +00:00
oocf 2a9b8baa98 Translated on translate.pretix.eu (Spanish)
Currently translated at 100.0% (3019 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-03-18 15:54:26 +00:00
徐志能 6bdaab5319 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 63.3% (1911 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-18 15:54:26 +00:00
oocf 489d5e3d01 Translated on translate.pretix.eu (Spanish)
Currently translated at 100.0% (3019 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-03-18 15:54:26 +00:00
Alvaro Enrique Ruano 86e2cf2786 Translated on translate.pretix.eu (Spanish)
Currently translated at 100.0% (3019 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-03-18 15:54:26 +00:00
徐志能 f075dbc78e Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 59.1% (1784 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-18 15:54:26 +00:00
Serge Bazanski 10500ee6a9 Translated on translate.pretix.eu (Polish)
Currently translated at 100.0% (71 of 71 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pl/

powered by weblate
2019-03-18 15:54:26 +00:00
Serge Bazanski 6c766d872d Translated on translate.pretix.eu (Polish)
Currently translated at 15.7% (475 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pl/

powered by weblate
2019-03-18 15:54:26 +00:00
Serge Bazanski c8b1206e61 Translated on translate.pretix.eu (Polish)
Currently translated at 90.1% (64 of 71 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pl/

powered by weblate
2019-03-18 15:54:26 +00:00
Serge Bazanski 424d1489bf Translated on translate.pretix.eu (Polish)
Currently translated at 15.7% (475 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pl/

powered by weblate
2019-03-18 15:54:26 +00:00
Serge Bazanski b3e567a188 Translated on translate.pretix.eu (Polish)
Currently translated at 50.7% (36 of 71 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pl/

powered by weblate
2019-03-18 15:54:26 +00:00
Serge Bazanski 66e42f66e5 Translated on translate.pretix.eu (Polish)
Currently translated at 15.6% (472 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pl/

powered by weblate
2019-03-18 15:54:26 +00:00
Serge Bazanski 786fbc6e29 Translated on translate.pretix.eu (Polish)
Currently translated at 15.5% (11 of 71 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pl/

powered by weblate
2019-03-18 15:54:26 +00:00
Serge Bazanski f2ff5d7510 Translated on translate.pretix.eu (Polish)
Currently translated at 15.5% (469 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pl/

powered by weblate
2019-03-18 15:54:26 +00:00
徐志能 0bcc4de2de Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 53.5% (1615 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-18 15:54:26 +00:00
Raphael Michel 586e7cc997 Add sales channel to order export 2019-03-18 16:54:08 +01:00
Raphael Michel bf33cc1499 Do not uppercase labels in Greek invoices 2019-03-18 16:53:48 +01:00
Raphael Michel faff7b4166 Translated on translate.pretix.eu (Greek)
Currently translated at 0.6% (17 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-03-18 15:52:14 +00:00
徐志能 44263a17e6 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 80.6% (2433 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-18 15:52:14 +00:00
徐志能 87b4d1aaed Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 80.3% (2424 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-18 10:34:58 +00:00
徐志能 0d12c1589a Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 77.5% (2339 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-18 10:34:58 +00:00
oocf 96ddd8ce4e Translated on translate.pretix.eu (Spanish)
Currently translated at 100.0% (3019 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-03-18 10:34:58 +00:00
徐志能 dc2da88220 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 63.3% (1911 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-18 10:34:58 +00:00
oocf b8796b0632 Translated on translate.pretix.eu (Spanish)
Currently translated at 100.0% (3019 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-03-18 10:34:58 +00:00
Alvaro Enrique Ruano 961b1d4efa Translated on translate.pretix.eu (Spanish)
Currently translated at 100.0% (3019 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-03-18 10:34:58 +00:00
徐志能 ac674565cf Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 59.1% (1784 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-18 10:34:58 +00:00
Serge Bazanski 301e9d1d48 Translated on translate.pretix.eu (Polish)
Currently translated at 100.0% (71 of 71 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pl/

powered by weblate
2019-03-18 10:34:58 +00:00
Serge Bazanski 81e08021db Translated on translate.pretix.eu (Polish)
Currently translated at 15.7% (475 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pl/

powered by weblate
2019-03-18 10:34:58 +00:00
Serge Bazanski da1beac49c Translated on translate.pretix.eu (Polish)
Currently translated at 90.1% (64 of 71 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pl/

powered by weblate
2019-03-18 10:34:58 +00:00
Serge Bazanski a81fc5bfe0 Translated on translate.pretix.eu (Polish)
Currently translated at 15.7% (475 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pl/

powered by weblate
2019-03-18 10:34:58 +00:00
Serge Bazanski eb3ec0f99a Translated on translate.pretix.eu (Polish)
Currently translated at 50.7% (36 of 71 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pl/

powered by weblate
2019-03-18 10:34:58 +00:00
Serge Bazanski 7e98846315 Translated on translate.pretix.eu (Polish)
Currently translated at 15.6% (472 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pl/

powered by weblate
2019-03-18 10:34:58 +00:00
Serge Bazanski 22f9178617 Translated on translate.pretix.eu (Polish)
Currently translated at 15.5% (11 of 71 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pl/

powered by weblate
2019-03-18 10:34:58 +00:00
Serge Bazanski ef73abc3f6 Translated on translate.pretix.eu (Polish)
Currently translated at 15.5% (469 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pl/

powered by weblate
2019-03-18 10:34:58 +00:00
徐志能 ac6e6a526e Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 53.5% (1615 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-18 10:34:58 +00:00
Raphael Michel 8185c6a0d6 Delete all cart positions when disabling test mode 2019-03-18 11:34:48 +01:00
Raphael Michel a7b294fc61 Add "searchable" to spell-check wordlist 2019-03-18 10:00:45 +01:00
Raphael Michel b81f07b237 Bring documentation up to date 2019-03-17 21:33:19 +01:00
Raphael Michel 67bdb0ec1f Quick setup: Enable products on all sales channels 2019-03-17 20:31:10 +01:00
Raphael Michel 7b6ff01740 That wasn't an efficient bugfix… 2019-03-15 12:19:39 +01:00
Raphael Michel 83f5182db2 Fix a bug in polish translation 2019-03-15 12:03:23 +01:00
Raphael Michel ee2050b8f9 Do not ever ask people to select a payment method for 0.00 2019-03-15 11:40:30 +01:00
Raphael Michel 185fc6c73d Fix a test incompatibility 2019-03-15 11:31:32 +01:00
Raphael Michel a21ea34944 Bank transfer: Properly deal with fees of aborted payment methods 2019-03-15 11:31:32 +01:00
Raphael Michel 130ba3c217 Merge pull request #1215 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-03-15 11:30:09 +01:00
Raphael Michel dd39131942 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (71 of 71 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate
2019-03-15 07:55:50 +00:00
Raphael Michel 295ad9e9c3 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (71 of 71 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2019-03-15 07:55:50 +00:00
oocf a0969dc7fa Translated on translate.pretix.eu (Spanish)
Currently translated at 99.9% (3018 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-03-15 07:55:50 +00:00
Serge Bazanski 81a2e0c71c Translated on translate.pretix.eu (Polish)
Currently translated at 15.5% (467 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pl/

powered by weblate
2019-03-15 07:55:50 +00:00
徐志能 71f69c9afb Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 50.2% (1517 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-15 07:55:50 +00:00
徐志能 cfff6f1605 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 50.2% (1517 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-15 07:55:50 +00:00
Raphael Michel 84ccaed94a Fix German strings
How did that happen?
2019-03-15 08:55:35 +01:00
Raphael Michel ec61e07ab6 Merge pull request #1214 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-03-14 17:51:31 +01:00
Raphael Michel 4d5fb67b02 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3019 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-03-14 16:51:12 +00:00
Raphael Michel c885807fa5 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3019 of 3019 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-03-14 16:48:11 +00:00
Raphael Michel 88ec54809a Added translation on translate.pretix.eu (Polish (informal)) 2019-03-14 16:46:26 +00:00
Raphael Michel 5f96152d57 Added translation on translate.pretix.eu (Polish (informal)) 2019-03-14 16:46:17 +00:00
Raphael Michel a9b08660c6 Added translation on translate.pretix.eu (Polish) 2019-03-14 16:44:24 +00:00
Raphael Michel 68e901f76d Added translation on translate.pretix.eu (Polish) 2019-03-14 16:44:12 +00:00
Raphael Michel e10083379c Merge pull request #1212 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-03-14 15:38:47 +01:00
pretix Translation Platform d705102cbb Merge branch 'master' of https://github.com/pretix/pretix 2019-03-14 15:37:44 +01:00
Raphael Michel 122fda27c4 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-03-14 15:35:29 +01:00
Raphael Michel b83752005a Voucher: Do not show URL if subevent is required 2019-03-14 15:35:01 +01:00
Raphael Michel 7fc926f23e Bank transfer: Send email for underpayments 2019-03-14 15:35:01 +01:00
Raphael Michel d90686f352 Bank transfer: Ask people if they understood how it works 2019-03-14 15:35:01 +01:00
Raphael Michel 8523f4dfa2 Do not print canceled add-ons on orders 2019-03-14 15:35:01 +01:00
徐志能 9c13676349 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 39.9% (1201 of 3010 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-14 14:34:52 +00:00
Raphael Michel 19ee8e9802 Update from Weblate (#1201) 2019-03-14 15:34:47 +01:00
徐志能 bbe5ff249b Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 38.6% (1161 of 3010 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-14 08:43:14 +00:00
Maarten van den Berg 7470cda17f Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (69 of 69 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate
2019-03-14 08:43:14 +00:00
Maarten van den Berg a4d50ae4c5 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (69 of 69 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2019-03-14 08:43:14 +00:00
Maarten van den Berg e0d7a9d2da Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3010 of 3010 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-03-14 08:43:14 +00:00
Maarten van den Berg 2159a65643 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3010 of 3010 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-03-14 08:43:14 +00:00
Alvaro Enrique Ruano 3f05c92602 Translated on translate.pretix.eu (Spanish)
Currently translated at 100.0% (3010 of 3010 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-03-14 08:43:14 +00:00
yichengsd d764cdb338 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 30.8% (926 of 3010 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-14 08:43:14 +00:00
yichengsd 7b7bd67ae9 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 30.7% (924 of 3010 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-14 08:43:14 +00:00
徐志能 dc502618dd Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 30.7% (924 of 3010 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-14 08:43:14 +00:00
徐志能 cb6b4c96f8 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 24.8% (746 of 3010 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-14 08:43:14 +00:00
徐志能 de5f094f73 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 24.4% (733 of 3010 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-14 08:43:14 +00:00
徐志能 6b85e89e62 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 24.3% (730 of 3010 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-14 08:43:14 +00:00
Alvaro Enrique Ruano 8cfc8bc152 Correct documentation for payment forms (#1209) 2019-03-14 09:43:05 +01:00
Raphael Michel 27990b3fbb Prevent users from setting up dependencies for check-in questions 2019-03-13 17:10:23 +01:00
Raphael Michel 307ee36e52 Do not show invisible questions in order overview 2019-03-13 17:06:49 +01:00
Raphael Michel f95e8f374d Allow dependencies between questions (#1202)
- [x] data model
- [x] api
- [x] backend editor
- [x] backend validation logic
- [x] frontend display logic
- [x] frontend validation logic
- [x] test checkout step
- [x] test modify order in frontend
- [x] test modify order in backend
- [x] validation tests
- [x] correctly evaluate dependency tree in frontend?
- [x] copy events
2019-03-13 16:49:20 +01:00
Raphael Michel d10cbd07a7 Delete cart positiosn during bulk deletion of subevents 2019-03-13 11:54:58 +01:00
Raphael Michel 5519643782 Voucher redemption: Show a checkbox if max_per_order=1 2019-03-13 11:46:19 +01:00
Raphael Michel 2c91a17927 Item form: Smaller description field 2019-03-13 11:26:13 +01:00
Raphael Michel 875d79536b Re-group voucher options 2019-03-13 11:24:50 +01:00
Raphael Michel 4bf0d2d229 Show voucher link in voucher detail view 2019-03-13 11:22:50 +01:00
Raphael Michel 068983004a ReportlabExportMixin: Encapsule header strings 2019-03-13 11:18:34 +01:00
Martin Gross 0365a1c68d Show SumUp payment details for boxoffice transactions 2019-03-12 14:20:45 +01:00
Raphael Michel 5024fae5ed Improve performance of bulk-generation of ticket PDFs 2019-03-12 09:53:28 +01:00
Raphael Michel affc6254a8 Fix potential XSS in questions [not a vulnerability, thanks to CSP] 2019-03-12 09:20:48 +01:00
Raphael Michel bb956c13ba Bump version to 2.6.0.dev0 2019-03-11 18:13:16 +01:00
Raphael Michel ee70104735 Bump version to 2.5.0 2019-03-11 18:12:29 +01:00
Raphael Michel 8ba38a0254 Order.meta_info_data: Expose null values as an empty dict 2019-03-11 18:12:29 +01:00
Raphael Michel 761a03abdc Merge pull request #1200 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-03-11 16:42:02 +01:00
Raphael Michel f3b63acd40 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3010 of 3010 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-03-11 15:41:46 +00:00
Raphael Michel 9eee967050 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3010 of 3010 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-03-11 15:41:24 +00:00
Raphael Michel 02aee0637a Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-03-11 16:02:41 +01:00
Raphael Michel dde99c45f3 Merge pull request #1194 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-03-11 16:02:01 +01:00
徐志能 74292535ad Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 21.2% (635 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-11 13:36:08 +00:00
徐志能 d1e3ba778d Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 10.7% (320 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-11 13:36:08 +00:00
yichengsd 475835959d Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 10.7% (320 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-11 13:36:08 +00:00
yichengsd efdeaeac83 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 100.0% (68 of 68 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/zh_Hans/

powered by weblate
2019-03-11 13:36:08 +00:00
yichengsd 56fe37dd67 Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 6.2% (186 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-11 13:36:08 +00:00
yichengsd ca07f48afd Translated on translate.pretix.eu (Chinese (Simplified))
Currently translated at 6.2% (185 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/zh_Hans/

powered by weblate
2019-03-11 13:36:08 +00:00
Raphael Michel fa706549ce Added translation on translate.pretix.eu (Chinese (Simplified)) 2019-03-11 13:36:08 +00:00
Raphael Michel 989b28c2f6 Added translation on translate.pretix.eu (Chinese (Simplified)) 2019-03-11 13:36:08 +00:00
Raphael Michel 1c84660c42 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3000 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-03-11 13:36:08 +00:00
Alvaro Enrique Ruano cf58447cd4 Translated on translate.pretix.eu (Spanish)
Currently translated at 100.0% (3000 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-03-11 13:36:08 +00:00
arabestia 305a3aaf9f Translated on translate.pretix.eu (Spanish)
Currently translated at 100.0% (3000 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-03-11 13:36:08 +00:00
Alvaro Enrique Ruano b54a8c120f Translated on translate.pretix.eu (Spanish)
Currently translated at 96.1% (2884 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-03-11 13:36:08 +00:00
Maarten van den Berg 89684c8e0f Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3000 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-03-11 13:36:08 +00:00
Maarten van den Berg c5566dfee7 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3000 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-03-11 13:36:08 +00:00
Raphael Michel 5e7ee3c047 Delete cart positions if deleting subevent
Fixes sentry issue PRETIXEU-Y4
2019-03-11 14:35:49 +01:00
Raphael Michel 815ee29a50 Sendmail: Backwards compatbility of from_log
Fixes sentry issue PRETIXEU-Y3
2019-03-11 14:34:41 +01:00
Raphael Michel 13ee691133 Banktransfer: CSV import of Mac CSV files 2019-03-11 14:30:43 +01:00
Raphael Michel 4e3dd24209 Order list: Prevent type error on empty result set 2019-03-08 13:53:18 +01:00
Raphael Michel 7ef4adeb73 Adjust to new isort version 2019-03-08 12:50:35 +01:00
Raphael Michel 7be5331da5 Show ticket code in check-in list 2019-03-08 12:50:25 +01:00
Raphael Michel 12fc02b2e4 Pagination: Remove hover effect of current page indicator 2019-03-08 12:30:13 +01:00
Raphael Michel 86b4835273 Go to order: Allow to pass an invoice number 2019-03-08 12:22:19 +01:00
Raphael Michel e53818b025 Sendmail history: Show selected items 2019-03-08 12:18:13 +01:00
Raphael Michel 206a0a28c7 Render markdown in all e-mail previews 2019-03-08 12:15:06 +01:00
Raphael Michel 461b0b639c Sendmail: Use multi-select for product selection 2019-03-08 12:14:40 +01:00
Raphael Michel 2e6f5d0f32 E-Mail rendering: Consistent markdown evaluation between preview and mail 2019-03-08 11:58:26 +01:00
Raphael Michel 12b48948e3 Add a new notification category for overpayments 2019-03-08 11:40:22 +01:00
Raphael Michel 87c7a3d26f PayPal: Even a canceled payment can still succeed 2019-03-08 11:33:03 +01:00
Raphael Michel 4c0789ac20 Fix inconsistent naming of option 2019-03-08 11:30:04 +01:00
Raphael Michel bc4e6fa549 Add new API endpoints to documentation 2019-03-06 09:39:58 +01:00
Raphael Michel 2b8949dea4 Add API for badge and ticket layout assignments 2019-03-06 09:35:08 +01:00
Raphael Michel f3ef00e3b7 Set an update_check_id even if update checks are disabled 2019-03-06 09:09:18 +01:00
Martin Gross c5499df0b4 Improve display of date/time-format in PDF-ticket preview vs. actual rendering (Z#2344558) 2019-03-05 12:10:05 +01:00
Raphael Michel 68dbfedfdf Add database-level uniqueness constraint for check-ins
We measured that this creates a ~10% performance loss on MySQL, but
believe that correctness is more important. Also, in case on concurrent
check-ins on MySQL with default transaction isolation level, this might
lead to Internal Server Errors on all but one check-ins, which is still
better than to show green.
2019-03-04 18:51:52 +01:00
Raphael Michel e70738ae0c Fix percentage bar in list of check-in lists 2019-03-04 18:44:21 +01:00
Raphael Michel 5750201bc3 Position API: search in attendee_email 2019-03-04 11:04:39 +01:00
Raphael Michel d4eac76a8d Fix template typo 2019-02-27 09:30:43 +01:00
Raphael Michel 8889607d1c Stripe: Fix test mode recognition 2019-02-27 09:12:04 +01:00
Raphael Michel 5e9e00acec Fix tests that rely on the event wizard 2019-02-26 14:19:04 +01:00
Raphael Michel 0e89d4c0f7 Fix an AttributeError introduced in 104f84b7 2019-02-26 14:18:42 +01:00
Raphael Michel 8b3ce69425 Add clone button to event list within organizer 2019-02-26 13:10:53 +01:00
Raphael Michel b20d1e8373 Add a second UI option to clone events 2019-02-26 13:10:53 +01:00
Raphael Michel c278687487 Allow creating multiple events in different tabs at the same time 2019-02-26 13:10:53 +01:00
Raphael Michel 0c45e73456 Event creation: Throw user back if validation of previous step fails 2019-02-26 13:10:53 +01:00
Raphael Michel 104f84b7a8 Log change to quota when creating an item 2019-02-26 13:10:53 +01:00
Raphael Michel ac4ecfbe69 OrderChangeManager: Fix a type error for orders without tax 2019-02-26 13:10:53 +01:00
Martin Gross 61c6cd2937 Show event date in PDF-export (Z#134372) 2019-02-23 13:47:36 +01:00
Raphael Michel 38066ca5ab Minor CSS helpers 2019-02-22 22:41:42 +01:00
Raphael Michel 373ab29701 Fix #1190 -- Voucher redemption: Default amount one if there is only one option 2019-02-22 15:41:56 +01:00
Raphael Michel 7302bba602 Add order date to CSV attendee list 2019-02-22 14:10:01 +01:00
Raphael Michel 5096121ac7 Improve QR code widget 2019-02-21 15:24:40 +01:00
Raphael Michel ca4c21a843 Show QR code of a ticket directly from order details 2019-02-21 15:23:29 +01:00
Raphael Michel 407ecdf6c5 Fix spanish translation 2019-02-20 21:02:31 +01:00
Raphael Michel 2faeee8e9c Merge pull request #1187 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-02-20 20:54:07 +01:00
arabestia e1bbf7139f Translated on translate.pretix.eu (Spanish)
Currently translated at 95.7% (2870 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-02-20 19:53:28 +00:00
oocf 64fc38a06e Translated on translate.pretix.eu (Spanish)
Currently translated at 95.7% (2870 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-02-20 19:53:27 +00:00
Alvaro Enrique Ruano 6bcf884b7a Translated on translate.pretix.eu (Spanish)
Currently translated at 95.7% (2870 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-02-20 19:53:27 +00:00
Raphael Michel d319293da8 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (3000 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-02-20 19:53:26 +00:00
Raphael Michel 832c58d288 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3000 of 3000 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-02-20 19:52:39 +00:00
Raphael Michel c251e0e7d3 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-02-20 17:52:59 +01:00
Raphael Michel 27437e065a Update from Weblate (#1184) 2019-02-20 17:52:26 +01:00
oocf 86534aa7cc Translated on translate.pretix.eu (Spanish)
Currently translated at 100.0% (68 of 68 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/es/

powered by weblate
2019-02-20 16:51:29 +00:00
oocf 379a2140c8 Translated on translate.pretix.eu (Spanish)
Currently translated at 96.0% (2843 of 2960 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-02-20 16:51:29 +00:00
Raphael Michel 67059fe323 Add a simple test mode (#1181)
- [x] Provide data model and configuration toggle
- [x] Allow to delete individual test orders
- [x] Add tests
- [x] Add a prominent warning message to the backend if test mode orders exist (even though test mode is off), as this leads to wrong statistics
- [x] Decide if and how to generate invoices for test orders as invoice numbers cannot be repeated or should not have gaps.
- [x] Decide if and how we expose test orders through the API, since our difference pull mechanism relies on the fact that orders cannot be deleted.
- [x] Decide if and how we want to couple test modes of payment providers?
- [ ] pretix.eu: Ignore test orders for billing
- [ ] Adjust payment providers: Mollie, bitpay, cash, fakepayment, sepadebit

![download](https://user-images.githubusercontent.com/64280/53009081-fe420d80-343a-11e9-8361-b8511c988598.png)
2019-02-20 17:51:26 +01:00
Martin Gross 8ffc96bf31 Return pdf_data localized to the order's locale (Z#131360) 2019-02-20 16:47:29 +01:00
Raphael Michel 58b688628e Disable logging of unknown hosts 2019-02-20 16:44:00 +01:00
Raphael Michel 3f7348717b Include pending_sum in mail notifications 2019-02-20 15:12:33 +01:00
Raphael Michel 90c8e0c172 Ensure attendee name in email renderer test 2019-02-20 15:09:36 +01:00
Raphael Michel d35ad345d7 Allow to use event meta data in email templates 2019-02-20 14:33:45 +01:00
Raphael Michel 21634369a8 Fix thumbnail scaling of portrait pictures 2019-02-20 13:50:46 +01:00
Martin Gross a2b075c0d7 Filter sensitive keys from log-messages (#1186) 2019-02-20 13:37:44 +01:00
Martin Gross 0617abe6e3 Change test eMail address to accomodate RFC2606-sensitive mailservers (Z#134234) 2019-02-20 10:03:31 +01:00
Raphael Michel 040466353c Fix order of imports 2019-02-19 15:47:47 +01:00
Raphael Michel 46b7e9467b ibanformat filter: don't fail on empty values 2019-02-19 15:01:16 +01:00
Raphael Michel 283ff3b5e5 Merge pull request #1159 from pretix-translations/weblate-pretix-pretix
Update from Weblate
2019-02-19 14:16:04 +01:00
Raphael Michel b0bb22ea38 Translated on translate.pretix.eu (Greek)
Currently translated at 0.6% (17 of 2960 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/el/

powered by weblate
2019-02-19 13:15:41 +00:00
Alvaro Enrique Ruano 334ee98318 Translated on translate.pretix.eu (Spanish)
Currently translated at 94.4% (2794 of 2960 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-02-19 12:49:40 +00:00
Alvaro Enrique Ruano c4d342029b Translated on translate.pretix.eu (Spanish)
Currently translated at 94.4% (2794 of 2960 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-02-19 12:49:40 +00:00
Alvaro Enrique Ruano bc86f9c059 Translated on translate.pretix.eu (Spanish)
Currently translated at 94.4% (2794 of 2960 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-02-19 12:49:40 +00:00
Alvaro Enrique Ruano 51107fe4fd Translated on translate.pretix.eu (Spanish)
Currently translated at 94.2% (2787 of 2960 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-02-19 12:49:40 +00:00
Martin Gross 3d65c2fd51 Migration for event.plugins non-null default 2019-02-19 13:48:32 +01:00
Alexander Schwartz 9b394b3833 Enable nl2br plugin for Markdown rendering (#1162)
The frontpage text is already markdown, and will receive its formatting via the rich_text filter.
When applying the additional linebreaksbr filter, it will add unnecessary blank lines.

I'm using the hosted pretix version. 

Test for frontpage text: 

````
Test 

* test1
* test2
````

Before (screenshot): 

---

![before](https://user-images.githubusercontent.com/3957921/52533531-5428fe00-2d35-11e9-891d-f822c3524b0e.png)

----


After (screenshot): 

----
![after](https://user-images.githubusercontent.com/3957921/52533532-568b5800-2d35-11e9-9702-4c713a110c81.png)

----
2019-02-19 12:51:33 +01:00
Martin Gross d5747084ec Fix: Make event.plugins non-Null by default 2019-02-19 12:38:32 +01:00
Raphael Michel 777772b89e Remove spaces from locale URLs 2019-02-18 15:12:45 +01:00
Raphael Michel c202286470 Fix #212 -- Different priorization of locale sources between backend and frontend 2019-02-18 15:12:05 +01:00
Raphael Michel 0c1738b9bb Refs #212 -- Do not set user locale if switched in frontend 2019-02-18 15:05:49 +01:00
Raphael Michel af607083cb Add a custom field renderer for checkout 2019-02-17 21:22:47 +01:00
Raphael Michel def7918b29 Fix wrong string interpolation in invoice generation 2019-02-17 21:22:47 +01:00
Raphael Michel 0933fc848d Order search: Fight the database optimizer to actually optimize the query 2019-02-15 11:45:06 +01:00
Raphael Michel 166f8b8a2a Fix typo in require_approval webhook 2019-02-15 08:50:36 +01:00
Raphael Michel 70fcba96a5 Add __str__ methods to more models 2019-02-14 18:50:27 +01:00
Raphael Michel 2d2d62045a Do not mark orders as paid when changed to free if they require approval 2019-02-14 18:38:33 +01:00
Raphael Michel 3988f1e2f6 Fix a typo in docs 2019-02-14 18:34:41 +01:00
Raphael Michel d3ecb92108 Remove "refunded" from state diagram 2019-02-14 18:34:37 +01:00
Raphael Michel b3debdfb55 Order list: Add filter for canceled with and without paid fee 2019-02-14 10:15:55 +01:00
Raphael Michel abb770a8e7 Prevent events from being set to None through the API 2019-02-14 10:15:55 +01:00
Raphael Michel 72a2d0da35 Search in e-mail adresses during checkin 2019-02-14 10:15:55 +01:00
Raphael Michel 937cec53f7 Optimize queries for pdf_data=true 2019-02-14 10:15:55 +01:00
Raphael Michel 6e4af5da64 Perform order search on database replica 2019-02-14 10:15:02 +01:00
Raphael Michel 7ed35e06ba Allow to configure a database replica 2019-02-14 10:14:23 +01:00
Raphael Michel 55841ea660 Make sure total is calculated as a Decimal 2019-02-12 16:27:37 +01:00
Raphael Michel 78544cdb30 Implement a strong locking check to avoid race conditions during payment 2019-02-12 16:24:32 +01:00
Martin Gross 37183aced7 Disable Autocomplete for Date/Time-fields 2019-02-12 16:16:12 +01:00
Raphael Michel a7d3cb134c Fix a token mismatch 2019-02-12 15:40:06 +01:00
Raphael Michel da8f7f163f Check-in API: Include position data 2019-02-12 15:40:06 +01:00
Raphael Michel 89d612beed Fix bug in checkinlist view 2019-02-11 16:39:50 +01:00
Raphael Michel f23de7e2c0 Order change: Allow to ignore quotas 2019-02-11 16:15:54 +01:00
Raphael Michel d073007fd7 Order change: Allow to keep price when changing items 2019-02-11 16:15:13 +01:00
Raphael Michel d9d1c83218 Optimize the check-in list view 2019-02-11 15:58:39 +01:00
Raphael Michel ae9b8bafb8 Add missing migration 2019-02-08 15:33:26 +01:00
Raphael Michel cbf5c2ec1d Fix ZeroDivisionError if a voucher tag is given to a voucher with max_usages=0
Fix PRETIXEU-V7
2019-02-08 13:59:05 +01:00
Raphael Michel 17392f3ef4 Store subevent data for invoice lines 2019-02-08 13:56:04 +01:00
Raphael Michel bf36ad009f Don't request a refund if there's actually no money involved 2019-02-08 11:27:09 +01:00
Martin Gross ca9e4823e2 Fix wrong CSV-Checkinlist link 2019-02-08 10:47:17 +01:00
Raphael Michel d505422e0f Order overview: Make table easier to read 2019-02-07 15:28:51 +01:00
Raphael Michel 33c43ce482 Add columns lines to PDF overview export 2019-02-07 15:21:17 +01:00
Raphael Michel f273cf4960 Fix misaligned PDF report 2019-02-07 15:21:12 +01:00
Raphael Michel afdf09eeb4 Merge branch 'master' of github.com:pretix/pretix 2019-02-07 15:02:14 +01:00
Raphael Michel 01e5872f61 Update jsonfallback again 2019-02-07 15:01:55 +01:00
Maximilian Hils 14cc31c810 Fix payment instruction display. (#1161) 2019-02-07 14:30:26 +01:00
Raphael Michel 2972129547 Sentry: Fix a bug leading to it ignoring *everything* 2019-02-06 11:16:38 +01:00
Raphael Michel ec4227651a Do not try to reduce voucher usage below 0 2019-02-06 10:35:54 +01:00
Raphael Michel 77950de588 Voucher bulk delete: Remove cart positions as well 2019-02-06 10:28:26 +01:00
Raphael Michel 187576eee5 Fix a ProtectedError in cart handling
FIx PRETIXEU-TR
2019-02-06 10:25:53 +01:00
Raphael Michel 0e513a0985 Require specific jsonfallback version 2019-02-06 09:59:44 +01:00
Raphael Michel 1cde728ffe Order search: Add missing field to .only() call 2019-02-06 09:52:11 +01:00
Raphael Michel 76893caffc Sentry: Ignore django.security.DisallowedHost 2019-02-05 18:15:21 +01:00
Raphael Michel a539999c04 Sentry: Do not report retried celery tasks 2019-02-05 17:19:18 +01:00
Raphael Michel b9c570b3d8 Sentry: Tune log levels 2019-02-05 16:35:40 +01:00
Raphael Michel 48b399424a Delete voucher even if it is contained in carts
Fix PRETIXEU-R1
2019-02-05 15:47:11 +01:00
Raphael Michel 1c73f000a9 Fix TypeError
PRETIXEU-T6
2019-02-05 15:00:58 +01:00
Raphael Michel d0721165c1 Add distinct call back in in some cases 2019-02-05 12:10:27 +01:00
Raphael Michel bed0a0ceeb Switch from raven to sentry_sdk 2019-02-05 11:25:58 +01:00
Raphael Michel b53ee1dc1d Bump version to 2.5.0.dev0 2019-02-04 16:06:43 +01:00
Raphael Michel 41b56c00e5 Bump version to 2.4.0 2019-02-04 16:05:32 +01:00
Raphael Michel cb17febf7c Add squashed migration 2019-02-04 15:48:29 +01:00
Raphael Michel 07d42a4d77 Invoice exporter: Fix missing filter on query 2019-02-04 14:47:24 +01:00
Raphael Michel e3ebf887a4 Implement Invoice.__repr__ 2019-02-04 14:07:18 +01:00
Raphael Michel 0440187e59 Do not break on empty invoices
Sentry PRETIXEU-S8
2019-02-04 14:07:01 +01:00
Raphael Michel dfcda0fa2c Merge pull request #1158 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2019-02-04 13:52:53 +01:00
Maarten van den Berg 560c0a8729 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (2960 of 2960 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-02-04 08:45:08 +00:00
Maarten van den Berg bc80b60b04 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (2960 of 2960 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-02-04 08:45:08 +00:00
Maarten van den Berg 08bf3648ea Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (2960 of 2960 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-02-04 08:45:08 +00:00
Raphael Michel f8ee7acad6 Fix import order 2019-02-04 09:38:09 +01:00
Raphael Michel 10c86869ea Sendmail: Do not fail to show logs with status "r"
Fix sentry PRETIXEU-S3
2019-02-04 09:10:19 +01:00
Raphael Michel 9034a98df9 Remove empty translation block 2019-02-01 17:38:32 +01:00
Raphael Michel a7142fdf55 Merge pull request #1156 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2019-02-01 17:38:19 +01:00
Raphael Michel ee97c46aec Translated on translate.pretix.eu (German)
Currently translated at 99.9% (2959 of 2960 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-02-01 16:38:02 +00:00
Raphael Michel 7063f32f24 Translated on translate.pretix.eu (German (informal))
Currently translated at 99.9% (2959 of 2960 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-02-01 16:37:37 +00:00
Raphael Michel 2ec926b7c7 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-02-01 17:27:33 +01:00
Flavia Bastos 834b5a26a5 Adjust message if there's only one addon (#1147)
Relates to #1091
2019-02-01 17:26:37 +01:00
Raphael Michel 90f08d0aca Merge pull request #1146 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2019-02-01 17:26:00 +01:00
Alvaro Enrique Ruano d5c2637198 Translated on translate.pretix.eu (Spanish)
Currently translated at 95.3% (2796 of 2934 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2019-02-01 16:25:27 +00:00
Raphael Michel f517ba51bd Added translation on translate.pretix.eu (Greek) 2019-02-01 16:25:27 +00:00
Raphael Michel d738198ec5 Added translation on translate.pretix.eu (Greek) 2019-02-01 16:25:27 +00:00
Maarten van den Berg b1ce58d06c Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (2934 of 2934 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-02-01 16:25:27 +00:00
Maarten van den Berg b26ef74128 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (2934 of 2934 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-02-01 16:25:27 +00:00
Maarten van den Berg 4f8c8ea917 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (2934 of 2934 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-02-01 16:25:27 +00:00
Maarten van den Berg 0803b049af Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (2934 of 2934 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-02-01 16:25:27 +00:00
Raphael Michel 97f3fbdb80 Fix legacy field name
Sentry PRETIXEU-S0
2019-02-01 17:20:48 +01:00
Raphael Michel 434b6e4729 Offer multi-sheet order report 2019-02-01 17:20:00 +01:00
Raphael Michel f56bceb55f Remove a redundant string 2019-02-01 16:53:37 +01:00
Raphael Michel 2aa246b3d5 Allow to exclude items from ticket generation explicitly 2019-02-01 16:48:58 +01:00
Raphael Michel f77b551aa6 Badges: Allow to disable per-product 2019-02-01 16:48:58 +01:00
Raphael Michel c9415cba2b Allow to add a custom text above the payment choice 2019-02-01 16:48:58 +01:00
Raphael Michel 4dae224d73 Statistics: Ellipsize long product names 2019-02-01 16:48:58 +01:00
Raphael Michel 13cc57e98b Add multi-sheet export for invoices 2019-02-01 16:45:48 +01:00
Raphael Michel 6f980b82ac Sort exporters by name alphabetically 2019-01-31 18:44:12 +01:00
Raphael Michel f32c581a9e Add MultiSheetListExporter base class 2019-01-31 18:43:42 +01:00
Thomas Schüßler fcadfffb92 fixed a typo (#1152) 2019-01-30 14:36:20 +01:00
Raphael Michel 9e43459879 Widget: Guard against missing xhr.responseURL in Internet Explorer 2019-01-30 12:12:25 +01:00
Raphael Michel 87424c25de Logging: Automatically serialize file objects
Sentry PRETIXEU-RY
2019-01-30 10:59:00 +01:00
Raphael Michel acdf7d62b5 Sort migrations 2019-01-30 10:17:16 +01:00
Raphael Michel 944138f7a9 Flake8 update 2019-01-30 09:31:34 +01:00
Raphael Michel 5da2eab1fb Fix deletion order 2019-01-30 09:26:01 +01:00
Raphael Michel d680937a6c Work around flake8 issues 2019-01-30 08:59:58 +01:00
Raphael Michel f35c2544b6 Do not attach empty files for orders without tickets 2019-01-29 17:12:38 +01:00
Raphael Michel 0285cd12f7 Optimize SQL queries in order list and order search 2019-01-29 16:45:01 +01:00
Martin Gross 03cacace57 Fix missing/redundant favicon 2019-01-28 17:57:12 +01:00
Martin Gross 6ed016e49e Define Favicons on Organizer-level 2019-01-28 17:29:39 +01:00
Raphael Michel da8da01614 Fix #1148 -- Reduce number of cases in which we show "Reserved" 2019-01-28 10:43:52 +01:00
Raphael Michel 9a2ea6699a Fix obsolete tests 2019-01-28 09:10:18 +01:00
Raphael Michel 51a8bac9e6 Enforce type of log data 2019-01-28 09:10:18 +01:00
Raphael Michel 303ed07504 Voucher API: Never use a list in log_action(data) 2019-01-28 09:10:18 +01:00
bastardop c7627f631f Docs: Added Debian dependency (#1149)
the libopenjp2-7-dev Packages was required during installation on raspbian
2019-01-28 08:59:49 +01:00
Raphael Michel 604c31c6e2 Bank transfer: Allow to manually accept payments of all amounts 2019-01-28 08:49:19 +01:00
Raphael Michel c3da6731a1 Allow to delete an event with cart positions 2019-01-25 15:59:34 +01:00
Raphael Michel 6e556ab09b Fix wrong warning message 2019-01-25 13:13:45 +01:00
Raphael Michel 16622883f6 Add referer meta tag to backend 2019-01-25 11:08:56 +01:00
Raphael Michel cce4379d3e Type-cast cancellation fee 2019-01-24 10:11:24 +01:00
Raphael Michel 5af99f4f1a Check-in: Do not ask questions that are already answered 2019-01-23 16:05:27 +01:00
Raphael Michel 9ed49888b8 Fix #1144 -- Make invoice form all-optional in backend 2019-01-23 10:27:09 +01:00
Raphael Michel 5bfb00db73 Upgrade bs4 and be compatible to latest soupsieve 2019-01-23 09:44:03 +01:00
Raphael Michel a031d72ca9 Widget: Follow redirects 2019-01-22 18:06:56 +01:00
Raphael Michel 15a190cdf3 Widget: Remove debug output 2019-01-22 17:23:13 +01:00
Raphael Michel d181375479 Consistent number formatting in widget 2019-01-21 10:54:30 +01:00
Raphael Michel d8a57b0baa Conditionally show decimal places for tax rates 2019-01-21 10:53:50 +01:00
Raphael Michel d482bc9de0 Prevent accumulation of tax rates when copying events 2019-01-21 10:43:27 +01:00
Raphael Michel 5c030796d7 Add more information to event copy choice 2019-01-21 10:37:54 +01:00
Raphael Michel f6eb3bfb80 Remove redundant form option 2019-01-21 10:27:44 +01:00
Raphael Michel 3703fbcacf Do not allow customers to cancel checked-in orders 2019-01-21 09:09:54 +01:00
Lukas Bockstaller cdea6eb55e Updates the dependency versions for flake 8 (#1143) 2019-01-21 08:58:26 +01:00
Maarten van den Berg bf1e9d47d0 Fix #1111 -- Duplicate voucher warning (#1142)
Adds a new method to Voucher that selects all distinct orders containing
a position where the Voucher has been used, and changes the Voucher
detail view to use this method for the warning.
2019-01-21 08:52:31 +01:00
Raphael Michel 350df2a3cc Merge pull request #1141 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2019-01-21 08:51:21 +01:00
Maarten van den Berg bc6915b251 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (2934 of 2934 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-01-21 05:00:28 +00:00
Maarten van den Berg f9c7eeff9a Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (2934 of 2934 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-01-21 05:00:07 +00:00
Maarten van den Berg 247bcf0a20 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (2934 of 2934 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-01-20 06:00:09 +00:00
Maarten van den Berg 455c961fc7 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (2934 of 2934 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-01-19 21:39:08 +00:00
Maarten van den Berg 9052d4a7a9 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (2934 of 2934 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-01-19 21:13:37 +00:00
Raphael Michel 589401e8d2 Merge pull request #1140 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2019-01-18 17:38:24 +01:00
Raphael Michel 0c366a8473 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (2934 of 2934 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-01-18 16:38:00 +00:00
Raphael Michel c9ddbd0e88 Merge pull request #1139 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2019-01-18 17:37:56 +01:00
Raphael Michel 31bf0c24f1 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2934 of 2934 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-01-18 16:37:29 +00:00
Raphael Michel c74386346b Translated on translate.pretix.eu (German)
Currently translated at 100.0% (2934 of 2934 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-01-18 16:34:22 +00:00
Raphael Michel 725e1f019e Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-01-18 17:25:27 +01:00
Raphael Michel 06eddb2c6d Self-service refund form (#1135)
* Auto-refund

* Add missing template

* Notification for requested refund

* Model-level tests

* Add front-end tests

* Default to notify
2019-01-18 17:24:42 +01:00
Raphael Michel 80b5750756 New content for / index page 2019-01-18 17:24:28 +01:00
Raphael Michel f37d265534 Refresh design for auth and error pages 2019-01-18 17:24:28 +01:00
Raphael Michel 7c4a1e5fb8 Merge pull request #1138 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2019-01-18 16:56:39 +01:00
sohalt 9a045c76ec Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2907 of 2907 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-01-18 03:06:42 +00:00
Lorhan Sohaky 447b36fdd3 Translated on translate.pretix.eu (Portuguese (Brazil))
Currently translated at 15.9% (462 of 2907 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_BR/

powered by weblate
2019-01-16 23:00:17 +00:00
Guillaume Petit 5dbd984178 Translated on translate.pretix.eu (French)
Currently translated at 80.0% (2326 of 2907 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/

powered by weblate
2019-01-16 22:00:09 +00:00
Raphael Michel 95f96f8321 Fix default public name of bank transfer 2019-01-16 08:26:56 +01:00
Raphael Michel 3933032778 Merge pull request #1136 from MacLemon/tippfehler-ausbessern
Corrected language typo.
2019-01-14 22:53:09 +01:00
Pepi Zawodsky d0b18d9f64 Corrected language typo.
Dieser Satz kein Hilfsverb.
2019-01-14 22:41:12 +01:00
Raphael Michel 71de71ed37 PDF: Fix bug with rendering name parts 2019-01-14 11:37:58 +01:00
Raphael Michel 3438d079d5 Fix a sign error 2019-01-13 11:48:52 +01:00
Raphael Michel e7730333c2 Show refund status to customer on order page 2019-01-12 22:33:09 +01:00
Raphael Michel e8b9f0a3ae Frontend order view: Do not recommend download for canceled orders 2019-01-12 22:19:10 +01:00
Raphael Michel 77ebd18404 Backend order view: Show canceled fees 2019-01-12 22:18:55 +01:00
Raphael Michel 2d48198c83 Ignore database-level floating point errors 2019-01-12 22:18:36 +01:00
Raphael Michel d103b0bb84 Weblate script: pull after push 2019-01-12 17:09:18 +01:00
Raphael Michel 01411b84e4 Merge pull request #1134 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2019-01-12 17:03:02 +01:00
Raphael Michel b7e154d8c9 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2907 of 2907 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-01-12 16:02:41 +00:00
Raphael Michel f39ac96322 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (2907 of 2907 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-01-12 16:01:53 +00:00
Raphael Michel 74db808978 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-01-12 16:55:03 +01:00
Raphael Michel ab72b93706 Invoice: Show number of pages next to page number 2019-01-12 16:54:37 +01:00
Raphael Michel af5aece639 Add beneficiaries to invoice addresses 2019-01-12 16:54:37 +01:00
Raphael Michel 228ab15900 Bank transfer: Allow to set custom public name 2019-01-12 16:54:37 +01:00
Raphael Michel 66164d8202 Invoice renderer: Make it easier to change fonts 2019-01-12 16:54:37 +01:00
Raphael Michel d5ac155914 Add is_available hook for plugin configs 2019-01-12 16:54:37 +01:00
Raphael Michel 75a966529e Merge pull request #1132 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2019-01-11 15:57:47 +01:00
Raphael Michel 28a6a6185d Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2904 of 2904 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-01-11 14:57:27 +00:00
Raphael Michel 07cdaa9ca9 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (2904 of 2904 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-01-11 14:57:13 +00:00
Raphael Michel 1c6935ebd9 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-01-11 15:47:30 +01:00
Raphael Michel 60c1ea8aad Allow to keep cancellation fees (#1130)
* Allow to keep cancellation fees

* Add tests and clarifications

* Add API
2019-01-11 15:42:33 +01:00
Raphael Michel 0b8798a65c Add self-crashing test 2019-01-10 18:17:29 +01:00
Raphael Michel a8836cbeec Remove some irregularities in 8abfbba9 2019-01-10 17:41:18 +01:00
Raphael Michel 336a34b10b Merge pull request #1131 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2019-01-10 17:24:31 +01:00
Raphael Michel c5862cc0a0 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (2901 of 2901 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2019-01-10 16:23:32 +00:00
Raphael Michel 89cdcd3781 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2901 of 2901 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-01-10 16:21:10 +00:00
Raphael Michel 2837cac554 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2019-01-10 16:57:52 +01:00
Raphael Michel 3b54556739 Remove notification type for refunded event 2019-01-10 16:57:27 +01:00
Raphael Michel 4d6d6ff737 Merge pull request #1129 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2019-01-10 16:57:10 +01:00
Maarten van den Berg ffee31e415 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (2890 of 2890 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-01-10 15:56:44 +00:00
Raphael Michel 8abfbba9d0 Refactor cancelling positions and orders in the data model (#1088)
- [x] Data model
- [x] display in order view in backend
- [x] review all usages of OrderPositions.objects
- [x] review all usages of order.positions
- [x] review all other model usages
- [x] review plugins
- [x] plugins backwards-compatible API?
- [x] decide on way forward for REST API
- [x] need to cancel fees
- [x] tests
- [ ] plugins
  - [ ] gdpr
  - [ ] reports
- [x] docs
2019-01-10 16:52:34 +01:00
Raphael Michel 588955901c Pin oauthlib version 2019-01-09 14:19:02 +01:00
Raphael Michel 4b7bf2f27f Merge pull request #1118 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2019-01-09 12:33:18 +01:00
Raphael Michel 664957e886 Add now_date 2019-01-09 12:29:37 +01:00
Raphael Michel f15a6d39c3 Add now_* variables to PDFs 2019-01-09 12:17:31 +01:00
Maarten van den Berg 3fd80a9a46 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (68 of 68 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate
2019-01-08 21:00:37 +00:00
Maarten van den Berg 2fd2716303 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (2890 of 2890 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-01-08 21:00:08 +00:00
Maarten van den Berg 37315fc380 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (2890 of 2890 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-01-08 13:00:29 +00:00
Maarten van den Berg f96fc0744e Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (68 of 68 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2019-01-08 12:30:26 +00:00
Maarten van den Berg 5bb7883020 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (2890 of 2890 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-01-08 12:25:27 +00:00
Maarten van den Berg 3f95434922 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (2890 of 2890 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-01-07 09:21:52 +00:00
Maarten van den Berg 08da5a8b91 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (68 of 68 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate
2019-01-07 09:21:52 +00:00
Maarten van den Berg 97dc4421ea Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (2890 of 2890 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-01-07 09:21:52 +00:00
Maarten van den Berg 26ca2ff006 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (68 of 68 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate
2019-01-07 09:21:52 +00:00
Maarten van den Berg 980c359f57 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 2.9% (2 of 68 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl_Informal/

powered by weblate
2019-01-07 09:21:52 +00:00
Maarten van den Berg ff1198dec6 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (2890 of 2890 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2019-01-07 09:21:52 +00:00
Raphael Michel 7275de94af Added translation on translate.pretix.eu (Dutch (informal)) 2019-01-07 09:21:52 +00:00
Raphael Michel ed46f41f8c Added translation on translate.pretix.eu (Dutch (informal)) 2019-01-07 09:21:52 +00:00
Alexey Zh 1078e38890 Translated on translate.pretix.eu (Russian)
Currently translated at 16.2% (11 of 68 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ru/

powered by weblate
2019-01-07 09:21:52 +00:00
amefad 2e9bbff308 Translated on translate.pretix.eu (Italian)
Currently translated at 33.8% (23 of 68 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/it/

powered by weblate
2019-01-07 09:21:52 +00:00
Maarten van den Berg 13a48701fa Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (68 of 68 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2019-01-07 09:21:52 +00:00
Alexey Zh ddc9c850c0 Translated on translate.pretix.eu (Russian)
Currently translated at 0.4% (13 of 2890 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ru/

powered by weblate
2019-01-07 09:21:52 +00:00
amefad fa0dae6ed6 Translated on translate.pretix.eu (Italian)
Currently translated at 2.7% (79 of 2890 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/it/

powered by weblate
2019-01-07 09:21:52 +00:00
Maarten van den Berg da6176a51e Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (2890 of 2890 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2019-01-07 09:21:52 +00:00
Maarten van den Berg 4ef6659551 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (68 of 68 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2019-01-07 09:21:52 +00:00
Alexey Zh 82624a1dc0 Added translation on translate.pretix.eu (Russian) 2019-01-07 09:21:52 +00:00
Alexey Zh b50add260a Added translation on translate.pretix.eu (Russian) 2019-01-07 09:21:52 +00:00
Bruno Damasceno Martins f72f97d366 Translated on translate.pretix.eu (Portuguese (Brazil))
Currently translated at 10.4% (300 of 2890 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_BR/

powered by weblate
2019-01-07 09:21:52 +00:00
Alexander Schwartz ad46e9e541 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2890 of 2890 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2019-01-07 09:21:52 +00:00
Raphael Michel 343dbc00be Bank transfer: Add a note on how to proceed 2019-01-07 10:21:35 +01:00
Raphael Michel 3cb94f702d Revert accidental commit part 2019-01-04 10:24:06 +01:00
Raphael Michel ddeae224fb Log SMTP failures and retry after some error codes 2019-01-04 09:54:43 +01:00
Raphael Michel 3c57895101 Don't mark orders as pending unnecessarily 2019-01-03 09:50:56 +01:00
Raphael Michel 687c85eb58 Stripe: Full source state handling 2019-01-03 09:43:07 +01:00
Raphael Michel 90ffdbdfa3 Stripe: Allow failed payments to succeed 2019-01-03 09:37:31 +01:00
Raphael Michel 654be0db34 Stripe: Prevent race condition between ReturnView and webhook 2019-01-03 09:34:15 +01:00
Raphael Michel 82e3359b40 Allow to filter subevents by date 2019-01-02 16:59:03 +01:00
Raphael Michel 01a6861453 Always query emails case-insensitively 2019-01-02 15:12:48 +01:00
Raphael Michel 7f6cdd6241 Fix ProtectedError when deleting expired card positions 2019-01-02 15:05:30 +01:00
Raphael Michel aad1fda31f Register nl_Informal translation 2019-01-02 10:12:17 +01:00
Raphael Michel ad462921f0 Pin bs4 version due to regression 2019-01-02 09:58:50 +01:00
Raphael Michel dc433f6420 Reverse on global URL config in build_absolute_uri 2019-01-02 09:24:47 +01:00
Raphael Michel 2d8b3d1c79 PayPal: Fix backwards compatibility 2019-01-02 09:20:35 +01:00
Raphael Michel eb85fa956e Badges: Add per-position downloads 2018-12-19 12:31:44 +01:00
Raphael Michel 215514fca7 Add ticket downloads to the backend 2018-12-19 12:31:24 +01:00
Raphael Michel 3fe2dfe810 Add signal order_position_buttons 2018-12-19 12:29:52 +01:00
Raphael Michel 041d05eb66 Support product pictures for add-on products 2018-12-19 09:37:30 +01:00
Raphael Michel d05530ddfc Explicit ordering of check-in lists 2018-12-19 09:20:44 +01:00
Raphael Michel 734e77d1a3 API: Allow to redeem ticket by secret 2018-12-18 12:23:07 +01:00
Raphael Michel 633061e203 Avoid paid orders without payment_date 2018-12-18 10:07:17 +01:00
Raphael Michel e11ee4a427 Do not allow to delete vouchers assigned to canceled orders 2018-12-18 10:07:17 +01:00
Alvaro Enrique Ruano 1edcd47703 Support for daterange in spanish (#1125) 2018-12-17 22:32:15 +01:00
Raphael Michel cf4b2544f2 Never create implicit payments for orders that require approval 2018-12-14 10:42:08 +01:00
Raphael Michel 04c3cffd43 Fix severe translation mistake 2018-12-12 16:42:47 +01:00
Raphael Michel 483d41c7a6 Event plugin list: Use a more useful sorting of the list 2018-12-12 16:42:47 +01:00
Martin Gross b0c4c88d01 Fix #1119 - Proper indent and pluralisation (#1120) 2018-12-12 08:59:54 +01:00
Martin Gross 518298f71c Add media-src CSP to middleware (#1121) 2018-12-12 08:59:22 +01:00
Raphael Michel 62c2e7765b Fix wrong variable 2018-12-11 17:00:05 +01:00
Raphael Michel 2bb2a40509 Add new signal checkout_all_optional 2018-12-11 16:44:15 +01:00
Raphael Michel 49828186b0 Signals: Pretictable call order, not return order 2018-12-11 16:43:07 +01:00
Raphael Michel c07a6cb4aa Small query optimization 2018-12-11 16:15:54 +01:00
Tobias Kunze 67ad9a0dcb Provide send_robust on EventSignals (#1116) 2018-12-11 16:15:22 +01:00
Raphael Michel d267dfc682 Fix #785 -- Show availability in (sub)event list (#1112) 2018-12-11 13:59:49 +01:00
Raphael Michel eed220f14a pytest-xdist is required by now 2018-12-11 12:54:30 +01:00
Raphael Michel 85289fe0d1 Fix error when marking an expired order as paid 2018-12-07 11:04:41 +01:00
Raphael Michel 6293ad34d4 Add a headline to payment provider settings 2018-12-06 10:56:40 +01:00
Raphael Michel 0dc4f61cf0 Fix a docs spelling error 2018-12-06 10:42:50 +01:00
Raphael Michel 6849e682d7 Bump verstion to 2.4.0.dev0 2018-12-06 10:17:39 +01:00
Raphael Michel 6b725a9db9 Bump version to 2.3.0 2018-12-06 10:16:55 +01:00
Raphael Michel 989ebbb444 Merge pull request #1115 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2018-12-05 17:13:35 +01:00
Raphael Michel 0a6efc1e0f Translated on translate.pretix.eu (German)
Currently translated at 100.0% (2890 of 2890 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2018-12-05 16:12:43 +00:00
Raphael Michel d577a0d286 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2890 of 2890 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2018-12-05 16:11:04 +00:00
Raphael Michel 6b9b379ce2 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2018-12-05 17:05:14 +01:00
Raphael Michel 13234b6fd5 Merge pull request #1108 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2018-12-05 17:04:36 +01:00
Raphael Michel 2fa0067663 Revert "Update po files"
This reverts commit 4e37fa5778.
2018-12-05 17:04:22 +01:00
Raphael Michel 4e37fa5778 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2018-12-05 17:02:53 +01:00
Alexander Schwartz bfb74448b1 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (69 of 69 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2018-12-05 15:59:59 +00:00
arabestia a255082b07 Translated on translate.pretix.eu (Spanish)
Currently translated at 97.3% (2797 of 2874 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2018-12-05 15:59:59 +00:00
Matheus Nunes 14df35bd90 Translated on translate.pretix.eu (Portuguese (Brazil))
Currently translated at 10.4% (300 of 2874 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_BR/

powered by weblate
2018-12-05 15:59:59 +00:00
Alexander Schwartz bd0ba7baa5 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2874 of 2874 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2018-12-05 15:59:59 +00:00
Alexander Schwartz 9aa220b95b Translated on translate.pretix.eu (German)
Currently translated at 100.0% (2874 of 2874 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2018-12-05 15:59:59 +00:00
Alexander Schwartz 3ed4be63fe Translated on translate.pretix.eu (German (informal))
Currently translated at 100,0% (69 of 69 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate
2018-12-05 15:59:59 +00:00
Alexander Schwartz 23f4b0b62f Translated on translate.pretix.eu (German)
Currently translated at 100,0% (69 of 69 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2018-12-05 15:59:59 +00:00
arabestia 4b9acb64da Translated on translate.pretix.eu (Spanish)
Currently translated at 98.6% (68 of 69 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/es/

powered by weblate
2018-12-05 15:59:59 +00:00
oocf ebba0ee0cb Translated on translate.pretix.eu (Spanish)
Currently translated at 97.3% (2796 of 2874 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2018-12-05 15:59:59 +00:00
arabestia 335ce48d7e Translated on translate.pretix.eu (Spanish)
Currently translated at 97.3% (2796 of 2874 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2018-12-05 15:59:59 +00:00
Alvaro Enrique Ruano d9a0c8c523 Translated on translate.pretix.eu (Spanish)
Currently translated at 96.7% (2779 of 2874 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2018-12-05 15:59:59 +00:00
Raphael Michel a297bd1944 Show that some export parameters are optional 2018-12-05 16:51:08 +01:00
Raphael Michel 953ea26984 Add a custom text to explain usage of vouchers 2018-12-05 16:50:05 +01:00
Raphael Michel e4f80f7660 Widget: Allow to pre-fill fields in the invoice address 2018-12-05 16:45:05 +01:00
Raphael Michel 128a185957 Improve crashed test handling 2018-12-05 16:16:50 +01:00
Raphael Michel 0bdd14b47a Re-add legacy import 2018-12-05 15:13:50 +01:00
Raphael Michel 3b84b181ad PDF editor: Move questions signal out of ticket provider 2018-12-05 14:45:07 +01:00
Raphael Michel c9b0626324 Adjust tests to new is_public default 2018-12-04 15:41:57 +01:00
Raphael Michel dc9a82cade Fix failing tests for previous commits 2018-12-04 15:02:16 +01:00
Raphael Michel 8266733e34 Clarify is_public and turn it on by default 2018-12-04 13:49:25 +01:00
Raphael Michel 246987955b Accept localized input for all fields with localized output 2018-12-02 19:12:21 +01:00
Raphael Michel b93e7fcb60 Fix #1067 -- Allow to manually create partial payments 2018-12-02 18:32:16 +01:00
Raphael Michel b1cebdbd99 Fix #582 -- Improve validation of organizer domains 2018-12-02 17:45:48 +01:00
Raphael Michel d04047abd5 Fix #1105 -- Provide URL in order split log entry 2018-12-02 17:35:31 +01:00
Raphael Michel efca46945a Fix #953 -- Render markdown in email text previews 2018-12-02 17:11:09 +01:00
Raphael Michel 0f9755e36f Add a warning message to products that are out of timeframe 2018-12-02 16:44:21 +01:00
Raphael Michel 478d8e4116 Add export to .xlsx for lists 2018-11-30 16:10:32 +01:00
Raphael Michel 81693e042c Introduce common base class for CSV exports 2018-11-30 15:56:29 +01:00
Raphael Michel 47b7d7b36c Add separate notification category for orders that require approval 2018-11-30 15:30:35 +01:00
Raphael Michel ba15c34ce1 Fix #1106 -- Do not send reminders to orders placed in the last two hours 2018-11-30 15:16:12 +01:00
Raphael Michel 94f2ad9325 Highlight items that are unavailable by time 2018-11-29 10:13:43 +01:00
Raphael Michel d8070ba8a3 Fix missing ticket attachments 2018-11-29 10:01:20 +01:00
Raphael Michel b1019672b0 Fix file format in real expor 2018-11-27 15:52:57 +01:00
Raphael Michel 631307a4d5 Even with pdftk, use PyPDF to read page size 2018-11-27 09:22:53 +01:00
Raphael Michel 180a26ee1d Fix shredder test 2018-11-26 13:44:40 +01:00
Raphael Michel 7eab1982fe Add support for PDFTK 2018-11-26 13:43:06 +01:00
Raphael Michel ca59237ebf Use regular asynctasks for order PDF generation 2018-11-26 13:21:25 +01:00
Raphael Michel cc92210dc2 Retry crashed tests 2018-11-26 12:09:39 +01:00
Raphael Michel 6602afdd6c Use dedicated queue for notifications 2018-11-26 12:05:16 +01:00
Raphael Michel c7a04bc08a Add cleanup for cached tickets 2018-11-26 12:04:25 +01:00
Raphael Michel 2cc5b7f4e8 Raise error 404 on invalid month 2018-11-26 09:20:48 +01:00
Raphael Michel 453f16af03 Merge pull request #1100 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2018-11-23 16:22:00 +01:00
Raphael Michel 0f3398ae13 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2874 of 2874 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2018-11-23 15:17:00 +00:00
Raphael Michel f1b65c8695 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (2874 of 2874 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2018-11-23 15:17:00 +00:00
Raphael Michel 2c4c89c8c2 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2874 of 2874 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2018-11-23 15:17:00 +00:00
Raphael Michel 4042b603b7 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (2874 of 2874 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2018-11-23 15:17:00 +00:00
Alvaro Enrique Ruano 63b0288383 Translated on translate.pretix.eu (Spanish)
Currently translated at 97.5% (2792 of 2864 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2018-11-23 15:17:00 +00:00
Raphael Michel 7c01fee70b Fix incorrect return statement 2018-11-23 16:16:46 +01:00
Raphael Michel 8127c32ef5 More tolerant i18n deserializing 2018-11-23 16:15:23 +01:00
Raphael Michel 563decdfba Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2018-11-23 15:37:11 +01:00
Raphael Michel a205b01d70 Add "paid" note on invoices if there is no open payment 2018-11-23 15:36:39 +01:00
Raphael Michel b4290384e1 Add sales channels (#1103)
- [x] Data model
- [x] Enforce constraint
- [x] Filter order list
- [x] Set channel on created order
- [x] Products API
- [x] Order API
- [x] Tests
- [x] Filter reports
- [x] Resellers
- [ ] deploy plugins
  - [ ] posbackend
  - [ ] resellers
  - [ ] reports
- [x] Ticketlayouts
- [x] Support in pretixPOS
2018-11-23 15:35:09 +01:00
Raphael Michel 0f76779fb1 Fix involuntarily created invoices 2018-11-21 13:07:28 +01:00
Raphael Michel f34c528cba Add passphrase to wordlist 2018-11-21 11:51:57 +01:00
Raphael Michel cf01e04101 PayPal: Improve log display 2018-11-21 11:24:44 +01:00
Martin Gross a3a63def55 Fix #369 -- Connect with PayPal (#1084)
* Connect with PayPal

* PayPal connect code-review fixes

* PayPal Connect: Global Env selection; Fix for payee-dict

* Fix missing PayPal Connect indicator for Endpoint

* Fix backwards compatibility
2018-11-21 11:14:33 +01:00
Raphael Michel a3489eea04 PayPal: Properly detect pending sales 2018-11-21 11:14:03 +01:00
Raphael Michel c6cb98c30a Add documentation on development and enterprise installs 2018-11-21 09:40:44 +01:00
Alvaro Enrique Ruano 332c58c82f Improve docker cache utilization on image construction (#1099)
To provide better use of Docker cache during image build by installing from PIP before creating the layer with the source code (the PIP installations are less probable to change than the rest of the source code, so this layer will not be recreated with all the source code changes)

This was previously discussed in #1094
2018-11-21 09:27:43 +01:00
Raphael Michel beb0ded6dc Allow to pass user data to the widget (#1095)
- [x] Logic
- [x] Tests
- [x] Docs
- [x] find a way to integrate with tracking
2018-11-20 17:55:37 +01:00
Raphael Michel b49b2035bd Cancel payments if the pending price of the order changes 2018-11-20 17:41:33 +01:00
Raphael Michel 106c8d373d Fix #1098 -- order search with dash in event slug 2018-11-20 14:33:41 +01:00
Raphael Michel aee44a3284 Fix marking an overpaid order as paid manually 2018-11-20 10:39:48 +01:00
Raphael Michel d4c1fcf838 Merge pull request #1087 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2018-11-20 10:39:26 +01:00
Alvaro Enrique Ruano 832f57c9d7 Translated on translate.pretix.eu (Spanish)
Currently translated at 97.4% (2790 of 2864 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2018-11-20 09:36:17 +00:00
Mikkel Ricky ac2a9b207d Translated on translate.pretix.eu (Danish)
Currently translated at 57.4% (1645 of 2864 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/da/

powered by weblate
2018-11-20 09:36:17 +00:00
Maarten van den Berg f1e5d60a14 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (2864 of 2864 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2018-11-20 09:36:17 +00:00
Maarten van den Berg 7b1a1dc754 Translated on translate.pretix.eu (Dutch)
Currently translated at 99.7% (2854 of 2864 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2018-11-20 09:36:17 +00:00
Raphael Michel c93f804992 Fix #1080 -- Deal with gaps in the invoice database (#1086) 2018-11-20 10:36:13 +01:00
Alvaro Enrique Ruano 1cba4b1d45 Dockerfile improvements for better readability (#1094) 2018-11-20 10:24:53 +01:00
Raphael Michel 22369a5559 Fix CI problems with SQLite (#1076)
* Try to re-enable tests on Py3.5

* Add newer SQLite3
2018-11-19 17:57:50 +01:00
Raphael Michel a8223ad354 Fix missing return statement 2018-11-19 17:12:48 +01:00
Raphael Michel c9d3cf7cac Fix exceptions in previous commit 2018-11-19 11:03:54 +01:00
Raphael Michel bbdbc94f6e Redirect case-insensitive versions of event/organizer slugs 2018-11-19 10:22:40 +01:00
Raphael Michel 5c8d9c4dca Fix incorrect feedback on invite form 2018-11-16 14:13:44 +01:00
Raphael Michel 546ff6e42f Variations: Show a price range on the front page 2018-11-14 15:43:21 +01:00
Raphael Michel 7b7d45ce2e Fix Dutch date format 2018-11-14 15:43:15 +01:00
Raphael Michel be3ca7c561 Sort cart positions by reasonable values 2018-11-14 15:36:50 +01:00
Raphael Michel abdb6e2d52 Add "Event date" to PDF editors 2018-11-14 14:39:20 +01:00
Raphael Michel 138ddcdcd7 CSV-export improvements (include voucher, allow semicolon) 2018-11-14 10:02:28 +01:00
Raphael Michel 8ffc6550da Do not allow orders with unavailable items to be completed 2018-11-13 17:55:56 +01:00
Raphael Michel 0734715bab Only warn about bad-contrasat colors 2018-11-13 15:53:18 +01:00
Raphael Michel 7528bfb10b Fix tests for color saving 2018-11-13 14:15:52 +01:00
Raphael Michel 2798fb3468 Avoid setting name_parts to None 2018-11-13 12:59:12 +01:00
Raphael Michel 4e6f4716ec Allow to configure accent colors 2018-11-13 12:56:52 +01:00
Raphael Michel e523a4e610 Allow to manually generate invoices like in c131ad8c 2018-11-12 13:08:12 +01:00
Raphael Michel 31cec76809 Generate invoice after expired order is extended 2018-11-12 13:08:12 +01:00
Raphael Michel fdfd9f9275 Fix cart cleanup 2018-11-12 13:08:12 +01:00
oocf b658c73c19 Removed permissions page from events settings (#1063)
* Removed old configuration for events settings

* Urls file to remove permissions file

* Removing not needed test

* Removing test in permissions
2018-11-12 12:23:40 +01:00
Raphael Michel ebd3e6f31a Fix TypeError in typeahead 2018-11-12 12:17:49 +01:00
Raphael Michel ccec114653 Merge pull request #1085 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2018-11-12 11:41:06 +01:00
Raphael Michel f0716dc482 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2864 of 2864 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2018-11-12 10:40:47 +00:00
Raphael Michel 513778b2c4 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (2864 of 2864 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2018-11-12 10:34:26 +00:00
Raphael Michel 742e403ae2 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2018-11-12 11:31:32 +01:00
Raphael Michel 09a9d610f8 Make navigation structure more approachable to new users (#1083)
* Move event selector to sidebar

* Unify navigation

* Fix confusing icons
2018-11-12 11:30:36 +01:00
Raphael Michel b9534f23f5 Delete add-ons explicitly 2018-11-12 11:11:33 +01:00
Raphael Michel b053f61001 Delete add-on positions explicitly 2018-11-12 11:11:33 +01:00
Felix Rindt 21042f2111 Fix #1071 -- Make payments and invoice address full width panels (#1072)
Solve #1071.

I'm not happy about how the invoice address panel is really wide now.
2018-11-12 10:38:22 +01:00
Raphael Michel e953474138 Fix a few models.CASCADE 2018-11-11 16:23:37 +01:00
Tobias Kunze 0d438ad07c Remove outline when clicking on checkout progress (#1082) 2018-11-10 14:48:37 +01:00
Raphael Michel e285b7cff0 Bump version to release 2.3.0.dev0 2018-11-09 16:45:43 +01:00
Raphael Michel 2bb2f30e66 Bump version to 2.2.0 2018-11-09 16:43:59 +01:00
Raphael Michel 9a8d23f582 Banktransfer: use proper formatting for IBANs 2018-11-09 16:42:43 +01:00
Raphael Michel f37d12e056 Merge pull request #1079 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2018-11-09 16:26:35 +01:00
Maarten van den Berg 334ffc0be7 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (2855 of 2855 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2018-11-09 14:18:13 +00:00
Maarten van den Berg 03f0da4ee6 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (66 of 66 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2018-11-09 14:18:13 +00:00
Raphael Michel fbbd6eebc0 Refuse to update on old MySQL 2018-11-09 15:17:58 +01:00
Raphael Michel 584ced87db Add /me API endpoint 2018-11-09 11:34:40 +01:00
Raphael Michel 901953d988 Add a Retry-After to 409 responses 2018-11-09 11:13:24 +01:00
Raphael Michel 8c34a47138 Voucher API: Bulk creation 2018-11-09 10:50:21 +01:00
Raphael Michel 0fe3db634c Voucher API: Reduce number of event locks 2018-11-09 10:46:27 +01:00
Raphael Michel d8d838fc4f Add note on celery-requirement for webhook retrials 2018-11-09 10:45:25 +01:00
Raphael Michel 9b94a1b3b2 Add documentation on rate limits 2018-11-09 10:00:55 +01:00
Raphael Michel 479abc1a65 Add missing screenshots to docs 2018-11-08 17:00:18 +01:00
Raphael Michel 1a17ba13ca Link to documentation 2018-11-08 16:57:30 +01:00
Raphael Michel 371c42b738 Merge pull request #1077 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2018-11-08 16:57:18 +01:00
Raphael Michel ed85394845 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (2855 of 2855 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2018-11-08 15:56:22 +00:00
Raphael Michel a9a684a456 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (66 of 66 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate
2018-11-08 15:55:48 +00:00
Raphael Michel d7d7792a4a Translated on translate.pretix.eu (German)
Currently translated at 100.0% (66 of 66 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2018-11-08 15:55:48 +00:00
Raphael Michel c09587f5d3 Translated on translate.pretix.eu (German)
Currently translated at 99.8% (2848 of 2855 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2018-11-08 15:55:48 +00:00
Raphael Michel 23f719381c Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2855 of 2855 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2018-11-08 15:55:48 +00:00
Raphael Michel d74d39d6e9 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (66 of 66 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate
2018-11-08 15:55:48 +00:00
Raphael Michel 5f2cf8d3ef Add documentation on webhooks 2018-11-08 16:53:25 +01:00
Raphael Michel 1843799345 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2018-11-08 16:40:19 +01:00
Raphael Michel bd838b3b7c Fix #1074 -- More specific messages during asynctasks 2018-11-08 16:38:12 +01:00
Raphael Michel c2d03f5e6b Fix #526 -- Add a webhook system (#1073)
- [x] Data model
- [x] UI
- [x] Fire hooks
- [x] Unit tests
- [x] Display logs
- [x] API to modify hooks
- [x] Documentation
- [x] More hooks!
2018-11-08 16:38:05 +01:00
Raphael Michel 74e8e73877 Stop testing against Py3.5 2018-11-08 15:44:56 +01:00
Raphael Michel 8830dc8f78 Fix tests for checkin list 2018-11-08 12:04:51 +01:00
Raphael Michel ac877a7c0d Use 3 SQLite workers 2018-11-08 11:34:02 +01:00
Raphael Michel 0a442e712b Add company to checkin list 2018-11-08 11:01:29 +01:00
Raphael Michel 4477f8001e Adjust test for previous commit 2018-11-07 11:53:13 +01:00
Raphael Michel 152b94428f Make Item.allow_delete() more consistent 2018-11-07 11:19:23 +01:00
Raphael Michel 5390b0b191 API: Allow to sort orders by modification date 2018-11-07 10:29:41 +01:00
Raphael Michel 97de8cea08 Allow cart creation without attendee name 2018-11-06 18:16:54 +01:00
Raphael Michel cd465c1aad Fix not passing an attendee name in the API 2018-11-06 17:42:18 +01:00
Raphael Michel 449dea41a8 Fix order list export 2018-11-06 14:57:35 +01:00
Raphael Michel 0b1a6e4745 Fix symmetry 2018-11-06 14:57:22 +01:00
Tobias Kunze e49061e28c Don't check voucher quotas if they bypass quotas (#1070) 2018-11-06 11:01:05 +01:00
Raphael Michel 18cb29b425 Show date in event picker 2018-11-05 22:45:33 +01:00
Raphael Michel 994ff23719 Fix quick event switcher on mobile 2018-11-05 22:24:26 +01:00
Raphael Michel 15d077df6e Add explanation tooltips to invoice regeneration buttons 2018-11-05 21:46:16 +01:00
Raphael Michel b490aa7f5d Add scheme to sample names 2018-11-05 21:35:44 +01:00
Raphael Michel ca6b3badde Fix reference to removed field 2018-11-05 21:20:17 +01:00
Raphael Michel 1f200271af Allow rich text in question help texts 2018-11-05 18:07:15 +01:00
Raphael Michel 894a60d016 Merge pull request #1069 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2018-11-05 16:56:15 +01:00
Raphael Michel 4a2219134b Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2825 of 2825 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2018-11-05 15:55:43 +00:00
Raphael Michel 7d38fc5c03 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (2825 of 2825 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2018-11-05 15:50:02 +00:00
Raphael Michel ef5de187b9 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2825 of 2825 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2018-11-05 15:46:16 +00:00
Raphael Michel a1c424266b Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2018-11-05 16:36:29 +01:00
Raphael Michel 557b4b7b6f Merge pull request #1060 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2018-11-05 16:36:02 +01:00
oocf 98be21253d Translated on translate.pretix.eu (Spanish)
Currently translated at 98.4% (2750 of 2794 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2018-11-05 15:24:40 +00:00
Maarten van den Berg e5a04ada94 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (2794 of 2794 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2018-11-05 15:24:40 +00:00
Maarten van den Berg 9b8b3090e6 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (2794 of 2794 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2018-11-05 15:24:40 +00:00
Raphael Michel e622c3948d Fix buggy migration 2018-11-05 16:24:30 +01:00
Raphael Michel 94be46ffdb Fix #978 -- Allow to split names (#1049)
- [x] attendee names
- [x] Invoice address names
- [x] Data migration
- [x] API serializers
  - [x] orderposition
  - [x] cartposition
  - [x] invoiceaddress
  - [x] checkinlistposition
- [x] position API search
- [x] invoice API search
- [x] business/individual required toggle
- [x] Split columns in CSV exports
- [x] ticket editor
- [x] shredder
- [x] ticket/invoice sample data
- [x] order search
- [x] Handle changed naming scheme
- [x] tests
- [x] make use in:
  - [x] Boabee
  - [x] Certificate download order
  - [x] Badge download order
  - [x] Ticket download order
- [x] Document new MySQL requirement
- [x] Plugins
2018-11-05 15:43:21 +01:00
Raphael Michel 7039374588 Allow to anonymize users 2018-11-05 11:11:43 +01:00
Raphael Michel 0a5347c08b Allow to delete organizers 2018-11-05 11:11:43 +01:00
Raphael Michel 87f3318431 Merge pull request #1006 from pretix/empty_vouchers
Allow to show all vouchers with empty tags
2018-11-05 10:35:22 +01:00
Tobias Kunze 2557a8e4ec Allow to show all vouchers with empty tags 2018-11-05 10:34:25 +01:00
Raphael Michel aff7094cb0 Fix #1021 -- Bugs in SMTP test 2018-11-05 10:19:29 +01:00
Raphael Michel 5a29b4bf70 Allow to choose French and Spanish 2018-10-31 15:38:38 +01:00
Raphael Michel e618183b49 Merge pull request #1059 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2018-10-31 15:38:01 +01:00
Raphael Michel a18236b12d Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (65 of 65 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate
2018-10-31 14:34:07 +00:00
Raphael Michel b5da4e89a6 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2794 of 2794 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2018-10-31 14:33:21 +00:00
Raphael Michel 1da2737427 Translated on translate.pretix.eu (German)
Currently translated at 100.0% (2794 of 2794 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2018-10-31 14:30:18 +00:00
Raphael Michel 032fdadc3c Translated on translate.pretix.eu (German)
Currently translated at 100.0% (65 of 65 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2018-10-31 14:26:13 +00:00
Raphael Michel 8ae3ff3fe6 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2018-10-31 15:21:52 +01:00
Raphael Michel b8669503fa Only allow restricting payment countries if invoice address is obligatory 2018-10-31 15:21:26 +01:00
Raphael Michel 863165caaa Gracefully handle PayPal exceptions 2018-10-31 15:21:26 +01:00
Raphael Michel b885f30789 Update from Weblate. (#1039) 2018-10-31 15:18:40 +01:00
Mattias de Hollander 461b62bd51 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (65 of 65 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2018-10-31 09:43:05 +00:00
Maarten van den Berg 23776db3b6 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (2773 of 2773 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2018-10-31 09:43:05 +00:00
Arnaud Vergnet 19e91a6c7c Translated on translate.pretix.eu (French)
Currently translated at 100.0% (65 of 65 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/fr/

powered by weblate
2018-10-31 09:43:05 +00:00
Samir C. Costa 6f40325d3f Translated on translate.pretix.eu (Portuguese (Brazil))
Currently translated at 100.0% (65 of 65 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pt_BR/

powered by weblate
2018-10-31 09:43:05 +00:00
Samir C. Costa 1987bff4b1 Translated on translate.pretix.eu (Portuguese (Brazil))
Currently translated at 100,0% (65 of 65 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pt_BR/

powered by weblate
2018-10-31 09:43:05 +00:00
Maarten van den Berg 5aa0d55d47 Translated on translate.pretix.eu (Dutch)
Currently translated at 99.0% (2746 of 2773 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2018-10-31 09:43:05 +00:00
Raphael Michel a28196e930 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2773 of 2773 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2018-10-31 09:43:05 +00:00
Raphael Michel c55387819d Translated on translate.pretix.eu (German)
Currently translated at 100.0% (2773 of 2773 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2018-10-31 09:43:05 +00:00
Raphael Michel c8cc527aee OrderChangeManager: Do not mark order pending when adjusting price to actual payment 2018-10-31 10:42:44 +01:00
Raphael Michel a39b207ad5 Mark manual payment failed if nothing happened 2018-10-31 10:33:23 +01:00
Raphael Michel ea63b50f2e Bank transfer: consider payments valid even without quota 2018-10-31 10:31:40 +01:00
Raphael Michel b101251aa4 Log confirmed payments that could not mark the order as paid 2018-10-31 10:31:21 +01:00
Raphael Michel c9ba72ebc5 Fix a typo 2018-10-31 10:27:14 +01:00
Raphael Michel 4a1c3088a9 Locking in OrderChangeManager caused unexpected problems 2018-10-31 10:04:53 +01:00
Raphael Michel a480ca1142 Add reverse charge flag to invoices 2018-10-30 10:57:29 +01:00
Tobias Kunze a928fbfafe Config files (#1057)
* Move coveragerc to setup.cfg

* Move pytest.ini to setup.cfg

Closes #1027
2018-10-30 10:12:17 +01:00
Tobias Kunze 3bf3ff1ee2 Allow empty plugin responses (#1056)
While plugin developers are supposed to return an empty dictionary, it's
conceivable that they might just put in a `return` if their field is not
needed, and pretix being generous about this would be cool.
2018-10-30 10:11:39 +01:00
Raphael Michel 9647cc6cf2 Add more favicons for browser shortcuts 2018-10-30 10:05:48 +01:00
Raphael Michel df2d8925ed Prevent some race conditions 2018-10-29 17:27:12 +01:00
Raphael Michel 7a945daefc Fix #957 -- Integrate BezahlCode and GiroCode 2018-10-29 12:57:26 +01:00
Raphael Michel 409e77cf2f Stop pinning setuptools 2018-10-29 12:42:07 +01:00
Raphael Michel 552f99a63b Read PDF backgrounds with strict=False 2018-10-29 11:41:26 +01:00
Raphael Michel 0842311451 PDF renderer: Do not break on wrong poweredby-styles 2018-10-29 11:41:26 +01:00
Raphael Michel 4d4b498636 Resolve bug in event copy signals of pdf output and badges 2018-10-29 11:41:26 +01:00
Raphael Michel d08cc12240 Do not break on short VAT IDs 2018-10-29 11:41:26 +01:00
Raphael Michel 237442872e Reliably delete addons when deleting cart positions 2018-10-29 11:41:25 +01:00
Raphael Michel 16983826fb Allow to store structured invoice addresses 2018-10-24 01:37:18 +02:00
Raphael Michel e60ff6b777 Allow to store strucutred SEPA bank transfer details 2018-10-24 00:21:33 +02:00
Raphael Michel 3a0ef3760c Make logging for payment changes consistent with OrderPayment handling 2018-10-22 22:28:42 +02:00
Raphael Michel bc0bc78219 Try to fix invoice export 2018-10-22 06:23:09 +02:00
Tobias Kunze d3137505a1 Don't offer to check empty VAT ID (#1044) 2018-10-17 01:50:24 +02:00
Flavia Bastos a2acd336eb Fix #970 -- invoice info consistency (#1043)
resolves: Issue #970
2018-10-17 01:50:00 +02:00
Raphael Michel 6e4750336b Fix test case for previous commit 2018-10-12 11:44:46 +02:00
Raphael Michel ddefeeaf02 Waiting list should send things out even if waiting list is disabled 2018-10-12 10:45:33 +02:00
Raphael Michel 250e0a930d Prevent huge invoice files if a JPEG logo is used 2018-10-09 10:56:11 +02:00
Tobias Kunze 51c6d60760 Use http_date instead of cookie_date (#1042)
http_date is deprecated as of Django 2.1
2018-10-09 10:50:25 +02:00
Raphael Michel db513b21f8 Fix Apple Pay verification for organizer domains 2018-10-09 09:22:12 +02:00
Raphael Michel ab336678ce Allow to change slug in admin sessions 2018-10-09 09:19:36 +02:00
Raphael Michel 3eea4d6945 Show suebvent in addons view 2018-10-08 12:17:30 +02:00
Raphael Michel d091d3fd17 Show subevent in questions form 2018-10-08 11:20:15 +02:00
Raphael Michel fc71f484ad Fix urlconf definition 2018-10-05 10:41:35 +02:00
Raphael Michel bd772bf900 Never fail to send an email because of missing attachments 2018-10-05 09:33:40 +02:00
Raphael Michel 14db654681 Fix Apple Pay for custom domains 2018-10-05 09:31:23 +02:00
Raphael Michel a85b96ea89 Allow plugins to have organizer_patterns 2018-10-05 09:31:14 +02:00
Raphael Michel c2b5e876bc Bump version to 2.2.0.dev0 2018-10-04 11:35:00 +02:00
Raphael Michel 91c02dc0b3 Bump version to 2.1.0 2018-10-04 11:33:09 +02:00
Raphael Michel f78ec830b5 Fix pretix-stripe.js 2018-10-03 17:31:06 +02:00
Raphael Michel 9f0e508ab3 Do not require meta_noindex 2018-10-03 12:52:37 +02:00
Raphael Michel 4ca50d750b Merge pull request #1037 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2018-10-03 12:44:14 +02:00
Raphael Michel 07c1b1b7f3 Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2773 of 2773 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2018-10-03 10:43:50 +00:00
Raphael Michel 3e95dd52cf Translated on translate.pretix.eu (German)
Currently translated at 100.0% (2773 of 2773 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2018-10-03 10:43:35 +00:00
Raphael Michel 80ef2f6b0e Translated on translate.pretix.eu (German (informal))
Currently translated at 100.0% (2773 of 2773 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2018-10-03 10:38:42 +00:00
Raphael Michel 53a8cda310 Update po files
[CI skip]

Signed-off-by: Raphael Michel <mail@raphaelmichel.de>
2018-10-03 12:25:02 +02:00
Raphael Michel 63de49104c Merge pull request #1016 from pretix-translations/weblate-pretix-pretix
Update from Weblate.
2018-10-03 12:24:28 +02:00
Maarten van den Berg 8aa80bcb84 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (2727 of 2727 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2018-10-03 10:15:55 +00:00
oocf 95115a7c5e Translated on translate.pretix.eu (Spanish)
Currently translated at 99.9% (2725 of 2727 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2018-10-03 10:15:55 +00:00
oocf ce2967fd02 Translated on translate.pretix.eu (Spanish)
Currently translated at 99.9% (2725 of 2727 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2018-10-03 10:15:55 +00:00
oocf 399fb87d20 Translated on translate.pretix.eu (Spanish)
Currently translated at 99.7% (2719 of 2727 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2018-10-03 10:15:55 +00:00
oocf c4bd5ac5df Translated on translate.pretix.eu (Spanish)
Currently translated at 99.7% (2719 of 2727 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2018-10-03 10:15:55 +00:00
Maarten van den Berg 123c2d6c02 Translated on translate.pretix.eu (Dutch)
Currently translated at 99.4% (2711 of 2727 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2018-10-03 10:15:55 +00:00
Maarten van den Berg 6954e9c984 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (65 of 65 strings)

Translation: pretix/pretix (frontend)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2018-10-03 10:15:55 +00:00
Yunus Fırat Pişkin fc573e4e48 Translated on translate.pretix.eu (Turkish)
Currently translated at 100.0% (2727 of 2727 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/tr/

powered by weblate
2018-10-03 10:15:55 +00:00
Raphael Michel 0dbcfdc5ac Allow to enable ticket downloads for pending orders 2018-10-03 12:15:43 +02:00
Raphael Michel 4b8d4b4792 Allow to bulk-delete vouchers 2018-10-03 11:32:55 +02:00
Raphael Michel d798da33ef Add option to add robots=noindex meta tag 2018-10-03 11:15:59 +02:00
Raphael Michel d99517c8d1 Fix #917 -- Attach tickets to emails (#1034) 2018-10-03 11:06:50 +02:00
Raphael Michel 0787adcb8e Fix AttributeError in paypal module 2018-10-02 17:12:26 +02:00
Raphael Michel f848561d25 Expose log details for admins 2018-10-01 14:13:44 +02:00
Raphael Michel efbddc2486 Log failed payments 2018-10-01 13:48:47 +02:00
Raphael Michel e6a138d8f2 Bank transfer: Use correct attribute 2018-10-01 13:05:17 +02:00
Raphael Michel 5b7a578307 Improve display of stripe transaction data 2018-10-01 12:47:36 +02:00
Raphael Michel 737738de93 Fix control display of bank transfers 2018-10-01 12:43:12 +02:00
Raphael Michel eb3951ce13 Fix waiting list action view without return value 2018-10-01 12:43:12 +02:00
Raphael Michel c2b7d9a257 Fix transaction handling in invite form 2018-09-30 14:07:14 +02:00
Raphael Michel 4738aa2771 Fix contextual table styles 2018-09-30 13:11:33 +02:00
Raphael Michel 29ac0af55e Improve Device.__str__ method 2018-09-28 16:33:15 +02:00
Raphael Michel 96bc64c456 Do not break invoices if order has no locale 2018-09-27 17:15:49 +02:00
Raphael Michel 0369deb72d Fix permission for access to root event resource 2018-09-27 10:01:57 +02:00
Raphael Michel 6e53990845 Make last commit more resilient 2018-09-25 18:20:40 +02:00
Raphael Michel feb262644e Orders API: Reduce query load imposed by ?pdf_data=true by multiple orders of magnitude 2018-09-25 17:39:58 +02:00
Raphael Michel abd679820f Merge pull request #1017 from pretix/deviceauth
Authentication scheme for devices
2018-09-25 14:36:23 +02:00
Raphael Michel cd3ce848d1 Document permissions 2018-09-25 12:30:15 +02:00
Raphael Michel 63ba393c12 Proper permission handling and testing 2018-09-25 12:29:05 +02:00
Raphael Michel 23fdf8c457 Add compatibility note 2018-09-25 12:12:33 +02:00
Raphael Michel 304ad4e3db Restrict list of events 2018-09-25 10:54:36 +02:00
Raphael Michel ec58ab07b6 Add tests for control 2018-09-25 10:28:07 +02:00
Raphael Michel 1ba4047b1b API-level tests 2018-09-25 10:28:07 +02:00
Raphael Michel 0bab8adc41 Add documentation on auth 2018-09-25 10:28:07 +02:00
Raphael Michel 17e09c601e Revoke + Logging 2018-09-25 10:28:07 +02:00
Raphael Michel 1aca5fb6ff Fix wrong action parameter 2018-09-25 10:28:07 +02:00
Raphael Michel 7860d690fa Add endpoints to update, roll and revoke devices 2018-09-25 10:28:07 +02:00
Raphael Michel 6d01c99d38 Auth mechanism 2018-09-25 10:28:07 +02:00
Raphael Michel ddb645aeea Creating device objects 2018-09-25 10:28:07 +02:00
Raphael Michel f08e4b41c4 Data model 2018-09-25 10:28:07 +02:00
Raphael Michel 1e23624955 Fix #1032 -- Workaround for markdown version 2018-09-24 14:07:11 +02:00
Raphael Michel ee951a7448 API: Add subevent list on organizer level 2018-09-24 12:59:44 +02:00
Raphael Michel 9935ba370d Event list API: Do not show events without any access permissions 2018-09-24 12:44:45 +02:00
Raphael Michel e815cce143 Event list API: Add filters 2018-09-24 12:36:12 +02:00
Raphael Michel cea1032180 SplitDateTimeField: Adjust placeholders to actual locale 2018-09-21 16:54:22 +02:00
Raphael Michel 5695e1d9c8 SplitDateTimeField: Consider field empty if only a time is given 2018-09-21 16:54:22 +02:00
Raphael Michel fd317afd01 Improve accessibility of payment selection 2018-09-21 16:54:22 +02:00
Raphael Michel ccddd2a96f Activate passbook by default if installed 2018-09-21 16:54:22 +02:00
Raphael Michel 513d3034d8 Remove deprecated template part 2018-09-20 21:12:49 +02:00
Raphael Michel 51495187fa Merge pull request #1028 from chrko/error_pages_html
Fix outside of body script element
2018-09-20 10:08:11 +02:00
Christian Kohlstedde 2bd53f7b9f Fix outside of body script element
Signed-off-by: Christian Kohlstedde <christian@kohlsted.de>
2018-09-20 10:00:55 +02:00
Raphael Michel 06d9c48ed4 Allow to restrict payment methods by invoice address country 2018-09-19 16:10:40 +02:00
Raphael Michel 1155d18b7f Show waiting list options even when waiting list is disabled 2018-09-19 15:44:17 +02:00
Raphael Michel 6e14592c78 Delete check-ins when deleting a check-in list 2018-09-19 15:41:49 +02:00
Raphael Michel 55feaf2d2c Invoices: Your reference → Customer reference 2018-09-19 15:40:50 +02:00
Raphael Michel c487036c8b Fix bug in thumbnail generation of small images 2018-09-19 15:38:12 +02:00
Raphael Michel 853ebf8c70 Fix Sphinx warnings 2018-09-19 14:00:01 +02:00
Raphael Michel 1c695c1cf9 Remove unused resource from docs 2018-09-19 13:59:15 +02:00
Raphael Michel bd5687d169 Remove lock when paying a pending order 2018-09-17 13:04:49 +02:00
1092 changed files with 585435 additions and 86147 deletions
+42
View File
@@ -0,0 +1,42 @@
name: Documentation
on:
push:
branches: [ master ]
paths-ignore:
- 'src/pretix/locale/**'
- 'src/pretix/static/**'
- 'src/tests/**'
pull_request:
branches: [ master ]
paths-ignore:
- 'src/pretix/locale/**'
- 'src/pretix/static/**'
- 'src/tests/**'
jobs:
spelling:
name: Spellcheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
- uses: actions/cache@v1
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install system packages
run: sudo apt update && sudo apt install enchant hunspell aspell-en
- name: Install Dependencies
run: pip3 install --no-use-pep517 -Ur doc/requirements.txt
- name: Spellcheck docs
run: make spelling
working-directory: ./doc
- name:
run: '[ ! -s _build/spelling/output.txt ]'
working-directory: ./doc
+62
View File
@@ -0,0 +1,62 @@
name: Strings
on:
push:
branches: [ master ]
paths:
- 'doc/**'
- 'src/pretix/locale/**'
pull_request:
branches: [ master ]
paths:
- 'doc/**'
- 'src/pretix/locale/**'
jobs:
compile:
runs-on: ubuntu-latest
name: Check gettext syntax
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
- uses: actions/cache@v1
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install system packages
run: sudo apt update && sudo apt install gettext
- name: Install Dependencies
run: pip3 install --no-use-pep517 -Ur src/requirements.txt
- name: Compile messages
run: python manage.py compilemessages
working-directory: ./src
- name: Compile jsi18n
run: python manage.py compilejsi18n
working-directory: ./src
spelling:
runs-on: ubuntu-latest
name: Spellcheck
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
- uses: actions/cache@v1
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install system packages
run: sudo apt update && sudo apt install enchant hunspell hunspell-de-de aspell-en aspell-de
- name: Install Dependencies
run: pip3 install --no-use-pep517 -Ur src/requirements/dev.txt
- name: Spellcheck translations
run: potypo
working-directory: ./src
+55
View File
@@ -0,0 +1,55 @@
name: Code Style
on:
push:
branches: [ master ]
paths-ignore:
- 'src/pretix/locale/**'
- 'src/pretix/static/**'
pull_request:
branches: [ master ]
paths-ignore:
- 'src/pretix/locale/**'
- 'src/pretix/static/**'
jobs:
isort:
name: isort
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
- uses: actions/cache@v1
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install Dependencies
run: pip3 install --no-use-pep517 -Ur src/requirements/dev.txt
- name: Run isort
run: isort -c .
working-directory: ./src
flake:
name: flake8
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
- uses: actions/cache@v1
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install Dependencies
run: pip3 install -r src/requirements.txt --no-use-pep517 -Ur src/requirements/dev.txt
- name: Run flake8
run: flake8 .
working-directory: ./src
+75
View File
@@ -0,0 +1,75 @@
name: Tests
on:
push:
branches: [ master ]
paths-ignore:
- 'doc/**'
- 'src/pretix/locale/**'
pull_request:
branches: [ master ]
paths-ignore:
- 'doc/**'
- 'src/pretix/locale/**'
jobs:
test:
runs-on: ubuntu-latest
name: Tests
strategy:
matrix:
python-version: [3.6, 3.7, 3.8]
database: [sqlite, postgres, mysql]
exclude:
- database: mysql
python-version: 3.7
- database: sqlite
python-version: 3.7
- database: mysql
python-version: 3.6
- database: sqlite
python-version: 3.6
steps:
- uses: actions/checkout@v2
- uses: getong/mariadb-action@v1.1
with:
mariadb version: '10.4'
mysql database: 'pretix'
mysql root password: ''
if: matrix.database == 'mysql'
- uses: harmon758/postgresql-action@v1
with:
postgresql version: '11'
postgresql db: 'pretix'
postgresql user: 'postgres'
postgresql password: 'postgres'
if: matrix.database == 'postgres'
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- uses: actions/cache@v1
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install system dependencies
run: sudo apt update && sudo apt install gettext mysql-client
- name: Install Python dependencies
run: pip3 install -r src/requirements.txt --no-use-pep517 -Ur src/requirements/dev.txt mysqlclient psycopg2-binary
- name: Run checks
run: python manage.py check
working-directory: ./src
- name: Compile
working-directory: ./src
run: make all compress
- name: Run tests
working-directory: ./src
run: PRETIX_CONFIG_FILE=tests/travis_${{ matrix.database }}.cfg py.test -n 3 -p no:sugar --cov=./ --cov-report=xml --reruns 3 tests --maxfail=100
- name: Upload coverage
uses: codecov/codecov-action@v1
with:
file: src/coverage.xml
fail_ci_if_error: true
if: matrix.database == 'postgres' && matrix.python-version == '3.8'
+10 -4
View File
@@ -5,7 +5,11 @@ tests:
- virtualenv env
- source env/bin/activate
- pip install -U pip wheel setuptools
- XDG_CACHE_HOME=/cache bash .travis.sh tests
- XDG_CACHE_HOME=/cache pip3 install -r src/requirements.txt --no-use-pep517 -Ur src/requirements/dev.txt
- cd src
- python manage.py check
- make all compress
- py.test --reruns 3 -n 3 tests
tags:
- python3
except:
@@ -16,15 +20,17 @@ pypi:
- cp /keys/.pypirc ~/.pypirc
- virtualenv env
- source env/bin/activate
- pip install -U pip wheel setuptools
- pip install -U pip wheel setuptools check-manifest twine
- XDG_CACHE_HOME=/cache pip3 install -Ur src/requirements.txt -r src/requirements/dev.txt
- cd src
- python setup.py sdist
- pip install dist/pretix-*.tar.gz
- python -m pretix migrate
- python -m pretix check
- python setup.py sdist upload
- python setup.py bdist_wheel upload
- check-manifest
- python setup.py sdist bdist_wheel
- twine check dist/*
- twine upload dist/*
tags:
- python3
only:
-69
View File
@@ -1,69 +0,0 @@
#!/bin/bash
set -e
set -x
echo "Executing job $1"
if [ "$PRETIX_CONFIG_FILE" == "tests/travis_mysql.cfg" ]; then
mysql -u root -e 'CREATE DATABASE pretix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;'
pip3 install -Ur src/requirements/mysql.txt
fi
if [ "$PRETIX_CONFIG_FILE" == "tests/travis_postgres.cfg" ]; then
psql -c 'create database travis_ci_test;' -U postgres
pip3 install -Ur src/requirements/postgres.txt
fi
if [ "$1" == "style" ]; then
XDG_CACHE_HOME=/cache pip3 install -Ur src/requirements.txt -r src/requirements/dev.txt
cd src
flake8 .
isort -c -rc -df .
fi
if [ "$1" == "doctests" ]; then
XDG_CACHE_HOME=/cache pip3 install -Ur doc/requirements.txt
cd doc
make doctest
fi
if [ "$1" == "doc-spelling" ]; then
XDG_CACHE_HOME=/cache pip3 install -Ur doc/requirements.txt
cd doc
make spelling
if [ -s _build/spelling/output.txt ]; then
exit 1
fi
fi
if [ "$1" == "translation-spelling" ]; then
XDG_CACHE_HOME=/cache pip3 install -Ur src/requirements/dev.txt
cd src
potypo
fi
if [ "$1" == "tests" ]; then
pip3 install -r src/requirements.txt -Ur src/requirements/dev.txt pytest-xdist
cd src
python manage.py check
make all compress
py.test --reruns 5 -n 2 tests
fi
if [ "$1" == "tests-cov" ]; then
pip3 install -r src/requirements.txt -Ur src/requirements/dev.txt
cd src
python manage.py check
make all compress
coverage run -m py.test --reruns 5 tests && codecov
fi
if [ "$1" == "plugins" ]; then
pip3 install -r src/requirements.txt -Ur src/requirements/dev.txt
cd src
python setup.py develop
make all compress
pushd ~
git clone --depth 1 https://github.com/pretix/pretix-cartshare.git
cd pretix-cartshare
python setup.py develop
make
py.test --reruns 5 tests
popd
fi
-42
View File
@@ -1,42 +0,0 @@
language: python
sudo: false
install:
- pip install -U pip wheel setuptools==28.6.1
script:
- bash .travis.sh $JOB
cache:
directories:
- $HOME/.cache/pip
services:
- mysql
- postgresql
matrix:
include:
- python: 3.6
env: JOB=tests PRETIX_CONFIG_FILE=tests/travis_sqlite.cfg
- python: 3.6
env: JOB=tests-cov PRETIX_CONFIG_FILE=tests/travis_postgres.cfg
- python: 3.6
env: JOB=style
- python: 3.5
env: JOB=tests PRETIX_CONFIG_FILE=tests/travis_sqlite.cfg
- python: 3.6
env: JOB=tests PRETIX_CONFIG_FILE=tests/travis_mysql.cfg
- python: 3.6
env: JOB=tests PRETIX_CONFIG_FILE=tests/travis_postgres.cfg
- python: 3.6
env: JOB=plugins
- python: 3.6
env: JOB=doc-spelling
- python: 3.6
env: JOB=translation-spelling
addons:
postgresql: "9.4"
apt:
packages:
- enchant
- myspell-de-de
- aspell-en
branches:
except:
- /^weblate-.*/
+1 -1
View File
@@ -3,7 +3,7 @@ Contributing to pretix
Hey there and welcome to pretix!
We've got an contributors guide in [our documentation](https://docs.pretix.eu/en/latest/development/contribution/)
We've got a contributors guide in [our documentation](https://docs.pretix.eu/en/latest/development/contribution/)
together with notes on the [development setup](https://docs.pretix.eu/en/latest/development/setup.html).
Please note that we have a [Code of Conduct](https://docs.pretix.eu/en/latest/development/contribution/codeofconduct.html)
+39 -8
View File
@@ -1,10 +1,26 @@
FROM python:3.6
RUN apt-get update && \
apt-get install -y git libxml2-dev libxslt1-dev python-dev python-virtualenv locales \
libffi-dev build-essential python3-dev zlib1g-dev libssl-dev gettext libpq-dev \
default-libmysqlclient-dev libmemcached-dev libjpeg-dev supervisor nginx sudo \
--no-install-recommends && \
apt-get install -y --no-install-recommends \
build-essential \
default-libmysqlclient-dev \
gettext \
git \
libffi-dev \
libjpeg-dev \
libmemcached-dev \
libpq-dev \
libssl-dev \
libxml2-dev \
libxslt1-dev \
locales \
nginx \
python-dev \
python-virtualenv \
python3-dev \
sudo \
supervisor \
zlib1g-dev && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
dpkg-reconfigure locales && \
@@ -13,25 +29,40 @@ RUN apt-get update && \
mkdir /etc/pretix && \
mkdir /data && \
useradd -ms /bin/bash -d /pretix -u 15371 pretixuser && \
echo 'pretixuser ALL=(ALL) NOPASSWD: /usr/bin/supervisord' >> /etc/sudoers && \
echo 'pretixuser ALL=(ALL) NOPASSWD:SETENV: /usr/bin/supervisord' >> /etc/sudoers && \
mkdir /static
ENV LC_ALL=C.UTF-8 \
DJANGO_SETTINGS_MODULE=production_settings
# To copy only the requirements files needed to install from PIP
COPY src/requirements /pretix/src/requirements
COPY src/requirements.txt /pretix/src
RUN pip3 install -U \
pip \
setuptools \
wheel && \
cd /pretix/src && \
pip3 install \
-r requirements.txt \
-r requirements/memcached.txt \
-r requirements/mysql.txt \
-r requirements/redis.txt \
gunicorn && \
rm -rf ~/.cache/pip
COPY deployment/docker/pretix.bash /usr/local/bin/pretix
COPY deployment/docker/supervisord.conf /etc/supervisord.conf
COPY deployment/docker/nginx.conf /etc/nginx/nginx.conf
COPY deployment/docker/production_settings.py /pretix/src/production_settings.py
COPY src /pretix/src
RUN cd /pretix/src && pip3 install .
RUN chmod +x /usr/local/bin/pretix && \
rm /etc/nginx/sites-enabled/default && \
pip3 install -U pip wheel setuptools && \
cd /pretix/src && \
rm -f pretix.cfg && \
pip3 install -r requirements.txt -r requirements/mysql.txt -r requirements/postgres.txt \
-r requirements/memcached.txt -r requirements/redis.txt gunicorn && \
mkdir -p data && \
chown -R pretixuser:pretixuser /pretix /data data && \
sudo -u pretixuser make production
+13 -11
View File
@@ -4,11 +4,10 @@ pretix
.. image:: https://img.shields.io/pypi/v/pretix.svg
:target: https://pypi.python.org/pypi/pretix
.. image:: https://readthedocs.org/projects/pretix/badge/?version=latest
.. image:: https://github.com/pretix/pretix/workflows/Documentation/badge.svg
:target: https://docs.pretix.eu/en/latest/
.. image:: https://travis-ci.org/pretix/pretix.svg?branch=master
:target: https://travis-ci.org/pretix/pretix
.. image:: https://github.com/pretix/pretix/workflows/Tests/badge.svg
.. image:: https://codecov.io/gh/pretix/pretix/branch/master/graph/badge.svg
:target: https://codecov.io/gh/pretix/pretix
@@ -20,9 +19,8 @@ Reinventing ticket presales, one ticket at a time.
Project status & release cycle
------------------------------
While there is always a lot to do and improve on, pretix by now has been in use for more than a dozen
conferences that sold over ten thousand tickets combined without major problems. We therefore think of
pretix as being stable and ready to use.
While there is always a lot to do and improve on, pretix by now has been in use for thousands of events
conferences that sold millions of tickets combined. We therefore think of pretix as being stable and ready to use.
If you want to use or extend pretix, we strongly recommend to follow our `blog`_. We will announce all
releases there. You can always find the latest stable version on PyPI or in the ``release/X.Y`` branch of
@@ -31,9 +29,13 @@ the sense that it does not break your data, but its APIs might change without p
To get started using pretix on your own server, look at the `installation guide`_ in our documentation.
This project is 100 percent free and open source software. If you are interested in commercial support,
hosting services or supporting this project financially, please go to `pretix.eu`_ or contact us at
support@pretix.eu.
Support
-------
This project is 100 percent free and open source software. You are welcome to ask questions in the GitHub
repository. Private support via email or phone is only offered to customers of our pretix Hosted or pretix
Enterprise offerings. If you are interested in commercial support, hosting services or supporting this project
financially, please go to `pretix.eu`_ or contact us at support@pretix.eu.
Contributing
------------
@@ -53,8 +55,8 @@ License
The code in this repository is published under the terms of the Apache License.
See the LICENSE file for the complete license text.
This project is maintained by Raphael Michel <mail@raphaelmichel.de>. See the
AUTHORS file for a list of all the awesome folks who contributed to this project.
This project is maintained by Raphael Michel. See the AUTHORS file for a list of all
the awesome folks who contributed to this project.
.. _installation guide: https://docs.pretix.eu/en/latest/admin/installation/index.html
.. _developer documentation: https://docs.pretix.eu/en/latest/development/index.html
+2 -2
View File
@@ -4,7 +4,7 @@ pid /var/run/nginx.pid;
daemon off;
events {
worker_connections 768;
worker_connections 4096;
}
http {
@@ -39,7 +39,7 @@ http {
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen 80 backlog=4096 default_server;
listen [::]:80 ipv6only=on default_server;
server_name _;
index index.php index.html;
+4 -5
View File
@@ -19,7 +19,7 @@ fi
python3 -m pretix migrate --noinput
if [ "$1" == "all" ]; then
exec sudo /usr/bin/supervisord -n -c /etc/supervisord.conf
exec sudo -E /usr/bin/supervisord -n -c /etc/supervisord.conf
fi
if [ "$1" == "webworker" ]; then
@@ -33,8 +33,8 @@ if [ "$1" == "webworker" ]; then
fi
if [ "$1" == "taskworker" ]; then
export C_FORCE_ROOT=True
exec celery -A pretix.celery_app worker -l info
shift
exec celery -A pretix.celery_app worker -l info "$@"
fi
if [ "$1" == "shell" ]; then
@@ -45,5 +45,4 @@ if [ "$1" == "upgrade" ]; then
exec python3 -m pretix updatestyles
fi
echo "Specify argument: all|cron|webworker|taskworker|shell|upgrade"
exit 1
exec python3 -m pretix "$@"
+3
View File
@@ -6099,3 +6099,6 @@ img.screenshot, a.screenshot img {
.versionchanged p:last-child {
margin-bottom: 0;
}
.rst-content td > .line-block {
margin-left: 0 !important;
}
+78
View File
@@ -57,6 +57,9 @@ Example::
A comma-separated list of plugins that are not available even though they are installed.
Defaults to an empty string.
``auth_backends``
A comma-separated list of available auth backends. Defaults to ``pretix.base.auth.NativeAuthBackend``.
``cookie_domain``
The cookie domain to be set. Defaults to ``None``.
@@ -78,6 +81,25 @@ Example::
Enables or disables nagging staff users for leaving comments on their sessions for auditability.
Defaults to ``off``.
``obligatory_2fa``
Enables or disables obligatory usage of Two-Factor Authentication for users of the pretix backend.
Defaults to ``False``
``trust_x_forwarded_for``
Specifies whether the ``X-Forwarded-For`` header can be trusted. Only set to ``on`` if you have a reverse
proxy that actively removes and re-adds the header to make sure the correct client IP is the first value.
Defaults to ``off``.
``trust_x_forwarded_proto``
Specifies whether the ``X-Forwarded-Proto`` header can be trusted. Only set to ``on`` if you have a reverse
proxy that actively removes and re-adds the header to make sure the correct value is set.
Defaults to ``off``.
``csp_log``
Log violations of the Content Security Policy (CSP). Defaults to ``on``.
``loglevel``
Set console and file log level (``DEBUG``, ``INFO``, ``WARNING``, ``ERROR`` or ``CRITICAL``). Defaults to ``INFO``.
Locale settings
---------------
@@ -125,6 +147,27 @@ Example::
Indicates if the database backend is a MySQL/MariaDB Galera cluster and
turns on some optimizations/special case handlers. Default: ``False``
.. _`config-replica`:
Database replica settings
-------------------------
If you use a replicated database setup, pretix expects that the default database connection always points to the primary database node.
Routing read queries to a replica on database layer is **strongly** discouraged since this can lead to inaccurate such as more tickets
being sold than are actually available.
However, pretix can still make use of a database replica to keep some expensive queries with that can tolerate some latency from your
primary database, such as backend search queries. The ``replica`` configuration section can have the same settings as the ``database``
section (except for the ``backend`` setting) and will default back to the ``database`` settings for all values that are not given. This
way, you just need to specify the settings that are different for the replica.
Example::
[replica]
host=192.168.0.2
.. _`config-urls`:
URLs
----
@@ -252,6 +295,24 @@ to speed up various operations::
If redis is not configured, pretix will store sessions and locks in the database. If memcached
is configured, memcached will be used for caching instead of redis.
Translations
------------
pretix comes with a number of translations. Some of them are marked as "incubating", which means
they can usually only be selected in development mode. If you want to use them nevertheless, you
can activate them like this::
[languages]
allow_incubating=pt-br,da
You can also tell pretix about additional paths where it will search for translations::
[languages]
path=/path/to/my/translations
For a given language (e.g. ``pt-br``), pretix will then look in the
specific sub-folder, e.g. ``/path/to/my/translations/pt_BR/LC_MESSAGES/django.po``.
Celery task queue
-----------------
@@ -281,6 +342,15 @@ application. If you want to use sentry, you need to set a DSN in the configurati
You will be given this value by your sentry installation.
Caching
-------
You can adjust some caching settings to control how much storage pretix uses::
[cache]
tickets=48 ; Number of hours tickets (PDF, passbook, …) are cached
Secret length
-------------
@@ -295,5 +365,13 @@ various places like order codes, secrets in the ticket QR codes, etc. Example::
; Voucher code needs to be < 255 characters, default is 16
voucher_code=16
External tools
--------------
pretix can make use of some external tools if they are installed. Currently, they are all optional. Example::
[tools]
pdftk=/usr/bin/pdftk
.. _Python documentation: https://docs.python.org/3/library/configparser.html?highlight=configparser#supported-ini-file-structure
.. _Celery documentation: http://docs.celeryproject.org/en/latest/userguide/configuration.html
+2
View File
@@ -11,3 +11,5 @@ This documentation is for everyone who wants to install pretix on a server.
installation/index
config
maintainance
scaling
indexes
+73
View File
@@ -0,0 +1,73 @@
Additional database indices
===========================
If you have a large pretix database, some features such as search for orders or events might turn pretty slow.
For PostgreSQL, we have compiled a list of additional database indexes that you can add to speed things up.
Just like any index, they in turn make write operations insignificantly slower and cause the database to use
more disk space.
The indexes aren't automatically created by pretix since Django does not allow us to do so only on PostgreSQL
(and they won't work on other databases). Also, they're really not necessary if you're not having tens of
thousands of records in your database.
However, this also means they won't automatically adapt if some of the referred fields change in future updates of pretix
and you might need to re-check this page and change them manually.
Here is the currently recommended set of commands::
CREATE EXTENSION pg_trgm;
CREATE INDEX CONCURRENTLY pretix_addidx_event_slug
ON pretixbase_event
USING gin (upper("slug") gin_trgm_ops);
CREATE INDEX CONCURRENTLY pretix_addidx_event_name
ON pretixbase_event
USING gin (upper("name") gin_trgm_ops);
CREATE INDEX CONCURRENTLY pretix_addidx_order_code
ON pretixbase_order
USING gin (upper("code") gin_trgm_ops);
CREATE INDEX CONCURRENTLY pretix_addidx_voucher_code
ON pretixbase_voucher
USING gin (upper("code") gin_trgm_ops);
CREATE INDEX CONCURRENTLY pretix_addidx_invoice_nu1
ON "pretixbase_invoice" (UPPER("invoice_no"));
CREATE INDEX CONCURRENTLY pretix_addidx_invoice_nu2
ON "pretixbase_invoice" (UPPER("full_invoice_no"));
CREATE INDEX CONCURRENTLY pretix_addidx_organizer_name
ON pretixbase_organizer
USING gin (upper("name") gin_trgm_ops);
CREATE INDEX CONCURRENTLY pretix_addidx_organizer_slug
ON pretixbase_organizer
USING gin (upper("slug") gin_trgm_ops);
CREATE INDEX CONCURRENTLY pretix_addidx_order_email
ON pretixbase_order
USING gin (upper("email") gin_trgm_ops);
CREATE INDEX CONCURRENTLY pretix_addidx_order_comment
ON pretixbase_order
USING gin (upper("comment") gin_trgm_ops);
CREATE INDEX CONCURRENTLY pretix_addidx_orderpos_name
ON pretixbase_orderposition
USING gin (upper("attendee_name_cached") gin_trgm_ops);
CREATE INDEX CONCURRENTLY pretix_addidx_orderpos_scret
ON pretixbase_orderposition
USING gin (upper("secret") gin_trgm_ops);
CREATE INDEX CONCURRENTLY pretix_addidx_orderpos_email
ON pretixbase_orderposition
USING gin (upper("attendee_email") gin_trgm_ops);
CREATE INDEX CONCURRENTLY pretix_addidx_ia_name
ON pretixbase_invoiceaddress
USING gin (upper("name_cached") gin_trgm_ops);
CREATE INDEX CONCURRENTLY pretix_addidx_ia_company
ON pretixbase_invoiceaddress
USING gin (upper("company") gin_trgm_ops);
Also, if you use our ``pretix-shipping`` plugin::
CREATE INDEX CONCURRENTLY pretix_addidx_sa_name
ON pretix_shipping_shippingaddress
USING gin (upper("name") gin_trgm_ops);
CREATE INDEX CONCURRENTLY pretix_addidx_sa_company
ON pretix_shipping_shippingaddress
USING gin (upper("company") gin_trgm_ops);
+37
View File
@@ -0,0 +1,37 @@
.. highlight:: none
Installing a development version
================================
If you want to use a feature of pretix that is not yet contained in the last monthly release, you can also
install a development version with pretix.
.. warning:: When in production, we strongly recommend only installing released versions. Development versions might
be broken, incompatible to plugins, or in rare cases incompatible to upgrade later on.
Manual installation
-------------------
You can use ``pip`` to update pretix directly to the development branch. Then, upgrade as usual::
$ source /var/pretix/venv/bin/activate
(venv)$ pip3 install -U "git+https://github.com/pretix/pretix.git#egg=pretix&subdirectory=src"
(venv)$ python -m pretix migrate
(venv)$ python -m pretix rebuild
(venv)$ python -m pretix updatestyles
# systemctl restart pretix-web pretix-worker
Docker installation
-------------------
To use the latest development version with Docker, first pull it from Docker Hub::
$ docker pull pretix/standalone:latest
Then change your ``/etc/systemd/system/pretix.service`` file to use the ``:latest`` tag instead of ``:stable`` as well
and upgrade as usual::
$ systemctl restart pretix.service
$ docker exec -it pretix.service pretix upgrade
+40 -17
View File
@@ -26,7 +26,7 @@ installation guides):
* `Docker`_
* A SMTP server to send out mails, e.g. `Postfix`_ on your machine or some third-party server you have credentials for
* A HTTP reverse proxy, e.g. `nginx`_ or Apache to allow HTTPS connections
* A `MySQL`_ or `PostgreSQL`_ database server
* A `PostgreSQL`_ 9.5+, `MySQL`_ 5.7+, or MariaDB 10.2.7+ database server
* A `redis`_ server
We also recommend that you use a firewall, although this is not a pretix-specific recommendation. If you're new to
@@ -36,6 +36,9 @@ Linux and firewalls, we recommend that you start with `ufw`_.
SSL certificates can be obtained for free these days. We also *do not* provide support for HTTP-only
installations except for evaluation purposes.
.. warning:: We recommend **PostgreSQL**. If you go for MySQL, make sure you run **MySQL 5.7 or newer** or
**MariaDB 10.2.7 or newer**.
On this guide
-------------
@@ -55,16 +58,29 @@ Database
--------
Next, we need a database and a database user. We can create these with any kind of database managing tool or directly on
our database's shell, e.g. for MySQL::
our database's shell. For PostgreSQL, we would do::
$ mysql -u root -p
mysql> CREATE DATABASE pretix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> GRANT ALL PRIVILEGES ON pretix.* TO pretix@'localhost' IDENTIFIED BY '*********';
mysql> FLUSH PRIVILEGES;
# sudo -u postgres createuser -P pretix
# sudo -u postgres createdb -O pretix pretix
Replace the asterisks with a password of your own. For MySQL, we will use a unix domain socket to connect to the
database. For PostgreSQL, be sure to configure the interface binding and your firewall so that the docker container
can reach PostgreSQL.
Make sure that your database listens on the network. If PostgreSQL on the same same host as docker, but not inside a docker container, we recommend that you just listen on the Docker interface by changing the following line in ``/etc/postgresql/<version>/main/postgresql.conf``::
listen_addresses = 'localhost,172.17.0.1'
You also need to add a new line to ``/etc/postgresql/<version>/main/pg_hba.conf`` to allow network connections to this user and database::
host pretix pretix 172.17.0.1/16 md5
Restart PostgreSQL after you changed these files::
# systemctl restart postgresql
If you have a firewall running, you should also make sure that port 5432 is reachable from the ``172.17.0.1/16`` subnet.
For MySQL, you can either also use network-based connections or mount the ``/var/run/mysqld/mysqld.sock`` socket into the docker container.
When using MySQL, make sure you set the character set of the database to ``utf8mb4``, e.g. like this::
mysql > CREATE DATABASE pretix DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
Redis
-----
@@ -109,15 +125,20 @@ Fill the configuration file ``/etc/pretix/pretix.cfg`` with the following conten
; DO NOT change the following value, it has to be set to the location of the
; directory *inside* the docker container
datadir=/data
trust_x_forwarded_for=on
trust_x_forwarded_proto=on
[database]
; Replace mysql with postgresql_psycopg2 for PostgreSQL
backend=mysql
; Replace postgresql with mysql for MySQL
backend=postgresql
name=pretix
user=pretix
; Replace with the password you chose above
password=*********
; Replace with host IP address for PostgreSQL
host=/var/run/mysqld/mysqld.sock
; In most docker setups, 172.17.0.1 is the address of the docker host. Adjuts
; this to wherever your database is running, e.g. the name of a linked container
; or of a mounted MySQL socket.
host=172.17.0.1
[mail]
; See config file documentation for more options
@@ -161,14 +182,16 @@ named ``/etc/systemd/system/pretix.service`` with the following content::
-v /var/pretix-data:/data \
-v /etc/pretix:/etc/pretix \
-v /var/run/redis:/var/run/redis \
-v /var/run/mysqld:/var/run/mysqld \
--sysctl net.core.somaxconn=4096 \
pretix/standalone:stable all
ExecStop=/usr/bin/docker stop %n
[Install]
WantedBy=multi-user.target
You can leave the MySQL socket volume out if you're using PostgreSQL. You can now run the following commands
When using MySQL and socket mounting, you'll need the additional flag ``-v /var/run/mysqld:/var/run/mysqld`` in the command.
You can now run the following commands
to enable and start the service::
# systemctl daemon-reload
@@ -256,7 +279,7 @@ choice)::
Then, go to that directory and build the image::
$ docker build -t mypretix
$ docker build . -t mypretix
You can now use that image ``mypretix`` instead of ``pretix/standalone`` in your service file (see above). Be sure
to re-build your custom image after you pulled ``pretix/standalone`` if you want to perform an update.
@@ -267,7 +290,7 @@ to re-build your custom image after you pulled ``pretix/standalone`` if you want
.. _Let's Encrypt: https://letsencrypt.org/
.. _pretix.eu: https://pretix.eu/
.. _MySQL: https://dev.mysql.com/doc/refman/5.7/en/linux-installation-apt-repo.html
.. _PostgreSQL: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-9-4-on-debian-8
.. _PostgreSQL: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-20-04
.. _redis: https://blog.programster.org/debian-8-install-redis-server/
.. _ufw: https://en.wikipedia.org/wiki/Uncomplicated_Firewall
.. _redis website: https://redis.io/topics/security
+84
View File
@@ -0,0 +1,84 @@
.. highlight:: none
Installing pretix Enterprise plugins
====================================
If you want to use a feature of pretix that is part of our commercial offering pretix Enterprise, you need to follow
some extra steps. Installation works similar to normal pretix plugins, but involves a few extra steps.
Buying the license
------------------
To obtain a license, please get in touch at sales@pretix.eu. Please let us know how many tickets you roughly intend
to sell per year and how many servers you want to use the plugin on. We recommend having a look at our `price list`_
first.
Manual installation
-------------------
First, generate an SSH key for the system user that you install pretix as. In our tutorial, that would be the user
``pretix``. Choose an empty passphrase::
# su pretix
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/pretix/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/pretix/.ssh/id_rsa.
Your public key has been saved in /var/pretix/.ssh/id_rsa.pub.
Next, send the content of the *public* key to your sales representative at pretix::
$ cat /var/pretix/.ssh/id_rsa.pub
ssh-rsa AAAAB3N...744HZawHlD pretix@foo
After we configured your key in our system, you can install the plugin directly using ``pip`` from the URL we told
you, for example::
$ source /var/pretix/venv/bin/activate
(venv)$ pip3 install -U "git+ssh://git@code.rami.io:10022/pretix/pretix-slack.git@stable#egg=pretix-slack"
(venv)$ python -m pretix migrate
(venv)$ python -m pretix rebuild
# systemctl restart pretix-web pretix-worker
Docker installation
-------------------
To install a plugin, you need to build your own docker image. To do so, create a new directory to work in. As a first
step, generate a new SSH key in that directory to use for authentication with us::
$ cd /home/me/mypretixdocker
$ ssh-keygen -N "" -f id_pretix_enterprise
Next, send the content of the *public* key to your sales representative at pretix::
$ cat id_pretix_enterprise.pub
ssh-rsa AAAAB3N...744HZawHlD pretix@foo
After we configured your key in our system, you can add a ``Dockerfile`` in your directory that includes the newly
generated key and installs the plugin from the URL we told you::
FROM pretix/standalone:stable
USER root
COPY id_pretix_enterprise /root/.ssh/id_rsa
COPY id_pretix_enterprise.pub /root/.ssh/id_rsa.pub
RUN chmod -R 0600 /root/.ssh && \
mkdir -p /etc/ssh && \
ssh-keyscan -t rsa -p 10022 code.rami.io >> /root/.ssh/known_hosts && \
echo StrictHostKeyChecking=no >> /root/.ssh/config && \
DJANGO_SETTINGS_MODULE=pretix.settings pip3 install -U "git+ssh://git@code.rami.io:10022/pretix/pretix-slack.git@stable#egg=pretix-slack" && \
cd /pretix/src && \
sudo -u pretixuser make production
USER pretixuser
Then, build the image for docker::
$ docker build -t mypretix
You can now use that image ``mypretix`` instead of ``pretix/standalone:stable`` in your ``/etc/systemd/system/pretix.service``
service file. Be sure to re-build your custom image after you pulled ``pretix/standalone`` if you want to perform an
update to a new version of pretix.
.. _price list: https://pretix.eu/about/en/pricing
+3
View File
@@ -21,6 +21,9 @@ To use pretix, you will need the following things:
.. warning:: Do not ever use SQLite in production. It will break.
.. warning:: We recommend **PostgreSQL**. If you go for MySQL, make sure you run **MySQL 5.7 or newer** or
**MariaDB 10.2.7 or newer**.
* A **reverse proxy**. pretix needs to deliver some static content to your users (e.g. CSS, images, ...). While pretix
is capable of doing this, having this handled by a proper web server like **nginx** or **Apache** will be much
faster. Also, you need a proxying web server in front to provide SSL encryption.
+4
View File
@@ -1,3 +1,5 @@
.. _`installation`:
Installation guide
==================
@@ -10,3 +12,5 @@ for your needs.
general
docker_smallscale
manual_smallscale
dev_version
enterprise
+34 -22
View File
@@ -12,7 +12,7 @@ solution with many things readily set-up, look at :ref:`dockersmallscale`.
get it right. If you're not feeling comfortable managing a Linux server, check out our hosting and service
offers at `pretix.eu`_.
We tested this guide on the Linux distribution **Debian 8.0** but it should work very similar on other
We tested this guide on the Linux distribution **Debian 10.0** but it should work very similar on other
modern distributions, especially on all systemd-based ones.
Requirements
@@ -23,7 +23,7 @@ installation guides):
* A SMTP server to send out mails, e.g. `Postfix`_ on your machine or some third-party server you have credentials for
* A HTTP reverse proxy, e.g. `nginx`_ or Apache to allow HTTPS connections
* A `MySQL`_ or `PostgreSQL`_ database server
* A `PostgreSQL`_ 9.5+, `MySQL`_ 5.7+, or MariaDB 10.2.7+ database server
* A `redis`_ server
We also recommend that you use a firewall, although this is not a pretix-specific recommendation. If you're new to
@@ -33,6 +33,9 @@ Linux and firewalls, we recommend that you start with `ufw`_.
SSL certificates can be obtained for free these days. We also *do not* provide support for HTTP-only
installations except for evaluation purposes.
.. warning:: We recommend **PostgreSQL**. If you go for MySQL, make sure you run **MySQL 5.7 or newer** or
**MariaDB 10.2.7 or newer**.
Unix user
---------
@@ -47,21 +50,23 @@ Database
--------
Having the database server installed, we still need a database and a database user. We can create these with any kind
of database managing tool or directly on our database's shell, e.g. for MySQL::
of database managing tool or directly on our database's shell. For PostgreSQL, we would do::
$ mysql -u root -p
mysql> CREATE DATABASE pretix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> GRANT ALL PRIVILEGES ON pretix.* TO pretix@'localhost' IDENTIFIED BY '*********';
mysql> FLUSH PRIVILEGES;
# sudo -u postgres createuser pretix
# sudo -u postgres createdb -O pretix pretix
When using MySQL, make sure you set the character set of the database to ``utf8mb4``, e.g. like this::
mysql > CREATE DATABASE pretix DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
Package dependencies
--------------------
To build and run pretix, you will need the following debian packages::
# apt-get install git build-essential python-dev python-virtualenv python3 python3-pip \
# apt-get install git build-essential python-dev python3-venv python3 python3-pip \
python3-dev libxml2-dev libxslt1-dev libffi-dev zlib1g-dev libssl-dev \
gettext libpq-dev libmysqlclient-dev libjpeg-dev
gettext libpq-dev libmariadbclient-dev libjpeg-dev libopenjp2-7-dev
Config file
-----------
@@ -80,15 +85,22 @@ Fill the configuration file ``/etc/pretix/pretix.cfg`` with the following conten
url=https://pretix.mydomain.com
currency=EUR
datadir=/var/pretix/data
trust_x_forwarded_for=on
trust_x_forwarded_proto=on
[database]
; Replace mysql with postgresql_psycopg2 for PostgreSQL
backend=mysql
; For MySQL, replace with "mysql"
backend=postgresql
name=pretix
user=pretix
password=*********
; Replace with host IP address for PostgreSQL
host=/var/run/mysqld/mysqld.sock
; For MySQL, enter the user password. For PostgreSQL on the same host,
; we don't need one because we can use peer authentification if our
; PostgreSQL user matches our unix user.
password=
; For MySQL, use local socket, e.g. /var/run/mysqld/mysqld.sock
; For a remote host, supply an IP address
; For local postgres authentication, you can leave it empty
host=
[mail]
; See config file documentation for more options
@@ -112,16 +124,16 @@ Now we will install pretix itself. The following steps are to be executed as the
actually install pretix, we will create a virtual environment to isolate the python packages from your global
python installation::
$ virtualenv -p python3 /var/pretix/venv
$ python3 -m venv /var/pretix/venv
$ source /var/pretix/venv/bin/activate
(venv)$ pip3 install -U pip setuptools wheel
We now install pretix, its direct dependencies and gunicorn. Replace ``mysql`` with ``postgres`` in the following
command if you're running PostgreSQL::
We now install pretix, its direct dependencies and gunicorn. Replace ``postgres`` with ``mysql`` in the following
command if you're running MySQL::
(venv)$ pip3 install "pretix[mysql]" gunicorn
(venv)$ pip3 install "pretix[postgres]" gunicorn
Note that you need Python 3.5 or newer. You can find out your Python version using ``python -V``.
Note that you need Python 3.6 or newer. You can find out your Python version using ``python -V``.
We also need to create a data directory::
@@ -265,10 +277,10 @@ Updates
.. warning:: While we try hard not to break things, **please perform a backup before every upgrade**.
To upgrade to a new pretix release, pull the latest code changes and run the following commands (again, replace
``mysql`` with ``postgres`` if necessary)::
``postgres`` with ``mysql`` if necessary)::
$ source /var/pretix/venv/bin/activate
(venv)$ pip3 install -U pretix[mysql] gunicorn
(venv)$ pip3 install -U pretix[postgres] gunicorn
(venv)$ python -m pretix migrate
(venv)$ python -m pretix rebuild
(venv)$ python -m pretix updatestyles
@@ -296,7 +308,7 @@ example::
.. _Let's Encrypt: https://letsencrypt.org/
.. _pretix.eu: https://pretix.eu/
.. _MySQL: https://dev.mysql.com/doc/refman/5.7/en/linux-installation-apt-repo.html
.. _PostgreSQL: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-9-4-on-debian-8
.. _PostgreSQL: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-20-04
.. _redis: https://blog.programster.org/debian-8-install-redis-server/
.. _ufw: https://en.wikipedia.org/wiki/Uncomplicated_Firewall
.. _strong encryption settings: https://mozilla.github.io/server-side-tls/ssl-config-generator/
+2 -1
View File
@@ -92,7 +92,8 @@ pretix_task_duration_seconds
pretix_model_instances
Gauge. Measures number of instances of a certain model within the database, labeled with
the ``model`` name.
the ``model`` name. Starting with pretix 3.11, these numbers might only be approximate for
most tables when running on PostgreSQL to mitigate performance impact.
.. _metric types: https://prometheus.io/docs/concepts/metric_types/
.. _Prometheus: https://prometheus.io/
+236
View File
@@ -0,0 +1,236 @@
.. _`scaling`:
Scaling guide
=============
Our :ref:`installation guide <installation>` only covers "small-scale" setups, by which we mostly mean
setups that run on a **single (virtual) machine** and do not encounter large traffic peaks.
We do not offer an installation guide for larger-scale setups of pretix, mostly because we believe that
there is no one-size-fits-all solution for this and the desired setup highly depends on your use case,
the platform you run pretix on, and your technical capabilities. We do not recommend trying set up pretix
in a multi-server environment if you do not already have experience with managing server clusters.
This document is intended to give you a general idea on what issues you will encounter when you scale up
and what you should think of.
.. tip::
If you require more help on this, we're happy to help. Our pretix Enterprise support team has built
and helped building, scaling and load-testing pretix installations at any scale and we're looking
forward to work with you on fine-tuning your system. If you intend to sell **more than a thousand
tickets in a very short amount of time**, we highly recommend reaching out and at least talking this
through. Just get in touch at sales@pretix.eu!
Scaling reasons
---------------
There's mainly two reasons to scale up a pretix installation beyond a single server:
* **Availability:** Distributing pretix over multiple servers can allow you to survive failure of one or more single machines, leading to a higher uptime and reliability of your system.
* **Traffic and throughput:** Distributing pretix over multiple servers can allow you to process more web requests and ticket sales at the same time.
You are very unlikely to require scaling for other reasons, such as having too much data in your database.
Components
----------
A pretix installation usually consists of the following components which run performance-relevant processes:
* ``pretix-web`` is the Django-based web application that serves all user interaction.
* ``pretix-worker`` is a Celery-based application that processes tasks that should be run asynchronously outside of the web application process.
* A **SQL database** keeps all the important data and processes the actual transactions. We recommend using PostgreSQL, but MySQL/MariaDB works as well.
* A **web server** that terminates TLS and HTTP connections and forwards them to ``pretix-web``. In some cases, e.g. when serving static files, the web servers might return a response directly. We recommend using ``nginx``.
* A **redis** server responsible for the communication between ``pretix-web`` and ``pretix-worker``, as well as for caching.
* A directory of **media files** such as user-uploaded files or generated files (tickets, invoices, …) that are created and used by ``pretix-web``, ``pretix-worker`` and the web server.
In the following, we will discuss the scaling behavior of every component individually. In general, you can run all of the components
on the same server, but you can just as well distribute every component to its own server, or even use multiple servers for some single
components.
.. warning::
When setting up your system, don't forget about security. In a multi-server environment,
you need to take special care to ensure that no unauthorized access to your database
is possible through the network and that it's not easy to wiretap your connections. We
recommend a rigorous use of firewalls and encryption on all communications. You can
ensure this either on an application level (such as using the TLS support in your
database) or on a network level with a VPN solution.
Web server
""""""""""
Your web server is at the very front of your installation. It will need to absorb all of the traffic, and it should be able to
at least show a decent error message, even when everything else fails. Luckily, web servers are really fast these days, so this
can be achieved without too much work.
We recommend reading up on tuning your web server for high concurrency. For nginx, this means thinking about the number of worker
processes and the number of connections each worker process accepts. Double-check that TLS session caching works, because TLS
handshakes can get really expensive.
During a traffic peak, your web server will be able to make us of more CPU resources, while memory usage will stay comparatively low,
so if you invest in more hardware here, invest in more and faster CPU cores.
Make sure that pretix' static files (such as CSS and JavaScript assets) as well as user-uploaded media files (event logos, etc)
are served directly by your web server and your web server caches them in-memory (nginx does it by default) and sets useful
headers for client-side caching. As an additional performance improvement, you can turn of access logging for these types of files.
If you want, you can even farm out serving static files to a different web server entirely and :ref:`configure pretix to reference
them from a different URL <config-urls>`.
.. tip::
If you expect *really high traffic* for your very popular event, you might want to do some rate limiting on this layer, or,
if you want to ensure a fair and robust first-come-first-served experience and prefer letting users wait over showing them
errors, consider a queuing solution. We're happy to provide you with such systems, just get in touch at sales@pretix.eu.
pretix-web
""""""""""
The ``pretix-web`` process does not carry any internal state can be easily started on as many machines as you like, and you can
use the load balancing features of your frontend web server to redirect to all of them.
You can adjust the number of processes in the ``gunicorn`` command line, and we recommend choosing roughly two times the number
of CPU cores available. Under load, the memory consumption of ``pretix-web`` will stay comparatively constant, while the CPU usage
will increase a lot. Therefore, if you can add more or faster CPU cores, you will be able to serve more users.
pretix-worker
"""""""""""""
The ``pretix-worker`` process performs all operations that are not directly executed in the request-response-cycle of ``pretix-web``.
Just like ``pretix-web`` you can easily start up as many instances as you want on different machines to share the work. As long as they
all talk to the same redis server, they will all receive tasks from ``pretix-web``, work on them and post their result back.
You can configure the number of threads that run tasks in parallel through the ``--concurrency`` command line option of ``celery``.
Just like ``pretix-web``, this process is mostly heavy on CPU, disk IO and network IO, although memory peaks can occur e.g. during the
generation of large PDF files, so we recommend having some reserves here.
``pretix-worker`` performs a variety of tasks which are of different importance.
Some of them are mission-critical and need to be run quickly even during high load (such as
creating a cart or an order), others are irrelevant and can easily run later (such as
distributing tickets on the waiting list). You can fine-tune the capacity you assign to each
of these tasks by running ``pretix-worker`` processes that only work on a specific **queue**.
For example, you could have three servers dedicated only to process order creations and one
server dedicated only to sending emails. This allows you to set priorities and also protects
you from e.g. a slow email server lowering your ticket throughput.
You can do so by specifying one or more queues on the ``celery`` command line of this process, such as ``celery -A pretix.celery_app worker -Q notifications,mail``. Currently,
the following queues exist:
* ``checkout`` -- This queue handles everything related to carts and orders and thereby everything required to process a sale. This includes adding and deleting items from carts as well as creating and canceling orders.
* ``mail`` -- This queue handles sending of outgoing emails.
* ``notifications`` -- This queue handles the processing of any outgoing notifications, such as email notifications to admin users (except for the actual sending) or API notifications to registered webhooks.
* ``background`` -- This queue handles tasks that are expected to take long or have no human waiting for their result immediately, such as refreshing caches, re-generating CSS files, assigning tickets on the waiting list or parsing bank data files.
* ``default`` -- This queue handles everything else with "medium" or unassigned priority, most prominently the generation of files for tickets, invoices, badges, admin exports, etc.
Media files
"""""""""""
Both ``pretix-web``, ``pretix-worker`` and in some cases your webserver need to work with
media files. Media files are all files generated *at runtime* by the software. This can
include files uploaded by the event organizers, such as the event logo, files uploaded by
ticket buyers (if you use such features) or files generated by the software, such as
ticket files, invoice PDFs, data exports or customized CSS files.
Those files are by default stored to the ``media/`` sub-folder of the data directory given
in the ``pretix.cfg`` configuration file. Inside that ``media/`` folder, you will find a
``pub/`` folder containing the subset of files that should be publicly accessible through
the web server. Everything else only needs to be accessible by ``pretix-web`` and
``pretix-worker`` themselves.
If you distribute ``pretix-web`` or ``pretix-worker`` across more than one machine, you
**must** make sure that they all have access to a shared storage to read and write these
files, otherwise you **will** run into errors with the user interface.
The easiest solution for this is probably to store them on a NFS server that you mount
on each of the other servers.
Since we use Django's file storage mechanism internally, you can in theory also use a object-storage solution like Amazon S3, Ceph, or Minio to store these files, although we currently do not expose this through pretix' configuration file and this would require you to ship your own variant of ``pretix/settings.py`` and reference it through the ``DJANGO_SETTINGS_MODULE`` environment variable.
At pretix.eu, we use a custom-built `object storage cluster`_.
SQL database
""""""""""""
One of the most critical parts of the whole setup is the SQL database -- and certainly the
hardest to scale. Tuning relational databases is an art form, and while there's lots of
material on it on the internet, there's not a single recipe that you can apply to every case.
As a general rule of thumb, the more resources you can give your databases, the better.
Most databases will happily use all CPU cores available, but only use memory up to an amount
you configure, so make sure to set this memory usage as high as you can afford. Having more
memory available allows your database to make more use of caching, which is usually good.
Scaling your database to multiple machines needs to be treated with great caution. It's a
good to have a replica of your database for availability reasons. In case your primary
database server fails, you can easily switch over to the replica and continue working.
However, using database replicas for performance gains is much more complicated. When using
replicated database systems, you are always trading in consistency or availability to get
additional performance and the consequences of this can be subtle and it is important
that you have a deep understanding of the semantics of your replication mechanism.
.. warning::
Using an off-the-shelf database proxy solution that redirects read queries to your
replicas and write queries to your primary database **will lead to very nasty bugs.**
As an example, if you buy a ticket, pretix first needs to calculate how many tickets
are left to sell. If this calculation is done on a database replica that lags behind
even for fractions of a second, the decision to allow selling the ticket will be made
on out-of-data data and you can end up with more tickets sold than configured. Similarly,
you could imagine situations leading to double payments etc.
If you do have a replica, you *can* tell pretix about it :ref:`in your configuration <config-replica>`.
This way, pretix can offload complex read-only queries to the replica when it is safe to do so.
As of pretix 2.7, this is mainly used for search queries in the backend and for rendering the
product list and event lists in the frontend, but we plan on expanding this in the future.
Therefore, for now our clear recommendation is: Try to scale your database vertically and put
it on the most powerful machine you have available.
redis
"""""
While redis is a very important part that glues together some of the components, it isn't used
heavily and can usually handle a fairly large pretix installation easily on a single modern
CPU core.
Having some memory available is good in case of e.g. lots of tasks queuing up during a traffic peak, but we wouldn't expect ever needing more than a gigabyte of it.
Feel free to set up a redis cluster for availability but you won't need it for performance in a long time.
The limitations
---------------
Up to a certain point, pretix scales really well. However, there are a few things that we consider
even more important than scalability, and those are correctness and reliability. We want you to be
able to trust that pretix will not sell more tickets than you intended or run into similar error
cases.
Combined with pretix' flexibility and complexity, especially around vouchers and quotas, this creates
some hard issues. In many cases, we need to fall back to event-global locking for some actions which
are likely to run with high concurrency and cause harm.
For every event, only one of these locking actions can be run at the same time. Examples for this are
adding products limited by a quota to a cart, adding items to a cart using a voucher or placing an order
consisting of cart positions that don't have a valid reservation for much longer. In these cases, it is
currently not realistically possible to exceed selling **approx. 500 orders per minute per event**, even
if you add more hardware.
If you have an unlimited number of tickets, we can apply fewer locking and we've reached **approx.
1500 orders per minute per event** in benchmarks, although even more should be possible.
We're working to reduce the number of cases in which this is relevant and thereby improve the possible
throughput. If you want to use pretix for an event with 10,000+ tickets that are likely to be sold out
within minutes, please get in touch to discuss possible solutions. We'll work something out for you!
.. _object storage cluster: https://behind.pretix.eu/2018/03/20/high-available-cdn/
+9
View File
@@ -0,0 +1,9 @@
Authentication
==============
.. toctree::
:maxdepth: 2
tokenauth
oauth
deviceauth
+196
View File
@@ -0,0 +1,196 @@
.. _`rest-deviceauth`:
Device authentication
=====================
Initializing a new device
-------------------------
Users can create new devices in the "Device" section of their organizer settings. When creating
a new device, users can specify a list of events the device is allowed to access. After a new
device is created, users will be presented initialization instructions, consisting of an URL
and an initialization token. They will also be shown as a QR code with the following contents::
{"handshake_version": 1, "url": "https://pretix.eu", "token": "kpp4jn8g2ynzonp6"}
Your application should be able to scan a QR code of this type, or allow to enter the URL and the
initialization token manually. The handshake version is not used for manual initialization. When a
QR code is scanned with a higher handshake version than you support, you should reject the request
and prompt the user to update the client application.
After your application received the token, you need to call the initialization endpoint to obtain
a proper API token. At this point, you need to identify the name and version of your application,
as well as the type of underlying hardware. Example:
.. sourcecode:: http
POST /api/v1/device/initialize HTTP/1.1
Host: pretix.eu
Content-Type: application/json
{
"token": "kpp4jn8g2ynzonp6",
"hardware_brand": "Samsung",
"hardware_model": "Galaxy S",
"software_brand": "pretixdroid",
"software_version": "4.0.0"
}
Every initialization token can only be used once. On success, you will receive a response containing
information on your device as well as your API token:
.. sourcecode:: http
HTTP/1.1 200 OK
Content-Type: application/json
{
"organizer": "foo",
"device_id": 5,
"unique_serial": "HHZ9LW9JWP390VFZ",
"api_token": "1kcsh572fonm3hawalrncam4l1gktr2rzx25a22l8g9hx108o9oi0rztpcvwnfnd",
"name": "Bar",
"gate": {
"id": 3,
"name": "South entrance"
}
}
Please make sure that you store this ``api_token`` value. We also recommend storing your device ID, your assigned
``unique_serial``, and the ``organizer`` you have access to, but that's up to you. ``gate`` might be ``null``.
In case of an error, the response will look like this:
.. sourcecode:: http
HTTP/1.1 400 Bad Request
Content-Type: application/json
{"token":["This initialization token has already been used."]}
Performing API requests
-----------------------
You need to include the API token with every request to pretix' API in the ``Authorization`` header
like the following:
.. sourcecode:: http
:emphasize-lines: 3
GET /api/v1/organizers/ HTTP/1.1
Host: pretix.eu
Authorization: Device 1kcsh572fonm3hawalrncam4l1gktr2rzx25a22l8g9hx108o9oi0rztpcvwnfnd
Updating the software version
-----------------------------
If your application is updated, we ask you to tell the server about the new version in use. You can do this at the
following endpoint:
.. sourcecode:: http
POST /api/v1/device/update HTTP/1.1
Host: pretix.eu
Content-Type: application/json
Authorization: Device 1kcsh572fonm3hawalrncam4l1gktr2rzx25a22l8g9hx108o9oi0rztpcvwnfnd
{
"hardware_brand": "Samsung",
"hardware_model": "Galaxy S",
"software_brand": "pretixdroid",
"software_version": "4.1.0"
}
You will receive a response equivalent to the response of your initialization request.
Creating a new API key
----------------------
If you think your API key might have leaked or just want to be extra cautious, the API allows you to create a new key.
The old API key will be invalid immediately. A request for a new key looks like this:
.. sourcecode:: http
POST /api/v1/device/roll HTTP/1.1
Host: pretix.eu
Authorization: Device 1kcsh572fonm3hawalrncam4l1gktr2rzx25a22l8g9hx108o9oi0rztpcvwnfnd
The response will look like the response to the initialization request.
Removing a device
-----------------
If you want implement a way to to deprovision a device in your software, you can call the ``revoke`` endpoint to
invalidate your API key. There is no way to reverse this operation.
.. sourcecode:: http
POST /api/v1/device/revoke HTTP/1.1
Host: pretix.eu
Authorization: Device 1kcsh572fonm3hawalrncam4l1gktr2rzx25a22l8g9hx108o9oi0rztpcvwnfnd
This can also be done by the user through the web interface.
Permissions & security profiles
-------------------------------
Device authentication is currently hardcoded to grant the following permissions:
* View event meta data and products etc.
* View orders
* Change orders
* Manage gift cards
Devices cannot change events or products and cannot access vouchers.
Additionally, when creating a device through the user interface or API, a user can specify a "security profile" for
the device. These include an allow list of specific API calls that may be made by the device. pretix ships with security
policies for official pretix apps like pretixSCAN and pretixPOS.
Removing a device
-----------------
If you want implement a way to to deprovision a device in your software, you can call the ``revoke`` endpoint to
invalidate your API key. There is no way to reverse this operation.
.. sourcecode:: http
POST /api/v1/device/revoke HTTP/1.1
Host: pretix.eu
Authorization: Device 1kcsh572fonm3hawalrncam4l1gktr2rzx25a22l8g9hx108o9oi0rztpcvwnfnd
This can also be done by the user through the web interface.
Event selection
---------------
In most cases, your application should allow the user to select the event and check-in list they work with manually
from a list. However, in some cases it is required to automatically configure the device for the correct event, for
example in a kiosk-like situation where nobody is operating the device. In this case, the app can query the server
for a suggestion which event should be used. You can also submit the configuration that is currently in use via
query parameters:
.. sourcecode:: http
GET /api/v1/device/eventselection?current_event=democon&current_subevent=42&current_checkinlist=542 HTTP/1.1
Host: pretix.eu
Authorization: Device 1kcsh572fonm3hawalrncam4l1gktr2rzx25a22l8g9hx108o9oi0rztpcvwnfnd
You can get three response codes:
* ``304`` The server things you already selected a good event
* ``404`` The server has not found a suggestion for you
* ``200`` The server suggests a new event (body see below)
.. sourcecode:: http
HTTP/1.1 200 OK
Content-Type: application/json
{
"event": "democon",
"subevent": 23,
"checkinlist": 5
}
+61 -38
View File
@@ -9,44 +9,20 @@ with pretix' REST API, such as authentication, pagination and similar definition
Authentication
--------------
If you're building an application for end users, we strongly recommend that you use our
:ref:`OAuth-based authentication progress <rest-oauth>`. However, for simpler needs, you
can also go with static API tokens that you can create on a per-team basis (see below).
To access the API, you need to present valid authentication credentials. pretix currently
supports the following authorization schemes:
You need to include the API token with every request to pretix' API in the ``Authorization`` header
like the following:
.. sourcecode:: http
:emphasize-lines: 3
GET /api/v1/organizers/ HTTP/1.1
Host: pretix.eu
Authorization: Token e1l6gq2ye72thbwkacj7jbri7a7tvxe614ojv8ybureain92ocub46t5gab5966k
.. note:: The API currently also supports authentication via browser sessions, i.e. the
same way that you authenticate with pretix when using the browser interface.
Using this type of authentication is *not* officially supported for use by
third-party clients and might change or be removed at any time. We plan on
adding OAuth2 support in the future for user-level authentication. If you want
to use session authentication, be sure to comply with Django's `CSRF policies`_.
Obtaining an API token
----------------------
To authenticate your API requests, you need to obtain an API token. You can create a
token in the pretix web interface on the level of organizer teams. Create a new team
or choose an existing team that has the level of permissions the token should have and
create a new token using the form below the list of team members:
.. image:: img/token_form.png
:class: screenshot
You can enter a description for the token to distinguish from other tokens later on.
Once you click "Add", you will be provided with an API token in the success message.
Copy this token, as you won't be able to retrieve it again.
.. image:: img/token_success.png
:class: screenshot
* :ref:`rest-tokenauth`: This is the simplest way and recommended for server-side applications
that interact with pretix without user interaction.
* :ref:`rest-oauth`: This is the recommended way to use if you write a third-party application
that users can connect with their pretix account. It provides the best user experience, but
requires user interaction and slightly more implementation effort.
* :ref:`rest-deviceauth`: This is the recommended way if you build apps or hardware devices that can
connect to pretix, e.g. for processing check-ins or to sell tickets offline. It provides a way
to uniquely identify devices and allows for a quick configuration flow inside your software.
* Authentication using browser sessions: This is used by the pretix web interface and it is *not*
officially supported for use by third-party applications. It might change or be removed at any
time without prior notice. If you use it, you need to comply with Django's `CSRF policies`_.
Permissions
-----------
@@ -172,6 +148,7 @@ Field specific input errors include the name of the offending fields as keys in
{"amount": ["A valid integer is required."], "description": ["This field may not be blank."]}
If you see errors of type ``429 Too Many Requests``, you should read our documentation on :ref:`rest-ratelimit`.
Data types
----------
@@ -193,6 +170,19 @@ Date String in ISO 8601 format ``2017-12-27``
Multi-lingual string Object of strings ``{"en": "red", "de": "rot", "de_Informal": "rot"}``
Money String with decimal number ``"23.42"``
Currency String with ISO 4217 code ``"EUR"``, ``"USD"``
Relative datetime *either* String in ISO 8601 ``"2017-12-27T10:00:00.596934Z"``,
format *or* specification of ``"RELDATE/3/12:00:00/presale_start/"``
a relative datetime,
constructed from a number of
days before the base point,
a time of day, and the base
point.
Relative date *either* String in ISO 8601 ``"2017-12-27"``,
format *or* specification of ``"RELDATE/3/-/presale_start/"``
a relative date,
constructed from a number of
days before the base point
and the base point.
===================== ============================ ===================================
Query parameters
@@ -204,4 +194,37 @@ as the string values ``true`` and ``false``.
If the ``ordering`` parameter is documented for a resource, you can use it to sort the result set by one of the allowed
fields. Prepend a ``-`` to the field name to reverse the sort order.
.. _CSRF policies: https://docs.djangoproject.com/en/1.11/ref/csrf/#ajax
Idempotency
-----------
Our API supports an idempotency mechanism to make sure you can safely retry operations without accidentally performing
them twice. This is useful if an API call experiences interruptions in transit, e.g. due to a network failure, and you
do not know if it completed successfully.
To perform an idempotent request, add a ``X-Idempotency-Key`` header with a random string value (we recommend a version
4 UUID) to your request. If we see a second request with the same ``X-Idempotency-Key`` and the same ``Authorization``
and ``Cookie`` headers, we will not perform the action for a second time but return the exact same response instead.
Please note that this also goes for most error responses. For example, if we returned you a ``403 Permission Denied``
error and you retry with the same ``X-Idempotency-Key``, you will get the same error again, even if you were granted
permission in the meantime! This includes internal server errors on our side that might have been fixed in the meantime.
There are only three exceptions to the rule:
* Responses with status code ``409 Conflict`` are not cached. If you send the request again, it will be executed as a
new request, since these responses are intended to be retried.
* Rate-limited responses with status code ``429 Too Many Requests`` are not cached and you can safely retry them.
* Responses with status code ``503 Service Unavailable`` are not cached and you can safely retry them.
If you send a request with an ``X-Idempotency-Key`` header that we have seen before but that has not yet received a
response, you will receive a response with status code ``409 Conflict`` and are asked to retry after five seconds.
We store idempotency keys for 24 hours, so you should never retry a request after a longer time period.
All ``POST``, ``PUT``, ``PATCH``, or ``DELETE`` api calls support idempotency keys. Adding an idempotency key to a
``GET``, ``HEAD``, or ``OPTIONS`` request has no effect.
.. _CSRF policies: https://docs.djangoproject.com/en/1.11/ref/csrf/#ajax
+132
View File
@@ -0,0 +1,132 @@
Creating an external checkout process
=====================================
Occasionally, we get asked whether it is possible to just use pretix' powerful backend as a ticketing engine but use
a fully-customized checkout process that only communicates via the API. This is possible, but with a few limitations.
If you go down this route, you will miss out on many of pretix features and safeguards, as well as the added flexibility
by most of pretix' plugins. We strongly recommend to talk this through with us before you decide this is the way to go.
However, this is really useful if you need to tightly integrate pretix into existing web applications that e.g. control
the pricing of your products in a way that cannot be mapped to pretix' product structures.
Creating orders
---------------
After letting your user select the products to buy in your application, you should create a new order object inside
pretix. Below, you can see an example of such an order, but most fields are optional and there are some more features
supported. Read :ref:`rest-orders-create` to learn more about this endpoint.
Please note that this endpoint assumes trustworthy input for the most part. By default, the endpoint checks that
you do not exceed any quotas, do not sell any seats twice, or do not use any redeemed vouchers. However, it will not
complain about violation of any other availability constraints, such as violation of time frames or minimum/maximum
amounts of either your product or event. Bundled products will not be added in automatically and fees will not be
calculated automatically.
.. sourcecode:: http
POST /api/v1/organizers/democon/events/3vjrh/orders/ HTTP/1.1
Host: test.pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Authorization: …
{
"email": "dummy@example.org",
"locale": "en",
"sales_channel": "web",
"payment_provider": "banktransfer",
"invoice_address": {
"is_business": false,
"company": "Sample company",
"name_parts": {"full_name": "John Doe"},
"street": "Sesam Street 12",
"zipcode": "12345",
"city": "Sample City",
"country": "US",
"state": "NY",
"internal_reference": "",
"vat_id": ""
},
"positions": [
{
"item": 21,
"variation": null,
"attendee_name_parts": {
"full_name": "Peter"
},
"answers": [
{
"question": 1,
"answer": "23",
"options": []
}
],
"subevent": null
}
],
"fees": []
}
You will be returned a full order object that you can inspect, store, or use to build emails or confirmation pages for
the user. If you don't want to do that yourself, it will also contain the URL to our confirmation page in the ``url``
attribute. If you pass the ``"send_mail": true`` option, pretix will also send order confirmations for you.
Handling payments yourself
--------------------------
If you want to handle payments in your application, you can either just create the orders with status "paid" or you can
create them in "pending" state (the default) and later confirm the payment. We strongly advise to use the payment
provider ``"manual"`` in this case to avoid interference with payment code with pretix.
However, it is often unfeasible to implement the payment process yourself, and it also requires you to give up a
lot of pretix functionality, such as automatic refunds. Therefore, it is also possible to utilize pretix' native
payment process even in this case:
Using pretix payment providers
------------------------------
If you passed a ``payment_provider`` during order creation above, pretix will have created a payment object with state
``created`` that you can see in the returned order object. This payment object will have an attribute ``payment_url``
that you can use to let the user pay. For example, you could link or redirect to this page.
If you want the user to return to your application after the payment is complete, you can pass a query parameter
``return_url``. To prepare your event for this, open your event in the pretix backend and go to "Settings", then
"Plugins". Enable the plugin "Redirection from order page". Then, go to the new page "Settings", then "Redirection".
Enter the base URL of your web application. This will allow you to redirect to pages under this base URL later on.
For example, if you want users to be redirected to ``https://example.org/order/return?tx_id=1234``, you could now
either enter ``https://example.org`` or ``https://example.org/order/``.
The user will be redirected back to your page instead of pretix' order confirmation page after the payment,
**regardless of whether it was successful or not**. Make sure you use our API to check if the payment actually
worked! Your final URL could look like this::
https://test.pretix.eu/democon/3vjrh/order/NSLEZ/ujbrnsjzbq4dzhck/pay/123/?return_url=https%3A%2F%2Fexample.org%2Forder%2Freturn%3Ftx_id%3D1234
You can also embed this page in an ``<iframe>`` instead. Note, however, that this causes problems with some payment
methods such as PayPal which do not allow being opened in an iframe. pretix can partly work around these issues by
opening a new window, but will only to so if you also append an ``iframe=1`` parameter to the URL::
https://test.pretix.eu/democon/3vjrh/order/NSLEZ/ujbrnsjzbq4dzhck/pay/123/?return_url=https%3A%2F%2Fexample.org%2Forder%2Freturn%3Ftx_id%3D1234&iframe=1
If you did **not** pass a payment method since you want us to ask the user which payment method they want to use, you
need to construct the URL from the ``url`` attribute of the order and the sub-path ``pay/change```. For example, you
would end up with the following URL::
https://test.pretix.eu/democon/3vjrh/order/NSLEZ/ujbrnsjzbq4dzhck/pay/change
Of course, you can also use the ``iframe`` and ``return_url`` parameters here.
Optional: Cart reservations
---------------------------
Creating orders is an atomic operation: The order is either created as a whole or not at all. However, pretix'
built-in checkout automatically reserves tickets in a user's cart for a configurable amount of time to ensure users
will actually get their tickets once they started entering all their details. If you want a similar behavior in your
application, you need to create :ref:`rest-carts` through the API.
When creating your order, you can pass a ``consume_carts`` parameter with the cart ID(s) of your user. This way, the
quota reserved by the cart will be credited towards the order and the carts will be destroyed if (and only if) the
order creation succeeds.
Cart creation is currently even more limited than the order creation endpoints, as cart creation currently does not
support vouchers or automatic price calculation. If you require these features, please get in touch with us.
+11
View File
@@ -0,0 +1,11 @@
.. _`rest-api-guides`:
API Usage Guides
================
This part of the documentation contains how-to guides on some special use cases of our API.
.. toctree::
:maxdepth: 2
custom_checkout
+4 -4
View File
@@ -7,12 +7,12 @@ This part of the documentation contains information about the REST-style API
exposed by pretix since version 1.5 that can be used by third-party programs
to interact with pretix and its data structures.
Currently, the API provides mostly read-only capabilities, but it will be extended
in functionality over time.
.. toctree::
:maxdepth: 2
fundamentals
oauth
auth
resources/index
ratelimit
webhooks
guides/index
+45 -10
View File
@@ -1,7 +1,7 @@
.. _`rest-oauth`:
OAuth support / "Connect with pretix"
=====================================
OAuth authentication / "Connect with pretix"
============================================
In addition to static tokens, pretix supports `OAuth2`_-based authentication starting with
pretix 1.16. This allows you to put a "Connect with pretix" button into your website or tool
@@ -25,7 +25,7 @@ Obtaining an authorization grant
--------------------------------
To authorize a new user, link or redirect them to the ``authorize`` endpoint, passing your client ID as a query
parameter. Additionally, you can pass a scope (currently either ``read``, ``write``, or ``read write``)
parameter. Additionally, you can pass a scope (currently either ``read``, ``write``, ``read write`` or ``profile``)
and an URL the user should be redirected to after successful or failed authorization. You also need to pass the
``response_type`` parameter with a value of ``code``. Example::
@@ -47,11 +47,9 @@ You will need this ``code`` parameter to perform the next step.
On a failed registration, a query string like ``?error=access_denied`` will be appended to the redirection URL.
.. note:: In this step, the user is allowed to restrict your access to certain organizer accounts. If you try to
re-authenticate the user later, the user might be instantly redirected back to you if authorization is already
given and would therefore be unable to review their organizer restriction settings. You can append the
``approval_prompt=force`` query parameter if you want to make sure the user actively needs to confirm the
authorization.
.. note:: By default, the user is asked to give permission on every call to this URL. If you **only** request the
``profile`` scope, i.e. no access to organizer data, you can pass the ``approval_prompt=auto`` parameter
to skip user interaction on subsequent calls.
Getting an access token
-----------------------
@@ -61,7 +59,7 @@ access to the API. The ``token`` endpoint expects you to authenticate using `HTT
ID as a username and your client secret as a password. You are also required to again supply the same ``redirect_uri``
parameter that you used for the authorization.
.. http:get:: /api/v1/oauth/token
.. http:post:: /api/v1/oauth/token
Request a new access token
@@ -166,6 +164,43 @@ endpoint to revoke it.
If you want to revoke your client secret, you can generate a new one in the list of your managed applications in the
pretix user interface.
Fetching the user profile
-------------------------
If you need the user's meta data, you can fetch it here:
.. http:get:: /api/v1/me
Returns the profile of the authenticated user
**Example request**:
.. sourcecode:: http
GET /api/v1/me HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Authorization: Bearer i3ytqTSRWsKp16fqjekHXa4tdM4qNC
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"email": "admin@localhost",
"fullname": "John Doe",
"locale": "de",
"is_staff": false,
"timezone": "Europe/Berlin"
}
:statuscode 200: no error
:statuscode 401: Authentication failure
.. _OAuth2: https://en.wikipedia.org/wiki/OAuth
.. _OAuth2 Simplified: https://aaronparecki.com/oauth-2-simplified/
.. _HTTP Basic authentication: https://en.wikipedia.org/wiki/Basic_access_authentication
.. _HTTP Basic authentication: https://en.wikipedia.org/wiki/Basic_access_authentication
+31
View File
@@ -0,0 +1,31 @@
.. _`rest-ratelimit`:
Rate limiting
=============
.. note:: This page only applies to the pretix Hosted service at pretix.eu. APIs of custom pretix installations do not
enforce any rate limiting by default.
All authenticated requests to pretix' API are rate limited. If you exceed the limits, you will receive a response
with HTTP status code ``429 Too Many Requests``. This response will have a ``Retry-After`` header, containing the number
of seconds you are supposed to wait until you try again. We expect that all API clients respect this. If you continue
to burst requests after a ``429`` status code, we might get in touch with you or, in extreme cases, disable your API
access.
Currently, the following rate limits apply:
.. rst-class:: rest-resource-table
===================================== =================================================================================
Authentication method Rate limit
===================================== =================================================================================
:ref:`rest-deviceauth` 360 requests per minute per device
:ref:`rest-tokenauth` 360 requests per minute per organizer account
:ref:`rest-oauth` 360 requests per minute per combination of accessed organizer and OAuth application
Session authentication *Not an officially supported authentication method for external access*
===================================== =================================================================================
If you require a higher rate limit, please get in touch at support@pretix.eu and tell us about your use case, we are
sure we can work something out.
+131
View File
@@ -0,0 +1,131 @@
pretix Hosted billing invoices
==============================
This endpoint allows you to access invoices you received for pretix Hosted. It only contains invoices created starting
November 2017.
.. note:: Only available on pretix Hosted, not on self-hosted pretix instances.
Resource description
--------------------
The resource contains the following public fields:
.. rst-class:: rest-resource-table
===================================== ========================== =======================================================
Field Type Description
===================================== ========================== =======================================================
invoice_number string Invoice number
date_issued date Invoice date
===================================== ========================== =======================================================
Endpoints
---------
.. http:get:: /api/v1/organizers/(organizer)/billing_invoices/
Returns a list of all invoices to a given organizer.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/billing_invoices/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"invoice_number": "R2019002",
"date_issued": "2019-06-03"
}
]
}
:query integer page: The page number in case of a multi-page result set, default is 1
:query string ordering: Manually set the ordering of results. Valid fields to be used are ``date_issued`` and
its reverse, ``-date_issued``. Default: ``date_issued``.
:param organizer: The ``slug`` field of the organizer to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to view this resource.
.. http:get:: /api/v1/organizers/(organizer)/billing_invoices/(invoice_number)/
Returns information on one invoice, identified by its invoice number.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/billing_invoices/R2019002/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"invoice_number": "R2019002",
"date_issued": "2019-06-03"
}
:param organizer: The ``slug`` field of the organizer to fetch
:param invoice_number: The ``invoice_number`` field of the invoice to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to view this resource.
.. http:get:: /api/v1/organizers/(organizer)/billing_invoices/(invoice_number)/download/
Download an invoice in PDF format.
.. warning:: After we created the invoices, they are placed in review with our accounting department. You will
already see them in the API at this point, but you are not able to download them until they completed
review and are sent to you via email. This usually takes a few hours. If you try to download them
in this time frame, you will receive a status code :http:statuscode:`423`.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/billing_invoices/R2019002/download/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/pdf
...
:param organizer: The ``slug`` field of the organizer to fetch
:param invoice_number: The ``invoice_number`` field of the invoice to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to view this resource.
:statuscode 423: The file is not yet ready and will now be prepared. Retry the request after waiting for a few
seconds.
+148
View File
@@ -0,0 +1,148 @@
pretix Hosted reseller API
==========================
This API is only accessible to our `value-added reseller partners`_ on pretix Hosted.
.. note:: This API is only accessible with user-level permissions, not with API tokens. Therefore, you will need to
create an :ref:`OAuth application <rest-oauth>` and obtain an OAuth access token for a user account that has
permission to your reseller account.
Reseller account resource
-------------------------
The resource contains the following public fields:
.. rst-class:: rest-resource-table
===================================== ========================== =======================================================
Field Type Description
===================================== ========================== =======================================================
id integer Your reseller ID
name string Internal name of your reseller account
public_name string Public name of your reseller account
public_url string Public URL of your company
support_email string Your support email address
support_phone string Your support phone number
communication_language string Language code we use to communicate with you
===================================== ========================== =======================================================
Endpoints
---------
.. http:get:: /api/v1/var/
Returns a list of all reseller accounts you have access to.
**Example request**:
.. sourcecode:: http
GET /api/v1/var/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"name": "ticketshop.live Ltd & Co. KG",
"public_name": "ticketshop.live",
"public_url": "https://ticketshop.live",
"support_email": "support@ticketshop.live",
"support_phone": "+4962213217750",
"communication_language": "de"
}
]
}
:query integer page: The page number in case of a multi-page result set, default is 1
:statuscode 200: no error
:statuscode 401: Authentication failure
.. http:get:: /api/v1/var/(id)/
Returns information on one reseller account, identified by its ID.
**Example request**:
.. sourcecode:: http
GET /api/v1/var/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"name": "ticketshop.live Ltd & Co. KG",
"public_name": "ticketshop.live",
"public_url": "https://ticketshop.live",
"support_email": "support@ticketshop.live",
"support_phone": "+4962213217750",
"communication_language": "de"
}
:param id: The ``id`` field of the reseller account to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 404: The requested account does not exist **or** you have no permission to view this resource.
.. http:post:: /api/v1/var/(id)/create_organizer/
Creates a new organizer account that will be associated with a given reseller account.
**Example request**:
.. sourcecode:: http
POST /api/v1/var/1/create_organizer/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 123
{
"name": "My new client",
"slug": "New client"
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 201 Created
Vary: Accept
Content-Type: application/json
{
"id": 1,
"name": "My new client",
"slug": "New client"
}
:param id: The ``id`` field of the reseller account to fetch
:statuscode 201: no error
:statuscode 400: Invalid request body, usually the slug is invalid or already taken.
:statuscode 401: Authentication failure
:statuscode 404: The requested account does not exist **or** you have no permission to view this resource.
.. _value-added reseller partners: https://pretix.eu/about/en/var
+21 -3
View File
@@ -25,6 +25,7 @@ item integer ID of the item
variation integer ID of the variation (or ``null``)
price money (string) Price of this position
attendee_name string Specified attendee name for this position (or ``null``)
attendee_name_parts object of strings Composition of attendee name (i.e. first name, last name, …)
attendee_email string Specified attendee email address for this position (or ``null``)
voucher integer Internal ID of the voucher used for this position (or ``null``)
addon_to integer Internal ID of the position this position is an add-on for (or ``null``)
@@ -35,12 +36,20 @@ answers list of objects Answers to user
├ question_identifier string The question's ``identifier`` field
├ options list of integers Internal IDs of selected option(s)s (only for choice types)
└ option_identifiers list of strings The ``identifier`` fields of the selected option(s)s
seat objects The assigned seat. Can be ``null``.
├ id integer Internal ID of the seat instance
├ name string Human-readable seat name
└ seat_guid string Identifier of the seat within the seating plan
===================================== ========================== =======================================================
.. versionchanged:: 1.17
This resource has been added.
.. versionchanged:: 3.0
This ``seat`` attribute has been added.
Cart position endpoints
-----------------------
@@ -78,6 +87,7 @@ Cart position endpoints
"variation": null,
"price": "23.00",
"attendee_name": null,
"attendee_name_parts": {},
"attendee_email": null,
"voucher": null,
"addon_to": null,
@@ -85,6 +95,7 @@ Cart position endpoints
"datetime": "2018-06-11T10:00:00Z",
"expires": "2018-06-11T10:00:00Z",
"includes_tax": true,
"seat": null,
"answers": []
}
]
@@ -122,6 +133,7 @@ Cart position endpoints
"variation": null,
"price": "23.00",
"attendee_name": null,
"attendee_name_parts": {},
"attendee_email": null,
"voucher": null,
"addon_to": null,
@@ -129,6 +141,7 @@ Cart position endpoints
"datetime": "2018-06-11T10:00:00Z",
"expires": "2018-06-11T10:00:00Z",
"includes_tax": true,
"seat": null,
"answers": []
}
@@ -175,11 +188,13 @@ Cart position endpoints
* ``item``
* ``variation`` (optional)
* ``price``
* ``attendee_name`` (optional)
* ``seat`` (The ``seat_guid`` attribute of a seat. Required when the specified ``item`` requires a seat, otherwise must be ``null``.)
* ``attendee_name`` **or** ``attendee_name_parts`` (optional)
* ``attendee_email`` (optional)
* ``subevent`` (optional)
* ``expires`` (optional)
* ``includes_tax`` (optional)
* ``sales_channel`` (optional)
* ``answers``
* ``question``
@@ -193,13 +208,16 @@ Cart position endpoints
POST /api/v1/organizers/bigevents/events/sampleconf/cartpositions/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content: application/json
Content-Type: application/json
{
"item": 1,
"variation": null,
"price": "23.00",
"attendee_name": "Peter",
"attendee_name_parts": {
"given_name": "Peter",
"family_name": "Miller"
},
"attendee_email": null,
"answers": [
{
+2 -2
View File
@@ -20,7 +20,7 @@ internal_name string An optional nam
description multi-lingual string A public description (might include markdown, can
be ``null``)
position integer An integer, used for sorting the categories
is_addon boolean If ``True``, items within this category are not on sale
is_addon boolean If ``true``, items within this category are not on sale
on their own but the category provides a source for
defining add-ons for other products.
===================================== ========================== =======================================================
@@ -131,7 +131,7 @@ Endpoints
POST /api/v1/organizers/bigevents/events/sampleconf/categories/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content: application/json
Content-Type: application/json
{
"name": {"en": "Tickets"},
+133 -19
View File
@@ -1,3 +1,5 @@
.. spelling:: checkin
Check-in lists
==============
@@ -27,6 +29,11 @@ subevent integer ID of the date
position_count integer Number of tickets that match this list (read-only).
checkin_count integer Number of check-ins performed on this list (read-only).
include_pending boolean If ``true``, the check-in list also contains tickets from orders in pending state.
auto_checkin_sales_channels list of strings All items on the check-in list will be automatically marked as checked-in when purchased through any of the listed sales channels.
allow_multiple_entries boolean If ``true``, subsequent scans of a ticket on this list should not show a warning but instead be stored as an additional check-in.
allow_entry_after_exit boolean If ``true``, subsequent scans of a ticket on this list are valid if the last scan of the ticket was an exit scan.
rules object Custom check-in logic. The contents of this field are currently not considered a stable API and modifications through the API are highly discouraged.
exit_all_at datetime Automatically check out (i.e. perform an exit scan) at this point in time. After this happened, this property will automatically be set exactly one day into the future. Note that this field is considered "internal configuration" and if you pull the list with ``If-Modified-Since``, the daily change in this field will not trigger a response.
===================================== ========================== =======================================================
.. versionchanged:: 1.10
@@ -41,6 +48,23 @@ include_pending boolean If ``true``, th
The ``include_pending`` field has been added.
.. versionchanged:: 3.2
The ``auto_checkin_sales_channels`` field has been added.
.. versionchanged:: 3.9
The ``subevent`` attribute may now be ``null`` inside event series. The ``allow_multiple_entries``,
``allow_entry_after_exit``, and ``rules`` attributes have been added.
.. versionchanged:: 3.11
The ``subevent_match`` and ``exclude`` query parameters have been added.
.. versionchanged:: 3.12
The ``exit_all_at`` attribute has been added.
Endpoints
---------
@@ -81,13 +105,22 @@ Endpoints
"all_products": true,
"limit_products": [],
"include_pending": false,
"subevent": null
"subevent": null,
"allow_multiple_entries": false,
"allow_entry_after_exit": true,
"exit_all_at": null,
"rules": {},
"auto_checkin_sales_channels": [
"pretixpos"
]
}
]
}
:query integer page: The page number in case of a multi-page result set, default is 1
:query integer subevent: Only return check-in lists of the sub-event with the given ID
:query integer subevent_match: Only return check-in lists that are valid for the sub-event with the given ID (i.e. also lists valid for all subevents)
:query string exclude: Exclude a field from the output, e.g. ``checkin_count``. Can be used as a performance optimization. Can be passed multiple times.
:param organizer: The ``slug`` field of the organizer to fetch
:param event: The ``slug`` field of the event to fetch
:statuscode 200: no error
@@ -122,7 +155,14 @@ Endpoints
"all_products": true,
"limit_products": [],
"include_pending": false,
"subevent": null
"subevent": null,
"allow_multiple_entries": false,
"allow_entry_after_exit": true,
"exit_all_at": null,
"rules": {},
"auto_checkin_sales_channels": [
"pretixpos"
]
}
:param organizer: The ``slug`` field of the organizer to fetch
@@ -155,15 +195,16 @@ Endpoints
{
"checkin_count": 17,
"position_count": 42,
"inside_count": 12,
"event": {
"name": "Demo Converence",
"name": "Demo Conference"
},
"items": [
{
"name": "T-Shirt",
"id": 1,
"checkin_count": 1,
"admission": False,
"admission": false,
"position_count": 1,
"variations": [
{
@@ -184,7 +225,7 @@ Endpoints
"name": "Ticket",
"id": 2,
"checkin_count": 15,
"admission": True,
"admission": true,
"position_count": 22,
"variations": []
}
@@ -209,13 +250,18 @@ Endpoints
POST /api/v1/organizers/bigevents/events/sampleconf/checkinlists/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content: application/json
Content-Type: application/json
{
"name": "VIP entry",
"all_products": false,
"limit_products": [1, 2],
"subevent": null
"subevent": null,
"allow_multiple_entries": false,
"allow_entry_after_exit": true,
"auto_checkin_sales_channels": [
"pretixpos"
]
}
**Example response**:
@@ -234,7 +280,12 @@ Endpoints
"all_products": false,
"limit_products": [1, 2],
"include_pending": false,
"subevent": null
"subevent": null,
"allow_multiple_entries": false,
"allow_entry_after_exit": true,
"auto_checkin_sales_channels": [
"pretixpos"
]
}
:param organizer: The ``slug`` field of the organizer of the event/item to create a list for
@@ -283,7 +334,12 @@ Endpoints
"all_products": false,
"limit_products": [1, 2],
"include_pending": false,
"subevent": null
"subevent": null,
"allow_multiple_entries": false,
"allow_entry_after_exit": true,
"auto_checkin_sales_channels": [
"pretixpos"
]
}
:param organizer: The ``slug`` field of the organizer to modify
@@ -336,11 +392,29 @@ Order position endpoints
The order positions endpoint has been extended by the filter queries ``voucher`` and ``voucher__code``.
.. versionchanged:: 2.7
The resource now contains the new attributes ``require_attention`` and ``order__status`` and accepts the new
``ignore_status`` filter. The ``attendee_name`` field is now "smart" (see below) and the redemption endpoint
returns ``400`` instead of ``404`` on tickets which are known but not paid.
.. versionchanged:: 3.2
The ``checkins`` dict now also contains a ``auto_checked_in`` value to indicate if the check-in has been performed
automatically by the system.
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/checkinlists/(list)/positions/
Returns a list of all order positions within a given event. The result is the same as
the :ref:`order-position-resource`, with one important difference: the ``checkins`` value will only include
check-ins for the selected list.
the :ref:`order-position-resource`, with the following differences:
* The ``checkins`` value will only include check-ins for the selected list.
* An additional boolean property ``require_attention`` will inform you whether either the order or the item
have the ``checkin_attention`` flag set.
* If ``attendee_name`` is empty, it will automatically fall back to values from a parent product or from invoice
addresses.
**Example request**:
@@ -371,6 +445,9 @@ Order position endpoints
"variation": null,
"price": "23.00",
"attendee_name": "Peter",
"attendee_name_parts": {
"full_name": "Peter",
},
"attendee_email": null,
"voucher": null,
"tax_rate": "0.00",
@@ -380,10 +457,12 @@ Order position endpoints
"addon_to": null,
"subevent": null,
"pseudonymization_id": "MQLJvANO3B",
"seat": null,
"checkins": [
{
"list": 1,
"datetime": "2017-12-25T12:45:23Z"
"datetime": "2017-12-25T12:45:23Z",
"auto_checked_in": true
}
],
"answers": [
@@ -404,6 +483,8 @@ Order position endpoints
}
:query integer page: The page number in case of a multi-page result set, default is 1
:query string ignore_status: If set to ``true``, results will be returned regardless of the state of
the order they belong to and you will need to do your own filtering by order status.
:query string ordering: Manually set the ordering of results. Valid fields to be used are ``order__code``,
``order__datetime``, ``positionid``, ``attendee_name``, ``last_checked_in`` and ``order__email``. Default:
``attendee_name,positionid``
@@ -439,8 +520,17 @@ Order position endpoints
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/checkinlists/(list)/positions/(id)/
Returns information on one order position, identified by its internal ID.
The result format is the same as the :ref:`order-position-resource`, with one important difference: the
``checkins`` value will only include check-ins for the selected list.
The result is the same as the :ref:`order-position-resource`, with the following differences:
* The ``checkins`` value will only include check-ins for the selected list.
* An additional boolean property ``require_attention`` will inform you whether either the order or the item
have the ``checkin_attention`` flag set.
* If ``attendee_name`` is empty, it will automatically fall back to values from a parent product or from invoice
addresses.
**Instead of an ID, you can also use the ``secret`` field as the lookup parameter.**
**Example request**:
@@ -466,6 +556,9 @@ Order position endpoints
"variation": null,
"price": "23.00",
"attendee_name": "Peter",
"attendee_name_parts": {
"full_name": "Peter",
},
"attendee_email": null,
"voucher": null,
"tax_rate": "0.00",
@@ -475,10 +568,12 @@ Order position endpoints
"addon_to": null,
"subevent": null,
"pseudonymization_id": "MQLJvANO3B",
"seat": null,
"checkins": [
{
"list": 1,
"datetime": "2017-12-25T12:45:23Z"
"datetime": "2017-12-25T12:45:23Z",
"auto_checked_in": true
}
],
"answers": [
@@ -510,15 +605,21 @@ Order position endpoints
Tries to redeem an order position, identified by its internal ID, i.e. checks the attendee in. This endpoint
accepts a number of optional requests in the body.
**Instead of an ID, you can also use the ``secret`` field as the lookup parameter.**
:<json boolean questions_supported: When this parameter is set to ``true``, handling of questions is supported. If
you do not implement question handling in your user interface, you **must**
set this to ``false``. In that case, questions will just be ignored. Defaults
to ``true``.
:<json boolean canceled_supported: When this parameter is set to ``true``, the response code ``canceled`` may be
returned. Otherwise, canceled orders will return ``unpaid``.
:<json datetime datetime: Specifies the datetime of the check-in. If not supplied, the current time will be used.
:<json boolean force: Specifies that the check-in should succeed regardless of previous check-ins or required
questions that have not been filled. Defaults to ``false``.
:<json string type: Send ``"exit"`` for an exit and ``"entry"`` (default) for an entry.
:<json boolean ignore_unpaid: Specifies that the check-in should succeed even if the order is in pending state.
Defaults to ``false``.
Defaults to ``false`` and only works when ``include_pending`` is set on the check-in
list.
:<json string nonce: You can set this parameter to a unique random value to identify this check-in. If you're sending
this request twice with the same nonce, the second request will also succeed but will always
create only one check-in object even when the previous request was successful as well. This
@@ -541,6 +642,7 @@ Order position endpoints
"nonce": "Pvrk50vUzQd0DhdpNRL4I4OcXsvg70uA",
"datetime": null,
"questions_supported": true,
"canceled_supported": true,
"answers": {
"4": "XS"
}
@@ -555,7 +657,10 @@ Order position endpoints
Content-Type: application/json
{
"status": "ok"
"status": "ok",
"position": {
}
}
**Example response with required questions**:
@@ -566,7 +671,10 @@ Order position endpoints
Content-Type: text/json
{
"status": "incomplete"
"status": "incomplete",
"position": {
},
"questions": [
{
"id": 1,
@@ -611,13 +719,19 @@ Order position endpoints
{
"status": "error",
"reason": "unpaid",
"position": {
}
}
Possible error reasons:
* ``unpaid`` - Ticket is not paid for or has been refunded
* ``unpaid`` - Ticket is not paid for
* ``canceled`` Ticket is canceled or expired. This reason is only sent when your request sets
``canceled_supported`` to ``true``, otherwise these orders return ``unpaid``.
* ``already_redeemed`` - Ticket already has been redeemed
* ``product`` - Tickets with this product may not be scanned at this device
* ``rules`` - Check-in prevented by a user-defined rule
:param organizer: The ``slug`` field of the organizer to fetch
:param event: The ``slug`` field of the event to fetch
+224
View File
@@ -0,0 +1,224 @@
.. spelling:: fullname
.. _`rest-devices`:
Devices
=======
See also :ref:`rest-deviceauth`.
Device resource
----------------
The device resource contains the following public fields:
.. rst-class:: rest-resource-table
===================================== ========================== =======================================================
Field Type Description
===================================== ========================== =======================================================
device_id integer Internal ID of the device within this organizer
unique_serial string Unique identifier of this device
name string Device name
all_events boolean Whether this device has access to all events
limit_events list List of event slugs this device has access to
hardware_brand string Device hardware manufacturer (read-only)
hardware_model string Device hardware model (read-only)
software_brand string Device software product (read-only)
software_version string Device software version (read-only)
created datetime Creation time
initialized datetime Time of initialization (or ``null``)
initialization_token string Token for initialization
revoked boolean Whether this device no longer has access
security_profile string The name of a supported security profile restricting API access
===================================== ========================== =======================================================
Device endpoints
----------------
.. http:get:: /api/v1/organizers/(organizer)/devices/
Returns a list of all devices within a given organizer.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/devices/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"device_id": 1,
"unique_serial": "UOS3GNZ27O39V3QS",
"initialization_token": "frkso3m2w58zuw70",
"all_events": false,
"limit_events": [
"museum"
],
"revoked": false,
"name": "Scanner",
"created": "2020-09-18T14:17:40.971519Z",
"initialized": "2020-09-18T14:17:44.190021Z",
"security_profile": "full",
"hardware_brand": "Zebra",
"hardware_model": "TC25",
"software_brand": "pretixSCAN",
"software_version": "1.5.1"
}
]
}
:query integer page: The page number in case of a multi-page result set, default is 1
:param organizer: The ``slug`` field of the organizer to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
.. http:get:: /api/v1/organizers/(organizer)/devices/(device_id)/
Returns information on one device, identified by its ID.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/devices/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"device_id": 1,
"unique_serial": "UOS3GNZ27O39V3QS",
"initialization_token": "frkso3m2w58zuw70",
"all_events": false,
"limit_events": [
"museum"
],
"revoked": false,
"name": "Scanner",
"created": "2020-09-18T14:17:40.971519Z",
"initialized": "2020-09-18T14:17:44.190021Z",
"security_profile": "full",
"hardware_brand": "Zebra",
"hardware_model": "TC25",
"software_brand": "pretixSCAN",
"software_version": "1.5.1"
}
:param organizer: The ``slug`` field of the organizer to fetch
:param device_id: The ``device_id`` field of the device to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
.. http:post:: /api/v1/organizers/(organizer)/devices/
Creates a new device
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/bigevents/devices/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
{
"name": "Scanner",
"all_events": true,
"limit_events": [],
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 201 Created
Vary: Accept
Content-Type: application/json
{
"device_id": 1,
"unique_serial": "UOS3GNZ27O39V3QS",
"initialization_token": "frkso3m2w58zuw70",
"all_events": true,
"limit_events": [],
"revoked": false,
"name": "Scanner",
"created": "2020-09-18T14:17:40.971519Z",
"security_profile": "full",
"initialized": null
"hardware_brand": null,
"hardware_model": null,
"software_brand": null,
"software_version": null
}
:param organizer: The ``slug`` field of the organizer to create a device for
:statuscode 201: no error
:statuscode 400: The device could not be created due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to create this resource.
.. http:patch:: /api/v1/organizers/(organizer)/devices/(device_id)/
Update a device.
**Example request**:
.. sourcecode:: http
PATCH /api/v1/organizers/bigevents/devices/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 94
{
"name": "Foo"
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"name": "Foo",
...
}
:param organizer: The ``slug`` field of the organizer to modify
:param device_id: The ``device_id`` field of the device to modify
:statuscode 200: no error
:statuscode 400: The device could not be modified due to invalid submitted data
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to change this resource.
+254 -13
View File
@@ -1,3 +1,9 @@
.. spelling::
geo
lat
lon
Events
======
@@ -15,6 +21,7 @@ name multi-lingual string The event's ful
slug string A short form of the name, used e.g. in URLs.
live boolean If ``true``, the event ticket shop is publicly
available.
testmode boolean If ``true``, the ticket shop is in test mode.
currency string The currency this event is handled in.
date_from datetime The event's start date
date_to datetime The event's end date (or ``null``)
@@ -24,11 +31,22 @@ is_public boolean If ``true``, th
presale_start datetime The date at which the ticket shop opens (or ``null``)
presale_end datetime The date at which the ticket shop closes (or ``null``)
location multi-lingual string The event location (or ``null``)
has_subevents boolean ``True`` if the event series feature is active for this
geo_lat float Latitude of the location (or ``null``)
geo_lon float Longitude of the location (or ``null``)
has_subevents boolean ``true`` if the event series feature is active for this
event. Cannot change after event is created.
meta_data dict Values set for organizer-specific meta data parameters.
meta_data object Values set for organizer-specific meta data parameters.
plugins list A list of package names of the enabled plugins for this
event.
seating_plan integer If reserved seating is in use, the ID of a seating
plan. Otherwise ``null``.
seat_category_mapping object An object mapping categories of the seating plan
(strings) to items in the event (integers or ``null``).
timezone string Event timezone name
item_meta_properties object Item-specific meta data parameters and default values.
valid_keys object Cryptographic keys for non-default signature schemes.
For performance reason, value is omitted in lists and
only contained in detail views. Value can be cached.
===================================== ========================== =======================================================
@@ -41,9 +59,45 @@ plugins list A list of packa
The ``plugins`` field has been added.
The operations POST, PATCH, PUT and DELETE have been added.
.. versionchanged:: 2.1
Filters have been added to the list of events.
.. versionchanged:: 2.5
The ``testmode`` attribute has been added.
.. versionchanged:: 2.8
When cloning events, the ``testmode`` attribute will now be cloned, too.
.. versionchanged:: 3.0
The attributes ``seating_plan`` and ``seat_category_mapping`` have been added.
.. versionchanged:: 3.3
The attributes ``geo_lat`` and ``geo_lon`` have been added.
.. versionchanged:: 3.4
The attribute ``timezone`` has been added.
.. versionchanged:: 3.7
The attribute ``item_meta_properties`` has been added.
.. versionchanged:: 3.12
The attribute ``valid_keys`` has been added.
Endpoints
---------
.. versionchanged:: 3.3
The events resource can now be filtered by meta data attributes.
.. http:get:: /api/v1/organizers/(organizer)/events/
Returns a list of all events within a given organizer the authenticated user/token has access to.
@@ -75,6 +129,7 @@ Endpoints
"name": {"en": "Sample Conference"},
"slug": "sampleconf",
"live": false,
"testmode": false,
"currency": "EUR",
"date_from": "2017-12-27T10:00:00Z",
"date_to": null,
@@ -83,19 +138,38 @@ Endpoints
"presale_start": null,
"presale_end": null,
"location": null,
"geo_lat": null,
"geo_lon": null,
"has_subevents": false,
"meta_data": {},
"seating_plan": null,
"seat_category_mapping": {},
"timezone": "Europe/Berlin",
"item_meta_properties": {},
"plugins": [
"pretix.plugins.banktransfer"
"pretix.plugins.stripe"
"pretix.plugins.paypal"
"pretix.plugins.ticketoutputpdf"
]
],
}
]
}
:query page: The page number in case of a multi-page result set, default is 1
:query is_public: If set to ``true``/``false``, only events with a matching value of ``is_public`` are returned.
:query live: If set to ``true``/``false``, only events with a matching value of ``live`` are returned.
:query has_subevents: If set to ``true``/``false``, only events with a matching value of ``has_subevents`` are returned.
:query is_future: If set to ``true`` (``false``), only events that happen currently or in the future are (not) returned. Event series are never (always) returned.
:query is_past: If set to ``true`` (``false``), only events that are over are (not) returned. Event series are never (always) returned.
:query ends_after: If set to a date and time, only events that happen during of after the given time are returned. Event series are never returned.
:query string ordering: Manually set the ordering of results. Valid fields to be used are ``date_from`` and
``slug``. Keep in mind that ``date_from`` of event series does not really tell you anything.
Default: ``slug``.
:query array attr[meta_data_key]: By providing the key and value of a meta data attribute, the list of events will
only contain the events matching the set criteria. Providing ``?attr[Format]=Seminar`` would return only those
events having set their ``Format`` meta data to ``Seminar``, ``?attr[Format]=`` only those, that have no value
set. Please note that this filter will respect default values set on organizer level.
:param organizer: The ``slug`` field of a valid organizer
:statuscode 200: no error
:statuscode 401: Authentication failure
@@ -127,6 +201,7 @@ Endpoints
"name": {"en": "Sample Conference"},
"slug": "sampleconf",
"live": false,
"testmode": false,
"currency": "EUR",
"date_from": "2017-12-27T10:00:00Z",
"date_to": null,
@@ -135,14 +210,25 @@ Endpoints
"presale_start": null,
"presale_end": null,
"location": null,
"geo_lat": null,
"geo_lon": null,
"has_subevents": false,
"seating_plan": null,
"seat_category_mapping": {},
"meta_data": {},
"timezone": "Europe/Berlin",
"item_meta_properties": {},
"plugins": [
"pretix.plugins.banktransfer"
"pretix.plugins.stripe"
"pretix.plugins.paypal"
"pretix.plugins.ticketoutputpdf"
]
],
"valid_keys": {
"pretix_sig1": [
"LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUNvd0JRWURLMlZ3QXlFQTdBRDcvdkZBMzNFc1k0ejJQSHI3aVpQc1o4bjVkaDBhalA4Z3l6Tm1tSXM9Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo="
]
}
}
:param organizer: The ``slug`` field of the organizer to fetch
@@ -167,12 +253,13 @@ Endpoints
POST /api/v1/organizers/bigevents/events/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content: application/json
Content-Type: application/json
{
"name": {"en": "Sample Conference"},
"slug": "sampleconf",
"live": false,
"testmode": false,
"currency": "EUR",
"date_from": "2017-12-27T10:00:00Z",
"date_to": null,
@@ -180,9 +267,15 @@ Endpoints
"is_public": false,
"presale_start": null,
"presale_end": null,
"seating_plan": null,
"seat_category_mapping": {},
"location": null,
"geo_lat": null,
"geo_lon": null,
"has_subevents": false,
"meta_data": {},
"timezone": "Europe/Berlin",
"item_meta_properties": {},
"plugins": [
"pretix.plugins.stripe",
"pretix.plugins.paypal"
@@ -201,6 +294,7 @@ Endpoints
"name": {"en": "Sample Conference"},
"slug": "sampleconf",
"live": false,
"testmode": false,
"currency": "EUR",
"date_from": "2017-12-27T10:00:00Z",
"date_to": null,
@@ -209,8 +303,14 @@ Endpoints
"presale_start": null,
"presale_end": null,
"location": null,
"geo_lat": null,
"geo_lon": null,
"seating_plan": null,
"seat_category_mapping": {},
"has_subevents": false,
"meta_data": {},
"timezone": "Europe/Berlin",
"item_meta_properties": {},
"plugins": [
"pretix.plugins.stripe",
"pretix.plugins.paypal"
@@ -226,11 +326,11 @@ Endpoints
.. http:post:: /api/v1/organizers/(organizer)/events/(event)/clone/
Creates a new event with properties as set in the request body. The properties that are copied are: 'is_public',
settings, plugin settings, items, variations, add-ons, quotas, categories, tax rules, questions.
Creates a new event with properties as set in the request body. The properties that are copied are: ``is_public``,
``testmode``, ``has_subevents``, settings, plugin settings, items, variations, add-ons, quotas, categories, tax rules, questions.
If the 'plugins' and/or 'is_public' fields are present in the post body this will determine their value. Otherwise
their value will be copied from the existing event.
If the ``plugins``, ``has_subevents`` and/or ``is_public`` fields are present in the post body this will determine their
value. Otherwise their value will be copied from the existing event.
Please note that you can only copy from events under the same organizer.
@@ -243,12 +343,13 @@ Endpoints
POST /api/v1/organizers/bigevents/events/sampleconf/clone/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content: application/json
Content-Type: application/json
{
"name": {"en": "Sample Conference"},
"slug": "sampleconf",
"live": false,
"testmode": false,
"currency": "EUR",
"date_from": "2017-12-27T10:00:00Z",
"date_to": null,
@@ -257,8 +358,14 @@ Endpoints
"presale_start": null,
"presale_end": null,
"location": null,
"geo_lat": null,
"geo_lon": null,
"seating_plan": null,
"seat_category_mapping": {},
"has_subevents": false,
"meta_data": {},
"timezone": "Europe/Berlin",
"item_meta_properties": {},
"plugins": [
"pretix.plugins.stripe",
"pretix.plugins.paypal"
@@ -277,6 +384,7 @@ Endpoints
"name": {"en": "Sample Conference"},
"slug": "sampleconf",
"live": false,
"testmode": false,
"currency": "EUR",
"date_from": "2017-12-27T10:00:00Z",
"date_to": null,
@@ -285,8 +393,14 @@ Endpoints
"presale_start": null,
"presale_end": null,
"location": null,
"geo_lat": null,
"geo_lon": null,
"has_subevents": false,
"seating_plan": null,
"seat_category_mapping": {},
"meta_data": {},
"timezone": "Europe/Berlin",
"item_meta_properties": {},
"plugins": [
"pretix.plugins.stripe",
"pretix.plugins.paypal"
@@ -314,7 +428,7 @@ Endpoints
PATCH /api/v1/organizers/bigevents/events/sampleconf/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content: application/json
Content-Type: application/json
{
"plugins": [
@@ -337,6 +451,7 @@ Endpoints
"name": {"en": "Sample Conference"},
"slug": "sampleconf",
"live": false,
"testmode": false,
"currency": "EUR",
"date_from": "2017-12-27T10:00:00Z",
"date_to": null,
@@ -345,8 +460,14 @@ Endpoints
"presale_start": null,
"presale_end": null,
"location": null,
"geo_lat": null,
"geo_lon": null,
"has_subevents": false,
"seating_plan": null,
"seat_category_mapping": {},
"meta_data": {},
"timezone": "Europe/Berlin",
"item_meta_properties": {},
"plugins": [
"pretix.plugins.banktransfer",
"pretix.plugins.stripe",
@@ -357,13 +478,13 @@ Endpoints
:param organizer: The ``slug`` field of the organizer of the event to update
:param event: The ``slug`` field of the event to update
:statuscode 201: no error
:statuscode 200: no error
:statuscode 400: The event could not be created due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to create this resource.
.. http:delete:: /api/v1/organizers/(organizer)/events/(event)/items/(id)/
.. http:delete:: /api/v1/organizers/(organizer)/events/(event)/
Delete an event. Note that events with orders cannot be deleted to ensure data integrity.
@@ -389,3 +510,123 @@ Endpoints
:statuscode 204: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to delete this resource.
Event settings
--------------
pretix events have lots and lots of parameters of different types that are stored in a key-value store on our system.
Since many of these settings depend on each other in complex ways, we can not give direct access to all of these
settings through the API. However, we do expose many of the simple and useful flags through the API.
Please note that the available settings flags change between pretix versions and also between events, depending on the
installed plugins, and we do not give a guarantee on backwards-compatibility like with other parts of the API.
Therefore, we're also not including a list of the options here, but instead recommend to look at the endpoint output
to see available options. The ``explain=true`` flag enables a verbose mode that provides you with human-readable
information about the properties.
.. note:: Please note that this is not a complete representation of all event settings. You will find more settings
in the web interface.
.. warning:: This API is intended for advanced users. Even though we take care to validate your input, you will be
able to break your event using this API by creating situations of conflicting settings. Please take care.
.. versionchanged:: 3.6
Initial support for settings has been added to the API.
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/settings/
Get current values of event settings.
Permission required: "Can change event settings" (Exception: with device auth, *some* settings can always be *read*.)
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/events/sampleconf/settings/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example standard response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"imprint_url": "https://pretix.eu",
}
**Example verbose response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"imprint_url":
{
"value": "https://pretix.eu",
"label": "Imprint URL",
"help_text": "This should point e.g. to a part of your website that has your contact details and legal information."
}
},
}
:param organizer: The ``slug`` field of the organizer of the event to access
:param event: The ``slug`` field of the event to access
:query explain: Set to ``true`` to enable verbose response mode
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to view this resource.
.. http:patch:: /api/v1/organizers/(organizer)/events/(event)/settings/
Updates event settings. Note that ``PUT`` is not allowed here, only ``PATCH``.
.. warning::
Settings can be stored at different levels in pretix. If a value is not set on event level, a default setting
from a higher level (organizer, global) will be returned. If you explicitly set a setting on event level, it
will no longer be inherited from the higher levels. Therefore, we recommend you to send only settings that you
explicitly want to set on event level. To unset a settings, pass ``null``.
**Example request**:
.. sourcecode:: http
PATCH /api/v1/organizers/bigevents/events/sampleconf/settings/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
{
"imprint_url": "https://example.org/imprint/"
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"imprint_url": "https://example.org/imprint/",
}
:param organizer: The ``slug`` field of the organizer of the event to update
:param event: The ``slug`` field of the event to update
:statuscode 200: no error
:statuscode 400: The event could not be updated due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to create this resource.
+252
View File
@@ -0,0 +1,252 @@
.. _`rest-giftcards`:
Gift cards
==========
Resource description
--------------------
The gift card resource contains the following public fields:
.. rst-class:: rest-resource-table
===================================== ========================== =======================================================
Field Type Description
===================================== ========================== =======================================================
id integer Internal ID of the gift card
secret string Gift card code (can not be modified later)
value money (string) Current gift card value
currency string Currency of the value (can not be modified later)
testmode boolean Whether this is a test gift card
expires datetime Expiry date (or ``null``)
conditions string Special terms and conditions for this card (or ``null``)
===================================== ========================== =======================================================
Endpoints
---------
.. http:get:: /api/v1/organizers/(organizer)/giftcards/
Returns a list of all gift cards issued by a given organizer.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/giftcards/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"secret": "HLBYVELFRC77NCQY",
"currency": "EUR",
"testmode": false,
"expires": null,
"conditions": null,
"value": "13.37"
}
]
}
:query integer page: The page number in case of a multi-page result set, default is 1
:query string secret: Only show gift cards with the given secret.
:query boolean testmode: Filter for gift cards that are (not) in test mode.
:query boolean include_accepted: Also show gift cards issued by other organizers that are accepted by this organizer.
:param organizer: The ``slug`` field of the organizer to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
.. http:get:: /api/v1/organizers/(organizer)/giftcards/(id)/
Returns information on one gift card, identified by its ID.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/giftcards/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"secret": "HLBYVELFRC77NCQY",
"currency": "EUR",
"testmode": false,
"expires": null,
"conditions": null,
"value": "13.37"
}
:param organizer: The ``slug`` field of the organizer to fetch
:param id: The ``id`` field of the gift card to fetch
:query boolean include_accepted: Also show gift cards issued by other organizers that are accepted by this organizer.
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
.. http:post:: /api/v1/organizers/(organizer)/giftcards/
Creates a new gift card
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/bigevents/giftcards/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
{
"secret": "HLBYVELFRC77NCQY",
"currency": "EUR",
"value": "13.37"
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 201 Created
Vary: Accept
Content-Type: application/json
{
"id": 1,
"secret": "HLBYVELFRC77NCQY",
"testmode": false,
"currency": "EUR",
"expires": null,
"conditions": null,
"value": "13.37"
}
:param organizer: The ``slug`` field of the organizer to create a gift card for
:statuscode 201: no error
:statuscode 400: The gift card could not be created due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to create this resource.
.. http:patch:: /api/v1/organizers/(organizer)/giftcards/(id)/
Update a gift card. You can also use ``PUT`` instead of ``PATCH``. With ``PUT``, you have to provide all fields of
the resource, other fields will be reset to default. With ``PATCH``, you only need to provide the fields that you
want to change.
You can change all fields of the resource except the ``id``, ``secret``, ``testmode``, and ``currency`` fields. Be
careful when modifying the ``value`` field to avoid race conditions. We recommend to use the ``transact`` method
described below.
**Example request**:
.. sourcecode:: http
PATCH /api/v1/organizers/bigevents/giftcards/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 94
{
"value": "14.00"
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"secret": "HLBYVELFRC77NCQY",
"testmode": false,
"currency": "EUR",
"expires": null,
"conditions": null,
"value": "14.00"
}
:param organizer: The ``slug`` field of the organizer to modify
:param id: The ``id`` field of the gift card to modify
:statuscode 200: no error
:statuscode 400: The gift card could not be modified due to invalid submitted data
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to change this resource.
.. http:post:: /api/v1/organizers/(organizer)/giftcards/(id)/transact/
Atomically change the value of a gift card. A positive amount will increase the value of the gift card,
a negative amount will decrease it.
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/bigevents/giftcards/1/transact/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 79
{
"value": "2.00",
"text": "Optional value explaining the transaction"
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"secret": "HLBYVELFRC77NCQY",
"currency": "EUR",
"testmode": false,
"expires": null,
"conditions": null,
"value": "15.37"
}
.. versionchanged:: 3.5
This endpoint now returns status code ``409`` if the transaction would lead to a negative gift card value.
:param organizer: The ``slug`` field of the organizer to modify
:param id: The ``id`` field of the gift card to modify
:query boolean include_accepted: Also show gift cards issued by other organizers that are accepted by this organizer.
:statuscode 200: no error
:statuscode 400: The gift card could not be modified due to invalid submitted data
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to change this resource.
:statuscode 409: There is not sufficient credit on the gift card.
+8
View File
@@ -11,6 +11,7 @@ Resources and endpoints
categories
items
item_variations
item_bundles
item_add-ons
questions
question_options
@@ -20,4 +21,11 @@ Resources and endpoints
vouchers
checkinlists
waitinglist
giftcards
carts
teams
devices
webhooks
seatingplans
billing_invoices
billing_var
+9 -1
View File
@@ -13,7 +13,7 @@ Field Type Description
===================================== ========================== =======================================================
number string Invoice number (with prefix)
order string Order code of the order this invoice belongs to
is_cancellation boolean ``True``, if this invoice is the cancellation of a
is_cancellation boolean ``true``, if this invoice is the cancellation of a
different invoice.
invoice_from string Sender address
invoice_to string Receiver address
@@ -28,6 +28,7 @@ payment_provider_text string Text to be prin
payment information
footer_text string Text to be printed in the page footer area
lines list of objects The actual invoice contents
├ position integer Number of the line within an invoice.
├ description string Text representing the invoice line (e.g. product name)
├ gross_value money (string) Price including taxes
├ tax_value money (string) Tax amount included
@@ -63,6 +64,11 @@ internal_reference string Customer's refe
The attribute ``internal_reference`` has been added.
.. versionchanged:: 3.4
The attribute ``lines.number`` has been added.
Endpoints
---------
@@ -107,6 +113,7 @@ Endpoints
"footer_text": "Big Events LLC - Registration No. 123456 - VAT ID: EU0987654321",
"lines": [
{
"position": 1,
"description": "Budget Ticket",
"gross_value": "23.00",
"tax_value": "0.00",
@@ -171,6 +178,7 @@ Endpoints
"footer_text": "Big Events LLC - Registration No. 123456 - VAT ID: EU0987654321",
"lines": [
{
"position": 1,
"description": "Budget Ticket",
"gross_value": "23.00",
"tax_value": "0.00",
+9 -2
View File
@@ -24,6 +24,7 @@ addon_category integer Internal ID of
min_count integer The minimal number of add-ons that need to be chosen.
max_count integer The maximal number of add-ons that can be chosen.
position integer An integer, used for sorting
multi_allowed boolean Adding the same item multiple times is allowed
price_included boolean Adding this add-on to the item is free
===================================== ========================== =======================================================
@@ -65,6 +66,7 @@ Endpoints
"min_count": 0,
"max_count": 10,
"position": 0,
"multi_allowed": false,
"price_included": true
},
{
@@ -73,6 +75,7 @@ Endpoints
"min_count": 0,
"max_count": 10,
"position": 1,
"multi_allowed": false,
"price_included": true
}
]
@@ -112,6 +115,7 @@ Endpoints
"min_count": 0,
"max_count": 10,
"position": 1,
"multi_allowed": false,
"price_included": true
}
@@ -134,13 +138,14 @@ Endpoints
POST /api/v1/organizers/(organizer)/events/(event)/items/(item)/addons/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content: application/json
Content-Type: application/json
{
"addon_category": 1,
"min_count": 0,
"max_count": 10,
"position": 1,
"multi_allowed": false,
"price_included": true
}
@@ -158,6 +163,7 @@ Endpoints
"min_count": 0,
"max_count": 10,
"position": 1,
"multi_allowed": false,
"price_included": true
}
@@ -189,7 +195,7 @@ Endpoints
{
"min_count": 0,
"max_count": 10,
"max_count": 10
}
**Example response**:
@@ -206,6 +212,7 @@ Endpoints
"min_count": 0,
"max_count": 10,
"position": 1,
"multi_allowed": false,
"price_included": true
}
+242
View File
@@ -0,0 +1,242 @@
Item bundles
============
Resource description
--------------------
With bundles, you can specify products that are included within other products. There are two premier use cases of this:
* Package discounts. For example, you could offer a discounted package that includes three tickets but can only be
bought as a whole. With a bundle including three times the usual product, the package will automatically pull three
sub-items into the cart, making sure of correct quota calculation and issuance of the correct number of tickets.
* Tax splitting. For example, if your conference ticket includes a part that is subject to different taxation and that
you need to put on the invoice separately. When you putting a "designated price" on a bundled sub-item, pretix will
use that price to show a split taxation.
The bundles resource contains the following public fields:
.. rst-class:: rest-resource-table
===================================== ========================== =======================================================
Field Type Description
===================================== ========================== =======================================================
id integer Internal ID of the bundling configuration
bundled_item integer Internal ID of the item that is included.
bundled_variation integer Internal ID of the variation of the item (or ``null``).
count integer Number of items included
designated_price money (string) Designated price of the bundled product. This will be
used to split the price of the base item e.g. for mixed
taxation. This is not added to the price.
===================================== ========================== =======================================================
.. versionchanged:: 2.6
This resource has been added.
Endpoints
---------
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/items/(item)/bundles/
Returns a list of all bundles for a given item.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/events/sampleconf/items/11/bundles/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"id": 3,
"bundled_item": 3,
"bundled_variation": null,
"count": 1,
"designated_price": "0.00"
},
{
"id": 3,
"bundled_item": 3,
"bundled_variation": null,
"count": 2,
"designated_price": "1.50"
}
]
}
:query integer page: The page number in case of a multi-page result set, default is 1
:param organizer: The ``slug`` field of the organizer to fetch
:param event: The ``slug`` field of the event to fetch
:param item: The ``id`` field of the item to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event/item does not exist **or** you have no permission to view this resource.
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/items/(item)/bundles/(id)/
Returns information on one bundle configuration, identified by its ID.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/events/sampleconf/items/1/bundles/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 3,
"bundled_item": 3,
"bundled_variation": null,
"count": 2,
"designated_price": "1.50"
}
:param organizer: The ``slug`` field of the organizer to fetch
:param event: The ``slug`` field of the event to fetch
:param item: The ``id`` field of the item to fetch
:param id: The ``id`` field of the bundle to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to view this resource.
.. http:post:: /api/v1/organizers/bigevents/events/sampleconf/items/1/bundles/
Creates a new bundle configuration
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/(organizer)/events/(event)/items/(item)/bundles/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
{
"bundled_item": 3,
"bundled_variation": null,
"count": 2,
"designated_price": "1.50"
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 201 Created
Vary: Accept
Content-Type: application/json
{
"id": 3,
"bundled_item": 3,
"bundled_variation": null,
"count": 2,
"designated_price": "1.50"
}
:param organizer: The ``slug`` field of the organizer of the event/item to create a bundle-configuration for
:param event: The ``slug`` field of the event to create a bundle configuration for
:param item: The ``id`` field of the item to create a bundle configuration for
:statuscode 201: no error
:statuscode 400: The bundle could not be created due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to create this resource.
.. http:patch:: /api/v1/organizers/(organizer)/events/(event)/items/(item)/bundles/(id)/
Update a bundle configuration. You can also use ``PUT`` instead of ``PATCH``. With ``PUT``, you have to provide all
fields of the resource, other fields will be reset to default. With ``PATCH``, you only need to provide the fields
that you want to change.
You can change all fields of the resource except the ``id`` field.
**Example request**:
.. sourcecode:: http
PATCH /api/v1/organizers/bigevents/events/sampleconf/items/1/bundles/3/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 94
{
"count": 2
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 3,
"bundled_item": 3,
"bundled_variation": null,
"count": 2,
"designated_price": "1.50"
}
:param organizer: The ``slug`` field of the organizer to modify
:param event: The ``slug`` field of the event to modify
:param item: The ``id`` field of the item to modify
:param id: The ``id`` field of the bundle to modify
:statuscode 200: no error
:statuscode 400: The bundle configuration could not be modified due to invalid submitted data
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to change this resource.
.. http:delete:: /api/v1/organizers/(organizer)/events/(event)/items/(id)/bundles/(id)/
Delete a bundle configuration.
**Example request**:
.. sourcecode:: http
DELETE /api/v1/organizers/bigevents/events/sampleconf/items/1/bundles/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 204 No Content
Vary: Accept
:param organizer: The ``slug`` field of the organizer to modify
:param event: The ``slug`` field of the event to modify
:param id: The ``id`` field of the item to modify
:param id: The ``id`` field of the bundle to delete
:statuscode 204: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to delete this resource.
+13 -3
View File
@@ -18,12 +18,18 @@ default_price money (string) The price set d
price money (string) The price used for this variation. This is either the
same as ``default_price`` if that value is set or equal
to the item's ``default_price`` (read-only).
active boolean If ``False``, this variation will not be sold or shown.
original_price money (string) An original price, shown for comparison, not used
for price calculations (or ``null``).
active boolean If ``false``, this variation will not be sold or shown.
description multi-lingual string A public description of the variation. May contain
Markdown syntax or can be ``null``.
position integer An integer, used for sorting
===================================== ========================== =======================================================
.. versionchanged:: 2.7
The attribute ``original_price`` has been added.
.. versionchanged:: 1.12
This resource has been added.
@@ -67,7 +73,8 @@ Endpoints
},
"position": 0,
"default_price": "223.00",
"price": 223.0
"price": 223.0,
"original_price": null,
},
{
"id": 3,
@@ -120,6 +127,7 @@ Endpoints
},
"default_price": "10.00",
"price": "10.00",
"original_price": null,
"active": true,
"description": null,
"position": 0
@@ -144,7 +152,7 @@ Endpoints
POST /api/v1/organizers/bigevents/events/sampleconf/items/1/variations/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content: application/json
Content-Type: application/json
{
"value": {"en": "Student"},
@@ -167,6 +175,7 @@ Endpoints
"value": {"en": "Student"},
"default_price": "10.00",
"price": "10.00",
"original_price": null,
"active": true,
"description": null,
"position": 0
@@ -216,6 +225,7 @@ Endpoints
"value": {"en": "Student"},
"default_price": "10.00",
"price": "10.00",
"original_price": null,
"active": false,
"description": null,
"position": 1
+138 -23
View File
@@ -21,32 +21,38 @@ default_price money (string) The item price
overwritten by variations or other options.
category integer The ID of the category this item belongs to
(or ``null``).
active boolean If ``False``, the item is hidden from all public lists
active boolean If ``false``, the item is hidden from all public lists
and will not be sold.
description multi-lingual string A public description of the item. May contain Markdown
syntax or can be ``null``.
free_price boolean If ``True``, customers can change the price at which
free_price boolean If ``true``, customers can change the price at which
they buy the product (however, the price can't be set
lower than the price defined by ``default_price`` or
otherwise).
tax_rate decimal (string) The VAT rate to be applied for this item.
tax_rate decimal (string) The VAT rate to be applied for this item (read-only,
set through ``tax_rule``).
tax_rule integer The internal ID of the applied tax rule (or ``null``).
admission boolean ``True`` for items that grant admission to the event
(such as primary tickets) and ``False`` for others
admission boolean ``true`` for items that grant admission to the event
(such as primary tickets) and ``false`` for others
(such as add-ons or merchandise).
position integer An integer, used for sorting
picture string A product picture to be displayed in the shop
(read-only).
(read-only, can be ``null``).
sales_channels list of strings Sales channels this product is available on, such as
``"web"`` or ``"resellers"``. Defaults to ``["web"]``.
available_from datetime The first date time at which this item can be bought
(or ``null``).
available_until datetime The last date time at which this item can be bought
(or ``null``).
require_voucher boolean If ``True``, this item can only be bought using a
hidden_if_available integer The internal ID of a quota object, or ``null``. If
set, this item won't be shown publicly as long as this
quota is available.
require_voucher boolean If ``true``, this item can only be bought using a
voucher that is specifically assigned to this item.
hide_without_voucher boolean If ``True``, this item is only shown during the voucher
hide_without_voucher boolean If ``true``, this item is only shown during the voucher
redemption process, but not in the normal shop
frontend.
allow_cancel boolean If ``False``, customers cannot cancel orders containing
allow_cancel boolean If ``false``, customers cannot cancel orders containing
this item.
min_per_order integer This product can only be bought if it is included at
least this many times in the order (or ``null`` for no
@@ -54,14 +60,26 @@ min_per_order integer This product ca
max_per_order integer This product can only be bought if it is included at
most this many times in the order (or ``null`` for no
limitation).
checkin_attention boolean If ``True``, the check-in app should show a warning
checkin_attention boolean If ``true``, the check-in app should show a warning
that this ticket requires special attention if such
a product is being scanned.
original_price money (string) An original price, shown for comparison, not used
for price calculations.
require_approval boolean If ``True``, orders with this product will need to be
for price calculations (or ``null``).
require_approval boolean If ``true``, orders with this product will need to be
approved by the event organizer before they can be
paid.
require_bundling boolean If ``true``, this item is only available as part of bundles.
generate_tickets boolean If ``false``, tickets are never generated for this
product, regardless of other settings. If ``true``,
tickets are generated even if this is a
non-admission or add-on product, regardless of event
settings. If this is ``null``, regular ticketing
rules apply.
allow_waitinglist boolean If ``false``, no waiting list will be shown for this
product when it is sold out.
issue_giftcard boolean If ``true``, buying this product will yield a gift card.
show_quota_left boolean Publicly show how many tickets are still available.
If this is ``null``, the event default is used.
has_variations boolean Shows whether or not this item has variations.
variations list of objects A list with one object for each variation of this item.
Can be empty. Only writable during creation,
@@ -72,7 +90,9 @@ variations list of objects A list with one
├ price money (string) The price used for this variation. This is either the
same as ``default_price`` if that value is set or equal
to the item's ``default_price``.
active boolean If ``False``, this variation will not be sold or shown.
original_price money (string) An original price, shown for comparison, not used
for price calculations (or ``null``).
├ active boolean If ``false``, this variation will not be sold or shown.
├ description multi-lingual string A public description of the variation. May contain
Markdown syntax or can be ``null``.
└ position integer An integer, used for sorting
@@ -83,10 +103,25 @@ addons list of objects Definition of a
chosen from.
├ min_count integer The minimal number of add-ons that need to be chosen.
├ max_count integer The maximal number of add-ons that can be chosen.
position integer An integer, used for sorting
position integer An integer, used for sorting
├ multi_allowed boolean Adding the same item multiple times is allowed
└ price_included boolean Adding this add-on to the item is free
bundles list of objects Definition of bundles that are included in this item.
Only writable during creation,
use separate endpoint to modify this later.
├ bundled_item integer Internal ID of the item that is included.
├ bundled_variation integer Internal ID of the variation of the item (or ``null``).
├ count integer Number of items included
└ designated_price money (string) Designated price of the bundled product. This will be
used to split the price of the base item e.g. for mixed
taxation. This is not added to the price.
meta_data object Values set for event-specific meta data parameters.
===================================== ========================== =======================================================
.. versionchanged:: 2.7
The attribute ``original_price`` has been added for ``variations``.
.. versionchanged:: 1.7
The attribute ``tax_rule`` has been added. ``tax_rate`` is kept for compatibility. The attribute
@@ -105,15 +140,40 @@ addons list of objects Definition of a
The field ``require_approval`` has been added.
.. versionchanged:: 2.3
The ``sales_channels`` attribute has been added.
.. versionchanged:: 2.4
The ``generate_tickets`` attribute has been added.
.. versionchanged:: 2.6
The ``bundles`` and ``require_bundling`` attributes have been added.
.. versionchanged:: 3.0
The ``show_quota_left``, ``allow_waitinglist``, and ``hidden_if_available`` attributes have been added.
.. versionchanged:: 3.7
The attribute ``meta_data`` has been added.
.. versionchanged:: 3.10
The attribute ``multi_allowed`` has been added to ``addons``.
Notes
-----
Please note that an item either always has variations or never has. Once created with variations the item can never
change to an item without and vice versa. To create an item with variations ensure that you POST an item with at least
one variation.
Also note that ``variations`` and ``addons`` are only supported on ``POST``. To update/delete variations and add-ons please
use the dedicated nested endpoints. By design this endpoint does not support ``PATCH`` and ``PUT`` with nested
``variations`` and/or ``addons``.
Also note that ``variations``, ``bundles``, and ``addons`` are only supported on ``POST``. To update/delete variations,
bundles, and add-ons please use the dedicated nested endpoints. By design this endpoint does not support ``PATCH`` and ``PUT``
with nested ``variations``, ``bundles`` and/or ``addons``.
Endpoints
---------
@@ -147,6 +207,7 @@ Endpoints
"id": 1,
"name": {"en": "Standard ticket"},
"internal_name": "",
"sales_channels": ["web"],
"default_price": "23.00",
"original_price": null,
"category": null,
@@ -156,10 +217,13 @@ Endpoints
"tax_rate": "0.00",
"tax_rule": 1,
"admission": false,
"issue_giftcard": false,
"meta_data": {},
"position": 0,
"picture": null,
"available_from": null,
"available_until": null,
"hidden_if_available": null,
"require_voucher": false,
"hide_without_voucher": false,
"allow_cancel": true,
@@ -167,12 +231,17 @@ Endpoints
"max_per_order": null,
"checkin_attention": false,
"has_variations": false,
"generate_tickets": null,
"allow_waitinglist": true,
"show_quota_left": null,
"require_approval": false,
"require_bundling": false,
"variations": [
{
"value": {"en": "Student"},
"default_price": "10.00",
"price": "10.00",
"original_price": null,
"active": true,
"description": null,
"position": 0
@@ -181,12 +250,14 @@ Endpoints
"value": {"en": "Regular"},
"default_price": null,
"price": "23.00",
"original_price": null,
"active": true,
"description": null,
"position": 1
}
],
"addons": []
"addons": [],
"bundles": []
}
]
}
@@ -232,6 +303,7 @@ Endpoints
"id": 1,
"name": {"en": "Standard ticket"},
"internal_name": "",
"sales_channels": ["web"],
"default_price": "23.00",
"original_price": null,
"category": null,
@@ -241,23 +313,31 @@ Endpoints
"tax_rate": "0.00",
"tax_rule": 1,
"admission": false,
"issue_giftcard": false,
"meta_data": {},
"position": 0,
"picture": null,
"available_from": null,
"available_until": null,
"hidden_if_available": null,
"require_voucher": false,
"hide_without_voucher": false,
"allow_cancel": true,
"generate_tickets": null,
"allow_waitinglist": true,
"show_quota_left": null,
"min_per_order": null,
"max_per_order": null,
"checkin_attention": false,
"has_variations": false,
"require_approval": false,
"require_bundling": false,
"variations": [
{
"value": {"en": "Student"},
"default_price": "10.00",
"price": "10.00",
"original_price": null,
"active": true,
"description": null,
"position": 0
@@ -266,12 +346,14 @@ Endpoints
"value": {"en": "Regular"},
"default_price": null,
"price": "23.00",
"original_price": null,
"active": true,
"description": null,
"position": 1
}
],
"addons": []
"addons": [],
"bundles": []
}
:param organizer: The ``slug`` field of the organizer to fetch
@@ -292,12 +374,13 @@ Endpoints
POST /api/v1/organizers/bigevents/events/sampleconf/items/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content: application/json
Content-Type: application/json
{
"id": 1,
"name": {"en": "Standard ticket"},
"internal_name": "",
"sales_channels": ["web"],
"default_price": "23.00",
"original_price": null,
"category": null,
@@ -307,22 +390,30 @@ Endpoints
"tax_rate": "0.00",
"tax_rule": 1,
"admission": false,
"issue_giftcard": false,
"meta_data": {},
"position": 0,
"picture": null,
"available_from": null,
"available_until": null,
"hidden_if_available": null,
"require_voucher": false,
"hide_without_voucher": false,
"allow_cancel": true,
"generate_tickets": null,
"allow_waitinglist": true,
"show_quota_left": null,
"min_per_order": null,
"max_per_order": null,
"checkin_attention": false,
"require_approval": false,
"require_bundling": false,
"variations": [
{
"value": {"en": "Student"},
"default_price": "10.00",
"price": "10.00",
"original_price": null,
"active": true,
"description": null,
"position": 0
@@ -331,12 +422,14 @@ Endpoints
"value": {"en": "Regular"},
"default_price": null,
"price": "23.00",
"original_price": null,
"active": true,
"description": null,
"position": 1
}
],
"addons": []
"addons": [],
"bundles": []
}
**Example response**:
@@ -351,6 +444,7 @@ Endpoints
"id": 1,
"name": {"en": "Standard ticket"},
"internal_name": "",
"sales_channels": ["web"],
"default_price": "23.00",
"original_price": null,
"category": null,
@@ -360,23 +454,31 @@ Endpoints
"tax_rate": "0.00",
"tax_rule": 1,
"admission": false,
"issue_giftcard": false,
"meta_data": {},
"position": 0,
"picture": null,
"available_from": null,
"available_until": null,
"hidden_if_available": null,
"require_voucher": false,
"hide_without_voucher": false,
"allow_cancel": true,
"min_per_order": null,
"max_per_order": null,
"generate_tickets": null,
"allow_waitinglist": true,
"show_quota_left": null,
"checkin_attention": false,
"has_variations": true,
"require_approval": false,
"require_bundling": false,
"variations": [
{
"value": {"en": "Student"},
"default_price": "10.00",
"price": "10.00",
"original_price": null,
"active": true,
"description": null,
"position": 0
@@ -385,12 +487,14 @@ Endpoints
"value": {"en": "Regular"},
"default_price": null,
"price": "23.00",
"original_price": null,
"active": true,
"description": null,
"position": 1
}
],
"addons": []
"addons": [],
"bundles": []
}
:param organizer: The ``slug`` field of the organizer of the event to create an item for
@@ -436,6 +540,7 @@ Endpoints
"id": 1,
"name": {"en": "Ticket"},
"internal_name": "",
"sales_channels": ["web"],
"default_price": "25.00",
"original_price": null,
"category": null,
@@ -445,23 +550,31 @@ Endpoints
"tax_rate": "0.00",
"tax_rule": 1,
"admission": false,
"issue_giftcard": false,
"meta_data": {},
"position": 0,
"picture": null,
"available_from": null,
"available_until": null,
"hidden_if_available": null,
"require_voucher": false,
"hide_without_voucher": false,
"generate_tickets": null,
"allow_waitinglist": true,
"show_quota_left": null,
"allow_cancel": true,
"min_per_order": null,
"max_per_order": null,
"checkin_attention": false,
"has_variations": true,
"require_approval": false,
"require_bundling": false,
"variations": [
{
"value": {"en": "Student"},
"default_price": "10.00",
"price": "10.00",
"original_price": null,
"active": true,
"description": null,
"position": 0
@@ -470,12 +583,14 @@ Endpoints
"value": {"en": "Regular"},
"default_price": null,
"price": "23.00",
"original_price": null,
"active": true,
"description": null,
"position": 1
}
],
"addons": []
"addons": [],
"bundles": []
}
:param organizer: The ``slug`` field of the organizer to modify
File diff suppressed because it is too large Load Diff
+2
View File
@@ -56,6 +56,8 @@ Endpoints
}
:query page: The page number in case of a multi-page result set, default is 1
:query string ordering: Manually set the ordering of results. Valid fields to be used are ``slug`` and
``name``. Default: ``slug``.
:statuscode 200: no error
:statuscode 401: Authentication failure
+66 -3
View File
@@ -18,6 +18,7 @@ Field Type Description
===================================== ========================== =======================================================
id integer Internal ID of the question
question multi-lingual string The field label shown to the customer
help_text multi-lingual string The help text shown to the customer
type string The expected type of answer. Valid options:
* ``N`` number
@@ -30,14 +31,20 @@ type string The expected ty
* ``D`` date
* ``H`` time
* ``W`` date and time
required boolean If ``True``, the question needs to be filled out.
* ``CC`` country code (ISO 3666-1 alpha-2)
* ``TEL`` telephone number
required boolean If ``true``, the question needs to be filled out.
position integer An integer, used for sorting
items list of integers List of item IDs this question is assigned to.
identifier string An arbitrary string that can be used for matching with
other sources.
ask_during_checkin boolean If ``True``, this question will not be asked while
ask_during_checkin boolean If ``true``, this question will not be asked while
buying the ticket, but will show up when redeeming
the ticket instead.
hidden boolean If ``true``, the question will only be shown in the
backend.
print_on_invoice boolean If ``true``, the question will only be shown on
invoices.
options list of objects In case of question type ``C`` or ``M``, this lists the
available objects. Only writable during creation,
use separate endpoint to modify this later.
@@ -46,6 +53,17 @@ options list of objects In case of ques
├ identifier string An arbitrary string that can be used for matching with
other sources.
└ answer multi-lingual string The displayed value of this option
dependency_question integer Internal ID of a different question. The current
question will only be shown if the question given in
this attribute is set to the value given in
``dependency_value``. This cannot be combined with
``ask_during_checkin``.
dependency_values list of strings If ``dependency_question`` is set to a boolean
question, this should be ``["True"]`` or ``["False"]``.
Otherwise, it should be a list of ``identifier`` values
of question options.
dependency_value string An old version of ``dependency_values`` that only allows
for one value. **Deprecated.**
===================================== ========================== =======================================================
.. versionchanged:: 1.12
@@ -58,6 +76,22 @@ options list of objects In case of ques
Write methods have been added. The attribute ``identifier`` has been added to both the resource itself and the
options resource. The ``position`` attribute has been added to the options resource.
.. versionchanged:: 2.7
The attribute ``hidden`` and the question type ``CC`` have been added.
.. versionchanged:: 3.0
The attribute ``dependency_values`` has been added.
.. versionchanged:: 3.1
The attribute ``print_on_invoice`` has been added.
.. versionchanged:: 3.5
The attribute ``help_text`` has been added.
Endpoints
---------
@@ -94,12 +128,18 @@ Endpoints
{
"id": 1,
"question": {"en": "T-Shirt size"},
"help_text": {"en": "Choose your preferred t-shirt-size"},
"type": "C",
"required": false,
"items": [1, 2],
"position": 1,
"identifier": "WY3TP9SL",
"ask_during_checkin": false,
"hidden": false,
"print_on_invoice": false,
"dependency_question": null,
"dependency_value": null,
"dependency_values": [],
"options": [
{
"id": 1,
@@ -159,12 +199,18 @@ Endpoints
{
"id": 1,
"question": {"en": "T-Shirt size"},
"help_text": {"en": "Choose your preferred t-shirt-size"},
"type": "C",
"required": false,
"items": [1, 2],
"position": 1,
"identifier": "WY3TP9SL",
"ask_during_checkin": false,
"hidden": false,
"print_on_invoice": false,
"dependency_question": null,
"dependency_value": null,
"dependency_values": [],
"options": [
{
"id": 1,
@@ -205,15 +251,20 @@ Endpoints
POST /api/v1/organizers/bigevents/events/sampleconf/questions/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content: application/json
Content-Type: application/json
{
"question": {"en": "T-Shirt size"},
"help_text": {"en": "Choose your preferred t-shirt-size"},
"type": "C",
"required": false,
"items": [1, 2],
"position": 1,
"ask_during_checkin": false,
"hidden": false,
"print_on_invoice": false,
"dependency_question": null,
"dependency_values": [],
"options": [
{
"answer": {"en": "S"}
@@ -239,12 +290,18 @@ Endpoints
{
"id": 1,
"question": {"en": "T-Shirt size"},
"help_text": {"en": "Choose your preferred t-shirt-size"},
"type": "C",
"required": false,
"items": [1, 2],
"position": 1,
"identifier": "WY3TP9SL",
"ask_during_checkin": false,
"hidden": false,
"print_on_invoice": false,
"dependency_question": null,
"dependency_value": null,
"dependency_values": [],
"options": [
{
"id": 1,
@@ -308,12 +365,18 @@ Endpoints
{
"id": 1,
"question": {"en": "T-Shirt size"},
"help_text": {"en": "Choose your preferred t-shirt-size"},
"type": "C",
"required": false,
"items": [1, 2],
"position": 2,
"identifier": "WY3TP9SL",
"ask_during_checkin": false,
"hidden": false,
"print_on_invoice": false,
"dependency_question": null,
"dependency_value": null,
"dependency_values": [],
"options": [
{
"id": 1,
+33 -6
View File
@@ -20,12 +20,28 @@ size integer The size of the
items list of integers List of item IDs this quota acts on.
variations list of integers List of item variation IDs this quota acts on.
subevent integer ID of the date inside an event series this quota belongs to (or ``null``).
close_when_sold_out boolean If ``true``, the quota will "close" as soon as it is
sold out once. Even if tickets become available again,
they will not be sold unless the quota is set to open
again.
closed boolean Whether the quota is currently closed (see above
field).
release_after_exit boolean Whether the quota regains capacity as soon as some tickets
have been scanned at an exit.
===================================== ========================== =======================================================
.. versionchanged:: 1.10
The write operations ``POST``, ``PATCH``, ``PUT``, and ``DELETE`` have been added.
.. versionchanged:: 3.0
The attributes ``close_when_sold_out`` and ``closed`` have been added.
.. versionchanged:: 3.10
The attribute ``release_after_exit`` has been added.
Endpoints
---------
@@ -61,7 +77,9 @@ Endpoints
"size": 200,
"items": [1, 2],
"variations": [1, 4, 5, 7],
"subevent": null
"subevent": null,
"close_when_sold_out": false,
"closed": false
}
]
}
@@ -102,7 +120,9 @@ Endpoints
"size": 200,
"items": [1, 2],
"variations": [1, 4, 5, 7],
"subevent": null
"subevent": null,
"close_when_sold_out": false,
"closed": false
}
:param organizer: The ``slug`` field of the organizer to fetch
@@ -123,14 +143,16 @@ Endpoints
POST /api/v1/organizers/bigevents/events/sampleconf/quotas/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content: application/json
Content-Type: application/json
{
"name": "Ticket Quota",
"size": 200,
"items": [1, 2],
"variations": [1, 4, 5, 7],
"subevent": null
"subevent": null,
"close_when_sold_out": false,
"closed": false
}
**Example response**:
@@ -147,7 +169,9 @@ Endpoints
"size": 200,
"items": [1, 2],
"variations": [1, 4, 5, 7],
"subevent": null
"subevent": null,
"close_when_sold_out": false,
"closed": false
}
:param organizer: The ``slug`` field of the organizer of the event/item to create a quota for
@@ -200,7 +224,9 @@ Endpoints
1,
2
],
"subevent": null
"subevent": null,
"close_when_sold_out": false,
"closed": false
}
:param organizer: The ``slug`` field of the organizer to modify
@@ -263,6 +289,7 @@ Endpoints
"total_size": 1000,
"pending_orders": 25,
"paid_orders": 423,
"exited_orders": 0,
"cart_positions": 7,
"blocking_vouchers": 126,
"waiting_list": 0
+209
View File
@@ -0,0 +1,209 @@
.. _`rest-seatingplans`:
Seating plans
=============
Resource description
--------------------
The seating plan resource contains the following public fields:
.. rst-class:: rest-resource-table
===================================== ========================== =======================================================
Field Type Description
===================================== ========================== =======================================================
id integer Internal ID of the plan
name string Human-readable name of the plan
layout object JSON representation of the seating plan. These
representations follow a JSON schema that currently
still evolves. The version in use can be found `here`_.
===================================== ========================== =======================================================
.. versionchanged:: 3.0
This endpoint has been added.
Endpoints
---------
.. http:get:: /api/v1/organizers/(organizer)/seatingplans/
Returns a list of all seating plans within a given organizer.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/seatingplans/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 2,
"name": "Main plan",
"layout": { … }
}
]
}
:query integer page: The page number in case of a multi-page result set, default is 1
:param organizer: The ``slug`` field of the organizer to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
.. http:get:: /api/v1/organizers/(organizer)/seatingplans/(id)/
Returns information on one plan, identified by its ID.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/seatingplans/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 2,
"name": "Main plan",
"layout": { … }
}
:param organizer: The ``slug`` field of the organizer to fetch
:param id: The ``id`` field of the seating plan to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
.. http:post:: /api/v1/organizers/(organizer)/seatingplans/
Creates a new seating plan
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/bigevents/seatingplans/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
{
"name": "Main plan",
"layout": { … }
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 201 Created
Vary: Accept
Content-Type: application/json
{
"id": 3,
"name": "Main plan",
"layout": { … }
}
:param organizer: The ``slug`` field of the organizer to create a seating plan for
:statuscode 201: no error
:statuscode 400: The seating plan could not be created due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to create this resource.
.. http:patch:: /api/v1/organizers/(organizer)/seatingplans/(id)/
Update a plan. You can also use ``PUT`` instead of ``PATCH``. With ``PUT``, you have to provide all fields of
the resource, other fields will be reset to default. With ``PATCH``, you only need to provide the fields that you
want to change.
You can change all fields of the resource except the ``id`` field. **You can not change a plan while it is in use for
any events.**
**Example request**:
.. sourcecode:: http
PATCH /api/v1/organizers/bigevents/seatingplans/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 94
{
"name": "Old plan"
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"name": "Old plan",
"layout": { … }
}
:param organizer: The ``slug`` field of the organizer to modify
:param id: The ``id`` field of the plan to modify
:statuscode 200: no error
:statuscode 400: The plan could not be modified due to invalid submitted data
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to change this resource **or** the plan is currently in use.
.. http:delete:: /api/v1/organizers/(organizer)/seatingplans/(id)/
Delete a plan. You can not delete plans which are currently in use by any events.
**Example request**:
.. sourcecode:: http
DELETE /api/v1/organizers/bigevents/seatingplans/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 204 No Content
Vary: Accept
:param organizer: The ``slug`` field of the organizer to modify
:param id: The ``id`` field of the plan to delete
:statuscode 204: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to delete this resource **or** the plan is currently in use.
.. _here: https://github.com/pretix/pretix/blob/master/src/pretix/static/seating/seating-plan.schema.json
+328 -5
View File
@@ -1,3 +1,9 @@
.. spelling::
geo
lat
lon
.. _rest-subevents:
Event series dates / Sub-events
@@ -17,33 +23,75 @@ Field Type Description
===================================== ========================== =======================================================
id integer Internal ID of the sub-event
name multi-lingual string The sub-event's full name
event string The slug of the parent event
active boolean If ``true``, the sub-event ticket shop is publicly
available.
is_public boolean If ``true``, the sub-event ticket shop is publicly
shown in lists.
date_from datetime The sub-event's start date
date_to datetime The sub-event's end date (or ``null``)
date_admission datetime The sub-event's admission date (or ``null``)
presale_start datetime The sub-date at which the ticket shop opens (or ``null``)
presale_end datetime The sub-date at which the ticket shop closes (or ``null``)
location multi-lingual string The sub-event location (or ``null``)
geo_lat float Latitude of the location (or ``null``)
geo_lon float Longitude of the location (or ``null``)
item_price_overrides list of objects List of items for which this sub-event overrides the
default price
├ item integer The internal item ID
├ disabled boolean If ``true``, item should not be available for this sub-event
└ price money (string) The price or ``null`` for the default price
variation_price_overrides list of objects List of variations for which this sub-event overrides
the default price
├ variation integer The internal variation ID
├ disabled boolean If ``true``, variation should not be available for this sub-event
└ price money (string) The price or ``null`` for the default price
meta_data dict Values set for organizer-specific meta data parameters.
meta_data object Values set for organizer-specific meta data parameters.
seating_plan integer If reserved seating is in use, the ID of a seating
plan. Otherwise ``null``.
seat_category_mapping object An object mapping categories of the seating plan
(strings) to items in the event (integers or ``null``).
last_modified datetime Last modification of this object
===================================== ========================== =======================================================
.. versionchanged:: 1.7
The ``meta_data`` field has been added.
.. versionchanged:: 2.1
The ``event`` field has been added, together with filters on the list of dates and an organizer-level list.
.. versionchanged:: 2.6
The write operations ``POST``, ``PATCH``, ``PUT``, and ``DELETE`` have been added.
.. versionchanged:: 2.7
The attribute ``is_public`` has been added.
.. versionchanged:: 3.0
The attributes ``seating_plan`` and ``seat_category_mapping`` have been added.
.. versionchanged:: 3.3
The attributes ``geo_lat`` and ``geo_lon`` have been added.
.. versionchanged:: 3.10
The ``disabled`` attribute has been added to ``item_price_overrides`` and ``variation_price_overrides``.
.. versionchanged:: 3.12
The ``last_modified`` attribute has been added.
Endpoints
---------
.. versionchanged:: 3.3
The sub-events resource can now be filtered by meta data attributes.
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/subevents/
Returns a list of all sub-events of an event.
@@ -72,16 +120,23 @@ Endpoints
{
"id": 1,
"name": {"en": "First Sample Conference"},
"event": "sampleconf",
"active": false,
"is_public": true,
"date_from": "2017-12-27T10:00:00Z",
"date_to": null,
"date_admission": null,
"presale_start": null,
"presale_end": null,
"seating_plan": null,
"seat_category_mapping": {},
"location": null,
"geo_lat": null,
"geo_lon": null,
"item_price_overrides": [
{
"item": 2,
"disabled": false,
"price": "12.00"
}
],
@@ -92,12 +147,107 @@ Endpoints
}
:query page: The page number in case of a multi-page result set, default is 1
:query active: If set to ``true``/``false``, only events with a matching value of ``active`` are returned.
:query is_future: If set to ``true`` (``false``), only events that happen currently or in the future are (not) returned.
:query is_past: If set to ``true`` (``false``), only events that are over are (not) returned.
:query ends_after: If set to a date and time, only events that happen during of after the given time are returned.
:param organizer: The ``slug`` field of a valid organizer
:param event: The ``slug`` field of the event to fetch
:param event: The ``slug`` field of the main event
:query datetime modified_since: Only return objects that have changed since the given date. Be careful: This does not
allow you to know if a subevent was deleted.
:query array attr[meta_data_key]: By providing the key and value of a meta data attribute, the list of sub-events
will only contain the sub-events matching the set criteria. Providing ``?attr[Format]=Seminar`` would return
only those sub-events having set their ``Format`` meta data to ``Seminar``, ``?attr[Format]=`` only those, that
have no value set. Please note that this filter will respect default values set on
organizer or event level.
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view it.
.. http:post:: /api/v1/organizers/(organizer)/events/(event)/subevents/
Creates a new subevent.
Permission required: "Can create events"
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/bigevents/events/sampleconf/subevents/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
{
"name": {"en": "First Sample Conference"},
"active": false,
"is_public": true,
"date_from": "2017-12-27T10:00:00Z",
"date_to": null,
"date_admission": null,
"presale_start": null,
"presale_end": null,
"location": null,
"geo_lat": null,
"geo_lon": null,
"seating_plan": null,
"seat_category_mapping": {},
"item_price_overrides": [
{
"item": 2,
"disabled": false,
"price": "12.00"
}
],
"variation_price_overrides": [],
"meta_data": {}
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 201 Created
Vary: Accept
Content-Type: application/json
{
"id": 1,
"name": {"en": "First Sample Conference"},
"active": false,
"is_public": true,
"date_from": "2017-12-27T10:00:00Z",
"date_to": null,
"date_admission": null,
"presale_start": null,
"presale_end": null,
"location": null,
"geo_lat": null,
"geo_lon": null,
"seating_plan": null,
"seat_category_mapping": {},
"item_price_overrides": [
{
"item": 2,
"disabled": false,
"price": "12.00"
}
],
"variation_price_overrides": [],
"meta_data": {}
}
:param organizer: The ``slug`` field of a valid organizer
:param event: The ``slug`` field of the main event
:statuscode 201: no error
:statuscode 400: The sub-event could not be created due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to create this resource.
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/subevents/(id)/
Returns information on one sub-event, identified by its ID.
@@ -121,16 +271,23 @@ Endpoints
{
"id": 1,
"name": {"en": "First Sample Conference"},
"event": "sampleconf",
"active": false,
"is_public": true,
"date_from": "2017-12-27T10:00:00Z",
"date_to": null,
"date_admission": null,
"presale_start": null,
"presale_end": null,
"location": null,
"geo_lat": null,
"geo_lon": null,
"seating_plan": null,
"seat_category_mapping": {},
"item_price_overrides": [
{
"item": 2,
"disabled": false,
"price": "12.00"
}
],
@@ -138,9 +295,175 @@ Endpoints
"meta_data": {}
}
:param organizer: The ``slug`` field of the organizer to fetch
:param event: The ``slug`` field of the event to fetch
:param id: The ``slug`` field of the sub-event to fetch
:param organizer: The ``slug`` field of a valid organizer
:param event: The ``slug`` field of the main event
:param id: The ``id`` field of the sub-event to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to view it.
.. http:patch:: /api/v1/organizers/(organizer)/events/(event)/subevents/(id)/
Updates a sub-event, identified by its ID. You can also use ``PUT`` instead of ``PATCH``. With ``PUT``, you have to
provide all fields of the resource, other fields will be reset to default. With ``PATCH``, you only need to provide
the fields that you want to change.
Permission required: "Can change event settings"
**Example request**:
.. sourcecode:: http
PATCH /api/v1/organizers/bigevents/events/sampleconf/subevents/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
{
"name": {"en": "New Subevent Name"},
"item_price_overrides": [
{
"item": 2,
"disabled": false,
"price": "23.42"
}
],
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"name": {"en": "New Subevent Name"},
"event": "sampleconf",
"active": false,
"is_public": true,
"date_from": "2017-12-27T10:00:00Z",
"date_to": null,
"date_admission": null,
"presale_start": null,
"presale_end": null,
"location": null,
"geo_lat": null,
"geo_lon": null,
"seating_plan": null,
"seat_category_mapping": {},
"item_price_overrides": [
{
"item": 2,
"disabled": false,
"price": "23.42"
}
],
"variation_price_overrides": [],
"meta_data": {}
}
:param organizer: The ``slug`` field of a valid organizer
:param event: The ``slug`` field of the main event
:param id: The ``id`` field of the sub-event to update
:statuscode 200: no error
:statuscode 400: The sub-event could not be created due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/sub-event does not exist **or** you have no permission to update this resource.
.. http:delete:: /api/v1/organizers/(organizer)/events/(event)/subevents/(id)/
Delete a sub-event. Note that events with orders cannot be deleted to ensure data integrity.
Permission required: "Can change event settings"
**Example request**:
.. sourcecode:: http
DELETE /api/v1/organizers/bigevents/events/sampleconf/subevents/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 204 No Content
Vary: Accept
:param organizer: The ``slug`` field of a valid organizer
:param event: The ``slug`` field of the main event
:param id: The ``id`` field of the sub-event to delete
:statuscode 204: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/sub-event does not exist **or** you have no permission to delete this resource.
.. http:get:: /api/v1/organizers/(organizer)/subevents/
Returns a list of all sub-events of any event series you have access to within an organizer account.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/subevents/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"name": {"en": "First Sample Conference"},
"event": "sampleconf",
"active": false,
"is_public": true,
"date_from": "2017-12-27T10:00:00Z",
"date_to": null,
"date_admission": null,
"presale_start": null,
"presale_end": null,
"location": null,
"geo_lat": null,
"geo_lon": null,
"seating_plan": null,
"seat_category_mapping": {},
"item_price_overrides": [
{
"item": 2,
"disabled": false,
"price": "12.00"
}
],
"variation_price_overrides": [],
"meta_data": {}
}
]
}
:query page: The page number in case of a multi-page result set, default is 1
:query active: If set to ``true``/``false``, only events with a matching value of ``active`` are returned.
:query event__live: If set to ``true``/``false``, only events with a matching value of ``live`` on the parent event are returned.
:query is_future: If set to ``true`` (``false``), only events that happen currently or in the future are (not) returned.
:query is_past: If set to ``true`` (``false``), only events that are over are (not) returned.
:query ends_after: If set to a date and time, only events that happen during of after the given time are returned.
:param organizer: The ``slug`` field of a valid organizer
:param event: The ``slug`` field of the event to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view it.
+671
View File
@@ -0,0 +1,671 @@
.. spelling:: fullname
.. _`rest-teams`:
Teams
=====
.. warning:: Unlike our user interface, the team API **does** allow you to lock yourself out by deleting or modifying
the team your user or API key belongs to. Be careful around here!
Team resource
-------------
The team resource contains the following public fields:
.. rst-class:: rest-resource-table
===================================== ========================== =======================================================
Field Type Description
===================================== ========================== =======================================================
id integer Internal ID of the team
name string Team name
all_events boolean Whether this team has access to all events
limit_events list List of event slugs this team has access to
can_create_events boolean
can_change_teams boolean
can_change_organizer_settings boolean
can_manage_gift_cards boolean
can_change_event_settings boolean
can_change_items boolean
can_view_orders boolean
can_change_orders boolean
can_view_vouchers boolean
can_change_vouchers boolean
===================================== ========================== =======================================================
Team member resource
--------------------
The team member resource contains the following public fields:
.. rst-class:: rest-resource-table
===================================== ========================== =======================================================
Field Type Description
===================================== ========================== =======================================================
id integer Internal ID of the user
email string The user's email address
fullname string The user's full name (or ``null``)
require_2fa boolean Whether this user uses two-factor-authentication
===================================== ========================== =======================================================
Team invite resource
--------------------
The team invite resource contains the following public fields:
.. rst-class:: rest-resource-table
===================================== ========================== =======================================================
Field Type Description
===================================== ========================== =======================================================
id integer Internal ID of the invite
email string The invitee's email address
===================================== ========================== =======================================================
Team API token resource
-----------------------
The team API token resource contains the following public fields:
.. rst-class:: rest-resource-table
===================================== ========================== =======================================================
Field Type Description
===================================== ========================== =======================================================
id integer Internal ID of the invite
name string Name of this API token
active boolean Whether this API token is active (can never be set to
``true`` again once ``false``)
token string The actual API token. Will only be sent back during
token creation.
===================================== ========================== =======================================================
Team endpoints
--------------
.. http:get:: /api/v1/organizers/(organizer)/teams/
Returns a list of all teams within a given organizer.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/teams/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"name": "Admin team",
"all_events": true,
"limit_events": [],
"can_create_events": true,
...
}
]
}
:query integer page: The page number in case of a multi-page result set, default is 1
:param organizer: The ``slug`` field of the organizer to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
.. http:get:: /api/v1/organizers/(organizer)/teams/(id)/
Returns information on one team, identified by its ID.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/teams/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"name": "Admin team",
"all_events": true,
"limit_events": [],
"can_create_events": true,
...
}
:param organizer: The ``slug`` field of the organizer to fetch
:param id: The ``id`` field of the team to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
.. http:post:: /api/v1/organizers/(organizer)/teams/
Creates a new team
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/bigevents/teams/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
{
"name": "Admin team",
"all_events": true,
"limit_events": [],
"can_create_events": true,
...
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 201 Created
Vary: Accept
Content-Type: application/json
{
"id": 2,
"name": "Admin team",
"all_events": true,
"limit_events": [],
"can_create_events": true,
...
}
:param organizer: The ``slug`` field of the organizer to create a team for
:statuscode 201: no error
:statuscode 400: The team could not be created due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to create this resource.
.. http:patch:: /api/v1/organizers/(organizer)/teams/(id)/
Update a team. You can also use ``PUT`` instead of ``PATCH``. With ``PUT``, you have to provide all fields of
the resource, other fields will be reset to default. With ``PATCH``, you only need to provide the fields that you
want to change.
**Example request**:
.. sourcecode:: http
PATCH /api/v1/organizers/bigevents/teams/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 94
{
"can_create_events": true
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"name": "Admin team",
"all_events": true,
"limit_events": [],
"can_create_events": true,
...
}
:param organizer: The ``slug`` field of the organizer to modify
:param id: The ``id`` field of the team to modify
:statuscode 200: no error
:statuscode 400: The team could not be modified due to invalid submitted data
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to change this resource.
.. http:delete:: /api/v1/organizers/(organizer)/teams/(id)/
Deletes a team.
**Example request**:
.. sourcecode:: http
DELETE /api/v1/organizers/bigevents/teams/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 204 No Content
:param organizer: The ``slug`` field of the organizer to modify
:param id: The ``id`` field of the team to delete
:statuscode 204: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to change this resource.
Team member endpoints
---------------------
.. http:get:: /api/v1/organizers/(organizer)/teams/(team)/members/
Returns a list of all members of a team.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/teams/1/members/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"fullname": "John Doe",
"email": "john@example.com",
"require_2fa": true
}
]
}
:query integer page: The page number in case of a multi-page result set, default is 1
:param organizer: The ``slug`` field of the organizer to fetch
:param team: The ``id`` field of the team to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
:statuscode 404: The requested team does not exist
.. http:get:: /api/v1/organizers/(organizer)/teams/(team)/members/(id)/
Returns information on one team member, identified by their ID.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/teams/1/members/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"fullname": "John Doe",
"email": "john@example.com",
"require_2fa": true
}
:param organizer: The ``slug`` field of the organizer to fetch
:param team: The ``id`` field of the team to fetch
:param id: The ``id`` field of the member to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
:statuscode 404: The requested team or member does not exist
.. http:delete:: /api/v1/organizers/(organizer)/teams/(team)/members/(id)/
Removes a member from the team.
**Example request**:
.. sourcecode:: http
DELETE /api/v1/organizers/bigevents/teams/1/members/1/ HTTP/1.1
Host: pretix.eu
**Example response**:
.. sourcecode:: http
HTTP/1.1 204 No Content
:param organizer: The ``slug`` field of the organizer to modify
:param team: The ``id`` field of the team to modify
:param id: The ``id`` field of the member to delete
:statuscode 204: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to create this resource.
:statuscode 404: The requested team or member does not exist
Team invite endpoints
---------------------
.. http:get:: /api/v1/organizers/(organizer)/teams/(team)/invites/
Returns a list of all invitations to a team.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/teams/1/invites/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"email": "john@example.com"
}
]
}
:query integer page: The page number in case of a multi-page result set, default is 1
:param organizer: The ``slug`` field of the organizer to fetch
:param team: The ``id`` field of the team to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
:statuscode 404: The requested team does not exist
.. http:get:: /api/v1/organizers/(organizer)/teams/(team)/invites/(id)/
Returns information on one invite, identified by its ID.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/teams/1/invites/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"email": "john@example.org"
}
:param organizer: The ``slug`` field of the organizer to fetch
:param team: The ``id`` field of the team to fetch
:param id: The ``id`` field of the invite to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
:statuscode 404: The requested team or invite does not exist
.. http:post:: /api/v1/organizers/(organizer)/teams/(team)/invites/
Invites someone into the team. Note that if the user already has a pretix account, you will receive a response without
an ``id`` and instead of an invite being created, the user will be directly added to the team.
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/bigevents/teams/1/invites/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 94
{
"email": "mark@example.org"
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 201 Created
Vary: Accept
Content-Type: application/json
{
"id": 1,
"email": "mark@example.org"
}
:param organizer: The ``slug`` field of the organizer to modify
:param team: The ``id`` field of the team to modify
:statuscode 204: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to create this resource.
:statuscode 404: The requested team does not exist
.. http:delete:: /api/v1/organizers/(organizer)/teams/(team)/invites/(id)/
Revokes an invite.
**Example request**:
.. sourcecode:: http
DELETE /api/v1/organizers/bigevents/teams/1/invites/1/ HTTP/1.1
Host: pretix.eu
**Example response**:
.. sourcecode:: http
HTTP/1.1 204 No Content
:param organizer: The ``slug`` field of the organizer to modify
:param team: The ``id`` field of the team to modify
:param id: The ``id`` field of the invite to delete
:statuscode 204: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to create this resource.
:statuscode 404: The requested team or invite does not exist
Team API token endpoints
------------------------
.. http:get:: /api/v1/organizers/(organizer)/teams/(team)/tokens/
Returns a list of all API tokens of a team.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/teams/1/tokens/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"active": true,
"name": "Test token"
}
]
}
:query integer page: The page number in case of a multi-page result set, default is 1
:param organizer: The ``slug`` field of the organizer to fetch
:param team: The ``id`` field of the team to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
:statuscode 404: The requested team does not exist
.. http:get:: /api/v1/organizers/(organizer)/teams/(team)/tokens/(id)/
Returns information on one token, identified by its ID.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/teams/1/tokens/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"active": true,
"name": "Test token"
}
:param organizer: The ``slug`` field of the organizer to fetch
:param team: The ``id`` field of the team to fetch
:param id: The ``id`` field of the token to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
:statuscode 404: The requested team or token does not exist
.. http:post:: /api/v1/organizers/(organizer)/teams/(team)/tokens/
Creates a new token.
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/bigevents/teams/1/tokens/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 94
{
"name": "New token"
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 201 Created
Vary: Accept
Content-Type: application/json
{
"id": 2,
"name": "New token",
"active": true,
"token": "",
}
:param organizer: The ``slug`` field of the organizer to modify
:param team: The ``id`` field of the team to create a token for
:statuscode 204: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to create this resource.
:statuscode 404: The requested team does not exist
.. http:delete:: /api/v1/organizers/(organizer)/teams/(team)/tokens/(id)/
Disables a token.
**Example request**:
.. sourcecode:: http
DELETE /api/v1/organizers/bigevents/teams/1/tokens/1/ HTTP/1.1
Host: pretix.eu
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"name": "My token",
"active": false
}
:param organizer: The ``slug`` field of the organizer to modify
:param team: The ``id`` field of the team to modify
:param id: The ``id`` field of the token to delete
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to create this resource.
:statuscode 404: The requested team or token does not exist
+87 -3
View File
@@ -18,8 +18,8 @@ max_usages integer The maximum num
redeemed integer The number of times this voucher already has been
redeemed.
valid_until datetime The voucher expiration date (or ``null``).
block_quota boolean If ``True``, quota is blocked for this voucher.
allow_ignore_quota boolean If ``True``, this voucher can be redeemed even if a
block_quota boolean If ``true``, quota is blocked for this voucher.
allow_ignore_quota boolean If ``true``, this voucher can be redeemed even if a
product is sold out and even if quota is not blocked
for this voucher.
price_mode string Determines how this voucher affects product prices.
@@ -38,9 +38,11 @@ quota integer An ID of a quot
attached either to a specific product or to all
products within one quota or it can be available
for all items without restriction.
seat string ``seat_guid`` attribute of a specific seat (or ``null``)
tag string A string that is used for grouping vouchers
comment string An internal comment on the voucher
subevent integer ID of the date inside an event series this voucher belongs to (or ``null``).
show_hidden_items boolean Only if set to ``true``, this voucher allows to buy products with the property ``hide_without_voucher``. Defaults to ``true``.
===================================== ========================== =======================================================
@@ -48,6 +50,14 @@ subevent integer ID of the date
The write operations ``POST``, ``PATCH``, ``PUT``, and ``DELETE`` have been added.
.. versionchanged:: 3.0
The attribute ``show_hidden_items`` has been added.
.. versionchanged:: 3.4
The attribute ``seat`` has been added.
Endpoints
---------
@@ -91,7 +101,8 @@ Endpoints
"quota": null,
"tag": "testvoucher",
"comment": "",
"subevent": null
"seat": null,
"subevent": null,
}
]
}
@@ -157,6 +168,7 @@ Endpoints
"quota": null,
"tag": "testvoucher",
"comment": "",
"seat": null,
"subevent": null
}
@@ -220,6 +232,7 @@ Endpoints
"quota": null,
"tag": "testvoucher",
"comment": "",
"seat": null,
"subevent": null
}
@@ -231,6 +244,76 @@ Endpoints
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to create this resource.
:statuscode 409: The server was unable to acquire a lock and could not process your request. You can try again after a short waiting period.
.. http:post:: /api/v1/organizers/(organizer)/events/(event)/vouchers/batch_create/
Creates multiple new vouchers atomically.
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/bigevents/events/sampleconf/vouchers/batch_create/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 408
[
{
"code": "43K6LKM37FBVR2YG",
"max_usages": 1,
"valid_until": null,
"block_quota": false,
"allow_ignore_quota": false,
"price_mode": "set",
"value": "12.00",
"item": 1,
"variation": null,
"quota": null,
"tag": "testvoucher",
"comment": "",
"subevent": null
},
{
"code": "ASDKLJCYXCASDASD",
"max_usages": 1,
"valid_until": null,
"block_quota": false,
"allow_ignore_quota": false,
"price_mode": "set",
"value": "12.00",
"item": 1,
"variation": null,
"quota": null,
"tag": "testvoucher",
"comment": "",
"subevent": null
},
**Example response**:
.. sourcecode:: http
HTTP/1.1 201 Created
Vary: Accept
Content-Type: application/json
[
{
"id": 1,
"code": "43K6LKM37FBVR2YG",
}, …
}
:param organizer: The ``slug`` field of the organizer to create a vouchers for
:param event: The ``slug`` field of the event to create a vouchers for
:statuscode 201: no error
:statuscode 400: The vouchers could not be created due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to create this resource.
:statuscode 409: The server was unable to acquire a lock and could not process your request. You can try again after a short waiting period.
.. http:patch:: /api/v1/organizers/(organizer)/events/(event)/vouchers/(id)/
Update a voucher. You can also use ``PUT`` instead of ``PATCH``. With ``PUT``, you have to provide all fields of
@@ -277,6 +360,7 @@ Endpoints
"quota": null,
"tag": "testvoucher",
"comment": "",
"seat": null,
"subevent": null
}
+242
View File
@@ -0,0 +1,242 @@
.. _`rest-webhooks`:
Webhooks
========
.. note:: This page is about how to modify webhook settings themselves through the REST API. If you just want to know
how webhooks work, go here: :ref:`webhooks`
Resource description
--------------------
The webhook resource contains the following public fields:
.. rst-class:: rest-resource-table
===================================== ========================== =======================================================
Field Type Description
===================================== ========================== =======================================================
id integer Internal ID of the webhook
enabled boolean If ``false``, this webhook will not receive any notifications
target_url string The URL to call
all_events boolean If ``true``, this webhook will receive notifications
on all events of this organizer
limit_events list of strings If ``all_events`` is ``false``, this is a list of
event slugs this webhook is active for
action_types list of strings A list of action type filters that limit the
notifications sent to this webhook. See below for
valid values
===================================== ========================== =======================================================
The following values for ``action_types`` are valid with pretix core:
* ``pretix.event.order.placed``
* ``pretix.event.order.paid``
* ``pretix.event.order.canceled``
* ``pretix.event.order.expired``
* ``pretix.event.order.modified``
* ``pretix.event.order.contact.changed``
* ``pretix.event.order.changed.*``
* ``pretix.event.order.refund.created.externally``
* ``pretix.event.order.approved``
* ``pretix.event.order.denied``
* ``pretix.event.checkin``
* ``pretix.event.checkin.reverted``
Installed plugins might register more valid values.
Endpoints
---------
.. http:get:: /api/v1/organizers/(organizer)/webhooks/
Returns a list of all webhooks within a given organizer.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/webhooks/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 2,
"enabled": true,
"target_url": "https://httpstat.us/200",
"all_events": false,
"limit_events": ["democon"],
"action_types": ["pretix.event.order.modified", "pretix.event.order.changed.*"]
}
]
}
:query integer page: The page number in case of a multi-page result set, default is 1
:param organizer: The ``slug`` field of the organizer to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
.. http:get:: /api/v1/organizers/(organizer)/webhooks/(id)/
Returns information on one webhook, identified by its ID.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/webhooks/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 2,
"enabled": true,
"target_url": "https://httpstat.us/200",
"all_events": false,
"limit_events": ["democon"],
"action_types": ["pretix.event.order.modified", "pretix.event.order.changed.*"]
}
:param organizer: The ``slug`` field of the organizer to fetch
:param id: The ``id`` field of the webhook to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
.. http:post:: /api/v1/organizers/(organizer)/webhooks/
Creates a new webhook
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/bigevents/webhooks/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
{
"enabled": true,
"target_url": "https://httpstat.us/200",
"all_events": false,
"limit_events": ["democon"],
"action_types": ["pretix.event.order.modified", "pretix.event.order.changed.*"]
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 201 Created
Vary: Accept
Content-Type: application/json
{
"id": 3,
"enabled": true,
"target_url": "https://httpstat.us/200",
"all_events": false,
"limit_events": ["democon"],
"action_types": ["pretix.event.order.modified", "pretix.event.order.changed.*"]
}
:param organizer: The ``slug`` field of the organizer to create a webhook for
:statuscode 201: no error
:statuscode 400: The webhook could not be created due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to create this resource.
.. http:patch:: /api/v1/organizers/(organizer)/webhooks/(id)/
Update a webhook. You can also use ``PUT`` instead of ``PATCH``. With ``PUT``, you have to provide all fields of
the resource, other fields will be reset to default. With ``PATCH``, you only need to provide the fields that you
want to change.
You can change all fields of the resource except the ``id`` field.
**Example request**:
.. sourcecode:: http
PATCH /api/v1/organizers/bigevents/webhooks/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 94
{
"enabled": false
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"enabled": false,
"target_url": "https://httpstat.us/200",
"all_events": false,
"limit_events": ["democon"],
"action_types": ["pretix.event.order.modified", "pretix.event.order.changed.*"]
}
:param organizer: The ``slug`` field of the organizer to modify
:param id: The ``id`` field of the webhook to modify
:statuscode 200: no error
:statuscode 400: The webhook could not be modified due to invalid submitted data
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to change this resource.
.. http:delete:: /api/v1/organizers/(organizer)/webhook/(id)/
Delete a webhook. Currently, this will not delete but just disable the webhook.
**Example request**:
.. sourcecode:: http
DELETE /api/v1/organizers/bigevents/webhooks/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 204 No Content
Vary: Accept
:param organizer: The ``slug`` field of the organizer to modify
:param id: The ``id`` field of the webhook to delete
:statuscode 204: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to delete this resource.
+36
View File
@@ -0,0 +1,36 @@
.. _`rest-tokenauth`:
Token-based authentication
==========================
Obtaining an API token
----------------------
To authenticate your API requests with Tokens, you need to obtain a team-level API token.
You can create a token in the pretix web interface on the level of organizer teams. Create
a new team or choose an existing team that has the level of permissions the token should
have and create a new token using the form below the list of team members:
.. image:: img/token_form.png
:class: screenshot
You can enter a description for the token to distinguish from other tokens later on.
Once you click "Add", you will be provided with an API token in the success message.
Copy this token, as you won't be able to retrieve it again.
.. image:: img/token_success.png
:class: screenshot
Using an API token
------------------
You need to include the API token with every request to pretix' API in the ``Authorization`` header
like the following:
.. sourcecode:: http
:emphasize-lines: 3
GET /api/v1/organizers/ HTTP/1.1
Host: pretix.eu
Authorization: Token e1l6gq2ye72thbwkacj7jbri7a7tvxe614ojv8ybureain92ocub46t5gab5966k
+111
View File
@@ -0,0 +1,111 @@
.. _`webhooks`:
Webhooks
========
pretix can send webhook calls to notify your application of any changes that happen inside pretix. This is especially
useful for everything triggered by an actual user, such as a new ticket sale or the arrival of a payment.
You can register any number of webhook URLs that pretix will notify any time one of the supported events occurs inside
your organizer account. A great example use case of webhooks would be to add the buyer to your mailing list every time
a new order comes in.
Configuring webhooks
--------------------
You can find the list of your active webhooks in the "Webhook" section of your organizer account:
.. thumbnail:: ../screens/organizer/webhook_list.png
:align: center
:class: screenshot
Click "Create webhook" if you want to add a new URL. You will then be able to enter the URL pretix shall call for
notifications. You need to select any number of notification types that you want to receive and you can optionally
filter the events you want to receive notifications for.
.. thumbnail:: ../screens/organizer/webhook_edit.png
:align: center
:class: screenshot
You can also configure webhooks :ref:`through the API itself <rest-webhooks>`.
Receiving webhooks
------------------
Creating a webhook endpoint on your server is no different from creating any other page on your website. If your
website is written in PHP, you might just create a new ``.php`` file on your server; if you use a web framework like
Symfony or Django, you would just create a new route with the desired URL.
We will call your URL with a HTTP ``POST`` request with a ``JSON`` body. In PHP, you can parse this like this::
$input = @file_get_contents('php://input');
$event_json = json_decode($input);
// Do something with $event_json
In Django, you would create a view like this::
def my_webhook_view(request):
event_json = json.loads(request.body)
# Do something with event_json
return HttpResponse(status=200)
More samples for the language of your choice are easy to find online.
The exact body of the request varies by notification type, but for the main types included with pretix core, such as
those related to changes of an order, it will look like this::
{
"notification_id": 123455,
"organizer": "acmecorp",
"event": "democon",
"code": "ABC23",
"action": "pretix.event.order.placed"
}
Notifications regarding a check-in will contain more details like ``orderposition_id``
and ``checkin_list``.
.. warning:: You should not trust data supplied to your webhook, but only use it as a trigger to fetch updated data.
Anyone could send data there if they guess the correct URL and you won't be able to tell. Therefore, we
only include the minimum amount of data necessary for you to fetch the changed objects from our
:ref:`rest-api` in an authenticated way.
.. warning:: In very rare cases, you could receive the same webhook notification twice. We try to avoid it, but we
prefer it over missing a notification.
If you want to further prevent others from accessing your webhook URL, you can also use `Basic authentication`_ and
supply the URL to us in the format of ``https://username:password@domain.com/path/``.
We recommend that you use HTTPS for your webhook URL and might require it in the future. If HTTPS is used, we require
that a valid certificate is in use.
.. note:: If you use a web framework that makes use of automatic CSRF protection, this protection might prevent us
from calling your webhook URL. In this case, we recommend that you turn of CSRF protection selectively
for that route. In Django, you can do this by putting the ``@csrf_exempt`` decorator on your view. In
Rails, you can pass an ``except`` parameter to ``protect_from_forgery``.
Responding to a webhook
-----------------------
If you successfully received a webhook call, your endpoint should return a HTTP status code between ``200`` and ``299``.
If any other status code is returned, we will assume you did not receive the call. This does mean that any redirection
or ``304 Not Modified`` response will be treated as a failure. pretix will not follow any ``301`` or ``302`` redirect
headers and pretix will ignore all other information in your response headers or body.
If we do not receive a status code in the range of ``200`` and ``299``, pretix will retry to deliver for up to three
days with an exponential back off. Therefore, we recommend that you implement your endpoint in a way where calling it
multiple times for the same event due to a perceived error does not do any harm.
There is only one exception: If status code ``410 Gone`` is returned, we will assume the
endpoint does not exist any more and automatically disable the webhook.
.. note:: If you use a self-hosted version of pretix (i.e. not our SaaS offering at pretix.eu) and you did not
configure a background task queue, failed webhooks will not be retried.
Debugging webhooks
------------------
If you want to debug your webhooks, you can view a log of all sent notifications and the responses of your server for
30 days right next to your configuration.
.. _Basic authentication: https://en.wikipedia.org/wiki/Basic_access_authentication
+3 -2
View File
@@ -52,6 +52,7 @@ extensions = [
'sphinx.ext.coverage',
'sphinxcontrib.httpdomain',
'sphinxcontrib.images',
'sphinxemoji.sphinxemoji',
]
if HAS_PYENCHANT:
extensions.append('sphinxcontrib.spelling')
@@ -66,7 +67,7 @@ source_suffix = '.rst'
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'contents'
master_doc = 'index'
# General information about the project.
project = 'pretix'
@@ -234,7 +235,7 @@ latex_elements = {
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
('contents', 'pretix.tex', 'pretix Documentation',
('index', 'pretix.tex', 'pretix Documentation',
'Raphael Michel', 'manual'),
]
+70
View File
@@ -0,0 +1,70 @@
.. highlight:: python
:linenothreshold: 5
Pluggable authentication backends
=================================
Plugins can supply additional authentication backends. This is mainly useful in self-hosted installations
and allows you to use company-wide login mechanisms such as LDAP or OAuth for accessing pretix' backend.
Every authentication backend contains an implementation of the interface defined in ``pretix.base.auth.BaseAuthBackend``
(see below). Note that pretix authentication backends work differently than plain Django authentication backends.
Basically, three pre-defined flows are supported:
* Authentication mechanisms that rely on a **set of input parameters**, e.g. a username and a password. These can be
implemented by supplying the ``login_form_fields`` property and a ``form_authenticate`` method.
* Authentication mechanisms that rely on **external sessions**, e.g. a cookie or a proxy HTTP header. These can be
implemented by supplying a ``request_authenticate`` method.
* Authentication mechanisms that rely on **redirection**, e.g. to an OAuth provider. These can be implemented by
supplying a ``authentication_url`` method and implementing a custom return view.
Authentication backends are *not* collected through a signal. Instead, they must explicitly be set through the
``auth_backends`` directive in the ``pretix.cfg`` :ref:`configuration file <config>`.
In each of these methods (``form_authenticate``, ``request_authenticate`` or your custom view) you are supposed to
either get an existing :py:class:`pretix.base.models.User` object from the database or create a new one. There are a
few rules you need to follow:
* You **MUST** only return users with the ``auth_backend`` attribute set to the ``identifier`` value of your backend.
* You **MUST** create new users with the ``auth_backend`` attribute set to the ``identifier`` value of your backend.
* Every user object **MUST** have an email address. Email addresses are globally unique. If the email address is
already registered to a user who signs in through a different backend, you **SHOULD** refuse the login.
The backend interface
---------------------
.. class:: pretix.base.auth.BaseAuthBackend
The central object of each backend is the subclass of ``BaseAuthBackend``.
.. autoattribute:: identifier
This is an abstract attribute, you **must** override this!
.. autoattribute:: verbose_name
This is an abstract attribute, you **must** override this!
.. autoattribute:: login_form_fields
.. autoattribute:: visible
.. automethod:: form_authenticate
.. automethod:: request_authenticate
.. automethod:: authentication_url
Logging users in
----------------
If you return a user from ``form_authenticate`` or ``request_authenticate``, the system will handle everything else
for you correctly. However, if you use a redirection method and build a custom view to verify the login, we strongly
recommend that you use the following utility method to correctly set session values and enforce two-factor
authentication (if activated):
.. autofunction:: pretix.control.views.auth.process_login
+1 -1
View File
@@ -66,7 +66,7 @@ event-related views, there is also a signal that allows you to add the view to t
from django.urls import resolve, reverse
from django.dispatch import receiver
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from pretix.control.signals import nav_event
+4 -1
View File
@@ -101,9 +101,12 @@ The template is passed the following context variables:
The ``Event`` object
``signature`` (optional, only if configured)
The body as markdown (render with ``{{ signature|safe }}``)
The signature with event organizer contact details as markdown (render with ``{{ signature|safe }}``)
``order`` (optional, only if applicable)
The ``Order`` object
``position`` (optional, only if applicable)
The ``OrderPosition`` object
.. _inlinestyler: https://pypi.org/project/inlinestyler/
+16
View File
@@ -29,6 +29,22 @@ that we'll provide in this plugin::
from .exporter import MyExporter
return MyExporter
Some exporters might also prove to be useful, when provided on an organizer-level. In order to declare your
exporter as capable of providing exports spanning multiple events, your plugin should listen for this signal
and return the subclass of ``pretix.base.exporter.BaseExporter`` that we'll provide in this plugin::
from django.dispatch import receiver
from pretix.base.signals import register_multievent_data_exporters
@receiver(register_multievent_data_exporters, dispatch_uid="multieventexporter_myexporter")
def register_multievent_data_exporter(sender, **kwargs):
from .exporter import MyExporter
return MyExporter
If your exporter supports both event-level and multi-event level exports, you will need to listen for both
signals.
The exporter class
------------------
+26 -15
View File
@@ -12,7 +12,8 @@ Core
.. automodule:: pretix.base.signals
:members: periodic_task, event_live_issues, event_copy_data, email_filter, register_notification_types,
item_copy_data
item_copy_data, register_sales_channels, register_global_settings, quota_availability, global_email_filter,
register_ticket_secret_generators
Order events
""""""""""""
@@ -20,17 +21,24 @@ Order events
There are multiple signals that will be sent out in the ordering cycle:
.. automodule:: pretix.base.signals
:members: validate_cart, order_fee_calculation, order_paid, order_placed, order_fee_type_name, allow_ticket_download
:members: validate_cart, validate_cart_addons, validate_order, order_fee_calculation, order_paid, order_placed, order_canceled, order_reactivated, order_expired, order_modified, order_changed, order_approved, order_denied, order_fee_type_name, allow_ticket_download, order_split, order_gracefully_delete, invoice_line_text
Check-ins
"""""""""
.. automodule:: pretix.base.signals
:members: checkin_created
Frontend
--------
.. automodule:: pretix.presale.signals
:members: html_head, html_footer, footer_links, front_page_top, front_page_bottom, fee_calculation_for_cart, contact_form_fields, question_form_fields, checkout_confirm_messages, checkout_confirm_page_content
:members: html_head, html_footer, footer_link, front_page_top, front_page_bottom, front_page_bottom_widget, fee_calculation_for_cart, contact_form_fields, question_form_fields, contact_form_fields_overrides, question_form_fields_overrides, checkout_confirm_messages, checkout_confirm_page_content, checkout_all_optional, html_page_header, sass_preamble, sass_postamble, render_seating_plan, checkout_flow_steps, position_info, position_info_top, item_description, global_html_head, global_html_footer, global_html_page_header
.. automodule:: pretix.presale.signals
:members: order_info, order_meta_from_request
:members: order_info, order_info_top, order_meta_from_request
Request flow
""""""""""""
@@ -49,32 +57,35 @@ Backend
.. automodule:: pretix.control.signals
:members: nav_event, html_head, html_page_start, quota_detail_html, nav_topbar, nav_global, nav_organizer, nav_event_settings,
order_info, event_settings_widget, oauth_application_registered
order_info, event_settings_widget, oauth_application_registered, order_position_buttons, subevent_forms,
item_formsets, order_search_filter_q
.. automodule:: pretix.base.signals
:members: logentry_display, logentry_object_link, requiredaction_display
:members: logentry_display, logentry_object_link, requiredaction_display, timeline_events
Vouchers
""""""""
.. automodule:: pretix.control.signals
:members: item_forms
Vouchers
""""""""
.. automodule:: pretix.control.signals
:members: voucher_form_class, voucher_form_html, voucher_form_validation
:members: item_forms, voucher_form_class, voucher_form_html, voucher_form_validation
Dashboards
""""""""""
.. automodule:: pretix.control.signals
:members: event_dashboard_widgets, user_dashboard_widgets
:members: event_dashboard_widgets, user_dashboard_widgets, event_dashboard_top
Ticket designs
""""""""""""""
.. automodule:: pretix.base.signals
:members: layout_text_variables
.. automodule:: pretix.plugins.ticketoutputpdf.signals
:members: override_layout
API
---
.. automodule:: pretix.base.signals
:members: validate_event_settings, api_event_settings_fields
+112
View File
@@ -0,0 +1,112 @@
.. highlight:: python
:linenothreshold: 5
.. _`importcol`:
Extending the order import process
==================================
It's possible through the backend to import orders into pretix, for example from a legacy ticketing system. If your
plugins defines additional data structures around orders, it might be useful to make it possible to import them as well.
Import process
--------------
Here's a short description of pretix' import process to show you where the system will need to interact with your plugin.
You can find more detailed descriptions of the attributes and methods further below.
1. The user uploads a CSV file. The system tries to parse the CSV file and understand its column headers.
2. A preview of the file is shown to the user and the user is asked to assign the various different input parameters to
columns of the file or static values. For example, the user either needs to manually select a product or specify a
column that contains a product. For this purpose, a select field is rendered for every possible input column,
allowing the user to choose between a default/empty value (defined by your ``default_value``/``default_label``)
attributes, the columns of the uploaded file, or a static value (defined by your ``static_choices`` method).
3. The user submits its assignment and the system uses the ``resolve`` method of all columns to get the raw value for
all columns.
4. The system uses the ``clean`` method of all columns to verify that all input fields are valid and transformed to the
correct data type.
5. The system prepares internal model objects (``Order`` etc) and uses the ``assign`` method of all columns to assign
these objects with actual values.
6. The system saves all of these model objects to the database in a database transaction. Plugins can create additional
objects in this stage through their ``save`` method.
Column registration
-------------------
The import API does not make a lot of usage from signals, however, it
does use a signal to get a list of all available import columns. Your plugin
should listen for this signal and return the subclass of ``pretix.base.orderimport.ImportColumn``
that we'll provide in this plugin:
.. sourcecode:: python
from django.dispatch import receiver
from pretix.base.signals import order_import_columns
@receiver(order_import_columns, dispatch_uid="custom_columns")
def register_column(sender, **kwargs):
return [
EmailColumn(sender),
]
The column class API
--------------------
.. class:: pretix.base.orderimport.ImportColumn
The central object of each import extension is the subclass of ``ImportColumn``.
.. py:attribute:: ImportColumn.event
The default constructor sets this property to the event we are currently
working for.
.. autoattribute:: identifier
This is an abstract attribute, you **must** override this!
.. autoattribute:: verbose_name
This is an abstract attribute, you **must** override this!
.. autoattribute:: default_value
.. autoattribute:: default_label
.. autoattribute:: initial
.. automethod:: static_choices
.. automethod:: resolve
.. automethod:: clean
.. automethod:: assign
.. automethod:: save
Example
-------
For example, the import column responsible for assigning email addresses looks like this:
.. sourcecode:: python
class EmailColumn(ImportColumn):
identifier = 'email'
verbose_name = _('E-mail address')
def clean(self, value, previous_values):
if value:
EmailValidator()(value)
return value
def assign(self, value, order, position, invoice_address, **kwargs):
order.email = value
+3
View File
@@ -12,8 +12,11 @@ Contents:
payment
payment_2.0
email
placeholder
invoice
shredder
import
customview
auth
general
quality
+1 -1
View File
@@ -23,7 +23,7 @@ that we'll provide in this plugin::
@receiver(register_invoice_renderers, dispatch_uid="output_custom")
def register_infoice_renderers(sender, **kwargs):
def register_invoice_renderers(sender, **kwargs):
from .invoice import MyInvoiceRenderer
return MyInvoiceRenderer
+16 -2
View File
@@ -62,8 +62,12 @@ The provider class
.. autoattribute:: is_enabled
.. autoattribute:: priority
.. autoattribute:: settings_form_fields
.. automethod:: settings_form_clean
.. automethod:: settings_content_render
.. automethod:: is_allowed
@@ -96,8 +100,6 @@ The provider class
.. automethod:: order_change_allowed
.. automethod:: order_can_retry
.. automethod:: payment_prepare
.. automethod:: payment_control_render
@@ -108,12 +110,24 @@ The provider class
.. automethod:: execute_refund
.. automethod:: refund_control_render
.. automethod:: api_payment_details
.. automethod:: matching_id
.. automethod:: shred_payment_info
.. automethod:: cancel_payment
.. autoattribute:: is_implicit
.. autoattribute:: is_meta
.. autoattribute:: test_mode_message
.. autoattribute:: requires_invoice_immediately
Additional views
----------------
+79
View File
@@ -0,0 +1,79 @@
.. highlight:: python
:linenothreshold: 5
Writing an e-mail placeholder plugin
====================================
An email placeholder is a dynamic value that pretix users can use in their email templates.
Please read :ref:`Creating a plugin <pluginsetup>` first, if you haven't already.
Placeholder registration
------------------------
The placeholder API does not make a lot of usage from signals, however, it
does use a signal to get a list of all available email placeholders. Your plugin
should listen for this signal and return an instance of a subclass of ``pretix.base.email.BaseMailTextPlaceholder``::
from django.dispatch import receiver
from pretix.base.signals import register_mail_placeholders
@receiver(register_mail_placeholders, dispatch_uid="placeholder_custom")
def register_mail_renderers(sender, **kwargs):
from .email import MyPlaceholderClass
return MyPlaceholder()
Context mechanism
-----------------
Emails are sent in different "contexts" within pretix. For example, many emails are sent in the
the context of an order, but some are not, such as the notification of a waiting list voucher.
Not all placeholders make sense in every email, and placeholders usually depend some parameters
themselves, such as the ``Order`` object. Therefore, placeholders are expected to explicitly declare
what values they depend on and they will only be available in an email if all those dependencies are
met. Currently, placeholders can depend on the following context parameters:
* ``event``
* ``order``
* ``position``
* ``waiting_list_entry``
* ``invoice_address``
* ``payment``
There are a few more that are only to be used internally but not by plugins.
The placeholder class
---------------------
.. class:: pretix.base.email.BaseMailTextPlaceholder
.. autoattribute:: identifier
This is an abstract attribute, you **must** override this!
.. autoattribute:: required_context
This is an abstract attribute, you **must** override this!
.. automethod:: render
This is an abstract method, you **must** implement this!
.. automethod:: render_sample
This is an abstract method, you **must** implement this!
Helper class for simple placeholders
------------------------------------
pretix ships with a helper class that makes it easy to provide placeholders based on simple
functions::
placeholder = SimpleFunctionalMailTextPlaceholder(
'code', ['order'], lambda order: order.code, sample='F8VVL'
)
+19 -7
View File
@@ -46,18 +46,25 @@ name string The human-readable name of your plugin
author string Your name
version string A human-readable version code of your plugin
description string A more verbose description of what your plugin does.
category string Category of a plugin. Either one of ``"FEATURE"``, ``"PAYMENT"``,
``"INTEGRATION"``, ``"CUSTOMIZATION"``, ``"FORMAT"``, or ``"API"``,
or any other string.
visible boolean (optional) ``True`` by default, can hide a plugin so it cannot be normally activated.
restricted boolean (optional) ``False`` by default, restricts a plugin such that it can only be enabled
for an event by system administrators / superusers.
compatibility string Specifier for compatible pretix versions.
================== ==================== ===========================================================
A working example would be::
from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _
try:
from pretix.base.plugins import PluginConfig
except ImportError:
raise RuntimeError("Please use pretix 2.7 or above to run this plugin!")
from django.utils.translation import gettext_lazy as _
class PaypalApp(AppConfig):
class PaypalApp(PluginConfig):
name = 'pretix_paypal'
verbose_name = _("PayPal")
@@ -65,9 +72,11 @@ A working example would be::
name = _("PayPal")
author = _("the pretix team")
version = '1.0.0'
category = 'PAYMENT
visible = True
restricted = False
description = _("This plugin allows you to receive payments via PayPal")
compatibility = "pretix>=2.7.0"
default_app_config = 'pretix_paypal.PaypalApp'
@@ -79,6 +88,9 @@ human-readable error messages. We recommend using the ``django.utils.functional.
decorator, as it might get called a lot. You can also implement ``compatibility_warnings``,
those will be displayed but not block the plugin execution.
The ``AppConfig`` class may implement a method ``is_available(event)`` that checks if a plugin
is available for a specific event. If not, it will not be shown in the plugin list of that event.
Plugin registration
-------------------
@@ -124,7 +136,7 @@ in the ``installed`` method::
pass # Your code here
Note that ``installed`` will *not* be called if the plugin in indirectly activated for an event
Note that ``installed`` will *not* be called if the plugin is indirectly activated for an event
because the event is created with settings copied from another event.
Views
@@ -139,8 +151,8 @@ your Django app label.
with checking that the calling user is logged in, has appropriate permissions,
etc. We plan on providing native support for this in a later version.
.. _Django app: https://docs.djangoproject.com/en/1.7/ref/applications/
.. _signal dispatcher: https://docs.djangoproject.com/en/1.7/topics/signals/
.. _namespace packages: http://legacy.python.org/dev/peps/pep-0420/
.. _Django app: https://docs.djangoproject.com/en/3.0/ref/applications/
.. _signal dispatcher: https://docs.djangoproject.com/en/3.0/topics/signals/
.. _namespace packages: https://legacy.python.org/dev/peps/pep-0420/
.. _entry point: https://setuptools.readthedocs.io/en/latest/pkg_resources.html#locating-plugins
.. _cookiecutter: https://cookiecutter.readthedocs.io/en/latest/
+2 -2
View File
@@ -35,9 +35,9 @@ The shredder class
.. class:: pretix.base.shredder.BaseDataShredder
The central object of each invoice renderer is the subclass of ``BaseInvoiceRenderer``.
The central object of each data shredder is the subclass of ``BaseDataShredder``.
.. py:attribute:: BaseInvoiceRenderer.event
.. py:attribute:: BaseDataShredder.event
The default constructor sets this property to the event we are currently
working for.
+10
View File
@@ -69,3 +69,13 @@ The output class
.. automethod:: generate_order
.. autoattribute:: download_button_text
.. autoattribute:: download_button_icon
.. autoattribute:: multi_download_button_text
.. autoattribute:: long_download_button_text
.. autoattribute:: preview_allowed
.. autoattribute:: javascript_required
+7 -1
View File
@@ -82,6 +82,12 @@ Orders
^^^^^^
If a customer completes the checkout process, an **Order** will be created containing all the entered information.
An order can be in one of currently five states that are listed in the diagram below:
An order can be in one of currently four states that are listed in the diagram below:
.. image:: /images/order_states.png
There are additional "fake" states that are displayed like states but not represented as states in the system:
* An order is considered **canceled (with paid fee)** if it is in **paid** status but does not include any non-cancelled positions.
* An order is considered **requiring approval** if it is in **pending** status with the ``require_approval`` attribute set to ``True``.
+2 -2
View File
@@ -7,7 +7,7 @@ Coding style and quality
for more information. Use four spaces for indentation.
* We sort our imports by a certain schema, but you don't have to do this by hand. Again, ``setup.cfg`` contains
some definitions that allow the command ``isort -rc <directory>`` to automatically sort the imports in your source
some definitions that allow the command ``isort <directory>`` to automatically sort the imports in your source
files.
* For templates and models, please take a look at the `Django Coding Style`_. We like Django's `class-based views`_ and
@@ -18,7 +18,7 @@ Coding style and quality
* We expect all new code to come with proper tests. When writing new tests, please write them using `pytest-style`_
test functions and raw ``assert`` statements. Use `fixtures`_ to prevent repetitive code. Some old parts of pretix'
test suite are in the style of Python's unit test module. If you extend those files, you might continue in this style,
but please use pytest style for any new test files.
but please use ``pytest`` style for any new test files.
* Please keep the first line of your commit messages short. When referencing an issue, please phrase it like
``Fix #123 -- Problems with order creation`` or ``Refs #123 -- Fix this part of that bug``.
+1 -1
View File
@@ -69,7 +69,7 @@ We now need a way to translate the action codes like ``pretix.event.changed`` in
strings. The :py:attr:`pretix.base.signals.logentry_display` signals allows you to do so. A simple
implementation could look like::
from django.utils.translation import ugettext as _
from django.utils.translation import gettext as _
from pretix.base.signals import logentry_display
@receiver(signal=logentry_display)
+1 -1
View File
@@ -23,7 +23,7 @@ Organizers and events
:members:
.. autoclass:: pretix.base.models.Event
:members: get_date_from_display, get_time_from_display, get_date_to_display, get_date_range_display, presale_has_ended, presale_is_running, cache, lock, get_plugins, get_mail_backend, payment_term_last, get_payment_providers, get_invoice_renderers, active_subevents, invoice_renderer, settings
:members: get_date_from_display, get_time_from_display, get_date_to_display, get_date_range_display, presale_has_ended, presale_is_running, cache, lock, get_plugins, get_mail_backend, payment_term_last, get_payment_providers, get_invoice_renderers, invoice_renderer, settings
.. autoclass:: pretix.base.models.SubEvent
:members: get_date_from_display, get_time_from_display, get_date_to_display, get_date_range_display, presale_has_ended, presale_is_running
+7 -8
View File
@@ -21,10 +21,12 @@ Your should install the following on your system:
* Python 3.5 or newer
* ``pip`` for Python 3 (Debian package: ``python3-pip``)
* ``python-dev`` for Python 3 (Debian package: ``python3-dev``)
* On Debian/Ubuntu: ``python-venv`` for Python 3 (Debian package: ``python3-venv``)
* ``libffi`` (Debian package: ``libffi-dev``)
* ``libssl`` (Debian package: ``libssl-dev``)
* ``libxml2`` (Debian package ``libxml2-dev``)
* ``libxslt`` (Debian package ``libxslt1-dev``)
* ``libenchant1c2a`` (Debian package ``libenchant1c2a``)
* ``msgfmt`` (Debian package ``gettext``)
* ``git``
@@ -63,9 +65,7 @@ Then, create the local database::
python manage.py migrate
A first user with username ``admin@localhost`` and password ``admin`` will be automatically
created. If you want to generate more test data, run::
python make_testdata.py
created.
If you want to see pretix in a different language than English, you have to compile our language
files::
@@ -81,8 +81,7 @@ To run the local development webserver, execute::
and head to http://localhost:8000/
As we did not implement an overall front page yet, you need to go directly to
http://localhost:8000/control/ for the admin view or, if you imported the test
data as suggested above, to the event page at http://localhost:8000/bigevents/2019/
http://localhost:8000/control/ for the admin view.
.. note:: If you want the development server to listen on a different interface or
port (for example because you develop on `pretixdroid`_), you can check
@@ -99,7 +98,7 @@ pull request nevertheless and ask us for help, we are happy to assist you.
Execute the following commands to check for code style errors::
flake8 .
isort -c -rc .
isort -c .
python manage.py check
Execute the following command to run pretix' test suite (might take a couple of minutes)::
@@ -118,11 +117,11 @@ for example, to check for any errors in any staged files when committing::
export GIT_WORK_TREE=../
export GIT_DIR=../.git
source ../env/bin/activate # Adjust to however you activate your virtual environment
for file in $(git diff --cached --name-only | grep -E '\.py$' | grep -Ev "migrations|mt940\.py|pretix/settings\.py|make_testdata\.py|testutils/settings\.py|tests/settings\.py|pretix/base/models/__init__\.py")
for file in $(git diff --cached --name-only | grep -E '\.py$' | grep -Ev "migrations|mt940\.py|pretix/settings\.py|make_testdata\.py|testutils/settings\.py|tests/settings\.py|pretix/base/models/__init__\.py|.*_pb2\.py")
do
echo $file
git show ":$file" | flake8 - --stdin-display-name="$file" || exit 1 # we only want to lint the staged changes, not any un-staged changes
git show ":$file" | isort -df --check-only - | grep ERROR && exit 1 || true
git show ":$file" | isort -c - | grep ERROR && exit 1 || true
done
Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 53 KiB

+2 -2
View File
@@ -4,7 +4,6 @@ Pending: Order is expecting payment\nOrder reduces quotas
Expired: Payment period is over\nOrder does not affect quotas
Paid: Order was successful\nOrder reduces quotas
Canceled: Order has been canceled\nOrder does not affect quotas
Refunded: Order has been refunded\nOrder does not affect quotas
[*] --> Pending: customer\nplaces order
Pending --> Paid: successful payment
@@ -12,8 +11,9 @@ Pending --> Expired: automatically\nor manually\non admin action
Expired --> Paid: if payment is received\nonly if quota left
Expired --> Canceled
Expired --> Pending: manually\non admin action
Paid --> Refunded: manually on\nadmin action\nor if an external\npayment provider\nnotifies about a\npayment refund
Paid --> Canceled: manually on\nadmin action\nor if an external\npayment provider\nnotifies about a\npayment refund
Pending --> Canceled: on admin or\ncustomer action
Paid -> Pending: manually on admin action
[*] --> Paid: customer\nplaces free order
@enduml
+1
View File
@@ -0,0 +1 @@
.. include:: contents.rst
+40
View File
@@ -108,3 +108,43 @@ Endpoints
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to view it.
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/badgeitems/
Returns a list of all assignments of items to layouts
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/events/democon/badgeitems/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: text/javascript
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"layout": 2,
"item": 3,
}
]
}
:query page: The page number in case of a multi-page result set, default is 1
:param organizer: The ``slug`` field of a valid organizer
:param event: The ``slug`` field of a valid event
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view it.
+6
View File
@@ -34,6 +34,8 @@ transactions list of objects Transactions in
├ payer string Payment source
├ reference string Payment reference
├ amount string Payment amount
├ iban string Payment IBAN
├ bic string Payment BIC
├ date string Payment date (in **user-inputted** format)
├ order string Associated order code (or ``null``)
└ comment string Internal comment
@@ -83,6 +85,8 @@ Endpoints
"date": "26.06.2017",
"payer": "John Doe",
"order": null,
"iban": "",
"bic": "",
"checksum": "5de03a601644dfa63420dacfd285565f8375a8f2",
"reference": "GUTSCHRIFT\r\nSAMPLECONF-NAB12 EREF: SAMPLECONF-NAB12\r\nIBAN: DE1234556…",
"state": "nomatch",
@@ -132,6 +136,8 @@ Endpoints
"comment": "",
"date": "26.06.2017",
"payer": "John Doe",
"iban": "",
"bic": "",
"order": null,
"checksum": "5de03a601644dfa63420dacfd285565f8375a8f2",
"reference": "GUTSCHRIFT\r\nSAMPLECONF-NAB12 EREF: SAMPLECONF-NAB12\r\nIBAN: DE1234556…",
+224
View File
@@ -0,0 +1,224 @@
Campaigns
=========
The campaigns plugin provides a HTTP API that allows you to create new campaigns.
Resource description
--------------------
The campaign resource contains the following public fields:
.. rst-class:: rest-resource-table
===================================== ========================== =======================================================
Field Type Description
===================================== ========================== =======================================================
id integer Internal campaign ID
code string The URL component of the campaign, e.g. with code ``BAR``
the campaign URL would to be ``https://<server>/<organizer>/<event>/c/BAR/``.
This value needs to be *globally unique* and we do not
recommend setting it manually. If you omit it, a random
value will be chosen.
description string An internal, human-readable name of the campaign.
external_target string An URL to redirect to from the tracking link. To redirect to
the ticket shop, use an empty string.
order_count integer Number of orders tracked on this campaign (read-only)
click_count integer Number of clicks tracked on this campaign (read-only)
===================================== ========================== =======================================================
Endpoints
---------
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/campaigns/
Returns a list of all campaigns configured for an event.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/events/sampleconf/campaigns/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"code": "wZnL11fjq",
"description": "Facebook",
"external_target": "",
"order_count:" 0,
"click_count:" 0
}
]
}
:query page: The page number in case of a multi-page result set, default is 1
:param organizer: The ``slug`` field of a valid organizer
:param event: The ``slug`` field of the event to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer or event does not exist **or** you have no permission to view it.
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/campaigns/(id)/
Returns information on one campaign, identified by its ID.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/events/sampleconf/campaigns/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"code": "wZnL11fjq",
"description": "Facebook",
"external_target": "",
"order_count:" 0,
"click_count:" 0
}
:param organizer: The ``slug`` field of the organizer to fetch
:param event: The ``slug`` field of the event to fetch
:param id: The ``id`` field of the campaign to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event/campaign does not exist **or** you have no permission to view it.
.. http:post:: /api/v1/organizers/(organizer)/events/(event)/campaigns/
Create a new campaign.
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/bigevents/events/sampleconf/campaigns/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 166
{
"description": "Twitter"
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 201 Created
Vary: Accept
Content-Type: application/json
{
"id": 2,
"code": "IfVJQzSBL",
"description": "Twitter",
"external_target": "",
"order_count:" 0,
"click_count:" 0
}
:param organizer: The ``slug`` field of the organizer to create a campaign for
:param event: The ``slug`` field of the event to create a campaign for
:statuscode 201: no error
:statuscode 400: The campaign could not be created due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to create campaigns.
.. http:patch:: /api/v1/organizers/(organizer)/events/(event)/campaigns/(id)/
Update a campaign. You can also use ``PUT`` instead of ``PATCH``. With ``PUT``, you have to provide all fields of
the resource, other fields will be reset to default. With ``PATCH``, you only need to provide the fields that you
want to change.
**Example request**:
.. sourcecode:: http
PATCH /api/v1/organizers/bigevents/events/sampleconf/campaigns/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 34
{
"external_target": "https://mywebsite.com"
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: text/javascript
{
"id": 2,
"code": "IfVJQzSBL",
"description": "Twitter",
"external_target": "https://mywebsite.com",
"order_count:" 0,
"click_count:" 0
}
:param organizer: The ``slug`` field of the organizer to modify
:param event: The ``slug`` field of the event to modify
:param id: The ``id`` field of the campaign to modify
:statuscode 200: no error
:statuscode 400: The campaign could not be modified due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event/campaign does not exist **or** you have no permission to change it.
.. http:delete:: /api/v1/organizers/(organizer)/events/(event)/campaigns/(id)/
Delete a campaign and all associated data.
**Example request**:
.. sourcecode:: http
DELETE /api/v1/organizers/bigevents/events/sampleconf/campaigns/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 204 No Content
Vary: Accept
:param organizer: The ``slug`` field of the organizer to modify
:param event: The ``slug`` field of the event to modify
:param id: The ``id`` field of the campaign to delete
:statuscode 204: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event/campaign does not exist **or** you have no permission to change it
+356
View File
@@ -0,0 +1,356 @@
Digital content
===============
URL interpolation and JWT authentication
----------------------------------------
In the simplest case, you can use the digital content module to point users to a specific piece of content on some
platform after their ticket purchase, or show them an embedded video or live stream. However, the full power of the
module can be utilized by passing additional information to the target system to automatically authenticate the user
or pre-fill some fields with their data. For example, you could use an URL like this::
https://webinars.example.com/join?as={attendee_name}&userid={order_code}-{positionid}
While this is already useful, it does not provide much security anyone could guess a valid combination for that URL.
Therefore, the module allows you to pass information as a `JSON Web Token`_, which isn't encrypted, but signed with a
shared secret such that nobody can create their own tokens or modify the contents. To use a token, set up a URL like this::
https://webinars.example.com/join?with_token={token}
Additionally, you will need to set a JWT secret and a token template, either through the pretix interface or through the
API (see below). pretix currently only supports tokens signed with ``HMAC-SHA256`` (``HS256``). Your token template can contain
whatever JSON you'd like to pass on based on the same variables, for example::
{
"iss": "pretix.eu",
"aud": "webinars.example.com",
"user": {
"id": "{order_code}-{positionid}",
"product": "{product_id}",
"variation": "{variation_id}",
"name": "{attendee_name}"
}
}
Variables can only be used in strings inside the JSON structure.
pretix will automatically add an ``iat`` claim with the current timestamp and an ``exp`` claim with an expiration timestamp
based on your configuration.
List of variables
"""""""""""""""""
The following variables are currently supported:
.. rst-class:: rest-resource-table
=================================== ====================================================================
Variable Description
=================================== ====================================================================
``order_code`` Order code (alphanumerical, unique per order, not per ticket)
``positionid`` ID of the ticket within the order (integer, starting at 1)
``order_email`` E-mail address of the ticket purchaser
``product_id`` Internal ID of the purchased product
``product_variation`` Internal ID of the purchased product variation (or empty)
``attendee_name`` Full name of the ticket holder (or empty)
``attendee_name_*`` Name parts of the ticket holder, depending on configuration, e.g. ``attendee_name_given_name`` or ``attendee_name_family_name``
``attendee_email`` E-mail address of the ticket holder (or empty)
``attendee_company`` Company of the ticket holder (or empty)
``attendee_street`` Street of the ticket holder's address (or empty)
``attendee_zipcode`` ZIP code of the ticket holder's address (or empty)
``attendee_city`` City of the ticket holder's address (or empty)
``attendee_country`` Country code of the ticket holder's address (or empty)
``attendee_state`` State of the ticket holder's address (or empty)
``answer[XYZ]`` Answer to the custom question with identifier ``XYZ``
``invoice_name`` Full name of the invoice address (or empty)
``invoice_name_*`` Name parts of the invoice address, depending on configuration, e.g. ``invoice_name_given_name`` or ``invoice_name_family_name``
``invoice_company`` Company of the invoice address (or empty)
``invoice_street`` Street of the invoice address (or empty)
``invoice_zipcode`` ZIP code of the invoice address (or empty)
``invoice_city`` City of the invoice address (or empty)
``invoice_country`` Country code of the invoice address (or empty)
``invoice_state`` State of the invoice address (or empty)
``meta_XYZ`` Value of the event's ``XYZ`` meta property
``token`` Signed JWT (only to be used in URLs, not in tokens)
=================================== ====================================================================
API Resource description
-------------------------
The digital content plugin provides a HTTP API that allows you to create new digital content for your ticket holders,
such as live streams, videos, or material downloads.
The digital content resource contains the following public fields:
.. rst-class:: rest-resource-table
===================================== ========================== =======================================================
Field Type Description
===================================== ========================== =======================================================
id integer Internal content ID
title multi-lingual string The content title (required)
content_type string The type of content, valid values are ``webinar``, ``video``, ``livestream``, ``link``, ``file``
url string The location of the digital content
description multi-lingual string A public description of the item. May contain Markdown
syntax and is not required.
available_from datetime The first date time at which this content will be shown
(or ``null``).
available_until datetime The last date time at which this content will b e shown
(or ``null``).
all_products boolean If ``true``, the content is available to all buyers of tickets for this event. The ``limit_products`` field is ignored in this case.
limit_products list of integers List of product/item IDs. This content is only shown to buyers of these ticket types.
position integer An integer, used for sorting
subevent integer Date in an event series this content should be shown for. Should be ``null`` if this is not an event series or if this should be shown to all customers.
jwt_template string Template for JWT token generation
jwt_secret string Secret for JWT token generation
jwt_validity integer JWT validity in days
===================================== ========================== =======================================================
API Endpoints
-------------
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/digitalcontents/
Returns a list of all digital content configured for an event.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/events/sampleconf/digitalcontents/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"subevent": null,
"title": {
"en": "Concert livestream"
},
"content_type": "link",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"description": {
"en": "Watch our event live here on YouTube!"
},
"all_products": true,
"limit_products": [],
"available_from": "2020-03-22T23:00:00Z",
"available_until": null,
"position": 1
}
]
}
:query page: The page number in case of a multi-page result set, default is 1
:param organizer: The ``slug`` field of a valid organizer
:param event: The ``slug`` field of the event to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer or event does not exist **or** you have no permission to view it.
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/digitalcontents/(id)/
Returns information on one content item, identified by its ID.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/events/sampleconf/digitalcontents/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{
"id": 1,
"subevent": null,
"title": {
"en": "Concert livestream"
},
"content_type": "link",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"description": {
"en": "Watch our event live here on YouTube!"
},
"all_products": true,
"limit_products": [],
"available_from": "2020-03-22T23:00:00Z",
"available_until": null,
"position": 1
}
:param organizer: The ``slug`` field of the organizer to fetch
:param event: The ``slug`` field of the event to fetch
:param id: The ``id`` field of the content to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event/content does not exist **or** you have no permission to view it.
.. http:post:: /api/v1/organizers/(organizer)/events/(event)/digitalcontents/
Create a new digital content.
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/bigevents/events/sampleconf/digitalcontents/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 166
{
"subevent": null,
"title": {
"en": "Concert livestream"
},
"content_type": "link",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"description": {
"en": "Watch our event live here on YouTube!"
},
"all_products": true,
"limit_products": [],
"available_from": "2020-03-22T23:00:00Z",
"available_until": null,
"position": 1
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 201 Created
Vary: Accept
Content-Type: application/json
{
"id": 2,
"subevent": null,
"title": {
"en": "Concert livestream"
},
"content_type": "link",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"description": {
"en": "Watch our event live here on YouTube!"
},
"all_products": true,
"limit_products": [],
"available_from": "2020-03-22T23:00:00Z",
"available_until": null,
"position": 1
}
:param organizer: The ``slug`` field of the organizer to create new content for
:param event: The ``slug`` field of the event to create new content for
:statuscode 201: no error
:statuscode 400: The content could not be created due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to create digital contents.
.. http:patch:: /api/v1/organizers/(organizer)/events/(event)/digitalcontents/(id)/
Update a content. You can also use ``PUT`` instead of ``PATCH``. With ``PUT``, you have to provide all fields of
the resource, other fields will be reset to default. With ``PATCH``, you only need to provide the fields that you
want to change.
**Example request**:
.. sourcecode:: http
PATCH /api/v1/organizers/bigevents/events/sampleconf/digitalcontents/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 34
{
"url": "https://mywebsite.com"
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: text/javascript
{
"id": 2,
"subevent": null,
"title": {
"en": "Concert livestream"
},
"content_type": "link",
"url": "https://mywebsite.com",
"description": {
"en": "Watch our event live here on YouTube!"
},
"all_products": true,
"limit_products": [],
"available_from": "2020-03-22T23:00:00Z",
"available_until": null,
"position": 1
}
:param organizer: The ``slug`` field of the organizer to modify
:param event: The ``slug`` field of the event to modify
:param id: The ``id`` field of the content to modify
:statuscode 200: no error
:statuscode 400: The content could not be modified due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event/content does not exist **or** you have no permission to change it.
.. http:delete:: /api/v1/organizers/(organizer)/events/(event)/digitalcontents/(id)/
Delete a digital content.
**Example request**:
.. sourcecode:: http
DELETE /api/v1/organizers/bigevents/events/sampleconf/digitalcontents/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 204 No Content
Vary: Accept
:param organizer: The ``slug`` field of the organizer to modify
:param event: The ``slug`` field of the event to modify
:param id: The ``id`` field of the content to delete
:statuscode 204: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event/content does not exist **or** you have no permission to change it
.. _JSON Web Token: https://en.wikipedia.org/wiki/JSON_Web_Token
+3
View File
@@ -14,3 +14,6 @@ If you want to **create** a plugin, please go to the
banktransfer
ticketoutputpdf
badges
campaigns
digital
webinar
+1 -1
View File
@@ -316,7 +316,7 @@ uses to communicate with the pretix server.
"total": 42,
"version": 3,
"event": {
"name": "Demo Converence",
"name": "Demo Conference",
"slug": "democon",
"date_from": "2016-12-27T17:00:00Z",
"date_to": "2016-12-30T18:00:00Z",
+46
View File
@@ -20,6 +20,7 @@ default boolean ``true`` if thi
layout object Layout specification for libpretixprint
background URL Background PDF file
item_assignments list of objects Products this layout is assigned to
├ sales_channel string Sales channel (defaults to ``web``).
└ item integer Item ID
===================================== ========================== =======================================================
@@ -27,6 +28,10 @@ item_assignments list of objects Products this l
This resource has been added.
.. versionchanged:: 2.3
The ``item_assignments.sales_channel`` field has been added.
Endpoints
---------
@@ -109,3 +114,44 @@ Endpoints
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to view it.
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/ticketlayoutitems/
Returns a list of all assignments of items to layouts
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/events/democon/ticketlayoutitems/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: text/javascript
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"layout": 2,
"item": 3,
"sales_channel": web
}
]
}
:query page: The page number in case of a multi-page result set, default is 1
:param organizer: The ``slug`` field of a valid organizer
:param event: The ``slug`` field of a valid event
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer does not exist **or** you have no permission to view it.
+43
View File
@@ -0,0 +1,43 @@
pretix Webinar
==============
Fetch host URLs
---------------
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/webinars/
Returns a list of all currently available webinar calls configured for an event.
**Example request**:
.. sourcecode:: http
GET /api/v1/organizers/bigevents/events/sampleconf/webinars/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
[
{
"name": "Webinar B Sept. 8th, 2020",
"hosturl": "http://pretix.eu/demo/museum/webinar/host/a9aded3d7bd4df60/30611a34f9fee5d3/"
},
{
"name": "Webinar A Sept. 8, 2020",
"hosturl": "http://pretix.eu/demo/museum/webinar/host/e714x7d4a4a36a04/b9cc444665xxx757/"
}
]
:query subevent: Limit the result to the webinar(s) for a specific subevent.
:param organizer: The ``slug`` field of a valid organizer
:param event: The ``slug`` field of the event to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer or event does not exist **or** you have no permission to view it.
+4 -2
View File
@@ -1,8 +1,10 @@
-r ../src/requirements.txt
sphinx==1.6.*
sphinx==2.3.*
sphinx-rtd-theme
sphinxcontrib-httpdomain
sphinxcontrib-images
sphinxcontrib-spelling
sphinxcontrib-spelling==4.*
sphinxemoji
pygments-markdown-lexer
# See https://github.com/rfk/pyenchant/pull/130
git+https://github.com/raphaelm/pyenchant.git@patch-1#egg=pyenchant
Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Some files were not shown because too many files have changed in this diff Show More