Skip to content

Commit

Permalink
🔥(dashboards) drop support for legacy course ID filtering
Browse files Browse the repository at this point in the history
We now only support getting statement-related course by using the
standard `context.contextActivities.parent.id` path.

This is a breaking change.
  • Loading branch information
jmaupetit committed Jul 20, 2023
1 parent c23d39b commit 0a1570a
Show file tree
Hide file tree
Showing 6 changed files with 10 additions and 54 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to

## [Unreleased]

### Removed

- Support for legacy course key building from object definition extensions [BC]

## [0.8.0] - 2023-06-19

### Changed
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Install required libraries
FROM golang:alpine AS builder
FROM golang:alpine3.18 AS builder

# Update installed packages
RUN apk -U upgrade
Expand Down
3 changes: 0 additions & 3 deletions src/dashboards/common.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@
},
fields: {
actor_account_name: 'actor.account.name.keyword',
course: 'object.definition.extensions.http://adlnet.gov/expapi/activities/course.keyword',
school: 'object.definition.extensions.https://w3id.org/xapi/acrossx/extensions/school.keyword',
session: 'object.definition.extensions.http://adlnet.gov/expapi/activities/module.keyword',
video_id: 'object.id.keyword',
subtitle_enabled: 'context.extensions.https://w3id.org/xapi/video/extensions/cc-subtitle-enabled',
full_screen: 'context.extensions.https://w3id.org/xapi/video/extensions/full-screen',
Expand Down
47 changes: 4 additions & 43 deletions src/dashboards/teachers/common.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -37,21 +37,15 @@ local common = import '../common.libsonnet';
course_title: 'SELECT `title` FROM courses_course WHERE `key`="${EDX_COURSE_KEY}"',
course_start_date: 'SELECT DATE_FORMAT(start_date, "%d/%m/%Y") FROM courses_course WHERE `key`="${EDX_COURSE_KEY}"',
course_end_date: 'SELECT DATE_FORMAT(end_date, "%d/%m/%Y") FROM courses_course WHERE `key`="${EDX_COURSE_KEY}"',
course_query: '%(course_key)s OR (%(school_course_session)s)' % {
course_query: '%(course_key)s' % {
course_key: $.queries.course_key,
school_course_session: $.queries.school_course_session,
},
course_videos: 'object.id.keyword:${COURSE_VIDEOS_IDS_WITH_UUID:lucene}',
downloads: '%(video_query)s AND verb.id:"%(verb_downloaded)s"' % {
video_query: $.queries.video_id,
verb_downloaded: common.verb_ids.downloaded,
},
edx_course_key: 'SELECT `key` FROM courses_course WHERE `key`="${EDX_COURSE_KEY}"',
school_course_session: '%(school)s:${SCHOOL:doublequote} AND %(course)s:${COURSE:doublequote} AND %(session)s:${SESSION:doublequote}' % {
course: common.utils.single_escape_string(common.fields.course),
school: common.utils.single_escape_string(common.fields.school),
session: common.utils.single_escape_string(common.fields.session),
},
video_id: 'object.id.keyword:${VIDEO:doublequote}',
views: '%(video_query)s AND verb.id:"%(verb_played)s" AND %(time)s:[0 TO %(view_count_threshold)s]' % {
video_query: $.queries.video_id,
Expand All @@ -75,36 +69,6 @@ local common = import '../common.libsonnet';
refresh='time',
sort=1,
),
school: template.new(
name='SCHOOL',
current='all',
label='School',
datasource=common.datasources.edx_app,
query=$.queries.edx_course_key,
regex='/course-v1:(.*)\\+\\d+\\+.*/',
hide='variable',
refresh='time'
),
course: template.new(
name='COURSE',
current='all',
label='Course',
datasource=common.datasources.edx_app,
query=$.queries.edx_course_key,
regex='/course-v1:.*\\+(\\d+)\\+.*/',
hide='variable',
refresh='time'
),
session: template.new(
name='SESSION',
current='all',
label='Session',
datasource=common.datasources.edx_app,
query=$.queries.edx_course_key,
regex='/course-v1:.*\\+\\d+\\+(.*)/',
hide='variable',
refresh='time'
),
title: template.new(
name='TITLE',
current='all',
Expand Down Expand Up @@ -145,10 +109,9 @@ local common = import '../common.libsonnet';
name='VIDEO',
label='Video',
datasource=common.datasources.lrs,
query='{"find": "terms", "field": "%(video_id)s", "query": "%(course_key)s OR (%(school_course_session)s)"}' % {
query='{"find": "terms", "field": "%(video_id)s", "query": "%(course_key)s"}' % {
video_id: common.fields.video_id,
course_key: $.queries.course_key,
school_course_session: std.strReplace($.queries.school_course_session, '\\', '\\\\'),
},
refresh='time'
),
Expand All @@ -158,10 +121,9 @@ local common = import '../common.libsonnet';
hide='variable',
label='Course videos identifiers',
datasource=common.datasources.lrs,
query='{"find": "terms", "field": "%(video_id)s", "query": "%(course_key)s OR (%(school_course_session)s)"}' % {
query='{"find": "terms", "field": "%(video_id)s", "query": "%(course_key)s"}' % {
video_id: common.fields.video_id,
course_key: $.queries.course_key,
school_course_session: std.strReplace($.queries.school_course_session, '\\', '\\\\'),
},
multi='true',
includeAll='true',
Expand All @@ -174,10 +136,9 @@ local common = import '../common.libsonnet';
current='all',
label='Video',
datasource=common.datasources.lrs,
query='{"find": "terms", "field": "%(video_id)s", "query": "%(course_key)s OR (%(school_course_session)s)"}' % {
query='{"find": "terms", "field": "%(video_id)s", "query": "%(course_key)s"}' % {
video_id: common.fields.video_id,
course_key: $.queries.course_key,
school_course_session: std.strReplace($.queries.school_course_session, '\\', '\\\\'),
},
multi='true',
includeAll='true',
Expand Down
3 changes: 0 additions & 3 deletions src/dashboards/teachers/course.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,6 @@ dashboard.new(
)
.addLink(teachers_common.link.teacher)
.addTemplate(teachers_common.templates.edx_course_key)
.addTemplate(teachers_common.templates.school)
.addTemplate(teachers_common.templates.course)
.addTemplate(teachers_common.templates.session)
.addTemplate(teachers_common.templates.title)
.addTemplate(teachers_common.templates.start_date)
.addTemplate(teachers_common.templates.end_date)
Expand Down
5 changes: 1 addition & 4 deletions src/dashboards/teachers/details.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ dashboard.new(
)
.addLink(teachers_common.link.teacher)
.addTemplate(teachers_common.templates.edx_course_key)
.addTemplate(teachers_common.templates.school)
.addTemplate(teachers_common.templates.course)
.addTemplate(teachers_common.templates.session)
.addTemplate(teachers_common.templates.video)
.addPanel(
row.new(title='Views metrics', collapse=false),
Expand Down Expand Up @@ -237,7 +234,7 @@ dashboard.new(
A view is counted when the user has clicked the play button in the interface
in the first %(view_count_threshold)s seconds of the video.
A complete view is counted when the user has viewed the video
A complete view is counted when the user has viewed the video
at least up to the completion threshold.
A download is counted when the user downloads the video files from Marsha.
Expand Down

0 comments on commit 0a1570a

Please sign in to comment.