ContentManager function signatures updated

This commit is contained in:
jhemmelg 2014-07-12 09:29:40 -05:00 committed by Thomas Kluyver
parent d5a84bb8a4
commit 112a74c566
2 changed files with 142 additions and 8 deletions

View File

@ -205,6 +205,9 @@ class ContentsHandler(IPythonHandler):
self._copy(copy_from, path, name)
elif self.contents_manager.file_exists(name, path):
self._save(model, path, name)
checkpoint = model.get('_checkpoint_after_save')
if checkpoint:
nbm.create_checkpoint(path, name)
else:
self._upload(model, path, name)
else:

View File

@ -5,7 +5,7 @@ define([
'base/js/namespace',
'jquery',
], function(IPython, $) {
var ContentManager = function() {
var ContentManager = function(notebook_path, base_url) {
// Constructor
//
// A contentmanager handles passing file operations
@ -13,30 +13,161 @@ define([
// with the normal file operations.
//
// Parameters:
// None
// notebook_path
// base_url
this.version = 0.1;
this.notebook_path = notebook_path;
this.base_url = base_url;
}
ContentManager.prototype.new_notebook = function() {
var path = this.notebook_path;
var base_url = this.base_url;
var settings = {
processData : false,
cache : false,
type : "POST",
dataType : "json",
async : false,
success : function (data, status, xhr){
var notebook_name = data.name;
window.open(
utils.url_join_encode(
base_url,
'notebooks',
path,
notebook_name
),
'_blank'
);
},
error : utils.log_ajax_error,
};
var url = utils.url_join_encode(
base_url,
'api/notebooks',
path
);
$.ajax(url,settings);
}
ContentManager.prototype.delete_notebook = function(name, path) {
ContentManager.prototype.delete_notebook = function(notebook) {
var that = notebook;
var settings = {
processData : false,
cache : false,
type : "DELETE",
dataType: "json",
error : utils.log_ajax_error,
};
var url = utils.url_join_encode(
that.base_url,
'api/notebooks',
that.notebook_path,
that.notebook_name
);
$.ajax(url, settings);
}
ContentManager.prototype.rename_notebook = function(new_name, new_path, old_name, old_path) {
ContentManager.prototype.rename_notebook = function(notebook, nbname) {
var that = notebook;
if (!nbname.match(/\.ipynb$/)) {
nbname = nbname + ".ipynb";
}
var data = {name: nbname};
var settings = {
processData : false,
cache : false,
type : "PATCH",
data : JSON.stringify(data),
dataType: "json",
headers : {'Content-Type': 'application/json'},
success : $.proxy(that.rename_success, this),
error : $.proxy(that.rename_error, this)
};
this.events.trigger('rename_notebook.Notebook', data);
var url = utils.url_join_encode(
this.base_url,
'api/notebooks',
this.notebook_path,
this.notebook_name
);
$.ajax(url, settings);
}
ContentManager.prototype.save_notebook = function(notebook, extra_settings) {
}
// Create a JSON model to be sent to the server.
var model = {};
model.name = notebook.notebook_name;
model.path = notebook.notebook_path;
model.content = notebook.toJSON();
model.content.nbformat = notebook.nbformat;
model.content.nbformat_minor = notebook.nbformat_minor;
// time the ajax call for autosave tuning purposes.
var start = new Date().getTime();
// We do the call with settings so we can set cache to false.
var settings = {
processData : false,
cache : false,
type : "PUT",
data : JSON.stringify(model),
headers : {'Content-Type': 'application/json'},
success : $.proxy(notebook.save_notebook_success, this, start),
error : $.proxy(notebook.save_notebook_error, this)
};
if (extra_settings) {
for (var key in extra_settings) {
settings[key] = extra_settings[key];
}
}
notebook.events.trigger('notebook_saving.Notebook');
var url = utils.url_join_encode(
notebook.base_url,
'api/notebooks',
notebook.notebook_path,
notebook.notebook_name
);
$.ajax(url, settings);
};
}
ContentManager.prototype.save_checkpoint = function() {
// This is not necessary - integrated into save
}
ContentManager.prototype.restore_checkpoint = function(id) {
ContentManager.prototype.restore_checkpoint = function(notebook, id) {
that = notebook;
this.events.trigger('notebook_restoring.Notebook', checkpoint);
var url = utils.url_join_encode(
this.base_url,
'api/notebooks',
this.notebook_path,
this.notebook_name,
'checkpoints',
checkpoint
);
$.post(url).done(
$.proxy(that.restore_checkpoint_success, that)
).fail(
$.proxy(that.restore_checkpoint_error, that)
);
}
ContentManager.prototype.list_checkpoints = function() {
ContentManager.prototype.list_checkpoints = function(notebook) {
that = notebook;
var url = utils.url_join_encode(
that.base_url,
'api/notebooks',
that.notebook_path,
that.notebook_name,
'checkpoints'
);
$.get(url).done(
$.proxy(that.list_checkpoints_success, that)
).fail(
$.proxy(that.list_checkpoints_error, that)
);
}
return ContentManager;
return ContentManager;
});