Skip to content

Commit 11df42b

Browse files
authored
feat: Extracting LTI XBlock from edx-platform (#13)
Also: - Defined constants for anonymous user ID and user role. - Replaced HTML/Text helpers with markupsafe. Part of: openedx/openedx-platform#34827
1 parent 09ff0d4 commit 11df42b

22 files changed

Lines changed: 2842 additions & 132 deletions

CHANGELOG.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@ Change Log
1414
Unreleased
1515
**********
1616

17+
0.4.0 – 2025-05-7
18+
**********************************************
19+
20+
Added
21+
=====
22+
23+
* Implemented the LTI XBlock, extracted from edx-platform.
24+
25+
1726
0.3.0 – 2025-04-8
1827
**********************************************
1928

README.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ XBlocks Being Moved Here
1818
These are the XBlocks being moved here, and each of their statuses:
1919

2020
* ``poll_question`` -- Placeholder
21-
* ``word_cloud`` -- Placeholder
22-
* ``annotatable`` -- Placeholder
23-
* ``lti`` -- Placeholder
21+
* ``word_cloud`` -- In Development
22+
* ``annotatable`` -- In Development
23+
* ``lti`` -- In Development
2424
* ``html`` -- Placeholder
2525
* ``discussion`` -- Placeholder
2626
* ``problem`` -- Placeholder

requirements/base.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,6 @@ django-statici18n
55
edx-i18n-tools
66
XBlock
77
openedx-django-pyfs
8+
nh3
9+
oauthlib
10+
edx-opaque-keys

requirements/base.txt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,12 @@ django-appconf==1.1.0
2525
# via django-statici18n
2626
django-statici18n==2.6.0
2727
# via -r requirements/base.in
28+
dnspython==2.7.0
29+
# via pymongo
2830
edx-i18n-tools==1.9.0
2931
# via -r requirements/base.in
32+
edx-opaque-keys==3.0.0
33+
# via -r requirements/base.in
3034
fs==2.4.16
3135
# via
3236
# fs-s3fs
@@ -51,12 +55,20 @@ markupsafe==3.0.2
5155
# via
5256
# mako
5357
# xblock
58+
nh3==0.2.21
59+
# via -r requirements/base.in
60+
oauthlib==3.2.2
61+
# via -r requirements/base.in
5462
openedx-django-pyfs==3.8.0
5563
# via -r requirements/base.in
5664
path==16.16.0
5765
# via edx-i18n-tools
66+
pbr==6.1.1
67+
# via stevedore
5868
polib==1.2.0
5969
# via edx-i18n-tools
70+
pymongo==4.12.1
71+
# via edx-opaque-keys
6072
python-dateutil==2.9.0.post0
6173
# via
6274
# botocore
@@ -78,6 +90,10 @@ six==1.17.0
7890
# python-dateutil
7991
sqlparse==0.5.3
8092
# via django
93+
stevedore==5.4.1
94+
# via edx-opaque-keys
95+
typing-extensions==4.13.2
96+
# via edx-opaque-keys
8197
urllib3==2.2.3
8298
# via
8399
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt

requirements/dev.txt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,22 @@ django-statici18n==2.6.0
130130
# via
131131
# -r requirements/quality.txt
132132
# -r requirements/test.txt
133+
dnspython==2.7.0
134+
# via
135+
# -r requirements/quality.txt
136+
# -r requirements/test.txt
137+
# pymongo
133138
edx-i18n-tools==1.9.0
134139
# via
135140
# -r requirements/dev.in
136141
# -r requirements/quality.txt
137142
# -r requirements/test.txt
138143
edx-lint==5.6.0
139144
# via -r requirements/quality.txt
145+
edx-opaque-keys==3.0.0
146+
# via
147+
# -r requirements/quality.txt
148+
# -r requirements/test.txt
140149
filelock==3.18.0
141150
# via
142151
# -r requirements/quality.txt
@@ -222,6 +231,14 @@ mdurl==0.1.2
222231
# -r requirements/quality.txt
223232
# -r requirements/test.txt
224233
# markdown-it-py
234+
nh3==0.2.21
235+
# via
236+
# -r requirements/quality.txt
237+
# -r requirements/test.txt
238+
oauthlib==3.2.2
239+
# via
240+
# -r requirements/quality.txt
241+
# -r requirements/test.txt
225242
openedx-django-pyfs==3.8.0
226243
# via
227244
# -r requirements/quality.txt
@@ -296,6 +313,11 @@ pylint-plugin-utils==0.8.2
296313
# -r requirements/quality.txt
297314
# pylint-celery
298315
# pylint-django
316+
pymongo==4.12.1
317+
# via
318+
# -r requirements/quality.txt
319+
# -r requirements/test.txt
320+
# edx-opaque-keys
299321
pypng==0.20220715.0
300322
# via
301323
# -r requirements/quality.txt
@@ -395,6 +417,7 @@ stevedore==5.4.1
395417
# -r requirements/quality.txt
396418
# -r requirements/test.txt
397419
# code-annotations
420+
# edx-opaque-keys
398421
text-unidecode==1.3
399422
# via
400423
# -r requirements/quality.txt
@@ -413,6 +436,11 @@ types-python-dateutil==2.9.0.20250516
413436
# -r requirements/quality.txt
414437
# -r requirements/test.txt
415438
# arrow
439+
typing-extensions==4.13.2
440+
# via
441+
# -r requirements/quality.txt
442+
# -r requirements/test.txt
443+
# edx-opaque-keys
416444
urllib3==2.2.3
417445
# via
418446
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt

requirements/doc.txt

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,6 @@ certifi==2025.4.26
5151
# via
5252
# -r requirements/test.txt
5353
# requests
54-
cffi==1.17.1
55-
# via cryptography
5654
chardet==5.2.0
5755
# via
5856
# -r requirements/test.txt
@@ -102,6 +100,10 @@ django-appconf==1.1.0
102100
# django-statici18n
103101
django-statici18n==2.6.0
104102
# via -r requirements/test.txt
103+
dnspython==2.7.0
104+
# via
105+
# -r requirements/test.txt
106+
# pymongo
105107
doc8==1.1.2
106108
# via -r requirements/doc.in
107109
docutils==0.21.2
@@ -113,6 +115,8 @@ docutils==0.21.2
113115
# sphinx
114116
edx-i18n-tools==1.9.0
115117
# via -r requirements/test.txt
118+
edx-opaque-keys==3.0.0
119+
# via -r requirements/test.txt
116120
filelock==3.18.0
117121
# via
118122
# -r requirements/test.txt
@@ -149,10 +153,6 @@ jaraco-context==6.0.1
149153
# via keyring
150154
jaraco-functools==4.1.0
151155
# via keyring
152-
jeepney==0.9.0
153-
# via
154-
# keyring
155-
# secretstorage
156156
jinja2==3.1.6
157157
# via
158158
# -r requirements/test.txt
@@ -200,7 +200,11 @@ more-itertools==10.7.0
200200
# jaraco-classes
201201
# jaraco-functools
202202
nh3==0.2.21
203-
# via readme-renderer
203+
# via
204+
# -r requirements/test.txt
205+
# readme-renderer
206+
oauthlib==3.2.2
207+
# via -r requirements/test.txt
204208
openedx-django-pyfs==3.8.0
205209
# via -r requirements/test.txt
206210
packaging==25.0
@@ -235,8 +239,6 @@ polib==1.2.0
235239
# via
236240
# -r requirements/test.txt
237241
# edx-i18n-tools
238-
pycparser==2.22
239-
# via cffi
240242
pydata-sphinx-theme==0.15.4
241243
# via sphinx-book-theme
242244
pygments==2.19.1
@@ -248,6 +250,10 @@ pygments==2.19.1
248250
# readme-renderer
249251
# rich
250252
# sphinx
253+
pymongo==4.12.1
254+
# via
255+
# -r requirements/test.txt
256+
# edx-opaque-keys
251257
pypng==0.20220715.0
252258
# via
253259
# -r requirements/test.txt
@@ -317,8 +323,6 @@ s3transfer==0.12.0
317323
# via
318324
# -r requirements/test.txt
319325
# boto3
320-
secretstorage==3.3.3
321-
# via keyring
322326
simplejson==3.20.1
323327
# via
324328
# -r requirements/test.txt
@@ -362,6 +366,7 @@ stevedore==5.4.1
362366
# -r requirements/test.txt
363367
# code-annotations
364368
# doc8
369+
# edx-opaque-keys
365370
text-unidecode==1.3
366371
# via
367372
# -r requirements/test.txt
@@ -376,7 +381,9 @@ types-python-dateutil==2.9.0.20250516
376381
# arrow
377382
typing-extensions==4.13.2
378383
# via
384+
# -r requirements/test.txt
379385
# beautifulsoup4
386+
# edx-opaque-keys
380387
# pydata-sphinx-theme
381388
urllib3==2.2.3
382389
# via

requirements/quality.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,16 @@ django-appconf==1.1.0
9696
# django-statici18n
9797
django-statici18n==2.6.0
9898
# via -r requirements/test.txt
99+
dnspython==2.7.0
100+
# via
101+
# -r requirements/test.txt
102+
# pymongo
99103
edx-i18n-tools==1.9.0
100104
# via -r requirements/test.txt
101105
edx-lint==5.6.0
102106
# via -r requirements/quality.in
107+
edx-opaque-keys==3.0.0
108+
# via -r requirements/test.txt
103109
filelock==3.18.0
104110
# via
105111
# -r requirements/test.txt
@@ -169,6 +175,10 @@ mdurl==0.1.2
169175
# via
170176
# -r requirements/test.txt
171177
# markdown-it-py
178+
nh3==0.2.21
179+
# via -r requirements/test.txt
180+
oauthlib==3.2.2
181+
# via -r requirements/test.txt
172182
openedx-django-pyfs==3.8.0
173183
# via -r requirements/test.txt
174184
packaging==25.0
@@ -222,6 +232,10 @@ pylint-plugin-utils==0.8.2
222232
# via
223233
# pylint-celery
224234
# pylint-django
235+
pymongo==4.12.1
236+
# via
237+
# -r requirements/test.txt
238+
# edx-opaque-keys
225239
pypng==0.20220715.0
226240
# via
227241
# -r requirements/test.txt
@@ -296,6 +310,7 @@ stevedore==5.4.1
296310
# via
297311
# -r requirements/test.txt
298312
# code-annotations
313+
# edx-opaque-keys
299314
text-unidecode==1.3
300315
# via
301316
# -r requirements/test.txt
@@ -308,6 +323,10 @@ types-python-dateutil==2.9.0.20250516
308323
# via
309324
# -r requirements/test.txt
310325
# arrow
326+
typing-extensions==4.13.2
327+
# via
328+
# -r requirements/test.txt
329+
# edx-opaque-keys
311330
urllib3==2.2.3
312331
# via
313332
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt

requirements/test.txt

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,14 @@ django-appconf==1.1.0
6363
# django-statici18n
6464
django-statici18n==2.6.0
6565
# via -r requirements/base.txt
66+
dnspython==2.7.0
67+
# via
68+
# -r requirements/base.txt
69+
# pymongo
6670
edx-i18n-tools==1.9.0
6771
# via -r requirements/base.txt
72+
edx-opaque-keys==3.0.0
73+
# via -r requirements/base.txt
6874
filelock==3.18.0
6975
# via
7076
# tox
@@ -118,6 +124,10 @@ markupsafe==3.0.2
118124
# xblock
119125
mdurl==0.1.2
120126
# via markdown-it-py
127+
nh3==0.2.21
128+
# via -r requirements/base.txt
129+
oauthlib==3.2.2
130+
# via -r requirements/base.txt
121131
openedx-django-pyfs==3.8.0
122132
# via -r requirements/base.txt
123133
packaging==25.0
@@ -145,6 +155,10 @@ polib==1.2.0
145155
# edx-i18n-tools
146156
pygments==2.19.1
147157
# via rich
158+
pymongo==4.12.1
159+
# via
160+
# -r requirements/base.txt
161+
# edx-opaque-keys
148162
pypng==0.20220715.0
149163
# via xblock-sdk
150164
pyproject-api==1.9.1
@@ -204,13 +218,20 @@ sqlparse==0.5.3
204218
# -r requirements/base.txt
205219
# django
206220
stevedore==5.4.1
207-
# via code-annotations
221+
# via
222+
# -r requirements/base.txt
223+
# code-annotations
224+
# edx-opaque-keys
208225
text-unidecode==1.3
209226
# via python-slugify
210227
tox==4.26.0
211228
# via -r requirements/test.in
212229
types-python-dateutil==2.9.0.20250516
213230
# via arrow
231+
typing-extensions==4.13.2
232+
# via
233+
# -r requirements/base.txt
234+
# edx-opaque-keys
214235
urllib3==2.2.3
215236
# via
216237
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt

xblocks_contrib/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@
1111
from .video import VideoBlock
1212
from .word_cloud import WordCloudBlock
1313

14-
__version__ = "0.3.0"
14+
__version__ = "0.4.0"

xblocks_contrib/lti/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
"""
2-
Init for the LTIBlock.
2+
THIS BLOCK IS DEPRECATED IN FAVOR OF https://github.com/openedx/xblock-lti-consumer
3+
4+
Learning Tools Interoperability (LTI) module.
35
"""
46

57
from .lti import LTIBlock

0 commit comments

Comments
 (0)