code: def show_page(self, success):
          
          username = self.user_manager.session_username()
          user_info = self.database.users.find_one({"username": username})
  
          all_courses = self.course_factory.get_all_courses()
  
          # Display
          open_courses = {courseid: course for courseid, course in all_courses.items()
                          if self.user_manager.course_is_open_to_user(course, username, False) and
                          self.user_manager.course_is_user_registered(course, username)}
          open_courses = OrderedDict(sorted(iter(open_courses.items()), key=lambda x: x[1].get_name(self.user_manager.session_language())))
  
          last_submissions = self.submission_manager.get_user_last_submissions(5, {"courseid": {"$in": list(open_courses.keys())}})
          except_free_last_submissions = []
          for submission in last_submissions:
              try:
                  submission["task"] = open_courses[submission['courseid']].get_task(submission['taskid'])
                  except_free_last_submissions.append(submission)
              except:
                  pass
  
          registerable_courses = {courseid: course for courseid, course in all_courses.items() if
                                  not self.user_manager.course_is_user_registered(course, username) and
                                  course.is_registration_possible(user_info)}
  
          registerable_courses = OrderedDict(sorted(iter(registerable_courses.items()), key=lambda x: x[1].get_name(self.user_manager.session_language())))
  
          return self.template_helper.get_renderer().mycourses(open_courses, registerable_courses, except_free_last_submissions, success)
docs: Display main course list page