* 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
* Fix#1247 -- Allow team invites to be resent
* Test resending invalid invites
* Fix tooltip
* Fix test
* Handle invalid types for pk parameter
* Style button
* 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
* 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
- [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

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.
- [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
- [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
Here is my attempt to prevent user enumeration.
I've made the following changes:
**Application:**
- replaces success and failure messages in the form with two (with/without redis) information messages
- adds logging for attempted password resets of unknown users
- adds logging for failing emails
**Tests:**
- test_unknown asserts a redirect instead of a ok
- adds test_email_reset_twice_redis to assert the correct logging of a twice reset email
- adds a FakeRedis class similiar to the one implemented in test_metrics.py. I could refactor them into the testutils folder if prefered.
Please excuse the commit mess. I am currently fighting with my tooling.