3.0 release notes

What’s new in 3.0

In this version RadioCo has almost been rewritten completely, internally the major improvements are:

  • Use of time-zone-aware datetime objects (more info)
  • Added good amount of tests
  • Changed calendar to use API methods
  • Using bower to download js and css dependencies
  • Renamed internal folders and models
    • django-radio/radio –> django-radio/radioco
    • django-radio/radio/configs/common –> django-radio/radioco/configs/base
    • ScheduleBoard model has been renamed to Calendar
    • dashboard app has been merged into schedules

Special mention to @stefan-walluhn - Radio Corax who helped in this release, specifically adding Bower, Rest Framework API, tests and complex recurrence rules.

And the visible features are:

  • Added download button to episodes (#38 Credit to @AlexCortinas)
  • Removed unnecessary Scroll configuration setting (#13 Credit to @AlexCortinas)
  • Improvements in title representation of episodes when not set (#17 Credit to @txenoo)
  • Removed warnings when compiling (#32 Thanks to @txenoo)
  • Added Radiocom endpoints (Thanks to @pablogrela)
  • Added upload feature to CKEditor (#22)
  • Added new calendar setting slotDuration
  • Added a suite of helper tasks using invoke (Easy deploy to docker)
  • Added public API to access to programmes, episodes, schedules and transmissions (#2)
  • The schedule manager has received important updates (#20, #4)

Now managing schedules should be a lot more simple. From the manager is possible to create and edit programmes in addition to schedules.

The forced weekly recurrence has been removed in favor of complex recurrence rules, having a unique calendar should be enough.

The Calendar model doesn’t have date constraints anymore and only one can be active at the same time. If you want to restrict a programme you should do it filling the start and end date fields inside itself.

How this affects you

If you’re starting with a new installation, you don’t need to worry about this. Don’t even bother reading this section; it’s for upgraders.

Please make sure of having a copy of your database before even started to look to the next steps.

If you have custom code or templates I recommend putting them in a safe place, special mention to local_settings.py files, your are going to need to move them to the correct folder.

Since this migration introduces timezone support, it’s necessary to set the timezone variable:

  1. Find your timezone in this list
  2. Go to the config folder and create if not exists a local_settings.py in the same directory than settings.py
  3. Add to the local settings the variable timezone, for example: TIME_ZONE = “Europe/Madrid”


Using an incorrect timezone will cause incorrect dates, you should set/override that setting in your local_settings.py.


If you have a database backend different to PostgreSQL you must convert your data from local time to UTC. Fortunately for you a migration was written to fix episode issue_dates, other dates will suffer alterations.


We strongly recommend to use PostgreSQL as backend. Other database engines will not be supported in the future.

You have to install bower before running the following commands in the project root folder:

bower install
pip install -r radioco/configs/base/requirements.txt
python manage.py collectstatic
python manage.py migrate

After the migration process you will find that there is a new calendar set to active that contains all your schedules and your other calendars have been renamed with the prefix “Legacy - “. Feel free of delete these, they are not require anymore.


Warning messages could appear during the migration process, it’s usually safe to ignore them.