Configuration is currently managed via two configuration files, .env
and env.hjson
;
some other configuration is handled using the Django admin interface.
The .env
includes a few environment variables, including a path to the .env.hjson
file;
a template is provided at .env.sample.
The .env.hjson
includes the majority of global settings, including configuration for LTI and resource access queries
(see the hjson website for more information on allowed syntax).
A template is provided at config/env_sample.hjson.
Both files include explanatory comments to help determine the proper value for a given use case.
More details on certain topics are provided below.
Note: If you were using a prior version of MyLA, there is a utility
env_to_json.py
to help convert your configuration. Runningpython env_to_json.py > config/env.hjson
should create your new config file from your.env
file.
There are two other ways to control configuration in env.hjson
using environment variables.
- Set the environment variable
ENV_JSON
to be a valid JSON document containing all the desired key-value pairs. - Override individual values by setting an environment variable with a given key name. Note that only outermost keys are supported. If the value you want to change is in a nested object or array, you will have to provide a new version of all the nested data as a JSON string for the override value.
MyLA supports LTI 1.3, using pylti1.3. Instructions for LTI 1.3 configuration are in the MyLA wiki.
To use LTI, you also need to configure the CSP
value in env.hjson
, specifically the FRAME_SRC
(see next section).
In addition, you need to ensure you are using https
and the .env.hjson
CSRF_COOKIE_SECURE
value is true
,
with your domain (or instructure.com
) in CSRF_TRUSTED_ORIGINS
.
You may optionally disable deployment ID validation by setting LTI_CONFIG_DISABLE_DEPLOYMENT_ID_VALIDATION
in env.hjson
to true
(default is false
).
All of the Content Security Policy headers can be configured in env.hjson
under CSP
.
In env_sample.hjson
, there is a sample security policy that should work to bring it up.
It has REPORT_ONLY
set to true
; by default it will not actually do anything.
If you are using LTI to embed this tool or you want to configure the policy,
you need to adjust these values and set REPORT_ONLY
to false.
Other values from django-csp
(the library in use) should be supported; simply remove the leading CSP_
and nest it under CSP
in env.hjson
.
If the learning record store (LRS) in use for populating resource event data is Google BigQuery,
some additional configuration is required.
The GOOGLE_APPLICATION_CREDENTIALS
variable defined in the .env
file
should specify the path to a service account JSON key file for accesssing BigQuery.
Users can control which application views are enabled at the global and course levels. If a view is deactivated globally, it will be deactivated for every course, even if previously enabled at the course level. If a view is not globally deactivated, it can still be deactivated at the course level. Note that by default all views are enabled when a course is added.
The VIEWS_DISABLED
variable in env.hjson
controls global settings.
The value should be a comma-delimited list of views to deactivate (by default it is empty).
The expected name of the view is the same as the view's column name in the course_view_option
table.
For example VIEWS_DISABLED=show_resources_accessed,show_grade_distribution
will deactivate both
the Resources Accessed and Grade Distribution views.
MyLA allows you to configure the primary color of the user interface
(i.e., the color used for the top toolbar, or DashboardAppBar, and other structural components of the application).
You can set this color by defining a key-value pair in env.hjson
,
with the key being "PRIMARY_UI_COLOR"
and the value being a valid hex value. See env_sample.hjson
for an example.
Other colors from the user interface are currently fixed and included in version control,
as they are intentional design choices. You can see where color values are set in assets/src/defaultPalette.js
.
A demo_init.sh.sample
file has been provided to help initialize courses.
This can be used in combination with cron.py
to provide some data to start exploring the tool's features.
Rename the file to demo_init.sh
and replace the provided fabricated values with
those of courses relevant to your local institution, providing additional courses as desired.
Ensure that the CANVAS_DATA_ID_INCREMENT
environment variable is set appropriately in env.hjson
,
and then run the following command:
docker exec -it student_dashboard /bin/bash ./demo_init.sh
If you have problems, you can connect directly into the web container:
docker exec -it student_dashboard /bin/bash
MyLA is designed to be deployed as an LTI tool. To grant admin privileges to a user (i.e. access to the admin UI so they can add courses and otherwise configure the tool), do the following:
- Have the user launch the tool in Canvas.
- Modify their
auth_user
record in the database directly so thatis_staff
andis_superuser
are true.# Replace username with the user's Canvas username. UPDATE auth_user SET is_staff=1, is_superuser=1 where auth_user.username='username';
Subsequently, that user can grant other users admin privileges using the admin UI.
Since MyLA can be used by multiple institutions, copyright information needs to be modified to fit the institution's needs. A Django flatpage can be configured for this purpose using the admin UI. Do the following to specify a copyright message.
- In the Django admin UI, click on the "+ Add" icon next to "Flat pages" in the left-hand navigation.
- Fill in the form, making sure to use
/copyright/
for the URL (what thebase.html
template expects), to enter the desired HTML or basic string under "Content", and to click the available site.
Video guide to setting up courses in the My Learning Analytics admin tool.