### Description This fixes various problems in legacy migrations that were preventing a successful database migration from Airtime 2.5.1. Previously, following [the procedure](https://libretime.org/docs/admin-manual/install/migrate-from-airtime/) using the migrations provided in the Libretime 4.2.0 installer, without the fixes in this PR, would either fail completely, or cause all of the imported data to be completely deleted. _migrations.py If schema_version is not found in the table cc_prefs, it then checks for system_version to have a value of '2.5.1' (in case this is an airtime 2.5.1 migration which will not have any schema_version in cc_pref). If found, it prevents loading of the schema file, which is critical to preserving the imported Airtime data. 0006_2_5_5 Removed a redundant addition of the image_path and description columns to cc_show (done in earlier migration 003_2_5_2) 0015_2_5_17 Fixed a syntax error with adding the artwork column to cc_files 0023_3_0_0_alpha_9_1 Removed a redundant addition of the artwork column to cc_files (done in earlier migration 0015_2_5_7) ### Documentation Changes The [airtime migration documentation](https://libretime.org/docs/admin-manual/install/migrate-from-airtime/) already suggests a procedure to be followed, it just didn't work because of problems within these migrations. The procedure as documented should now work for those coming from Airtime 2.5.1. ### Testing Notes **What I did:** I attempted to migrate an actual airtime 2.5.1 database from a production system containing a large amount of shows, tracks, and users. I observed that the migration completed without errors, and that the expected system state was achieved within Libretime. Specifically, the calendar, library, authentication, and other aspects are populated with the data that was present in the migrated Airtime database, and Libretime is able to function using this data. **How you can replicate my testing:** Install Libretime 4.2.0. Restore a sample postrgresql database backup from an Airtime 2.5.1 server. Apply the database migration. Restart the services. Login and view the library, calender, etc. ### **Links** Closes: #3121 May also be related to, or even close (as a duplicate): #2563 |
||
---|---|---|
.. | ||
install/systemd | ||
libretime_api | ||
Makefile | ||
README.md | ||
packages.ini | ||
pyproject.toml | ||
requirements.txt | ||
schema.yml | ||
setup.py |
README.md
LibreTime API
This API provides access to LibreTime's database via a Django application.
Deploying
Deploying in a production environment is done in the install
script which installs LibreTime. This is how the API is installed in the Vagrant
development images too. This method does not automatically reflect changes to
this API. After any changes, the libretime-api
systemd service needs
restarting:
sudo systemctl restart libretime-api
Connections to the API are proxied through the Apache web server by default.
Endpoint exploration and documentation is available from
http://example.com/api/v2/schema/swagger-ui/
, where example.com
is the URL
for the LibreTime instance.
Development
For development, you can install all required dependencies and loading the environment using the following command:
make install
source .venv/bin/activate
You should be able to lint or format the code or run api commands:
make format
make lint
libretime-api help
In order to work with the database and message queue, you need to start the docker based development stack present at the project root:
pushd ..
docker-compose up -d
popd
You can now run the api tests:
make test
Inside Vagrant
You can develop the api using a live reloading version within Vagrant:
vagrant up bullseye
vagrant ssh bullseye
cd /vagrant/api
sudo pip3 install -e .
sudo systemctl stop libretime-api
sudo -u libretime LIBRETIME_DEBUG=True libretime-api runserver 0.0.0.0:8081
3rd Party Licences
libretime_api/tests/resources/song.mp3
: Steps - Tears On The Dancefloor (Album
Teaser) by mceyedol. Downloaded from
https://soundcloud.com/mceyedol/steps-tears-on-the-dancefloor-album-teaser
released under a Creative Commons Licence
(cc-by-sa-nc-sa)