* feat: create DRF endpoint to get course index context * refactor: update serializers location and added some tests * refactor: move modulestore usage out of views * fix: move course index call under bulk_operations * test: add test to track db and mongo queries --------- Co-authored-by: ruzniaievdm <ruzniaievdm@gmail.com>
73 lines
2.4 KiB
Python
73 lines
2.4 KiB
Python
"""
|
|
Common API Serializers
|
|
"""
|
|
|
|
from rest_framework import serializers
|
|
|
|
from openedx.core.lib.api.serializers import CourseKeyField
|
|
|
|
|
|
class CourseCommonSerializer(serializers.Serializer):
|
|
"""Serializer for course renders"""
|
|
course_key = CourseKeyField()
|
|
display_name = serializers.CharField()
|
|
lms_link = serializers.CharField()
|
|
number = serializers.CharField()
|
|
org = serializers.CharField()
|
|
rerun_link = serializers.CharField()
|
|
run = serializers.CharField()
|
|
url = serializers.CharField()
|
|
|
|
|
|
class StrictSerializer(serializers.Serializer):
|
|
"""
|
|
Serializers that validates strong parameters, i.e. that no extra fields are passed in.
|
|
The serializer inheriting from this may throw a ValidationError and can be called in a try/catch
|
|
block that will return a 400 response on ValidationError.
|
|
"""
|
|
def to_internal_value(self, data):
|
|
"""
|
|
raise validation error if there are any unexpected fields.
|
|
"""
|
|
# Transform and validate the expected fields
|
|
ret = super().to_internal_value(data)
|
|
|
|
# Get the list of valid fields from the serializer
|
|
valid_fields = set(self.fields.keys())
|
|
|
|
# Check for unexpected fields
|
|
extra_fields = set(data.keys()) - valid_fields
|
|
if extra_fields:
|
|
# Check if these unexpected fields are due to nested serializers
|
|
for field_name in list(extra_fields):
|
|
if isinstance(self.fields.get(field_name), serializers.BaseSerializer):
|
|
extra_fields.remove(field_name)
|
|
|
|
# If there are still unexpected fields left, raise an error
|
|
if extra_fields:
|
|
raise serializers.ValidationError(
|
|
{field: ["This field is not expected."] for field in extra_fields}
|
|
)
|
|
|
|
return ret
|
|
|
|
|
|
class ProctoringErrorModelSerializer(serializers.Serializer):
|
|
"""
|
|
Serializer for proctoring error model item.
|
|
"""
|
|
deprecated = serializers.BooleanField()
|
|
display_name = serializers.CharField()
|
|
help = serializers.CharField()
|
|
hide_on_enabled_publisher = serializers.BooleanField()
|
|
value = serializers.CharField()
|
|
|
|
|
|
class ProctoringErrorListSerializer(serializers.Serializer):
|
|
"""
|
|
Serializer for proctoring error list.
|
|
"""
|
|
key = serializers.CharField()
|
|
message = serializers.CharField()
|
|
model = ProctoringErrorModelSerializer()
|