code: def submit_group_completion(self, block_key, completion, users=None, user_ids=None):
          
          if users is None:
              users = []
          if user_ids is None:
              user_ids = []
          more_users = User.objects.filter(id__in=user_ids)
          if len(more_users) < len(user_ids):
              found_ids = {u.id for u in more_users}
              not_found_ids = [pk for pk in user_ids if pk not in found_ids]
              raise User.DoesNotExist("User not found with id(s): {}".format(not_found_ids))
          users.extend(more_users)
  
          submitted = []
          for user in users:
              submitted.append(BlockCompletion.objects.submit_completion(
                  user=user,
                  course_key=self._course_key,
                  block_key=block_key,
                  completion=completion
              ))
          return submitted
docs: Submit a completion for a group of users.
  
          Arguments:
  
              block_key (opaque_key.edx.keys.UsageKey): The block to submit completions for.
              completion (float): A value in the range [0.0, 1.0]
              users ([django.contrib.auth.models.User]): An optional iterable of Users that completed the block.
              user_ids ([int]): An optional iterable of ids of Users that completed the block.
  
          Returns a list of (BlockCompletion, bool) where the boolean indicates
          whether the given BlockCompletion was newly created.