feat!: Drop import_from_modulestore app (3/3 -- uninstall app) (#37241)

https://github.com/openedx/edx-platform/issues/37242
This commit is contained in:
Kyle McCormick
2025-09-02 10:05:16 -04:00
committed by GitHub
parent 1dcde0ff33
commit 7ef575ed2d
10 changed files with 0 additions and 220 deletions

View File

@@ -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/",

View File

@@ -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'

View File

@@ -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'])

View File

@@ -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')},
},
),
]

View File

@@ -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',
),
]

View File

@@ -1,3 +0,0 @@
"""
Models for the course to library import app (TO BE DELETED)
"""

View File

@@ -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',

View File

@@ -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,