code: def _validate_and_parse(self, batch_object):
          
          if not waffle.waffle().is_enabled(waffle.ENABLE_COMPLETION_TRACKING):
              raise ValidationError(
                  _("BlockCompletion.objects.submit_batch_completion should not be called when the feature is disabled.")
              )
  
          for key in self.REQUIRED_KEYS:
              if key not in batch_object:
                  raise ValidationError(_("Key '{key}' not found.").format(key=key))
  
          username = batch_object['username']
          user = User.objects.get(username=username)
  
          course_key_obj = self._validate_and_parse_course_key(batch_object['course_key'])
  
          if not CourseEnrollment.is_enrolled(user, course_key_obj):
              raise ValidationError(_('User is not enrolled in course.'))
  
          blocks = batch_object['blocks']
          block_objs = []
          for block_key in blocks:
              block_key_obj = self._validate_and_parse_block_key(block_key, course_key_obj)
              completion = float(blocks[block_key])
              block_objs.append((block_key_obj, completion))
  
          return user, course_key_obj, block_objs
docs: Performs validation on the batch object to make sure it is in the proper format.
  
          Parameters:
              * batch_object: The data provided to a POST. The expected format is the following:
              {
                  "username": "username",
                  "course_key": "course-key",
                  "blocks": {
                      "block_key1": 0.0,
                      "block_key2": 1.0,
                      "block_key3": 1.0,
                  }
              }
  
  
          Return Value:
              * tuple: (User, CourseKey, List of tuples (UsageKey, completion_float)
  
          Raises:
  
              django.core.exceptions.ValidationError:
                  If any aspect of validation fails a ValidationError is raised.
  
              ObjectDoesNotExist:
                  If a database object cannot be found an ObjectDoesNotExist is raised.