Skip to content

Commit 6683f06

Browse files
feat: add data attributes definition for learning subdomain
1 parent effffbb commit 6683f06

7 files changed

Lines changed: 145 additions & 25 deletions

File tree

openedx_events/learning/data.py

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
"""
2+
Data attributes for events within the architecture subdomain `learning`.
3+
4+
These attributes follow the form of attr objects specified in OEP-49 data
5+
pattern.
6+
"""
7+
from typing import Dict
8+
9+
import attr
10+
from opaque_keys.edx.keys import CourseKey
11+
12+
13+
@attr.s(frozen=True)
14+
class UserProfileData:
15+
"""
16+
Attributes defined for Open edX student's profile object.
17+
"""
18+
19+
meta = attr.ib(type=Dict[str, str], factory=dict)
20+
name = attr.ib(type=str, factory=str)
21+
22+
23+
@attr.s(frozen=True)
24+
class StudentData:
25+
"""
26+
Attributes defined for Open edX student object.
27+
"""
28+
29+
username = attr.ib(type=str)
30+
email = attr.ib(type=str)
31+
first_name = attr.ib(type=str, factory=str)
32+
last_name = attr.ib(type=str, factory=str)
33+
is_active = attr.ib(type=bool, default=True)
34+
profile = attr.ib(type=UserProfileData, default=UserProfileData())
35+
36+
37+
@attr.s(frozen=True)
38+
class RegistrationData:
39+
"""
40+
Attributes defined for Open edX registration profile object.
41+
"""
42+
43+
activation_key = attr.ib(type=str)
44+
45+
46+
@attr.s(frozen=True)
47+
class CourseOverviewData:
48+
"""
49+
Attributes defined for Open edX Course Overview object.
50+
"""
51+
52+
course_key = attr.ib(type=CourseKey)
53+
display_name = attr.ib(type=CourseKey, factory=str)
54+
55+
56+
@attr.s(frozen=True)
57+
class CourseEnrollmentData:
58+
"""
59+
Attributes defined for Open edX Course Enrollment object.
60+
"""
61+
62+
user = attr.ib(type=StudentData)
63+
course = attr.ib(type=CourseOverviewData)
64+
mode = attr.ib(type=str)
65+
is_active = attr.ib(type=bool)
66+
67+
68+
@attr.s(frozen=True)
69+
class CertificateData(CourseEnrollmentData):
70+
"""
71+
Attributes defined for Open edX Certificate data object.
72+
"""
73+
74+
grade = attr.ib(type=str)
75+
status = attr.ib(type=str)
76+
download_url = attr.ib(type=str)
77+
name = attr.ib(type=str)
78+
79+
80+
@attr.s(frozen=True)
81+
class CohortData:
82+
"""
83+
Attributes defined for Open edX Cohort Membership object.
84+
"""
85+
86+
user = attr.ib(type=StudentData)
87+
course = attr.ib(type=CourseOverviewData)

requirements/base.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Core requirements for using this application
22
-c constraints.txt
33

4+
attrs
45
django
56
django-crum
7+
edx-opaque-keys[django]

requirements/base.txt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,24 @@
44
#
55
# make upgrade
66
#
7-
asgiref==3.3.4
8-
# via django
7+
attrs==21.2.0
8+
# via -r requirements/base.in
99
django-crum==0.7.9
1010
# via -r requirements/base.in
11-
django==3.2.4
11+
django==2.2.24
1212
# via
1313
# -r requirements/base.in
1414
# django-crum
15+
# edx-opaque-keys
16+
edx-opaque-keys[django]==2.2.1
17+
# via -r requirements/base.in
18+
pbr==5.6.0
19+
# via stevedore
20+
pymongo==3.11.4
21+
# via edx-opaque-keys
1522
pytz==2021.1
1623
# via django
1724
sqlparse==0.4.1
1825
# via django
26+
stevedore==3.3.0
27+
# via edx-opaque-keys

requirements/dev.txt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@ appdirs==1.4.4
88
# via
99
# -r requirements/ci.txt
1010
# virtualenv
11-
asgiref==3.3.4
12-
# via
13-
# -r requirements/quality.txt
14-
# django
1511
astroid==2.5.6
1612
# via
1713
# -r requirements/quality.txt
@@ -82,17 +78,20 @@ distlib==0.3.2
8278
# virtualenv
8379
django-crum==0.7.9
8480
# via -r requirements/quality.txt
85-
django==3.2.4
81+
django==2.2.24
8682
# via
8783
# -r requirements/quality.txt
8884
# django-crum
8985
# edx-lint
86+
# edx-opaque-keys
9087
docutils==0.17.1
9188
# via
9289
# -r requirements/quality.txt
9390
# readme-renderer
9491
edx-lint==5.0.0
9592
# via -r requirements/quality.txt
93+
edx-opaque-keys[django]==2.2.1
94+
# via -r requirements/quality.txt
9695
filelock==3.0.12
9796
# via
9897
# -r requirements/ci.txt
@@ -214,6 +213,10 @@ pylint==2.8.3
214213
# pylint-celery
215214
# pylint-django
216215
# pylint-plugin-utils
216+
pymongo==3.11.4
217+
# via
218+
# -r requirements/quality.txt
219+
# edx-opaque-keys
217220
pyparsing==2.4.7
218221
# via
219222
# -r requirements/ci.txt
@@ -284,6 +287,7 @@ stevedore==3.3.0
284287
# via
285288
# -r requirements/quality.txt
286289
# code-annotations
290+
# edx-opaque-keys
287291
text-unidecode==1.3
288292
# via
289293
# -r requirements/quality.txt

requirements/doc.txt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@
66
#
77
alabaster==0.7.12
88
# via sphinx
9-
asgiref==3.3.4
10-
# via
11-
# -r requirements/test.txt
12-
# django
139
attrs==21.2.0
1410
# via
1511
# -r requirements/test.txt
@@ -38,10 +34,11 @@ ddt==1.4.2
3834
# via -r requirements/test.txt
3935
django-crum==0.7.9
4036
# via -r requirements/test.txt
41-
django==3.2.4
37+
django==2.2.24
4238
# via
4339
# -r requirements/test.txt
4440
# django-crum
41+
# edx-opaque-keys
4542
doc8==0.8.1
4643
# via -r requirements/doc.in
4744
docutils==0.17.1
@@ -50,6 +47,8 @@ docutils==0.17.1
5047
# readme-renderer
5148
# restructuredtext-lint
5249
# sphinx
50+
edx-opaque-keys[django]==2.2.1
51+
# via -r requirements/test.txt
5352
edx-sphinx-theme==2.1.0
5453
# via -r requirements/doc.in
5554
idna==2.10
@@ -92,6 +91,10 @@ pygments==2.9.0
9291
# doc8
9392
# readme-renderer
9493
# sphinx
94+
pymongo==3.11.4
95+
# via
96+
# -r requirements/test.txt
97+
# edx-opaque-keys
9598
pyparsing==2.4.7
9699
# via
97100
# -r requirements/test.txt
@@ -157,6 +160,7 @@ stevedore==3.3.0
157160
# -r requirements/test.txt
158161
# code-annotations
159162
# doc8
163+
# edx-opaque-keys
160164
text-unidecode==1.3
161165
# via
162166
# -r requirements/test.txt

requirements/quality.txt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,6 @@
44
#
55
# make upgrade
66
#
7-
asgiref==3.3.4
8-
# via
9-
# -r requirements/test.txt
10-
# django
117
astroid==2.5.6
128
# via
139
# pylint
@@ -48,15 +44,18 @@ ddt==1.4.2
4844
# via -r requirements/test.txt
4945
django-crum==0.7.9
5046
# via -r requirements/test.txt
51-
django==3.2.4
47+
django==2.2.24
5248
# via
5349
# -r requirements/test.txt
5450
# django-crum
5551
# edx-lint
52+
# edx-opaque-keys
5653
docutils==0.17.1
5754
# via readme-renderer
5855
edx-lint==5.0.0
5956
# via -r requirements/quality.in
57+
edx-opaque-keys[django]==2.2.1
58+
# via -r requirements/test.txt
6059
idna==2.10
6160
# via requests
6261
importlib-metadata==4.5.0
@@ -130,6 +129,10 @@ pylint==2.8.3
130129
# pylint-celery
131130
# pylint-django
132131
# pylint-plugin-utils
132+
pymongo==3.11.4
133+
# via
134+
# -r requirements/test.txt
135+
# edx-opaque-keys
133136
pyparsing==2.4.7
134137
# via
135138
# -r requirements/test.txt
@@ -182,6 +185,7 @@ stevedore==3.3.0
182185
# via
183186
# -r requirements/test.txt
184187
# code-annotations
188+
# edx-opaque-keys
185189
text-unidecode==1.3
186190
# via
187191
# -r requirements/test.txt

requirements/test.txt

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@
44
#
55
# make upgrade
66
#
7-
asgiref==3.3.4
7+
attrs==21.2.0
88
# via
99
# -r requirements/base.txt
10-
# django
11-
attrs==21.2.0
12-
# via pytest
10+
# pytest
1311
click==8.0.1
1412
# via code-annotations
1513
code-annotations==1.1.2
@@ -20,10 +18,13 @@ ddt==1.4.2
2018
# via -r requirements/test.in
2119
django-crum==0.7.9
2220
# via -r requirements/base.txt
23-
django==3.2.4
21+
django==2.2.24
2422
# via
2523
# -r requirements/base.txt
2624
# django-crum
25+
# edx-opaque-keys
26+
edx-opaque-keys[django]==2.2.1
27+
# via -r requirements/base.txt
2728
iniconfig==1.1.1
2829
# via pytest
2930
jinja2==3.0.1
@@ -33,11 +34,17 @@ markupsafe==2.0.1
3334
packaging==20.9
3435
# via pytest
3536
pbr==5.6.0
36-
# via stevedore
37+
# via
38+
# -r requirements/base.txt
39+
# stevedore
3740
pluggy==0.13.1
3841
# via pytest
3942
py==1.10.0
4043
# via pytest
44+
pymongo==3.11.4
45+
# via
46+
# -r requirements/base.txt
47+
# edx-opaque-keys
4148
pyparsing==2.4.7
4249
# via packaging
4350
pytest-cov==2.12.1
@@ -61,7 +68,10 @@ sqlparse==0.4.1
6168
# -r requirements/base.txt
6269
# django
6370
stevedore==3.3.0
64-
# via code-annotations
71+
# via
72+
# -r requirements/base.txt
73+
# code-annotations
74+
# edx-opaque-keys
6575
text-unidecode==1.3
6676
# via python-slugify
6777
toml==0.10.2

0 commit comments

Comments
 (0)