* 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
* 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
* 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
* 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
* 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
* 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