code: def page(self, course):
          
          data = list(self.database.user_tasks.aggregate(
              [
                  {
                      "$match":
                          {
                              "courseid": course.get_id(),
                              "username": {"$in": self.user_manager.get_course_registered_users(course, False)}
                          }
                  },
                  {
                      "$group":
                          {
                              "_id": "$taskid",
                              "viewed": {"$sum": 1},
                              "attempted": {"$sum": {"$cond": [{"$ne": ["$tried", 0]}, 1, 0]}},
                              "attempts": {"$sum": "$tried"},
                              "succeeded": {"$sum": {"$cond": ["$succeeded", 1, 0]}}
                          }
                  }
              ]))
  
          # Load tasks and verify exceptions
          files = self.task_factory.get_readable_tasks(course)
          output = {}
          errors = []
          for task in files:
              try:
                  output[task] = course.get_task(task)
              except Exception as inst:
                  errors.append({"taskid": task, "error": str(inst)})
          tasks = OrderedDict(sorted(list(output.items()), key=lambda t: (t[1].get_order(), t[1].get_id())))
  
          # Now load additional informations
          result = OrderedDict()
          for taskid in tasks:
              result[taskid] = {"name": tasks[taskid].get_name(self.user_manager.session_language()), "viewed": 0, "attempted": 0, "attempts": 0, "succeeded": 0,
                                "url": self.submission_url_generator(taskid)}
          for entry in data:
              if entry["_id"] in result:
                  result[entry["_id"]]["viewed"] = entry["viewed"]
                  result[entry["_id"]]["attempted"] = entry["attempted"]
                  result[entry["_id"]]["attempts"] = entry["attempts"]
                  result[entry["_id"]]["succeeded"] = entry["succeeded"]
          if "csv" in web.input():
              return make_csv(result)
          return self.template_helper.get_renderer().course_admin.task_list(course, result, errors)
docs: Get all data and display the page