Skip to content

Commit

Permalink
refactor: [FC-0063] Block types processing refactoring
Browse files Browse the repository at this point in the history
There is a problem that when we need to add a new block type processing,
we need to change the code in several places: update
`Cartridge.get_resource_content` to define the new processed content
type, add the OLX creation logic for this content type to OlxExport and
call it in OlxExport._create_olx_nodes.

It is decided to create a separate class responsible for a block type
processing. So, there are separate processors for HTML, LTI, QTI, Video
etc. The list of block type processors are specified in settings, so we
can control the processors to enable from settings. It will simlify a
processor disabling if, for example, a third-party xblock created by the
processor is not installed on the edX platform.

Technically, to implement a new content processor you need to create a
subclass of `cc2olx.content_processors.AbstractContentProcessor` and
implement its `process` method. The processors for content types
supported before are created.
  • Loading branch information
myhailo-chernyshov-rg authored and ormsbee committed Feb 24, 2025
1 parent a5bd0db commit a70e24e
Show file tree
Hide file tree
Showing 88 changed files with 2,966 additions and 1,720 deletions.
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
include LICENSE
include README.rst

recursive-include src/cc2olx/templates *
recursive-include requirements *
recursive-include tests *
recursive-exclude * __pycache__
Expand Down
2 changes: 1 addition & 1 deletion pytest.ini
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[pytest]
usefixtures = chdir_to_workspace
DJANGO_SETTINGS_MODULE = cc2olx.django_settings
DJANGO_SETTINGS_MODULE = cc2olx.settings
2 changes: 2 additions & 0 deletions requirements/base.in
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Core requirements for this package
-c constraints.txt

Django
attrs
lxml
requests
youtube-dl
8 changes: 5 additions & 3 deletions requirements/base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,19 @@
#
asgiref==3.8.1
# via django
attrs==25.1.0
# via -r requirements/base.in
backports-zoneinfo==0.2.1
# via django
certifi==2024.12.14
certifi==2025.1.31
# via requests
charset-normalizer==3.4.1
# via requests
django==4.2.17
django==4.2.19
# via -r requirements/base.in
idna==3.10
# via requests
lxml==5.3.0
lxml==5.3.1
# via -r requirements/base.in
requests==2.32.3
# via -r requirements/base.in
Expand Down
80 changes: 41 additions & 39 deletions requirements/ci.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,142 +6,144 @@
#
asgiref==3.8.1
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# django
attrs==25.1.0
# via -r requirements/quality.txt
backports-zoneinfo==0.2.1
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# django
black==24.8.0
# via -r /home/misha/work/cc2olx/requirements/quality.txt
cachetools==5.5.0
# via -r requirements/quality.txt
cachetools==5.5.1
# via tox
certifi==2024.12.14
certifi==2025.1.31
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# requests
chardet==5.2.0
# via tox
charset-normalizer==3.4.1
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# requests
click==8.1.8
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# black
colorama==0.4.6
# via tox
coverage[toml]==7.6.1
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# -r requirements/ci.in
# pytest-cov
distlib==0.3.9
# via virtualenv
django==4.2.17
# via -r /home/misha/work/cc2olx/requirements/quality.txt
django==4.2.19
# via -r requirements/quality.txt
exceptiongroup==1.2.2
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# pytest
filelock==3.16.1
# via
# tox
# virtualenv
flake8==7.1.1
# via -r /home/misha/work/cc2olx/requirements/quality.txt
# via -r requirements/quality.txt
idna==3.10
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# requests
iniconfig==2.0.0
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# pytest
lxml==5.3.0
# via -r /home/misha/work/cc2olx/requirements/quality.txt
lxml==5.3.1
# via -r requirements/quality.txt
mccabe==0.7.0
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# flake8
mypy-extensions==1.0.0
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# black
packaging==24.2
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# black
# pyproject-api
# pytest
# tox
pathspec==0.12.1
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# black
platformdirs==4.3.6
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# black
# tox
# virtualenv
pluggy==1.5.0
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# pytest
# tox
pycodestyle==2.12.1
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# flake8
pyflakes==3.2.0
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# flake8
pyproject-api==1.8.0
# via tox
pytest==8.3.4
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# pytest-cov
# pytest-django
# pytest-mock
pytest-cov==5.0.0
# via -r /home/misha/work/cc2olx/requirements/quality.txt
pytest-django==4.9.0
# via -r /home/misha/work/cc2olx/requirements/quality.txt
# via -r requirements/quality.txt
pytest-django==4.10.0
# via -r requirements/quality.txt
pytest-mock==3.14.0
# via -r /home/misha/work/cc2olx/requirements/quality.txt
# via -r requirements/quality.txt
requests==2.32.3
# via -r /home/misha/work/cc2olx/requirements/quality.txt
# via -r requirements/quality.txt
sqlparse==0.5.3
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# django
tomli==2.2.1
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# black
# coverage
# pyproject-api
# pytest
# tox
tox==4.23.2
tox==4.24.1
# via -r requirements/ci.in
typing-extensions==4.12.2
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# asgiref
# black
# tox
urllib3==2.2.3
# via
# -r /home/misha/work/cc2olx/requirements/quality.txt
# -r requirements/quality.txt
# requests
virtualenv==20.28.1
virtualenv==20.29.2
# via tox
xmlformatter==0.2.8
# via -r /home/misha/work/cc2olx/requirements/quality.txt
# via -r requirements/quality.txt
youtube-dl==2021.12.17
# via -r /home/misha/work/cc2olx/requirements/quality.txt
# via -r requirements/quality.txt
Loading

0 comments on commit a70e24e

Please sign in to comment.