code: def get_task_caches(self, usernames, courseid, taskid):
          
          match = {"courseid": courseid, "taskid": taskid}
          if usernames is not None:
              match["username"] = {"$in": usernames}
  
          data = self._database.user_tasks.find(match)
          retval = {username: None for username in usernames}
          for result in data:
              username = result["username"]
              del result["username"]
              del result["_id"]
              retval[username] = result
  
          return retval
docs: :param usernames: List of username for which we want info. If usernames is None, data from all users will be returned.
          :param courseid: the course id
          :param taskid: the task id
          :return: A dict in the form:
  
              ::
  
                  {
                      "username": {
                          "courseid": courseid,
                          "taskid": taskid,
                          "tried": 0,
                          "succeeded": False,
                          "grade": 0.0
                      }
                  }