wiki:XTS2

XTS 2.0 is a restructuring of XTS 1.0 to provide necessary features in the backend for the selling of cafe inventory as well as tickets.

XTS 2.0 divides code responsible for tracking assets (ie. ticket management, café inventory management) and code responsible for tracking money.

Interaction between components in the XTS 2.0 architecture.

XTS 2.0 will be branched from the current XTS trunk RSN, and then heavily hacked up to resemble the new architecture. It may not build for a while but hopefully much of the development history so far will be largely preserved.

Proposed alterations:

  • creation of Tickets python module for show server, mostly populated with code from logic.py and data.py
  • creation of Cafe python module for cafe server
  • creation of Baskets module for transaction server
  • creation of Print module from print.py
  • ripout of logging, statistics and reporting, to be reimplemented once we have a working build
  • reorganisation of HTTP API into /v2/tickets/, /v2/food/, /v2/baskets/
  • /v1/secure/v1/ to be forward-ported to /v2/secure/v1/
  • Further abstraction of data.py

See the XTS2API

Versions

These versions of the XTS2 pre-release have been deployed in the Box Office with the following names during Fringe 2009:

Upgrade Notes

A database schema change in [186] requires that the database be upgraded with accurate closedtimes for every closed basket in the system. This query updates the closedtime of a closed basket to be the addedtime of an item in the basket so long as the item was added after the basket's current closedtime. By using the query recursively until no rows are affected, all baskets will be assigned a best guess of when they were closed.

UPDATE 
    baskets_basket, 
    baskets_item 
SET 
    closedtime = addedtime 
WHERE 
    closed = 1 AND 
    baskets_item.basket_id = baskets_basket.id AND 
    addedtime > closedtime;

The following query helps to verify that basket closedtimes are correct.

SELECT 
    closedtime, 
    MAX(addedtime) 
FROM 
    baskets_basket, 
    baskets_item 
WHERE 
    closed = 1 AND 
    baskets_basket.id = basket_id 
GROUP BY 
    baskets_basket.id;

Attachments