code: def restore_course(self, courseid, backup):
          
          self.wipe_course(courseid)
  
          filepath = os.path.join(self.backup_dir, courseid, backup + ".zip")
          with zipfile.ZipFile(filepath, "r") as zipf:
  
              aggregations = bson.json_util.loads(zipf.read("aggregations.json").decode("utf-8"))
              if len(aggregations) > 0:
                  self.database.aggregations.insert(aggregations)
  
              user_tasks = bson.json_util.loads(zipf.read("user_tasks.json").decode("utf-8"))
              if len(user_tasks) > 0:
                  self.database.user_tasks.insert(user_tasks)
  
              submissions = bson.json_util.loads(zipf.read("submissions.json").decode("utf-8"))
              for submission in submissions:
                  for key in ["input", "archive"]:
                      if key in submission and type(submission[key]) == bson.objectid.ObjectId:
                          submission[key] = self.submission_manager.get_gridfs().put(zipf.read(key + "/" + str(submission[key]) + ".data"))
  
              if len(submissions) > 0:
                  self.database.submissions.insert(submissions)
  
          self._logger.info("Course %s restored from backup directory.", courseid)
docs: Restores a course of given courseid to a date specified in backup (format : YYYYMMDD.HHMMSS)