diff --git a/src/backend/base.js b/src/backend/base.js index e9c4eea7..1b06dc01 100644 --- a/src/backend/base.js +++ b/src/backend/base.js @@ -32,6 +32,13 @@ this.recline.Backend = this.recline.Backend || {}; // backends (see recline.Model.Dataset.initialize). __type__: 'base', + + // ### readonly + // + // Class level attribute indicating that this backend is read-only (that + // is, cannot be written to). + readonly: true, + // ### sync // // An implementation of Backbone.sync that will be used to override diff --git a/src/backend/dataproxy.js b/src/backend/dataproxy.js index 8f2b7496..16db3db6 100644 --- a/src/backend/dataproxy.js +++ b/src/backend/dataproxy.js @@ -18,6 +18,7 @@ this.recline.Backend = this.recline.Backend || {}; // Note that this is a **read-only** backend. my.DataProxy = my.Base.extend({ __type__: 'dataproxy', + readonly: true, defaults: { dataproxy_url: 'http://jsonpdataproxy.appspot.com' }, diff --git a/src/backend/elasticsearch.js b/src/backend/elasticsearch.js index 164393a8..0ccb5295 100644 --- a/src/backend/elasticsearch.js +++ b/src/backend/elasticsearch.js @@ -21,6 +21,7 @@ this.recline.Backend = this.recline.Backend || {}; //
http://localhost:9200/twitter/tweet
my.ElasticSearch = my.Base.extend({ __type__: 'elasticsearch', + readonly: true, _getESUrl: function(dataset) { var out = dataset.get('elasticsearch_url'); if (out) return out; diff --git a/src/backend/gdocs.js b/src/backend/gdocs.js index e6f29b55..c9b5b551 100644 --- a/src/backend/gdocs.js +++ b/src/backend/gdocs.js @@ -18,6 +18,7 @@ this.recline.Backend = this.recline.Backend || {}; // my.GDoc = my.Base.extend({ __type__: 'gdoc', + readonly: true, getUrl: function(dataset) { var url = dataset.get('url'); if (url.indexOf('feeds/list') != -1) { diff --git a/src/backend/memory.js b/src/backend/memory.js index adf06bab..e013aa19 100644 --- a/src/backend/memory.js +++ b/src/backend/memory.js @@ -71,6 +71,7 @@ this.recline.Backend = this.recline.Backend || {}; // my.Memory = my.Base.extend({ __type__: 'memory', + readonly: false, initialize: function() { this.datasets = {}; }, diff --git a/test/backend.test.js b/test/backend.test.js index f7d96f60..69686b8a 100644 --- a/test/backend.test.js +++ b/test/backend.test.js @@ -25,6 +25,11 @@ function makeBackendDataset() { return dataset; } +test('Memory Backend: readonly', function () { + var backend = new recline.Backend.Memory(); + equal(backend.readonly, false); +}); + test('Memory Backend: createDataset', function () { var dataset = recline.Backend.createDataset(memoryData.documents, memoryData.fields, memoryData.metadata); equal(memoryData.metadata.id, dataset.id); @@ -217,6 +222,8 @@ test('DataProxy Backend', function() { // needed only if not stubbing // stop(); var backend = new recline.Backend.DataProxy(); + ok(backend.readonly, false); + var dataset = new recline.Model.Dataset({ url: 'http://webstore.thedatahub.org/rufuspollock/gold_prices/data.csv' },