Skip to content

Commit 7d67964

Browse files
authored
Add certificate_page_revision_id to edxorg_to_mitxonline_enrollments (#1798)
* Add certificate_page_revision_id to edxorg_to_mitxonline_enrollments * update * copilot feedback
1 parent ef5667c commit 7d67964

2 files changed

Lines changed: 86 additions & 14 deletions

File tree

src/ol_dbt/models/migration/_migration__models.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ models:
6363
- name: courserun_id
6464
description: int, foreign key representing a single course run on the corresponding
6565
platform.
66-
- name: course_readable_id
66+
- name: courserun_readable_id
6767
description: str, Open edX readable ID
6868
- name: courserunenrollment_enrollment_mode
6969
description: string, enrollment mode for user on the corresponding platform
@@ -78,6 +78,10 @@ models:
7878
- name: courseruncertificate_created_on
7979
description: timestamp, date and time when the course certificate was initially
8080
created
81+
- name: certificate_page_revision_id
82+
description: int, certificate page revision id on mitxonline
83+
- name: signatory_names
84+
description: array of strings, the names of the signatories for the course certificate
8185

8286
- name: edxorg_to_mitxonline_users
8387
description: edX.org certificate learners who not yet have account on MITx Online

src/ol_dbt/models/migration/edxorg_to_mitxonline_enrollments.sql

Lines changed: 81 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,93 @@ with combined_enrollments as (
1010
select * from {{ ref('int__mitxonline__course_runs') }}
1111
)
1212

13-
, mitxonline_enrollment as (
13+
, course_pages as (
14+
select * from {{ ref('stg__mitxonline__app__postgres__cms_coursepage') }}
15+
)
16+
17+
, wagtail_page as (
18+
select * from {{ ref('stg__mitxonline__app__postgres__cms_wagtail_page') }}
19+
)
20+
21+
, mitxonline_certificate_page as (
22+
23+
select
24+
mitxonline__course_runs.courserun_id
25+
, mitxonline__course_runs.courserun_readable_id
26+
, certificate_page.wagtail_page_id as certificate_page_id
27+
from mitxonline__course_runs
28+
join course_pages
29+
on mitxonline__course_runs.course_id = course_pages.course_id
30+
join wagtail_page
31+
on course_pages.wagtail_page_id = wagtail_page.wagtail_page_id
32+
join wagtail_page as certificate_page
33+
on certificate_page.wagtail_page_path like wagtail_page.wagtail_page_path || '%'
34+
and certificate_page.wagtail_page_path <> wagtail_page.wagtail_page_path
35+
36+
)
37+
38+
, edx_signatories as (
39+
select
40+
courserun_readable_id
41+
, array_agg(signatory_normalized_name order by signatory_normalized_name)
42+
filter (where signatory_normalized_name <> '') as signatory_names
43+
, array_sort(
44+
array_agg(mitxonline_signatory.wagtail_page_id)
45+
filter (where mitxonline_signatory.wagtail_page_id is not null)
46+
) AS signatory_ids
47+
from {{ ref('stg__edxorg__s3__course_certificate_signatory') }} edx_signatory
48+
left join {{ ref('stg__mitxonline__app__postgres__cms_signatorypage') }} as mitxonline_signatory
49+
on edx_signatory.signatory_normalized_name = mitxonline_signatory.signatorypage_name
50+
group by courserun_readable_id
51+
)
52+
53+
, mitxonline_certificate_revision as (
1454
select
55+
revision.wagtailcore_revision_id
56+
, cast(revision.wagtail_page_id as bigint) as certificate_page_id
57+
, array_sort(
58+
transform(
59+
cast(
60+
json_parse(json_query(wagtailcore_revision_content, 'lax $.signatories' omit quotes)) as array(json)
61+
)
62+
, x -> CAST(json_extract_scalar(x, '$.value') as integer)
63+
)
64+
) AS signatory_ids
65+
from {{ ref('stg__mitxonline__app__postgres__cms_wagtailcore_revision') }} as revision
66+
inner join {{ ref('stg__mitxonline__app__postgres__django_contenttype') }} as contenttype
67+
on revision.contenttype_id = contenttype.contenttype_id
68+
where contenttype.contenttype_full_name = 'cms_certificatepage'
69+
)
70+
71+
, edx_to_mitxonline_certificate_revision as (
72+
select distinct
73+
edx_signatories.courserun_readable_id
74+
, edx_signatories.signatory_names
75+
, mitxonline_certificate_page.courserun_id
76+
, mitxonline_certificate_revision.wagtailcore_revision_id
77+
from edx_signatories
78+
inner join mitxonline_certificate_page
79+
on mitxonline_certificate_page.courserun_readable_id = edx_signatories.courserun_readable_id
80+
inner join mitxonline_certificate_revision
81+
on mitxonline_certificate_page.certificate_page_id = mitxonline_certificate_revision.certificate_page_id
82+
and edx_signatories.signatory_ids = mitxonline_certificate_revision.signatory_ids
83+
)
84+
85+
, mitxonline_enrollment as (
86+
select distinct
1587
combined_enrollments.courserun_readable_id
1688
, combined_enrollments.user_email
1789
, combined_enrollments.course_readable_id
1890
from combined_enrollments
1991
where combined_enrollments.platform = '{{ var("mitxonline") }}'
20-
group by
21-
combined_enrollments.courserun_readable_id
22-
, combined_enrollments.user_email
23-
, combined_enrollments.course_readable_id
2492
)
2593

2694
, edxorg_enrollment as (
2795
select
2896
combined_enrollments.courserunenrollment_created_on
2997
, combined_enrollments.courserunenrollment_enrollment_mode
3098
, combined_enrollments.user_id
31-
, combined_enrollments.courserun_readable_id
99+
, {{ format_course_id('combined_enrollments.courserun_readable_id', false) }} as courserun_readable_id
32100
, combined_enrollments.course_readable_id
33101
, combined_enrollments.user_email
34102
, combined_enrollments.courseruncertificate_created_on
@@ -42,24 +110,24 @@ select
42110
edxorg_enrollment.user_id as user_edxorg_id
43111
, mitx__users.user_mitxonline_id
44112
, edxorg_enrollment.user_email
45-
, mitxonline__course_runs.courserun_id
46-
, {{ format_course_id('edxorg_enrollment.courserun_readable_id', false) }} as courserun_readable_id
113+
, edx_to_mitxonline_certificate_revision.courserun_id
114+
, edxorg_enrollment.courserun_readable_id
47115
, edxorg_enrollment.courserunenrollment_enrollment_mode
48116
, edxorg_enrollment.courserungrade_grade
49117
, edxorg_enrollment.courserungrade_is_passing
50118
, edxorg_enrollment.courserunenrollment_created_on
51119
, edxorg_enrollment.courseruncertificate_created_on
120+
, edx_to_mitxonline_certificate_revision.wagtailcore_revision_id as certificate_page_revision_id
121+
, edx_to_mitxonline_certificate_revision.signatory_names
52122
from edxorg_enrollment
53123
left join mitxonline_enrollment
54124
on
55125
edxorg_enrollment.user_email = mitxonline_enrollment.user_email
56-
and edxorg_enrollment.course_readable_id = mitxonline_enrollment.course_readable_id
57-
and substring(edxorg_enrollment.courserun_readable_id, length(edxorg_enrollment.courserun_readable_id) - 5)
58-
= substring(mitxonline_enrollment.courserun_readable_id, length(mitxonline_enrollment.courserun_readable_id) - 5)
126+
and edxorg_enrollment.courserun_readable_id = mitxonline_enrollment.courserun_readable_id
59127
left join mitx__users
60128
on edxorg_enrollment.user_id = cast(mitx__users.user_edxorg_id as varchar)
61-
left join mitxonline__course_runs
62-
on edxorg_enrollment.courserun_readable_id = mitxonline__course_runs.courserun_edx_readable_id
129+
left join edx_to_mitxonline_certificate_revision
130+
on edxorg_enrollment.courserun_readable_id = edx_to_mitxonline_certificate_revision.courserun_readable_id
63131
where
64132
edxorg_enrollment.courseruncertificate_created_on is not null
65133
and mitxonline_enrollment.user_email is null

0 commit comments

Comments
 (0)