Skip to content

Commit 5cb5bc9

Browse files
authored
Merge branch 'master' into pwnage101/ENT-11569
2 parents 66bc303 + 36a7089 commit 5cb5bc9

127 files changed

Lines changed: 907 additions & 13049 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/renovate.json5

Lines changed: 36 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,50 @@
11
{
22
extends: [
3-
'config:recommended',
4-
'schedule:weekly',
5-
':automergeLinters',
6-
':automergeMinor',
7-
':automergeTesters',
8-
':enableVulnerabilityAlerts',
9-
':semanticCommits',
10-
':updateNotScheduled',
3+
'config:recommended', // Renovate base defaults: dependency dashboard, monorepo grouping, sane PR limits
4+
'schedule:weekly', // Only open new PRs once a week
5+
':automergeLinters', // Automerge linter updates (eslint, prettier, etc.)
6+
':automergeTesters', // Automerge test runner updates (jest, mocha, etc.)
7+
':enableVulnerabilityAlerts', // Open security PRs immediately, ignoring the weekly schedule
8+
':semanticCommits', // Use conventional commit format (fix(deps):, chore(deps):)
9+
':updateNotScheduled', // Allow vulnerability fixes to bypass the weekly schedule
1110
],
11+
12+
// Never auto-rebase PRs; let humans decide when to rebase
13+
rebaseWhen: 'never',
14+
15+
// Wait 3 days after a release before opening a PR, giving time for early bugs and
16+
// potentially malicious releases (e.g. supply chain attacks) to be detected
17+
minimumReleaseAge: '3 days',
18+
19+
// Only manage npm dependencies
20+
enabledManagers: [
21+
'npm',
22+
],
23+
24+
// Only create PRs during Eastern time (aligns with the weekly schedule)
25+
timezone: 'America/New_York',
26+
27+
// Cap the number of open Renovate PRs at any one time
28+
prConcurrentLimit: 3,
29+
30+
// Packages with known breaking changes or no active maintainer
31+
ignoreDeps: [
32+
'karma-spec-reporter',
33+
],
34+
1235
packageRules: [
1336
{
14-
matchDepTypes: [
15-
'devDependencies',
16-
],
17-
matchUpdateTypes: [
18-
'lockFileMaintenance',
19-
'minor',
20-
'patch',
21-
'pin',
37+
// Automerge minor and patch updates for @edx and @openedx scoped packages;
38+
// these are maintained by the same org so breakage is caught upstream
39+
matchPackageNames: [
40+
'/@edx/',
41+
'/@openedx/',
2242
],
23-
automerge: true,
24-
},
25-
{
2643
matchUpdateTypes: [
2744
'minor',
2845
'patch',
2946
],
3047
automerge: true,
31-
matchPackageNames: [
32-
'/@edx/',
33-
'/@openedx/',
34-
],
3548
},
3649
],
37-
ignoreDeps: [
38-
'karma-spec-reporter',
39-
],
40-
timezone: 'America/New_York',
41-
prConcurrentLimit: 3,
42-
enabledManagers: [
43-
'npm',
44-
],
4550
}

cms/djangoapps/contentstore/models.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@
1717
from opaque_keys.edx.locator import LibraryContainerLocator
1818
from openedx_content.api import get_published_version
1919
from openedx_content.models_api import Component, Container
20-
from openedx_django_lib.fields import immutable_uuid_field, manual_date_time_field, ref_field
20+
21+
try:
22+
from openedx_django_lib.fields import immutable_uuid_field, manual_date_time_field, ref_field
23+
except ImportError: # pragma: no cover - runtime compatibility shim for different openedx_django_lib versions
24+
from openedx_django_lib.fields import immutable_uuid_field, manual_date_time_field
25+
from openedx_django_lib.fields import key_field as ref_field
2126

2227
logger = logging.getLogger(__name__)
2328

cms/djangoapps/contentstore/rest_api/v1/serializers/course_waffle_flags.py

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -67,24 +67,33 @@ def get_use_new_custom_pages(self, obj):
6767

6868
def get_use_new_schedule_details_page(self, obj):
6969
"""
70-
Method to get the use_new_schedule_details_page switch
70+
Method to indicate whether we should use the new schedule details page.
71+
72+
This used to be based on a waffle flag but the flag is being removed so we
73+
default it to true for now until we can remove the need for it from the consumers
74+
of this serializer and the related APIs.
75+
76+
See https://github.com/openedx/edx-platform/issues/36275
7177
"""
72-
course_key = self.get_course_key()
73-
return toggles.use_new_schedule_details_page(course_key)
78+
return True
7479

7580
def get_use_new_advanced_settings_page(self, obj):
7681
"""
7782
Method to get the use_new_advanced_settings_page switch
7883
"""
79-
course_key = self.get_course_key()
80-
return toggles.use_new_advanced_settings_page(course_key)
84+
return True
8185

8286
def get_use_new_grading_page(self, obj):
8387
"""
84-
Method to get the use_new_grading_page switch
88+
Method to indicate whether we should use the new grading page.
89+
90+
This used to be based on a waffle flag but the flag is being removed so we
91+
default it to true for now until we can remove the need for it from the consumers
92+
of this serializer and the related APIs.
93+
94+
See https://github.com/openedx/edx-platform/issues/36275
8595
"""
86-
course_key = self.get_course_key()
87-
return toggles.use_new_grading_page(course_key)
96+
return True
8897

8998
def get_use_new_updates_page(self, obj):
9099
"""
@@ -102,15 +111,13 @@ def get_use_new_import_page(self, obj):
102111
"""
103112
Method to get the use_new_import_page switch
104113
"""
105-
course_key = self.get_course_key()
106-
return toggles.use_new_import_page(course_key)
114+
return True
107115

108116
def get_use_new_export_page(self, obj):
109117
"""
110118
Method to get the use_new_export_page switch
111119
"""
112-
course_key = self.get_course_key()
113-
return toggles.use_new_export_page(course_key)
120+
return True
114121

115122
def get_use_new_files_uploads_page(self, obj):
116123
"""
@@ -160,15 +167,13 @@ def get_use_new_course_team_page(self, obj):
160167
"""
161168
Method to get the use_new_course_team_page switch
162169
"""
163-
course_key = self.get_course_key()
164-
return toggles.use_new_course_team_page(course_key)
170+
return True
165171

166172
def get_use_new_certificates_page(self, obj):
167173
"""
168174
Method to get the use_new_certificates_page switch
169175
"""
170-
course_key = self.get_course_key()
171-
return toggles.use_new_certificates_page(course_key)
176+
return True
172177

173178
def get_use_new_textbooks_page(self, obj):
174179
"""
@@ -186,8 +191,7 @@ def get_use_new_group_configurations_page(self, obj):
186191
"""
187192
Method to get the use_new_group_configurations_page switch
188193
"""
189-
course_key = self.get_course_key()
190-
return toggles.use_new_group_configurations_page(course_key)
194+
return True
191195

192196
def get_enable_course_optimizer(self, obj):
193197
"""

cms/djangoapps/contentstore/tests/test_contentstore.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1487,18 +1487,22 @@ def test_get_json(handler):
14871487
self.assertContains(resp, 'Chapter 2')
14881488

14891489
# go to various pages
1490-
with override_waffle_flag(toggles.LEGACY_STUDIO_IMPORT, True):
1491-
test_get_html('import_handler')
1492-
with override_waffle_flag(toggles.LEGACY_STUDIO_EXPORT, True):
1493-
test_get_html('export_handler')
1494-
with override_waffle_flag(toggles.LEGACY_STUDIO_COURSE_TEAM, True):
1495-
test_get_html('course_team_handler')
1496-
with override_waffle_flag(toggles.LEGACY_STUDIO_SCHEDULE_DETAILS, True):
1497-
test_get_html('settings_handler')
1498-
with override_waffle_flag(toggles.LEGACY_STUDIO_GRADING, True):
1499-
test_get_html('grading_handler')
1500-
with override_waffle_flag(toggles.LEGACY_STUDIO_ADVANCED_SETTINGS, True):
1501-
test_get_html('advanced_settings_handler')
1490+
with override_settings(COURSE_AUTHORING_MICROFRONTEND_URL='https://mfe.example'):
1491+
resp = self.client.get_html(get_url('import_handler', course_key, 'course_key_string'))
1492+
self.assertEqual(resp.status_code, 302) # noqa: PT009
1493+
resp = self.client.get_html(get_url('export_handler', course_key, 'course_key_string'))
1494+
self.assertEqual(resp.status_code, 302) # noqa: PT009
1495+
resp = self.client.get_html(get_url('course_team_handler', course_key, 'course_key_string'))
1496+
self.assertEqual(resp.status_code, 302) # noqa: PT009
1497+
with override_settings(COURSE_AUTHORING_MICROFRONTEND_URL='https://mfe.example'):
1498+
resp = self.client.get_html(get_url('settings_handler', course_key, 'course_key_string'))
1499+
self.assertEqual(resp.status_code, 302) # noqa: PT009
1500+
with override_settings(COURSE_AUTHORING_MICROFRONTEND_URL='https://mfe.example'):
1501+
resp = self.client.get_html(get_url('grading_handler', course_key, 'course_key_string'))
1502+
self.assertEqual(resp.status_code, 302) # noqa: PT009
1503+
with override_settings(COURSE_AUTHORING_MICROFRONTEND_URL='https://mfe.example'):
1504+
resp = self.client.get_html(get_url('advanced_settings_handler', course_key, 'course_key_string'))
1505+
self.assertEqual(resp.status_code, 302) # noqa: PT009
15021506
test_get_json('textbooks_list_handler')
15031507

15041508
# Test that studio updates load

0 commit comments

Comments
 (0)