Skip to content

Commit da85803

Browse files
feat: add data attributes definition for learning subdomain
1 parent 0df3e69 commit da85803

7 files changed

Lines changed: 162 additions & 11 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 & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,25 @@
44
#
55
# make upgrade
66
#
7+
attrs==21.2.0
8+
# via -r requirements/base.in
9+
django-crum==0.7.9
10+
# via -r requirements/base.in
711
django==2.2.24
812
# via
913
# -c requirements/constraints.txt
1014
# -r requirements/base.in
1115
# django-crum
12-
django-crum==0.7.9
16+
# edx-opaque-keys
17+
edx-opaque-keys[django]==2.2.1
1318
# via -r requirements/base.in
19+
pbr==5.6.0
20+
# via stevedore
21+
pymongo==3.11.4
22+
# via edx-opaque-keys
1423
pytz==2021.1
1524
# via django
1625
sqlparse==0.4.1
1726
# via django
27+
stevedore==3.3.0
28+
# via edx-opaque-keys

requirements/dev.txt

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,20 +76,23 @@ distlib==0.3.2
7676
# via
7777
# -r requirements/ci.txt
7878
# virtualenv
79+
django-crum==0.7.9
80+
# via -r requirements/quality.txt
7981
django==2.2.24
8082
# via
8183
# -c requirements/constraints.txt
8284
# -r requirements/quality.txt
8385
# django-crum
8486
# edx-lint
85-
django-crum==0.7.9
86-
# via -r requirements/quality.txt
87+
# edx-opaque-keys
8788
docutils==0.17.1
8889
# via
8990
# -r requirements/quality.txt
9091
# readme-renderer
9192
edx-lint==5.0.0
9293
# via -r requirements/quality.txt
94+
edx-opaque-keys[django]==2.2.1
95+
# via -r requirements/quality.txt
9396
filelock==3.0.12
9497
# via
9598
# -r requirements/ci.txt
@@ -211,6 +214,17 @@ pylint-plugin-utils==0.6
211214
# -r requirements/quality.txt
212215
# pylint-celery
213216
# pylint-django
217+
pylint==2.8.3
218+
# via
219+
# -r requirements/quality.txt
220+
# edx-lint
221+
# pylint-celery
222+
# pylint-django
223+
# pylint-plugin-utils
224+
pymongo==3.11.4
225+
# via
226+
# -r requirements/quality.txt
227+
# edx-opaque-keys
214228
pyparsing==2.4.7
215229
# via
216230
# -r requirements/ci.txt
@@ -281,6 +295,7 @@ stevedore==3.3.0
281295
# via
282296
# -r requirements/quality.txt
283297
# code-annotations
298+
# edx-opaque-keys
284299
text-unidecode==1.3
285300
# via
286301
# -r requirements/quality.txt

requirements/doc.txt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,14 @@ coverage==5.5
3232
# pytest-cov
3333
ddt==1.4.2
3434
# via -r requirements/test.txt
35+
django-crum==0.7.9
36+
# via -r requirements/test.txt
3537
django==2.2.24
3638
# via
3739
# -c requirements/constraints.txt
3840
# -r requirements/test.txt
3941
# django-crum
40-
django-crum==0.7.9
41-
# via -r requirements/test.txt
42+
# edx-opaque-keys
4243
doc8==0.8.1
4344
# via -r requirements/doc.in
4445
docutils==0.17.1
@@ -47,6 +48,8 @@ docutils==0.17.1
4748
# readme-renderer
4849
# restructuredtext-lint
4950
# sphinx
51+
edx-opaque-keys[django]==2.2.1
52+
# via -r requirements/test.txt
5053
edx-sphinx-theme==2.1.0
5154
# via -r requirements/doc.in
5255
idna==2.10
@@ -89,6 +92,10 @@ pygments==2.9.0
8992
# doc8
9093
# readme-renderer
9194
# sphinx
95+
pymongo==3.11.4
96+
# via
97+
# -r requirements/test.txt
98+
# edx-opaque-keys
9299
pyparsing==2.4.7
93100
# via
94101
# -r requirements/test.txt
@@ -154,6 +161,7 @@ stevedore==3.3.0
154161
# -r requirements/test.txt
155162
# code-annotations
156163
# doc8
164+
# edx-opaque-keys
157165
text-unidecode==1.3
158166
# via
159167
# -r requirements/test.txt

requirements/quality.txt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,21 @@ cryptography==3.4.7
4242
# via secretstorage
4343
ddt==1.4.2
4444
# via -r requirements/test.txt
45+
django-crum==0.7.9
46+
# via -r requirements/test.txt
4547
django==2.2.24
4648
# via
4749
# -c requirements/constraints.txt
4850
# -r requirements/test.txt
4951
# django-crum
5052
# edx-lint
51-
django-crum==0.7.9
52-
# via -r requirements/test.txt
53+
# edx-opaque-keys
5354
docutils==0.17.1
5455
# via readme-renderer
5556
edx-lint==5.0.0
5657
# via -r requirements/quality.in
58+
edx-opaque-keys[django]==2.2.1
59+
# via -r requirements/test.txt
5760
idna==2.10
5861
# via requests
5962
importlib-metadata==4.6.0
@@ -127,6 +130,16 @@ pylint-plugin-utils==0.6
127130
# via
128131
# pylint-celery
129132
# pylint-django
133+
pylint==2.8.3
134+
# via
135+
# edx-lint
136+
# pylint-celery
137+
# pylint-django
138+
# pylint-plugin-utils
139+
pymongo==3.11.4
140+
# via
141+
# -r requirements/test.txt
142+
# edx-opaque-keys
130143
pyparsing==2.4.7
131144
# via
132145
# -r requirements/test.txt
@@ -179,6 +192,7 @@ stevedore==3.3.0
179192
# via
180193
# -r requirements/test.txt
181194
# code-annotations
195+
# edx-opaque-keys
182196
text-unidecode==1.3
183197
# via
184198
# -r requirements/test.txt

requirements/test.txt

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
# make upgrade
66
#
77
attrs==21.2.0
8-
# via pytest
8+
# via
9+
# -r requirements/base.txt
10+
# pytest
911
click==8.0.1
1012
# via code-annotations
1113
code-annotations==1.1.2
@@ -14,12 +16,15 @@ coverage==5.5
1416
# via pytest-cov
1517
ddt==1.4.2
1618
# via -r requirements/test.in
19+
django-crum==0.7.9
20+
# via -r requirements/base.txt
1721
django==2.2.24
1822
# via
1923
# -c requirements/constraints.txt
2024
# -r requirements/base.txt
2125
# django-crum
22-
django-crum==0.7.9
26+
# edx-opaque-keys
27+
edx-opaque-keys[django]==2.2.1
2328
# via -r requirements/base.txt
2429
iniconfig==1.1.1
2530
# via pytest
@@ -30,11 +35,17 @@ markupsafe==2.0.1
3035
packaging==20.9
3136
# via pytest
3237
pbr==5.6.0
33-
# via stevedore
38+
# via
39+
# -r requirements/base.txt
40+
# stevedore
3441
pluggy==0.13.1
3542
# via pytest
3643
py==1.10.0
3744
# via pytest
45+
pymongo==3.11.4
46+
# via
47+
# -r requirements/base.txt
48+
# edx-opaque-keys
3849
pyparsing==2.4.7
3950
# via packaging
4051
pytest==6.2.4
@@ -58,7 +69,10 @@ sqlparse==0.4.1
5869
# -r requirements/base.txt
5970
# django
6071
stevedore==3.3.0
61-
# via code-annotations
72+
# via
73+
# -r requirements/base.txt
74+
# code-annotations
75+
# edx-opaque-keys
6276
text-unidecode==1.3
6377
# via python-slugify
6478
toml==0.10.2

0 commit comments

Comments
 (0)