diff --git a/IPython/frontend/html/notebook/filenbmanager.py b/IPython/frontend/html/notebook/filenbmanager.py
index e83420f..bbad40a 100644
--- a/IPython/frontend/html/notebook/filenbmanager.py
+++ b/IPython/frontend/html/notebook/filenbmanager.py
@@ -273,27 +273,46 @@ class FileNotebookManager(NotebookManager):
name = self.get_name(notebook_id)
return self.get_checkpoint_path_by_name(name, checkpoint_id)
+ def get_checkpoint_info(self, notebook_id, checkpoint_id):
+ """construct the info dict for a given checkpoint"""
+ path = self.get_checkpoint_path(notebook_id, checkpoint_id)
+ stats = os.stat(path)
+ last_modified = datetime.datetime.utcfromtimestamp(stats.st_mtime)
+ info = dict(
+ checkpoint_id = checkpoint_id,
+ last_modified = last_modified,
+ )
+
+ return info
+
# public checkpoint API
def create_checkpoint(self, notebook_id):
"""Create a checkpoint from the current state of a notebook"""
nb_path = self.get_path(notebook_id)
- cp_path = self.get_checkpoint_path(notebook_id, "checkpoint")
+ # only the one checkpoint ID:
+ checkpoint_id = "checkpoint"
+ cp_path = self.get_checkpoint_path(notebook_id, checkpoint_id)
self.log.debug("creating checkpoint for notebook %s", notebook_id)
if not os.path.exists(self.checkpoint_dir):
os.mkdir(self.checkpoint_dir)
shutil.copy2(nb_path, cp_path)
+
+ # return the checkpoint info
+ return self.get_checkpoint_info(notebook_id, checkpoint_id)
def list_checkpoints(self, notebook_id):
"""list the checkpoints for a given notebook
This notebook manager currently only supports one checkpoint per notebook.
"""
- path = self.get_checkpoint_path(notebook_id, "checkpoint")
- if os.path.exists(path):
- return ["checkpoint"]
- else:
+ checkpoint_id = "checkpoint"
+ path = self.get_checkpoint_path(notebook_id, checkpoint_id)
+ if not os.path.exists(path):
return []
+ else:
+ return [self.get_checkpoint_info(notebook_id, checkpoint_id)]
+
def restore_checkpoint(self, notebook_id, checkpoint_id):
"""restore a notebook to a checkpointed state"""
@@ -301,6 +320,7 @@ class FileNotebookManager(NotebookManager):
nb_path = self.get_path(notebook_id)
cp_path = self.get_checkpoint_path(notebook_id, checkpoint_id)
if not os.path.isfile(cp_path):
+ self.log.debug("checkpoint file does not exist: %s", cp_path)
raise web.HTTPError(404,
u'Notebook checkpoint does not exist: %s-%s' % (notebook_id, checkpoint_id)
)