Skip to content

Releases: DakaraProject/dakara-server

Version 1.9.2

22 Mar 11:07

Choose a tag to compare

1.9.2 - 2025-03-22

This version only aims to replace the bundle of the client, that was updated to version 1.9.2.

Version 1.9.1

15 Mar 16:30

Choose a tag to compare

1.9.1 - 2025-03-15

This version only aims to replace the bundle of the client, that was updated to version 1.9.1.

Version 1.9.0

06 Mar 13:29

Choose a tag to compare

1.9.0 - 2025-03-06

Update notes

Due to the change of the program handling the self documentation of the API, coreapi should be manually removed from the installed dependencies, as it holds a dependency to the deprecated pkg_resources:

pip uninstall coreapi

Added

  • Added Python 3.13 support.
  • MacOS support.
  • Added Python 3.12 support.
  • Player errors can be accessed in a library fashion (using pagination).

Changed

  • Self documentation of the API is now handled by drf-spectacular.
  • Playlist is integrated to the digest view in its minimal form.
  • Played and queuing playlist entries can be accessed in a library fashion (using pagination), their routes are playlist/played and playlist/queuing.

Removed

  • Removed documentation URL entry point api-doc.
  • Dropped Python 3.9 support.
  • Dropped Python 3.8 support.
  • Dropped Python 3.7 support.
  • Playlist entries in digest view don't have pre-calculated date of play any more. This data has to be calculated by the front now.

Version 1.8.1

17 Dec 22:33

Choose a tag to compare

1.8.1 - 2023-12-17

This version only aims to replace the bundle of the client, that was updated to version 1.8.1.

Version 1.8.0

23 Nov 04:33

Choose a tag to compare

1.8.0 - 2022-11-23

Update notes

The player does not need a special user any more to communicate with the server.
It is recommanded to delete this obsolete user from the database (please make a backup of the database beforehand):

python dakara_server/manage.py shell -c "from users.models import DakaraUser; DakaraUser.objects.filter(playlist_permission_level='p').delete()"

Added

  • Route for prune artists is /api/library/artists/prune/ and route for prune works is /api/library/works/prune/.
  • Tags, work types and works are now created with the feeder, using the routes api/library/song-tags/, api/library/work-types/ and api/library/works/ respectively.
  • Player tokens are generated using the route /api/playlist/player-token/.
  • Songs can be restarted, rewound, or fast forwarded during playback.
  • Support Python 3.10 and 3.11.

Changed

  • The player is no longer treated as a special user.
    It can connect using a special player token that only a playlist manager can generate.

Removed

  • prune command.
    Prune for artists and works can be done through the API now.
  • createtags, createworktypes and createworks commands.
    Creating tags, work types and works can be done through the API now.
  • createplayer command and "player" as playlist permission level.
  • Dropped support of Python 3.6.

Version 1.7.0

20 Jun 16:30

Choose a tag to compare

1.7.0 - 2021-06-20

Added

  • Authentication by email is now possible, in addition to authentication by user name.
    This requires a working email server in production.
    Creating a new account can be done from the login page.
    In order to be functional, the account must have its email address validated (with a special link sent by email during account creation) and must be validated by an users manager (user managers are notified by email each time a new account is created).
    For production, this feature is enabled by default and can be disabled with the environment variable EMAIL_ENABLED set to false.
    This legacy configuration is designed for local servers, not exposed online.
    In this case the email address is automatically validated during account creation, but still has to be validated by an user manager.
    For development and testing, this feature is enabled, but a console email server and respectively a dummy email server are used instead.

Changed

  • The createplayer command accepts now --username and --password to respectively pass username and password.
    It also accepts --noinput to not prompt any input when calling the command.
  • Authentication routes have been changed to api/accounts/:
    • Login: api/token-auth/ -> api/accounts/login/, fields are now login and password;
    • Logout: api/token-auth/logout/ -> api/accounts/logout/;
    • Change password: api/users/<pk>/password/ -> api/accounts/change-password/.
  • If emails are enabled, an user manager cannot change users password anymore.
  • Route to get server version was changed to be more generic and to return settings: api/version/ -> api/settings/.

Removed

  • Dropped support of Python 3.5.

Version 1.6.0

05 Sep 07:54

Choose a tag to compare

1.6.0 - 2020-09-05

Update notes

When updating Dakara server from 1.5 to 1.6, (which means updating Django from 1.11 to 2.2), the database may have inconstencies that lead to a crash when running ./manage.py runserver.

To give more details, the database can contain invalid foreign key constraints.
The reason the problem occurs only with Django 2.0 is because with django 1, sqlite's foreign key constraints were not enforced, as explained in this release note.
The actual reason why the database contains invalid foreign key constraints is due to a bug that was present when the database was created, as reported in this ticket (note that the bug report initially stated that the bug does not occur when migrating using ./manage.py migrate , but other comments reproduced the bug with it).
The bug has been fixed, but databases generated with Django 1 contains this bug.

To update the database and get rid of the bug, it is necessary to export, then reimport it using this procedure:

# starting from the project directory
cd dakara_server

# on dakara server v1.5, export parts of the database
./manage.py dumpdata library >db_library.json
./manage.py dumpdata users >db_users.json
./manage.py dumpdata playlist >db_playlist.json

# keep a backup of the database in case
mv db.squlite3 db_backup.sqlite3

# install the update, install dependencies

# now on dakara server 1.6, migrate
./manage.py migrate

# reimport the data
./manage.py loaddata db_library.json
./manage.py loaddata db_users.json
./manage.py loaddata db_playlist.json

# check everything is ok
./manage.py check
./manage.py runserver

# when you are sure that everything is ok, you can cleanup temporary and backup files
rm db_backup.sqlite3 db_library.json db_users.json db_playlist.json

Added

  • Add instrumental track support. New fields are Song.has_instrumental and PlaylistEntry.use_instrumental.

Fixed

  • Crash when updating a song with 2 works existing with same title but different subtitle.

Version 1.5.1

06 Dec 18:34

Choose a tag to compare

1.5.1 - 2019-12-06

Fixed

  • Crash when 2 works exists with same title but different subtitle.

Version 1.5.0

05 Dec 16:08

Choose a tag to compare

1.5.0 - 2019-12-05

Added

  • Route to retrieve path of all song in database. Used by the external feeder.

Changed

  • Song creation route now accepts a list of objects to create.
  • Song creation route now accepts nested objects.

Removed

  • Feed Command. Feeding is now processed through external feeder. See dakara-feeder project.
  • Replace directory command. Not needed anymore with the new feeder.

Version 1.4.0

03 May 07:55

Choose a tag to compare

1.4.0 - 2019-05-03

Changed

  • Configuration is now split in developement.py for local use and production.py for server use.
    To override default values, set them in a .env file or settings.ini file.
  • Kara status now consists of 3 booleans:
    • ongoing: When false, player does not play, nothing can be added to playlist. In this case, the two other booleans should are meaningless. Equivalent to the old stop status;
    • can_add_to_playlist: When false, users who are not playlist manager can't add songs to playlist;
    • player_play_next_song: When false, player finish playing current song if any, but does not play next song. Equivalent to the old pause status.