code: def update_task_descriptor_content(self, courseid, taskid, content, force_extension=None):
          
          if not id_checker(courseid):
              raise InvalidNameException("Course with invalid name: " + courseid)
          if not id_checker(taskid):
              raise InvalidNameException("Task with invalid name: " + taskid)
  
          if force_extension is None:
              path_to_descriptor, descriptor_manager = self._get_task_descriptor_info(courseid, taskid)
          elif force_extension in self.get_available_task_file_extensions():
              path_to_descriptor = "task." + force_extension
              descriptor_manager = self._task_file_managers[force_extension]
          else:
              raise TaskReaderNotFoundException()
  
          try:
              self.get_task_fs(courseid, taskid).put(path_to_descriptor, descriptor_manager.dump(content))
          except:
              raise TaskNotFoundException()
docs: Update the task descriptor with the dict in content
          :param courseid: the course id of the course
          :param taskid: the task id of the task
          :param content: the content to put in the task file
          :param force_extension: If None, save it the same format. Else, save with the given extension
          :raise InvalidNameException, TaskNotFoundException, TaskUnreadableException