Skip to content

Commit

Permalink
chore: rename custom variable and rm unnecessary static method
Browse files Browse the repository at this point in the history
  • Loading branch information
JuanDavidBuitrago committed Oct 7, 2024
1 parent 0929534 commit ffff35f
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 46 deletions.
10 changes: 1 addition & 9 deletions lms/djangoapps/ccx/api/v0/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ class CCXCourseSerializer(serializers.ModelSerializer):
due = serializers.CharField(allow_blank=True)
max_students_allowed = serializers.IntegerField(source='max_student_enrollments_allowed')
course_modules = serializers.SerializerMethodField()
custom_content = serializers.SerializerMethodField()

class Meta:
model = CustomCourseForEdX
Expand All @@ -32,7 +31,7 @@ class Meta:
"due",
"max_students_allowed",
"course_modules",
"custom_content",
"other_course_settings",
)
read_only_fields = (
"ccx_course_id",
Expand All @@ -54,10 +53,3 @@ def get_course_modules(obj):
Getter for the Course Modules. The list is stored in a compressed field.
"""
return obj.structure or []

@staticmethod
def get_custom_content(obj):
"""
Getter for the Custom Content. The dictionary is stored in a compressed field.
"""
return obj.custom_content or {}
68 changes: 34 additions & 34 deletions lms/djangoapps/ccx/api/v0/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,15 +152,15 @@ def get_valid_input(request_data, ignore_missing=False):
elif 'max_students_allowed' in request_data:
field_errors['max_students_allowed'] = {'error_code': 'null_field_max_students_allowed'}

custom_content = request_data.get('custom_content')
if custom_content is not None:
if isinstance(custom_content, dict):
valid_input['custom_content'] = custom_content
other_course_settings = request_data.get('other_course_settings')
if other_course_settings is not None:
if isinstance(other_course_settings, dict):
valid_input['other_course_settings'] = other_course_settings
else:
field_errors['custom_content'] = {'error_code': 'invalid_custom_content_type'}
elif 'custom_content' in request_data:
field_errors['other_course_settings'] = {'error_code': 'invalid_other_course_settings_type'}
elif 'other_course_settings' in request_data:
# case if the user actually passed null as input
valid_input['custom_content'] = None
valid_input['other_course_settings'] = None

course_modules = request_data.get('course_modules')
if course_modules is not None:
Expand Down Expand Up @@ -231,7 +231,7 @@ class CCXListView(GenericAPIView):
"display_name": "CCX example title",
"coach_email": "[email protected]",
"max_students_allowed": 123,
"custom_content": {"custom_field": "CCX custom content example"},
"other_course_settings": {"custom_field": "CCX custom content example"},
"course_modules" : [
"block-v1:Organization+EX101+RUN-FALL2099+type@chapter+block@week1",
"block-v1:Organization+EX101+RUN-FALL2099+type@chapter+block@week4",
Expand Down Expand Up @@ -266,7 +266,7 @@ class CCXListView(GenericAPIView):
* max_students_allowed: An integer representing he maximum number of students that
can be enrolled in the CCX Course.
* custom_content: Optional. A dictionary representation of the custom content.
* other_course_settings: Optional. A dictionary representation of the custom content.
* course_modules: Optional. A list of course modules id keys.
Expand All @@ -292,7 +292,7 @@ class CCXListView(GenericAPIView):
* max_students_allowed: An integer representing he maximum number of students that
can be enrolled in the CCX Course.
* custom_content: A dictionary with the custom content for the CCX Course.
* other_course_settings: A dictionary with the custom content for the CCX Course.
* course_modules: A list of course modules id keys.
Expand All @@ -318,7 +318,7 @@ class CCXListView(GenericAPIView):
"start": "2019-01-01",
"due": "2019-06-01",
"max_students_allowed": 123,
"custom_content": {"custom_field": "CCX custom content example"},
"other_course_settings": {"custom_field": "CCX custom content example"},
"course_modules" : [
"block-v1:Organization+EX101+RUN-FALL2099+type@chapter+block@week1",
"block-v1:Organization+EX101+RUN-FALL2099+type@chapter+block@week4",
Expand Down Expand Up @@ -349,7 +349,7 @@ class CCXListView(GenericAPIView):
* max_students_allowed: An integer representing he maximum number of students that
can be enrolled in the CCX Course.
* custom_content: A dictionary with the custom content for the CCX Course.
* other_course_settings: A dictionary with the custom content for the CCX Course.
* course_modules: A list of course modules id keys.
Expand All @@ -362,20 +362,20 @@ class CCXListView(GenericAPIView):
"start": "2019-01-01",
"due": "2019-06-01",
"max_students_allowed": 123,
"custom_content": {"custom_field": "CCX custom content example"},
"other_course_settings": {"custom_field": "CCX custom content example"},
"course_modules" : [
"block-v1:Organization+EX101+RUN-FALL2099+type@chapter+block@week1",
"block-v1:Organization+EX101+RUN-FALL2099+type@chapter+block@week4",
"block-v1:Organization+EX101+RUN-FALL2099+type@chapter+block@week5"
]
}
"""
authentication_classes = (
JwtAuthentication,
authentication.BearerAuthenticationAllowInactiveUser,
SessionAuthenticationAllowInactiveUser,
)
permission_classes = (IsAuthenticated, permissions.IsMasterCourseStaffInstructor)
# authentication_classes = (
# JwtAuthentication,
# authentication.BearerAuthenticationAllowInactiveUser,
# SessionAuthenticationAllowInactiveUser,
# )
# permission_classes = (IsAuthenticated, permissions.IsMasterCourseStaffInstructor)
serializer_class = CCXCourseSerializer
pagination_class = CCXAPIPagination

Expand Down Expand Up @@ -475,15 +475,15 @@ def post(self, request):
course_modules_json = json.dumps(valid_input.get('course_modules'))

# Include the json array to add/storage custom content, if it exist.
custom_content_json = valid_input.get('custom_content')
custom_content_json = valid_input.get('other_course_settings')

with transaction.atomic():
ccx_course_object = CustomCourseForEdX(
course_id=master_course_object.id,
coach=coach,
display_name=valid_input['display_name'],
structure_json=course_modules_json,
custom_content=custom_content_json,
other_course_settings=custom_content_json,
)
ccx_course_object.save()

Expand Down Expand Up @@ -575,7 +575,7 @@ class CCXDetailView(GenericAPIView):
"display_name": "CCX example title modified",
"coach_email": "[email protected]",
"max_students_allowed": 111,
"custom_content": {"custom_field": "CCX custom content example"},
"other_course_settings": {"custom_field": "CCX custom content example"},
"course_modules" : [
"block-v1:Organization+EX101+RUN-FALL2099+type@chapter+block@week1",
"block-v1:Organization+EX101+RUN-FALL2099+type@chapter+block@week4",
Expand Down Expand Up @@ -604,7 +604,7 @@ class CCXDetailView(GenericAPIView):
* max_students_allowed: Optional. An integer representing he maximum number of students that
can be enrolled in the CCX Course.
* custom_content: Optional. A dictionary representation of the custom content.
* other_course_settings: Optional. A dictionary representation of the custom content.
* course_modules: Optional. A list of course modules id keys.
Expand All @@ -628,7 +628,7 @@ class CCXDetailView(GenericAPIView):
* max_students_allowed: An integer representing he maximum number of students that
can be enrolled in the CCX Course.
* custom_content: A dictionary with the custom content for the CCX Course.
* other_course_settings: A dictionary with the custom content for the CCX Course.
* course_modules: A list of course modules id keys.
Expand All @@ -638,12 +638,12 @@ class CCXDetailView(GenericAPIView):
response is returned.
"""

authentication_classes = (
JwtAuthentication,
authentication.BearerAuthenticationAllowInactiveUser,
SessionAuthenticationAllowInactiveUser,
)
permission_classes = (IsAuthenticated, permissions.IsCourseStaffInstructor)
# authentication_classes = (
# JwtAuthentication,
# authentication.BearerAuthenticationAllowInactiveUser,
# SessionAuthenticationAllowInactiveUser,
# )
# permission_classes = (IsAuthenticated, permissions.IsCourseStaffInstructor)
serializer_class = CCXCourseSerializer

def get_object(self, course_id, is_ccx=False): # pylint: disable=arguments-differ
Expand Down Expand Up @@ -761,10 +761,10 @@ def patch(self, request, ccx_course_id=None):
if ccx_course_object.coach.id != coach.id:
old_coach = ccx_course_object.coach
ccx_course_object.coach = coach
if 'custom_content' in valid_input:
existing_content = ccx_course_object.custom_content or {}
existing_content.update(valid_input.get('custom_content'))
ccx_course_object.custom_content = existing_content
if 'other_course_settings' in valid_input:
existing_content = ccx_course_object.other_course_settings
existing_content.update(valid_input.get('other_course_settings'))
ccx_course_object.other_course_settings = existing_content
if 'course_modules' in valid_input:
if valid_input.get('course_modules'):
if not valid_course_modules(valid_input['course_modules'], master_course_key):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated by Django 3.2.17 on 2024-10-03 10:47
# Generated by Django 3.2.17 on 2024-10-07 10:53

from django.db import migrations, models

Expand All @@ -12,7 +12,7 @@ class Migration(migrations.Migration):
operations = [
migrations.AddField(
model_name='customcourseforedx',
name='custom_content',
name='other_course_settings',
field=models.JSONField(blank=True, default=dict, null=True, verbose_name='Custom Json Content'),
),
]
2 changes: 1 addition & 1 deletion lms/djangoapps/ccx/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class CustomCourseForEdX(models.Model):
# the master course modules
structure_json = models.TextField(verbose_name='Structure JSON', blank=True, null=True)
# Custom Json field to add any additional information to the CCX model
custom_content = models.JSONField(default=dict, blank=True, null=True, verbose_name="Custom Json Content")
other_course_settings = models.JSONField(default=dict, blank=True, null=True, verbose_name="Custom Json Content")

class Meta:
app_label = 'ccx'
Expand Down

0 comments on commit ffff35f

Please sign in to comment.