Skip to content

Commit 2e45593

Browse files
feat: add data attributes definition for learning subdomain
1 parent 7ca8286 commit 2e45593

File tree

7 files changed

+136
-3
lines changed

7 files changed

+136
-3
lines changed

openedx_events/learning/data.py

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
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 datetime import datetime
8+
from typing import Dict
9+
10+
import attr
11+
from opaque_keys.edx.keys import CourseKey
12+
13+
14+
@attr.s(frozen=True)
15+
class StudentData:
16+
"""
17+
Attributes defined for Open edX student object.
18+
"""
19+
20+
username = attr.ib(type=str)
21+
email = attr.ib(type=str)
22+
is_active = attr.ib(type=bool, default=True)
23+
meta = attr.ib(type=Dict[str, str], factory=dict)
24+
name = attr.ib(type=str, factory=str)
25+
26+
27+
@attr.s(frozen=True)
28+
class RegistrationFormData:
29+
"""
30+
Attributes defined for Open edX student object.
31+
"""
32+
33+
account_form = attr.ib(type=Dict[str, str], factory=dict)
34+
extension_form = attr.ib(type=Dict[str, str], factory=dict)
35+
36+
37+
@attr.s(frozen=True)
38+
class CourseData:
39+
"""
40+
Attributes defined for Open edX Course Overview object.
41+
"""
42+
43+
course_key = attr.ib(type=CourseKey)
44+
display_name = attr.ib(type=str, factory=str)
45+
start = attr.ib(type=datetime, default=None)
46+
end = attr.ib(type=datetime, default=None)
47+
48+
49+
@attr.s(frozen=True)
50+
class CourseEnrollmentData:
51+
"""
52+
Attributes defined for Open edX Course Enrollment object.
53+
"""
54+
55+
user = attr.ib(type=StudentData)
56+
course = attr.ib(type=CourseData)
57+
mode = attr.ib(type=str)
58+
is_active = attr.ib(type=bool)
59+
60+
61+
@attr.s(frozen=True)
62+
class CertificateData:
63+
"""
64+
Attributes defined for Open edX Certificate data object.
65+
"""
66+
67+
user = attr.ib(type=StudentData)
68+
course = attr.ib(type=CourseData)
69+
mode = attr.ib(type=str)
70+
grade = attr.ib(type=str)
71+
status = attr.ib(type=str)
72+
download_url = attr.ib(type=str)
73+
name = attr.ib(type=str)
74+
75+
76+
@attr.s(frozen=True)
77+
class CohortData:
78+
"""
79+
Attributes defined for Open edX Cohort Membership object.
80+
"""
81+
82+
user = attr.ib(type=StudentData)
83+
course = attr.ib(type=CourseData)
84+
name = attr.ib(type=str)

requirements/base.in

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

4+
attrs
45
django
6+
edx-opaque-keys[django]

requirements/base.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,24 @@
44
#
55
# make upgrade
66
#
7+
asgiref==3.4.1
8+
# via django
9+
attrs==21.2.0
10+
# via -r requirements/base.in
711
django==2.2.24
812
# via
913
# -c requirements/constraints.txt
1014
# -r requirements/base.in
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
1122
pytz==2021.1
1223
# via django
1324
sqlparse==0.4.1
1425
# via django
26+
stevedore==3.3.0
27+
# via edx-opaque-keys

requirements/dev.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,15 @@ django==2.2.24
8181
# -c requirements/constraints.txt
8282
# -r requirements/quality.txt
8383
# edx-lint
84+
# edx-opaque-keys
8485
docutils==0.17.1
8586
# via
8687
# -r requirements/quality.txt
8788
# readme-renderer
8889
edx-lint==5.0.0
8990
# via -r requirements/quality.txt
91+
edx-opaque-keys[django]==2.2.1
92+
# via -r requirements/quality.txt
9093
filelock==3.0.12
9194
# via
9295
# -r requirements/ci.txt
@@ -208,6 +211,10 @@ pylint-plugin-utils==0.6
208211
# -r requirements/quality.txt
209212
# pylint-celery
210213
# pylint-django
214+
pymongo==3.11.4
215+
# via
216+
# -r requirements/quality.txt
217+
# edx-opaque-keys
211218
pyparsing==2.4.7
212219
# via
213220
# -r requirements/ci.txt
@@ -278,6 +285,7 @@ stevedore==3.3.0
278285
# via
279286
# -r requirements/quality.txt
280287
# code-annotations
288+
# edx-opaque-keys
281289
text-unidecode==1.3
282290
# via
283291
# -r requirements/quality.txt

requirements/doc.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ docutils==0.17.1
4444
# readme-renderer
4545
# restructuredtext-lint
4646
# sphinx
47+
edx-opaque-keys[django]==2.2.1
48+
# via -r requirements/test.txt
4749
edx-sphinx-theme==3.0.0
4850
# via -r requirements/doc.in
4951
idna==2.10
@@ -86,6 +88,10 @@ pygments==2.9.0
8688
# doc8
8789
# readme-renderer
8890
# sphinx
91+
pymongo==3.11.4
92+
# via
93+
# -r requirements/test.txt
94+
# edx-opaque-keys
8995
pyparsing==2.4.7
9096
# via
9197
# -r requirements/test.txt
@@ -151,6 +157,7 @@ stevedore==3.3.0
151157
# -r requirements/test.txt
152158
# code-annotations
153159
# doc8
160+
# edx-opaque-keys
154161
text-unidecode==1.3
155162
# via
156163
# -r requirements/test.txt

requirements/quality.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,13 @@ django==2.2.24
4747
# -c requirements/constraints.txt
4848
# -r requirements/test.txt
4949
# edx-lint
50+
# edx-opaque-keys
5051
docutils==0.17.1
5152
# via readme-renderer
5253
edx-lint==5.0.0
5354
# via -r requirements/quality.in
55+
edx-opaque-keys[django]==2.2.1
56+
# via -r requirements/test.txt
5457
idna==2.10
5558
# via requests
5659
importlib-metadata==4.6.1
@@ -124,6 +127,10 @@ pylint-plugin-utils==0.6
124127
# via
125128
# pylint-celery
126129
# pylint-django
130+
pymongo==3.11.4
131+
# via
132+
# -r requirements/test.txt
133+
# edx-opaque-keys
127134
pyparsing==2.4.7
128135
# via
129136
# -r requirements/test.txt
@@ -176,6 +183,7 @@ stevedore==3.3.0
176183
# via
177184
# -r requirements/test.txt
178185
# code-annotations
186+
# edx-opaque-keys
179187
text-unidecode==1.3
180188
# via
181189
# -r requirements/test.txt

requirements/test.txt

Lines changed: 14 additions & 3 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
@@ -27,11 +29,17 @@ markupsafe==2.0.1
2729
packaging==21.0
2830
# via pytest
2931
pbr==5.6.0
30-
# via stevedore
32+
# via
33+
# -r requirements/base.txt
34+
# stevedore
3135
pluggy==0.13.1
3236
# via pytest
3337
py==1.10.0
3438
# via pytest
39+
pymongo==3.11.4
40+
# via
41+
# -r requirements/base.txt
42+
# edx-opaque-keys
3543
pyparsing==2.4.7
3644
# via packaging
3745
pytest==6.2.4
@@ -55,7 +63,10 @@ sqlparse==0.4.1
5563
# -r requirements/base.txt
5664
# django
5765
stevedore==3.3.0
58-
# via code-annotations
66+
# via
67+
# -r requirements/base.txt
68+
# code-annotations
69+
# edx-opaque-keys
5970
text-unidecode==1.3
6071
# via python-slugify
6172
toml==0.10.2

0 commit comments

Comments
 (0)