* Remove the "hidden" field from the REST blacklist, the analyzer needs to set it.
* Added import_status column messages in the recent uploads table
* Auto-refresh the recent uploads table while imports are pending
* Moved the file moving stuff to its own analyzer in airtime_analyzer
* Basic error reporting to the REST API in airtime_analyzer, needs
hardeneing though
* Fixed a bug with the number of recent uploads
* Prevent airtime_analyzer from running if media_monitor is running
* Overhauled Add Media screen, now shows state of recent uploads
* Dropped old unused "state" column, added new file_import column to cc_files
* New PluploadController methods
* Save the filename as the track title for unprocessed uploads
* Hide pending files from the library until they've been processed.
* Don't overwrite files with duplicate names, we rename them instead.
* File import via the Add Media page now works!
* Reworked StoredFile::copyFileToStor() because it's still needed.
* Reworked the way file paths are reported in airtime_analyzer
and in the RESTful media API
Stripped out fields that are readonly to the RESTful API from the request data for POST and PUT.
Stripped out fields that should never be visible outside of Airtime in response data.
Set uploaded and modified timestamp on POST request.
Set modified timestamp on PUT request.
* Added session auth to the Media API (if you're logged in)
* Started reworking our Plupload interaction with the server to be less
awkward.
* Basic uploading works with the Add Media page again, but messages
aren't dispatched to airtime_analyzer yet (coming next...)
* Added MetadataAnalyzer unit tests and test data
* Improved debug logging and squashed pika logging
* Implemented file moving
* Extract the track number/total
* Fixed mapping of mutagen to Airtime fields in a few spots. The mapping
matches the DB column names now.
* Fixed the bin/airtime_analyzer binary
* Started work on PluploadController to make it work with the new File
API
* Basic HTTP reporting back to the File API works (PUT)
* Use the database table names as JSON field names.
* Fixed result returning bug in message_listener.py
* Fixed API key verification to adhere with the HTTP Basic Auth spec
* Added StatusReporter class to make HTTP requests back to Airtime
* Handle even more errors now
* Added proper logging and log rotation
* Added --debug flag for increased logging.
* Finished the skeleton of the airtime_analyzer service.
* Basic round-robin, reliable AMQP messaging works.
* Using multiprocess arch so the daemon survives analyzer crashes and
avoids failures propagating to other nodes.
* Basic metadata extractor using Mutagen is done.
* HTTP requests to the File API to are next to come...
The problem was that we weren't updating the first show's start time if deleting
a repeat show day changes it. This affected the difference between the original
show start time and the new one.
Fixed a problem where we can't store the original cc_show_day data
because none can exist at some points. If the user changes the only
repeat day, the cc_show_day rule is deleted first then recreated
When a user edits a show and changes the repeat day, we are really deleting the instances from the original
repeat day and creating new instances. Therefore, we don't need to update the show content's start/end time
in this case.