Fulfilment management system for Greenbelt Festival - http://greenbelt.org.uk
Perl Python CSS Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.


This is the order processing system for Greenbelt Festival's Talks Team.


Perl 5 with
LWP (perl-libwww-perl)
CGI (perl-CGI)
Template (perl-TemplateToolkit)
Text::CSV (perl-Text-CSV)
LWP::Protocol::https (perl-LWP-Protocol-https)
DateTime (perl-DateTime)
Time::ParseDate (perl-Time-ParseDate)
Parallel::ForkManager (perl-Parallel-ForkManager)


Copy gb_talks.conf to somewhere non-world-readable, make it readable by your web server and set it up as you want. 
We recommend that these scripts be executed as as reduced-privilege user. 
Create a database - setup_scripts/ should create the correct schema for the latest version of the scripts

To speed up unmouting USBs:
echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes

The list of talks for the festival - CSV file, parse_talks.plx
Individual orders for mp3s - Web page, orders.cgi
HQ mp3 files - Web page, upload_talk.cgi

Transcode to LQ mp3 and setup CD files- Cron script, transcode_queue_runner.plx

Upload LQ mp3s to website - Cron script, upload_queue_runner.plx
Make repo of LQ mp3s available to duplication team - this is currently handled by a local SMB share

State reporting
- Generally, scripts should set $0 to their talk ID

Logging - directly to filesystem
- Upload queue runner log - upload_log
- Transcode queue runner log - transcode_log


- Add support for boundary conditions
 - Talk not recorded - ensure that this doesn't hold up MP3 orders but alert users to failure
 - Talk chase - on upload page, ask why talks over x hours old haven't been uploaded yet
 - Identify orders for talks that are not available so that appropriate action can be taken
 - Suspend talk from sale affects both website and local MP3 orders (or make it toggle-able).
 - Wrong track has been uploaded / track has been uploaded with incorrect ID
- Add proper box set support
- Add time support
	- Don't allow talks to be uploaded that haven't finished yet
	- Warn if a talk has been pending for more than 4 hours after it's finished
- Add 'replace' checkbox to upload page
- Add authentication
- Add more state support to admin functions
- Track down conditions where transcode QR doesn't delete its lockfile
- Add more edit options to orders.plx - 'edit order' function
- Add automated fulfillment for mp3 orders