skeleton part1
bzr revid: al@openerp.com-20110310115123-5a4i2wg3lw33kqv5
This commit is contained in:
parent
6d3ffe53aa
commit
5971491a13
|
@ -64,8 +64,23 @@ class Hello(openerpweb.Controller):
|
||||||
def ajax_hello_error(self,req):
|
def ajax_hello_error(self,req):
|
||||||
raise Exception("You suck")
|
raise Exception("You suck")
|
||||||
|
|
||||||
class Connection(openerpweb.Controller):
|
class Session(openerpweb.Controller):
|
||||||
_cp_path = "/base/connection"
|
_cp_path = "/base/session"
|
||||||
|
|
||||||
|
@openerpweb.jsonrequest
|
||||||
|
def login(self, req, db, login, password):
|
||||||
|
req.session.login('trunk', login, password)
|
||||||
|
res = {
|
||||||
|
"session_id" : req.session_id,
|
||||||
|
"uid": req.session._uid,
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
|
||||||
|
@openerpweb.jsonrequest
|
||||||
|
def modules(self, req):
|
||||||
|
res={}
|
||||||
|
res["modules"] = ["base","base_hello"]
|
||||||
|
return res
|
||||||
|
|
||||||
def manifest_glob(self, modlist, key):
|
def manifest_glob(self, modlist, key):
|
||||||
files = []
|
files = []
|
||||||
|
@ -95,50 +110,28 @@ class Connection(openerpweb.Controller):
|
||||||
files_concat = "".join(files_content)
|
files_concat = "".join(files_content)
|
||||||
return files_concat
|
return files_concat
|
||||||
|
|
||||||
def list_modules(self, req):
|
@openerpweb.jsonrequest
|
||||||
return
|
def csslist(self, req, mods='base,base_hello'):
|
||||||
|
return {'files': self.manifest_glob(mods.split(','), 'css')}
|
||||||
|
|
||||||
@openerpweb.jsonrequest
|
@openerpweb.jsonrequest
|
||||||
def manifest_files(self, req, key, mods):
|
def jslist(self, req, mods='base,base_hello'):
|
||||||
files = self.manifest_glob(mods, key)
|
return {'files': self.manifest_glob(mods.split(','), 'js')}
|
||||||
return {'files': files}
|
|
||||||
|
|
||||||
def css(self, req):
|
def css(self, req, mods='base,base_hello'):
|
||||||
# TODO http get argument mods is a comma seprated value of modules
|
|
||||||
mods = 'base,base_hello'
|
|
||||||
files = self.manifest_glob(mods.split(','), 'css')
|
files = self.manifest_glob(mods.split(','), 'css')
|
||||||
concat = self.concat_files(files)[0]
|
concat = self.concat_files(files)[0]
|
||||||
# TODO request set the Date of last modif and Etag
|
# TODO request set the Date of last modif and Etag
|
||||||
return concat
|
return concat
|
||||||
css.exposed=1
|
css.exposed=1
|
||||||
|
|
||||||
def js(self, req):
|
def js(self, req, mods='base,base_hello'):
|
||||||
# TODO http get argument mods is a comma seprated value of modules
|
|
||||||
mods = 'base,base_hello'
|
|
||||||
files = self.manifest_glob(mods.split(','), 'js')
|
files = self.manifest_glob(mods.split(','), 'js')
|
||||||
concat = self.concat_files(files)[0]
|
concat = self.concat_files(files)[0]
|
||||||
# TODO request set the Date of last modif and Etag
|
# TODO request set the Date of last modif and Etag
|
||||||
return concat
|
return concat
|
||||||
js.exposed=1
|
js.exposed=1
|
||||||
|
|
||||||
class Session(openerpweb.Controller):
|
|
||||||
_cp_path = "/base/session"
|
|
||||||
|
|
||||||
@openerpweb.jsonrequest
|
|
||||||
def login(self, req, db, login, password):
|
|
||||||
req.session.login('trunk', login, password)
|
|
||||||
res = {
|
|
||||||
"session_id" : req.session_id,
|
|
||||||
"uid": req.session._uid,
|
|
||||||
}
|
|
||||||
return res
|
|
||||||
|
|
||||||
def modules(self, req):
|
|
||||||
# TODO return the list of all modules
|
|
||||||
res={}
|
|
||||||
res["modules"] = ["base","base_hello"]
|
|
||||||
return res
|
|
||||||
|
|
||||||
class Menu(openerpweb.Controller):
|
class Menu(openerpweb.Controller):
|
||||||
_cp_path = "/base/menu"
|
_cp_path = "/base/menu"
|
||||||
|
|
||||||
|
|
|
@ -83,11 +83,11 @@ var openerp = this.openerp = function() {
|
||||||
|
|
||||||
// this unique id will be replaced by hostname_databasename by
|
// this unique id will be replaced by hostname_databasename by
|
||||||
// openerp.base.Connection on the first connection
|
// openerp.base.Connection on the first connection
|
||||||
o._unique_id = "unique_id_cause_db_name_is_not_yet_known"
|
o._session_id = "session" + openerp.sessions.length;
|
||||||
openerp.pool[o._unique_id] = o;
|
openerp.sessions[o._session_id] = o;
|
||||||
|
|
||||||
o.screen = openerp.screen;
|
o.screen = openerp.screen;
|
||||||
o.pool = openerp.pool;
|
o.sessions = openerp.sessions;
|
||||||
o.base = {};
|
o.base = {};
|
||||||
openerp.base(o);
|
openerp.base(o);
|
||||||
|
|
||||||
|
@ -96,13 +96,12 @@ var openerp = this.openerp = function() {
|
||||||
|
|
||||||
// element_ids registry linked to all controllers on the page
|
// element_ids registry linked to all controllers on the page
|
||||||
// TODO rename to elements, or keep gtk naming?
|
// TODO rename to elements, or keep gtk naming?
|
||||||
openerp.screen = {};
|
this.openerp.screen = {};
|
||||||
|
|
||||||
// per database openerp like namespace
|
// Per session namespace
|
||||||
// openerp.<module> for module will to
|
// openerp.<module> will map to
|
||||||
// openerp.pool.<dbname>.<module> using a closure
|
// openerp.sessions.servername_port_dbname_login.<module> using a closure
|
||||||
// TODO rename it openerp.connections
|
this.openerp.sessions = {};
|
||||||
openerp.pool = {};
|
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
@ -204,37 +203,8 @@ openerp.base.BasicController = Class.extend({
|
||||||
});
|
});
|
||||||
|
|
||||||
openerp.base.Console = openerp.base.BasicController.extend({
|
openerp.base.Console = openerp.base.BasicController.extend({
|
||||||
});
|
|
||||||
|
|
||||||
openerp.base.Database = openerp.base.BasicController.extend({
|
|
||||||
// Non Session Controller to manage databases
|
|
||||||
})
|
|
||||||
|
|
||||||
openerp.base.Connection = openerp.base.BasicController.extend({
|
|
||||||
// This store the webclient servername port and the database
|
|
||||||
// this correpond to one pool entry
|
|
||||||
// TODO on first connection:
|
|
||||||
// rename the uniquename in openerp.connnections
|
|
||||||
// do the magic of loading all the modules by loading missing module and their
|
|
||||||
// javascript using a dom nodes with urls:
|
|
||||||
// /base/connection/css?mod=mod1,mod2,mod3
|
|
||||||
// /base/connection/js?mod=mod1,mod2,mod3
|
|
||||||
// then init them
|
|
||||||
// for i in installed_modules:
|
|
||||||
// call openerp._openerp.<i>(openerp)
|
|
||||||
})
|
|
||||||
|
|
||||||
openerp.base.Session = openerp.base.BasicController.extend({
|
|
||||||
init: function(element_id, server, port) {
|
init: function(element_id, server, port) {
|
||||||
this._super(element_id);
|
this._super(element_id);
|
||||||
this.rpc_mode = (server == undefined) ? "ajax" : "jsonp";
|
|
||||||
this.server = (server == undefined) ? location.hostname : server;
|
|
||||||
this.port = (port == undefined) ? location.port : port;
|
|
||||||
this.login = "";
|
|
||||||
this.password = "";
|
|
||||||
this.uid = false;
|
|
||||||
this.session_id = false;
|
|
||||||
this.context = {};
|
|
||||||
},
|
},
|
||||||
on_log: function() {
|
on_log: function() {
|
||||||
// TODO this should move to Console and be active only in debug
|
// TODO this should move to Console and be active only in debug
|
||||||
|
@ -248,11 +218,29 @@ openerp.base.Session = openerp.base.BasicController.extend({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
rpc: function(url, params, success_callback, error_callback) {
|
});
|
||||||
// TODO keep a this.ajax_count counter to display LOADING
|
|
||||||
var self = this;
|
|
||||||
|
|
||||||
this.on_rpc_request();
|
openerp.base.Database = openerp.base.BasicController.extend({
|
||||||
|
// Non Session Controller to manage databases
|
||||||
|
})
|
||||||
|
|
||||||
|
openerp.base.Session = openerp.base.BasicController.extend({
|
||||||
|
init: function(element_id, server, port) {
|
||||||
|
this._super(element_id);
|
||||||
|
this.server = (server == undefined) ? location.hostname : server;
|
||||||
|
this.port = (port == undefined) ? location.port : port;
|
||||||
|
this.rpc_mode = (server == location.hostname) ? "ajax" : "jsonp";
|
||||||
|
this.debug = true;
|
||||||
|
this.db = "";
|
||||||
|
this.login = "";
|
||||||
|
this.password = "";
|
||||||
|
this.uid = false;
|
||||||
|
this.session_id = false;
|
||||||
|
this.module_list = [];
|
||||||
|
this.context = {};
|
||||||
|
},
|
||||||
|
rpc: function(url, params, success_callback, error_callback) {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
// Construct a JSON-RPC2 request, method is currently unsed
|
// Construct a JSON-RPC2 request, method is currently unsed
|
||||||
params.session_id = this.session_id;
|
params.session_id = this.session_id;
|
||||||
|
@ -267,9 +255,14 @@ openerp.base.Session = openerp.base.BasicController.extend({
|
||||||
// Use a default error handler unless defined
|
// Use a default error handler unless defined
|
||||||
error_callback = typeof(error_callback) != "undefined" ? error_callback : this.on_error;
|
error_callback = typeof(error_callback) != "undefined" ? error_callback : this.on_error;
|
||||||
|
|
||||||
|
// Call using the rpc_mode
|
||||||
|
this.rpc_ajax(url, post, success_callback, error_callback);
|
||||||
|
},
|
||||||
|
rpc_ajax: function(url, post, success_callback, error_callback) {
|
||||||
|
var self = this;
|
||||||
|
this.on_rpc_request();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "POST",
|
type: "POST",
|
||||||
//async: false,
|
|
||||||
url: url,
|
url: url,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
data: post,
|
data: post,
|
||||||
|
@ -293,11 +286,7 @@ openerp.base.Session = openerp.base.BasicController.extend({
|
||||||
var error = {
|
var error = {
|
||||||
code: 1,
|
code: 1,
|
||||||
message: "XmlHttpRequestError " + errorThrown,
|
message: "XmlHttpRequestError " + errorThrown,
|
||||||
data: {
|
data: {type: "xhr"+textStatus, debug: jqXHR.responseText, objects: [jqXHR, errorThrown] }
|
||||||
type: "xhr"+textStatus,
|
|
||||||
debug: jqXHR.responseText,
|
|
||||||
objects: [ jqXHR, errorThrown ]
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
error_callback(error);
|
error_callback(error);
|
||||||
}
|
}
|
||||||
|
@ -328,6 +317,30 @@ openerp.base.Session = openerp.base.BasicController.extend({
|
||||||
if (sucess_callback) sucess_callback();
|
if (sucess_callback) sucess_callback();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
session_check_modules: function() {
|
||||||
|
// TODO
|
||||||
|
if(!openerp._modules_loaded)
|
||||||
|
this.session_load_modules();
|
||||||
|
},
|
||||||
|
session_load_modules: function() {
|
||||||
|
var self = this;
|
||||||
|
this.rpc('/base/session/list_modules', {}, function(result) {
|
||||||
|
this.module_list = result['modules'];
|
||||||
|
if(self.debug) {
|
||||||
|
// add the module code one by one as <script>
|
||||||
|
} else {
|
||||||
|
// load merged ones
|
||||||
|
// /base/session/css?mod=mod1,mod2,mod3
|
||||||
|
// /base/session/js?mod=mod1,mod2,mod3
|
||||||
|
}
|
||||||
|
// then init them
|
||||||
|
// for i in installed_modules:
|
||||||
|
// call openerp._openerp.<i>(openerp)
|
||||||
|
|
||||||
|
openerp._modules_loaded = true;
|
||||||
|
});
|
||||||
|
this.uid = false;
|
||||||
|
},
|
||||||
session_logout: function() {
|
session_logout: function() {
|
||||||
this.uid = false;
|
this.uid = false;
|
||||||
},
|
},
|
||||||
|
@ -518,6 +531,10 @@ openerp.base.DataRecord = openerp.base.Controller.extend({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
openerp.base.XmlInput = openerp.base.BasicController.extend({
|
||||||
|
// Non Session Controller to manage databases
|
||||||
|
})
|
||||||
|
|
||||||
openerp.base.FormView = openerp.base.Controller.extend({
|
openerp.base.FormView = openerp.base.Controller.extend({
|
||||||
init: function(session, element_id, dataset, view_id) {
|
init: function(session, element_id, dataset, view_id) {
|
||||||
this._super(session, element_id);
|
this._super(session, element_id);
|
||||||
|
@ -616,6 +633,9 @@ openerp.base.ListView = openerp.base.Controller.extend({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
openerp.base.TreeView = openerp.base.BasicController.extend({
|
||||||
|
// Non Session Controller to manage databases
|
||||||
|
})
|
||||||
|
|
||||||
openerp.base.SearchViewInput = openerp.base.Controller.extend({
|
openerp.base.SearchViewInput = openerp.base.Controller.extend({
|
||||||
// TODO not sure should we create a controler for every input ?
|
// TODO not sure should we create a controler for every input ?
|
||||||
|
@ -631,7 +651,6 @@ openerp.base.SearchViewInput = openerp.base.Controller.extend({
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
openerp.base.SearchView = openerp.base.Controller.extend({
|
openerp.base.SearchView = openerp.base.Controller.extend({
|
||||||
init: function(session, element_id, dataset, view_id) {
|
init: function(session, element_id, dataset, view_id) {
|
||||||
this._super(session, element_id);
|
this._super(session, element_id);
|
||||||
|
@ -690,6 +709,18 @@ openerp.base.SearchView = openerp.base.Controller.extend({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
openerp.base.ProcessView = openerp.base.BasicController.extend({
|
||||||
|
// Non Session Controller to manage databases
|
||||||
|
})
|
||||||
|
|
||||||
|
openerp.base.HelpView = openerp.base.BasicController.extend({
|
||||||
|
// Non Session Controller to manage databases
|
||||||
|
})
|
||||||
|
|
||||||
|
openerp.base.View = openerp.base.BasicController.extend({
|
||||||
|
// Non Session Controller to manage databases
|
||||||
|
})
|
||||||
|
|
||||||
openerp.base.Action = openerp.base.Controller.extend({
|
openerp.base.Action = openerp.base.Controller.extend({
|
||||||
init: function(session, element_id) {
|
init: function(session, element_id) {
|
||||||
this._super(session, element_id);
|
this._super(session, element_id);
|
||||||
|
@ -769,6 +800,18 @@ openerp.base.Action = openerp.base.Controller.extend({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
openerp.base.Preferences = openerp.base.BasicController.extend({
|
||||||
|
// Non Session Controller to manage databases
|
||||||
|
})
|
||||||
|
|
||||||
|
openerp.base.ImportExport = openerp.base.BasicController.extend({
|
||||||
|
// Non Session Controller to manage databases
|
||||||
|
})
|
||||||
|
|
||||||
|
openerp.base.Homepage = openerp.base.BasicController.extend({
|
||||||
|
// Non Session Controller to manage databases
|
||||||
|
})
|
||||||
|
|
||||||
openerp.base.WebClient = openerp.base.Controller.extend({
|
openerp.base.WebClient = openerp.base.Controller.extend({
|
||||||
init: function(element_id) {
|
init: function(element_id) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -813,6 +856,8 @@ openerp.base.WebClient = openerp.base.Controller.extend({
|
||||||
on_menu_action: function(action) {
|
on_menu_action: function(action) {
|
||||||
this.action.do_action(action);
|
this.action.do_action(action);
|
||||||
},
|
},
|
||||||
|
do_about: function() {
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
openerp.base.webclient = function(element_id) {
|
openerp.base.webclient = function(element_id) {
|
||||||
|
|
Loading…
Reference in New Issue