feat!: Drop import_from_modulestore app (3/3 -- uninstall app) (#37241)
https://github.com/openedx/edx-platform/issues/37242
This commit is contained in:
1
.github/workflows/unit-test-shards.json
vendored
1
.github/workflows/unit-test-shards.json
vendored
@@ -238,7 +238,6 @@
|
||||
"cms/djangoapps/cms_user_tasks/",
|
||||
"cms/djangoapps/course_creators/",
|
||||
"cms/djangoapps/export_course_metadata/",
|
||||
"cms/djangoapps/import_from_modulestore/",
|
||||
"cms/djangoapps/maintenance/",
|
||||
"cms/djangoapps/models/",
|
||||
"cms/djangoapps/pipeline_js/",
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
"""
|
||||
App for importing from the modulestore tools.
|
||||
"""
|
||||
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class ImportFromModulestoreConfig(AppConfig):
|
||||
"""
|
||||
App for importing legacy content from the modulestore.
|
||||
"""
|
||||
|
||||
name = 'cms.djangoapps.import_from_modulestore'
|
||||
@@ -1,54 +0,0 @@
|
||||
"""
|
||||
This module contains the data models for the import_from_modulestore app.
|
||||
"""
|
||||
from collections import namedtuple
|
||||
from enum import Enum
|
||||
from openedx.core.djangoapps.content_libraries import api as content_libraries_api
|
||||
|
||||
from django.db.models import TextChoices
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class ImportStatus(TextChoices):
|
||||
"""
|
||||
The status of this modulestore-to-learning-core import.
|
||||
"""
|
||||
|
||||
NOT_STARTED = 'not_started', _('Waiting to stage content')
|
||||
STAGING = 'staging', _('Staging content for import')
|
||||
STAGING_FAILED = _('Failed to stage content')
|
||||
STAGED = 'staged', _('Content is staged and ready for import')
|
||||
IMPORTING = 'importing', _('Importing staged content')
|
||||
IMPORTING_FAILED = 'importing_failed', _('Failed to import staged content')
|
||||
IMPORTED = 'imported', _('Successfully imported content')
|
||||
CANCELED = 'canceled', _('Canceled')
|
||||
|
||||
|
||||
class CompositionLevel(Enum):
|
||||
"""
|
||||
Enumeration of composition levels for course content.
|
||||
Defines the different levels of composition for course content,
|
||||
including chapters, sequentials, verticals, and xblocks.
|
||||
It also categorizes these levels into complicated and flat
|
||||
levels for easier processing.
|
||||
"""
|
||||
|
||||
CHAPTER = content_libraries_api.ContainerType.Section
|
||||
SEQUENTIAL = content_libraries_api.ContainerType.Subsection
|
||||
VERTICAL = content_libraries_api.ContainerType.Unit
|
||||
COMPONENT = 'component'
|
||||
OLX_COMPLEX_LEVELS = [
|
||||
VERTICAL.olx_tag,
|
||||
SEQUENTIAL.olx_tag,
|
||||
CHAPTER.olx_tag,
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def values(cls):
|
||||
"""
|
||||
Returns all levels of composition levels.
|
||||
"""
|
||||
return [composition_level.value for composition_level in cls]
|
||||
|
||||
|
||||
PublishableVersionWithMapping = namedtuple('PublishableVersionWithMapping', ['publishable_version', 'mapping'])
|
||||
@@ -1,82 +0,0 @@
|
||||
# Generated by Django 4.2.20 on 2025-04-21 16:23
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
import model_utils.fields
|
||||
import opaque_keys.edx.django.models
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('content_staging', '0005_stagedcontent_version_num'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('oel_publishing', '0008_alter_draftchangelogrecord_options_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Import',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False, verbose_name='created')),
|
||||
('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False, verbose_name='modified')),
|
||||
('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||
('status', models.CharField(choices=[('not_started', 'Waiting to stage content'), ('staging', 'Staging content for import'), ('Failed to stage content', 'Staging Failed'), ('staged', 'Content is staged and ready for import'), ('importing', 'Importing staged content'), ('importing_failed', 'Failed to import staged content'), ('imported', 'Successfully imported content'), ('canceled', 'Canceled')], db_index=True, default='not_started', max_length=100)),
|
||||
('source_key', opaque_keys.edx.django.models.LearningContextKeyField(db_index=True, help_text='The modulestore course', max_length=255)),
|
||||
('target_change', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='oel_publishing.draftchangelog')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Import from modulestore',
|
||||
'verbose_name_plural': 'Imports from modulestore',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='PublishableEntityMapping',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False, verbose_name='created')),
|
||||
('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False, verbose_name='modified')),
|
||||
('source_usage_key', opaque_keys.edx.django.models.UsageKeyField(help_text='Original usage key/ID of the thing that has been imported.', max_length=255)),
|
||||
('target_entity', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='oel_publishing.publishableentity')),
|
||||
('target_package', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='oel_publishing.learningpackage')),
|
||||
],
|
||||
options={
|
||||
'unique_together': {('source_usage_key', 'target_package')},
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='StagedContentForImport',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False, verbose_name='created')),
|
||||
('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False, verbose_name='modified')),
|
||||
('source_usage_key', opaque_keys.edx.django.models.UsageKeyField(help_text='The original Usage key of the highest-level component that was saved in StagedContent.', max_length=255)),
|
||||
('import_event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='staged_content_for_import', to='import_from_modulestore.import')),
|
||||
('staged_content', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='staged_content_for_import', to='content_staging.stagedcontent')),
|
||||
],
|
||||
options={
|
||||
'unique_together': {('import_event', 'staged_content')},
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='PublishableEntityImport',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False, verbose_name='created')),
|
||||
('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False, verbose_name='modified')),
|
||||
('import_event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='import_from_modulestore.import')),
|
||||
('resulting_change', models.OneToOneField(null=True, on_delete=django.db.models.deletion.SET_NULL, to='oel_publishing.draftchangelogrecord')),
|
||||
('resulting_mapping', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='import_from_modulestore.publishableentitymapping')),
|
||||
],
|
||||
options={
|
||||
'unique_together': {('import_event', 'resulting_mapping')},
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -1,65 +0,0 @@
|
||||
# Generated by Django 4.2.23 on 2025-08-19 16:21
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('import_from_modulestore', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterUniqueTogether(
|
||||
name='publishableentityimport',
|
||||
unique_together=None,
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='publishableentityimport',
|
||||
name='import_event',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='publishableentityimport',
|
||||
name='resulting_change',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='publishableentityimport',
|
||||
name='resulting_mapping',
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='publishableentitymapping',
|
||||
unique_together=None,
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='publishableentitymapping',
|
||||
name='target_entity',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='publishableentitymapping',
|
||||
name='target_package',
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='stagedcontentforimport',
|
||||
unique_together=None,
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='stagedcontentforimport',
|
||||
name='import_event',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='stagedcontentforimport',
|
||||
name='staged_content',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='Import',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='PublishableEntityImport',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='PublishableEntityMapping',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='StagedContentForImport',
|
||||
),
|
||||
]
|
||||
@@ -1,3 +0,0 @@
|
||||
"""
|
||||
Models for the course to library import app (TO BE DELETED)
|
||||
"""
|
||||
@@ -1497,7 +1497,6 @@ INSTALLED_APPS = [
|
||||
'openedx.core.djangoapps.course_groups', # not used in cms (yet), but tests run
|
||||
'cms.djangoapps.xblock_config.apps.XBlockConfig',
|
||||
'cms.djangoapps.export_course_metadata.apps.ExportCourseMetadataConfig',
|
||||
'cms.djangoapps.import_from_modulestore.apps.ImportFromModulestoreConfig',
|
||||
|
||||
# New (Learning-Core-based) XBlock runtime
|
||||
'openedx.core.djangoapps.xblock.apps.StudioXBlockAppConfig',
|
||||
|
||||
1
mypy.ini
1
mypy.ini
@@ -9,7 +9,6 @@ files =
|
||||
cms/lib/xblock/upstream_sync.py,
|
||||
cms/lib/xblock/upstream_sync_container.py,
|
||||
cms/djangoapps/contentstore/rest_api/v2/views/downstreams.py,
|
||||
cms/djangoapps/import_from_modulestore,
|
||||
openedx/core/djangoapps/content/learning_sequences,
|
||||
# FIXME: need to solve type issues and add 'search' app here:
|
||||
# openedx/core/djangoapps/content/search,
|
||||
|
||||
Reference in New Issue
Block a user