diff --git a/CHANGELOG.md b/CHANGELOG.md index a8d909d..21bc4e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/Dockerfile b/Dockerfile index 71679cf..1a6e1b7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 diff --git a/src/dashboards/common.libsonnet b/src/dashboards/common.libsonnet index 2552eb9..d243f73 100644 --- a/src/dashboards/common.libsonnet +++ b/src/dashboards/common.libsonnet @@ -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', diff --git a/src/dashboards/teachers/common.libsonnet b/src/dashboards/teachers/common.libsonnet index 5c65ae3..2c39444 100644 --- a/src/dashboards/teachers/common.libsonnet +++ b/src/dashboards/teachers/common.libsonnet @@ -37,9 +37,8 @@ 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"' % { @@ -47,11 +46,6 @@ local common = import '../common.libsonnet'; 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, @@ -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', @@ -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' ), @@ -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', @@ -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', diff --git a/src/dashboards/teachers/course.jsonnet b/src/dashboards/teachers/course.jsonnet index 5bcaa1c..fb6fc68 100644 --- a/src/dashboards/teachers/course.jsonnet +++ b/src/dashboards/teachers/course.jsonnet @@ -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) diff --git a/src/dashboards/teachers/details.jsonnet b/src/dashboards/teachers/details.jsonnet index 8a76d37..e7bb528 100644 --- a/src/dashboards/teachers/details.jsonnet +++ b/src/dashboards/teachers/details.jsonnet @@ -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), @@ -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.