コード例 #1
0
ファイル: serializers.py プロジェクト: saltfun/edx-platform
    def validate(self, attrs):
        """
        Validate the fields in combination.
        """
        if not any(field in attrs for field in self.fields):
            raise ValidationError('Bad request')

        settings_to_change = {}
        divided_course_wide_discussions, divided_inline_discussions = get_divided_discussions(
            self.course, self.discussion_settings)

        if any(item in attrs for item in ('divided_course_wide_discussions',
                                          'divided_inline_discussions')):
            divided_course_wide_discussions = attrs.get(
                'divided_course_wide_discussions',
                divided_course_wide_discussions)
            divided_inline_discussions = attrs.get(
                'divided_inline_discussions', divided_inline_discussions)
            settings_to_change[
                'divided_discussions'] = divided_course_wide_discussions + divided_inline_discussions

        for item in ('always_divide_inline_discussions', 'division_scheme'):
            if item in attrs:
                settings_to_change[item] = attrs[item]
        attrs['settings_to_change'] = settings_to_change
        return attrs
コード例 #2
0
    def validate(self, attrs):
        """
        Validate the fields in combination.
        """
        if not any(field in attrs for field in self.fields):
            raise ValidationError('Bad request')

        settings_to_change = {}
        divided_course_wide_discussions, divided_inline_discussions = get_divided_discussions(
            self.course, self.discussion_settings
        )

        if any(item in attrs for item in ('divided_course_wide_discussions', 'divided_inline_discussions')):
            divided_course_wide_discussions = attrs.get(
                'divided_course_wide_discussions',
                divided_course_wide_discussions
            )
            divided_inline_discussions = attrs.get('divided_inline_discussions', divided_inline_discussions)
            settings_to_change['divided_discussions'] = divided_course_wide_discussions + divided_inline_discussions

        for item in ('always_divide_inline_discussions', 'division_scheme'):
            if item in attrs:
                settings_to_change[item] = attrs[item]
        attrs['settings_to_change'] = settings_to_change
        return attrs
コード例 #3
0
 def to_internal_value(self, data: dict) -> dict:
     """
     Transform the *incoming* primitive data into a native value.
     """
     payload = super().to_internal_value(data) or {}
     course = self.context['course']
     instance = self.context['settings']
     if any(item in data for item in ('divided_course_wide_discussions',
                                      'divided_inline_discussions')):
         divided_course_wide_discussions, divided_inline_discussions = get_divided_discussions(
             course, instance)
         divided_course_wide_discussions = data.get(
             'divided_course_wide_discussions',
             divided_course_wide_discussions)
         divided_inline_discussions = data.get('divided_inline_discussions',
                                               divided_inline_discussions)
         try:
             payload[
                 'divided_discussions'] = divided_course_wide_discussions + divided_inline_discussions
         except TypeError as error:
             raise ValidationError(str(error)) from error
     for item in ('always_divide_inline_discussions', 'division_scheme'):
         if item in data:
             payload[item] = data[item]
     return payload
コード例 #4
0
 def _get_representation(self, course, course_key, discussion_settings):
     """
     Return a serialized representation of the course discussion settings.
     """
     divided_course_wide_discussions, divided_inline_discussions = get_divided_discussions(
         course, discussion_settings)
     return JsonResponse({
         'id':
         discussion_settings.id,
         'divided_inline_discussions':
         divided_inline_discussions,
         'divided_course_wide_discussions':
         divided_course_wide_discussions,
         'always_divide_inline_discussions':
         discussion_settings.always_divide_inline_discussions,
         'division_scheme':
         discussion_settings.division_scheme,
         'available_division_schemes':
         available_division_schemes(course_key)
     })
コード例 #5
0
 def to_representation(self, instance: CourseDiscussionSettings) -> dict:
     """
     Return a serialized representation of the course discussion settings.
     """
     payload = super().to_representation(instance)
     course = self.context['course']
     instance = self.context['settings']
     course_key = course.id
     divided_course_wide_discussions, divided_inline_discussions = get_divided_discussions(
         course, instance)
     payload = {
         'id': instance.id,
         'divided_inline_discussions': divided_inline_discussions,
         'divided_course_wide_discussions': divided_course_wide_discussions,
         'always_divide_inline_discussions':
         instance.always_divide_inline_discussions,
         'division_scheme': instance.division_scheme,
         'available_division_schemes':
         available_division_schemes(course_key)
     }
     return payload