Upgrading to a new version
When upgrading the Numbas LTI provider, follow the upgrade instructions for your platform.
Sometimes new versions of the LTI provider require changes that can’t be made automatically by the normal upgrade procedure.
For such releases, this page lists the changes that must be made.
v3.0
Docker installation
There are a few new settings which must be present in settings.env
.
See Settings for information on the values these settings should take.
INSTANCE_NAME
TIME_ZONE
DEFAULT_FROM_EMAIL
SUPPORT_NAME
SUPPORT_URL
EMAIL_COMPLETION_RECEIPTS
Non-Docker installation
This version updates many of the packages that the LTI tool relies on, and so introduces quite a few changes to the way that the tool is configured.
The minimum required versions of some software have increased:
Python 3.8 or newer
Redis 5 or newer
Git branch
There are now stable git branches for each major version of the LTI provider.
When upgrading to v3.0, switch to the v3_STABLE
branch:
cd /srv/numbas-lti-provider
git fetch origin
git checkout v3_STABLE
After this, you can proceed with the rest of the update steps for your system.
For Ubuntu, the next command will be source /opt/numbas_lti_python/bin/activate
.
Packages to install
There are changes to the required versions of packages specified in requirements.txt
.
In addition, if you are using Redis as the Channels backend, you will need to install channels_redis
:
pip install channels_redis==3.3.1
Supervisor configuration
Overwrite the configuration for supervisord
with the new one given in the installation instructions for your system: Ubuntu, RHEL 7.
The numbas_lti_worker
processes are no longer needed, and the command to launch the numbas_lti_daphne
processes has changed.
Changes to settings
There are several changes to make in the file numbasltiprovider/settings.py
.
The template file, numbasltiprovider/settings.py.dist
, has been rearranged and lots of comments added to better explain what the settings do.
You might like to use that file as a base, and insert your existing settings, rather than just changing your existing file.
The way that Channels is configured has changed. To use Redis as the backend, replace the
CHANNEL_LAYERS
setting with the following:CHANNEL_LAYERS = { "default": { "BACKEND": "channels_redis.core.RedisChannelLayer", "CONFIG": { "hosts": [os.environ.get('REDIS_URL','redis://localhost:6379')], } }, }
For other backends, see the Channels documentation.
Django now requires the
DEFAULT_AUTO_FIELD
setting to be set as follows:DEFAULT_AUTO_FIELD='django.db.models.AutoField'
If you are using MySQL for your database, add the following underneath inside the
'default'
entry in theDATABASES
setting, in order to improve handling of Unicode characters:'OPTIONS': { 'charset': 'utf8mb4', 'use_unicode': True, },
You might need to convert the tables within MySQL to use the
utf8mb4
character set andutf8mb4_unicode_ci
collation rules. See this post by Mathias Bynens for instructions on how to do that.The Huey task runner now prioritises tasks. Change the
HUEY
setting to the following:HUEY = { 'huey_class': 'huey.PriorityRedisHuey', }
Add
'numbas_lti.context_processors.global_settings'
to theTEMPLATES['OPTIONS']['context_processors']
setting.There is a new setting
INSTANCE_NAME
, which should contain the name of the server, to display to users. If the server is run by the University of Somewhere, you might set:INSTANCE_NAME = 'University of Somewhere'
There is a new setting
REPORT_FILE_EXPIRY_DAYS
, specifying the number of days that report files should remain available, before being deleted. The recommended length of time to keep reports is 30 days:REPORT_FILE_EXPIRY_DAYS = 30
Remove
'django_cookies_samesite.middleware.CookiesSameSite'
fromMIDDLEWARE
.
v2.13
There was an error in the base settings.py
file when localisation was introduced.
If you are using the English translation, in numbasltiprovider/settings.py
, change LANGUAGE_CODE = 'en-us'
to LANGUAGE_CODE = 'en'
.
v2.11
This release adds a dependency on the django-statici18n package to translate dynamically-generated text.
In numbasltiprovider/settings.py
, add 'statici18n'
to INSTALLED_APPS
.
The whole list should now be:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'channels',
'huey.contrib.djhuey',
'statici18n',
'numbas_lti',
'bootstrapform',
'bootstrap_datepicker_plus',
]
v2.10
This release uses the task runner huey to perform long-running tasks.
In numbasltiprovider/settings.py
, add 'huey.contrib.djhuey
to INSTALLED_APPS
.
The whole list should now be:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'channels',
'huey.contrib.djhuey',
'numbas_lti',
'bootstrapform',
'bootstrap_datepicker_plus',
]
Add a huey process to the supervisord configuration (in /etc/supervisor/conf.d/numbas_lti.conf
on Ubuntu):
[program:numbas_lti_huey]
command=/opt/numbas_lti_python/bin/python /srv/numbas-lti-provider/manage.py run_huey -w 8
directory=/srv/numbas-lti-provider/
user=numbas_lti
autostart=true
autorestart=true
redirect_stderr=True
stopasgroup=true
environment=DJANGO_SETTINGS_MODULE="numbasltiprovider.settings"
numprocs=1
process_name=%(program_name)s_%(process_num)02d
stderr_logfile=/var/log/supervisor/numbas_lti_huey_stderr.log
stdout_logfile=/var/log/supervisor/numbas_lti_huey_stdout.log
[group:numbas_lti]
programs=numbas_lti_daphne,numbas_lti_workers,numbas_lti_huey
priority=999
Note that the [group:numbas_lti]
section has changed as well.