diff --git a/addons/edi/__openerp__.py b/addons/edi/__openerp__.py
index 80aa8de2f9f..f3b11bbfadb 100644
--- a/addons/edi/__openerp__.py
+++ b/addons/edi/__openerp__.py
@@ -44,7 +44,9 @@ technical OpenERP documentation at http://doc.openerp.com
'test/edi_partner_test.yml',
],
'js': [
- 'static/src/js/edi.js'
+ 'static/src/js/sessionless.js',
+ 'static/src/js/edi_import.js',
+ 'static/src/js/edi_view.js',
],
'installable': True,
'active': False,
diff --git a/addons/edi/controllers/__init__.py b/addons/edi/controllers/__init__.py
index 039d9715fab..45a091bdacc 100644
--- a/addons/edi/controllers/__init__.py
+++ b/addons/edi/controllers/__init__.py
@@ -1 +1,3 @@
-import main
\ No newline at end of file
+import edi_get
+import edi_view
+import edi_import
diff --git a/addons/edi/controllers/edi_get.py b/addons/edi/controllers/edi_get.py
new file mode 100644
index 00000000000..1e8f61708c8
--- /dev/null
+++ b/addons/edi/controllers/edi_get.py
@@ -0,0 +1,26 @@
+import werkzeug.wrappers
+import web.common.dispatch as openerpweb
+import json
+
+class EDIGet(openerpweb.Controller):
+ # http://path.to.web.client:8080/web/get_edi?db=XXXX&token=XXXXXXXXXXX
+ _cp_path = "/web/get_edi"
+
+ @openerpweb.httprequest
+ def index(self, req, token, db):
+ result = req.session.proxy('edi').get_edi_document(token, db)
+ response = werkzeug.wrappers.Response(
+ result, headers=[('Content-Type', 'text/html; charset=utf-8'),
+ ('Content-Length', len(result))])
+
+ return response
+
+ @openerpweb.jsonrequest
+ def get_edi_document(self, req, token, db):
+ result = req.session.proxy('edi').get_edi_document(token, db)
+ document = json.loads(result)
+ model = document and document[0].get('__model')
+ return {'token': token, 'db': db, 'model':model.replace('.','_'), 'document':document}
+
+
+
diff --git a/addons/edi/controllers/edi_import.py b/addons/edi/controllers/edi_import.py
new file mode 100644
index 00000000000..3f99f6cdfbb
--- /dev/null
+++ b/addons/edi/controllers/edi_import.py
@@ -0,0 +1,71 @@
+import werkzeug.wrappers
+import web.common.dispatch as openerpweb
+import web.controllers.main as web
+import json
+import textwrap
+
+
+
+edi_import_template = textwrap.dedent("""
+
+
+
+ OpenERP
+
+
+ %(css)s
+ %(javascript)s
+
+
+
+
+
+""")
+
+
+class EDIImport(web.WebClient):
+ #http://localhost:8002/web/import_edi?edi_url=XXXXX
+ # Note: edi_url should have url which passed from encodeURIComponent function
+ _cp_path = "/web/import_edi"
+
+
+ @openerpweb.httprequest
+ def index(self, req, edi_url):
+ # script tags
+ addons = ['web']
+ jslist = ['/web/webclient/js']
+ if req.debug:
+ jslist = [i + '?debug=' + str(time.time()) for i in web.manifest_glob(req.config.addons_path, addons, 'js')]
+ js = "\n ".join([''%i for i in jslist])
+
+ # css tags
+ csslist = ['/web/webclient/css']
+ if req.debug:
+ csslist = [i + '?debug=' + str(time.time()) for i in web.manifest_glob(req.config.addons_path, addons, 'css')]
+ css = "\n ".join([''%i for i in csslist])
+
+ r = edi_import_template % {
+ 'javascript': js,
+ 'css': css,
+ 'edi_url': edi_url,
+ }
+ return r
+
+ @openerpweb.jsonrequest
+ def import_edi_url(self, req, edi_url):
+ # call EDI Service: import_edi_url
+ result = req.session.proxy('edi').import_edi_url(req.session._db, req.session._uid, req.session._password, edi_url)
+
+ return result
+
diff --git a/addons/edi/controllers/edi_view.py b/addons/edi/controllers/edi_view.py
new file mode 100644
index 00000000000..e2e73c05119
--- /dev/null
+++ b/addons/edi/controllers/edi_view.py
@@ -0,0 +1,92 @@
+import werkzeug.wrappers
+import web.common.dispatch as openerpweb
+import web.controllers.main as web
+import json
+import textwrap
+
+edi_view_template = textwrap.dedent("""
+
+
+
+ OpenERP
+
+ %(css)s
+ %(javascript)s
+
+
+
+
+""")
+
+def edi_addons():
+ _addons = ['web', 'web_edi']
+ for addon in openerpweb.addons_module:
+ if addon in _addons:
+ continue
+ manifest = openerpweb.addons_manifest.get(addon, {})
+ edi_addon = manifest.get('edi', False)
+
+ if edi_addon:
+ _addons.append(addon)
+ return _addons
+
+class EDIView(openerpweb.Controller):
+ # http://path.to.web.client:8080/web/view_edi?db=XXX&token=XXXXXXXXXXX
+ _cp_path = "/web/view_edi"
+
+ @openerpweb.httprequest
+ def css(self, req):
+ files = web.manifest_glob(req.config.addons_path, edi_addons(), 'css')
+ content,timestamp = web.concat_files(req.config.addons_path, files)
+ # TODO request set the Date of last modif and Etag
+ return req.make_response(content, [('Content-Type', 'text/css')])
+
+ @openerpweb.httprequest
+ def js(self, req):
+ files = web.manifest_glob(req.config.addons_path, edi_addons(), 'js')
+ content,timestamp = web.concat_files(req.config.addons_path, files)
+ # TODO request set the Date of last modif and Etag
+ return req.make_response(content, [('Content-Type', 'application/javascript')])
+
+ @openerpweb.httprequest
+ def index(self, req, token, db):
+ # script tags
+ addons = edi_addons()
+ jslist = ['/web/view_edi/js']
+ if req.debug:
+ jslist = [i + '?debug=' + str(time.time()) for i in web.manifest_glob(req.config.addons_path, addons, 'js')]
+ js = "\n ".join([''%i for i in jslist])
+
+ # css tags
+ csslist = ['/web/view_edi/css']
+ if req.debug:
+ csslist = [i + '?debug=' + str(time.time()) for i in web.manifest_glob(req.config.addons_path, addons, 'css')]
+ css = "\n ".join([''%i for i in csslist])
+
+ js_files = [js_file.split('/')[-1].split('.')[0] for js_file in web.manifest_glob(req.config.addons_path, edi_addons(), 'js')]
+
+ r = edi_view_template % {
+ 'javascript': js,
+ 'css': css,
+ 'token': token,
+ 'db': db,
+ 'edi_js': js_files
+ }
+ return r
+
+
+
diff --git a/addons/edi/controllers/main.py b/addons/edi/controllers/main.py
deleted file mode 100644
index 6f4a8d9657e..00000000000
--- a/addons/edi/controllers/main.py
+++ /dev/null
@@ -1,88 +0,0 @@
-#from base.controllers.main import View
-import web.common as openerpweb
-import json
-import cherrypy
-
-class EDIView(openerpweb.Controller):
- # http://path.to.web.client:8080/edi/view_edi?db=XXX&token=XXXXXXXXXXX
- _cp_path = "/edi/view_edi"
-
- @openerpweb.httprequest
- def index(self, req, token, db):
- js_list = []
- css_list = []
- for addon in openerpweb.addons_module:
- if addon in ['web_edi']:
- continue
- manifest = openerpweb.addons_manifest.get(addon, {})
- edi_addon = manifest.get('edi', False)
-
- if edi_addon:
- js_list += map(lambda x: '/'+addon+'/'+x, manifest.get('js', []))
- css_list += map(lambda x: '/'+addon+'/'+x, manifest.get('css', []))
-
- out = """
-
-
-
-
- OpenERP
-
-
-
-
-
-
-
-
-
- """
- for js in js_list:
- out += """""" %(js)
- for css in css_list:
- out += """""" %(css)
- out += """
-
-
-
-
-
- """
- return out
-
-class EDIGet(openerpweb.Controller):
- # http://path.to.web.client:8080/edi/get_edi?db=XXXX&token=XXXXXXXXXXX
- _cp_path = "/edi/get_edi"
-
- @openerpweb.httprequest
- def index(self, req, token, db):
- response = req.session.proxy('edi').get_edi_document(token, db)
- cherrypy.response.headers['Content-Type'] = 'application/json'
- cherrypy.response.headers['Content-Length'] = len(response)
- return response
-
- @openerpweb.jsonrequest
- def get_edi_document(self, req, token, db):
- response = req.session.proxy('edi').get_edi_document(token, db)
- document = json.loads(response)
- model = document and document[0].get('__model')
- cherrypy.response.headers['Content-Type'] = 'application/json'
- cherrypy.response.headers['Content-Length'] = len(response)
- return {'token': token, 'db': db, 'model':model.replace('.','_'), 'document':response}
-
-class EDIImport(openerpweb.Controller):
- #http://localhost:8002/base/static/src/base.html?import_edi&edi_url=XXXXX
- # Note: edi_url should have url which passed from encodeURIComponent function
- _cp_path = "/edi/import_edi"
-
- @openerpweb.jsonrequest
- def index(self, req, edi_url):
- # call EDI Service: import_edi_url
- print 'EDI_IMPORT', req, edi_url
- res = req.session.proxy('edi').import_edi_url(req.session._db, req.session._uid, req.session._password, edi_url)
- return res
-
diff --git a/addons/edi/static/src/js/edi.js b/addons/edi/static/src/js/edi.js
deleted file mode 100644
index be19feff197..00000000000
--- a/addons/edi/static/src/js/edi.js
+++ /dev/null
@@ -1,345 +0,0 @@
-/*---------------------------------------------------------
- * OpenERP Web_edi
- *---------------------------------------------------------*/
-//
-openerp.edi = {}
-
-openerp.edi.EdiView = Class.extend({
- element_id: "oe",
- template: "EdiView",
- init: function(element_id){
- var self = this;
- this.element_id = element_id;
- this.$element = $('#' + element_id);
- QWeb.add_template("/web_edi/static/src/xml/edi.xml");
-
- },
- start: function() {
- },
- view_edi: function(token, db) {
- var params = {};
- if(token) params['token'] = token;
- if(db) params['db'] = db;
- this.rpc('/edi/get_edi/get_edi_document', params, this.on_response);
- },
- on_response: function(value){
- this.element_id = "oe";
- this.template = "EdiView";
- this.$element = $('#' + this.element_id);
- this.$element.html(QWeb.render(this.template, this));
- this.registry = openerp.edi.forms;
- var model = value.model
- var edi_document = value.document
-
- // EDI Center Frame
- key_edi_center = 'edi_center'
- edi_center = this.registry.get_object(key_edi_center + '_' + model)
- if (edi_center == undefined){
- edi_center = this.registry.get_object(key_edi_center)
- }
- $edi_center_frame = this.$element.find('div.oe_edi_center');
- var center_frame = new (edi_center)($edi_center_frame, value);
- center_frame.render();
-
- // EDI Right TOP Frame
- key_edi_right_top = 'edi_right_top'
- edi_right_top = this.registry.get_object(key_edi_right_top + '_' + model)
- if (edi_right_top == undefined){
- edi_right_top = this.registry.get_object(key_edi_right_top)
- }
- $edi_right_top_frame = this.$element.find('div.oe_edi_right_top');
- var right_top_frame = new (edi_right_top)($edi_right_top_frame, value);
- right_top_frame.render();
-
- //EDI Right Bottom Frame
- key_edi_right_bottom = 'edi_right_bottom'
- edi_right_bottom = this.registry.get_object(key_edi_right_bottom + '_' + model)
- if (edi_right_bottom == undefined){
- edi_right_bottom = this.registry.get_object(key_edi_right_bottom)
- }
- $edi_right_bottom_frame = this.$element.find('div.oe_edi_right_bottom');
- var right_bottom_frame = new (edi_right_bottom)($edi_right_bottom_frame, value);
- right_bottom_frame.render();
- },
- rpc: function(url, params, success_callback, error_callback) {
- var self = this;
- // Call using the rpc_mode
- var deferred = $.Deferred();
- this.rpc_ajax(url, {
- jsonrpc: "2.0",
- method: "call",
- params: params,
- id:null
- }).then(function () {deferred.resolve.apply(deferred, arguments);},
- function(error) {deferred.reject(error, $.Event());});
- return deferred.fail(function() {
- deferred.fail(function(error, event) {
- if (!event.isDefaultPrevented()) {
- self.on_rpc_error(error, event);
- }
- });
- }).then(success_callback, error_callback).promise();
- },
- /**
- * Raw JSON-RPC call
- *
- * @returns {jQuery.Deferred} ajax-based deferred object
- */
- rpc_ajax: function(url, payload) {
- var self = this;
- this.on_rpc_request();
- // url can be an $.ajax option object
- if (_.isString(url)) {
- url = {
- url: url
- }
- }
- var ajax = _.extend({
- type: "POST",
- url: url,
- dataType: 'json',
- contentType: 'application/json',
- data: JSON.stringify(payload),
- processData: false
- }, url);
- var deferred = $.Deferred();
- $.ajax(ajax).done(function(response, textStatus, jqXHR) {
- self.on_rpc_response();
- if (response.error) {
- if (response.error.data.type == "session_invalid") {
- self.uid = false;
- self.on_session_invalid(function() {
- self.rpc(url, payload.params,
- function() {deferred.resolve.apply(deferred, arguments);},
- function(error, event) {event.preventDefault();
- deferred.reject.apply(deferred, arguments);});
- });
- } else {
- deferred.reject(response.error);
- }
- } else {
- deferred.resolve(response["result"], textStatus, jqXHR);
- }
- }).fail(function(jqXHR, textStatus, errorThrown) {
- self.on_rpc_response();
- var error = {
- code: -32098,
- message: "XmlHttpRequestError " + errorThrown,
- data: {type: "xhr"+textStatus, debug: jqXHR.responseText, objects: [jqXHR, errorThrown] }
- };
- deferred.reject(error);
- });
- return deferred.promise();
- },
- on_rpc_request: function() {
- },
- on_rpc_response: function() {
- },
- on_rpc_error: function(error) {
- },
-});
-
-
-
-openerp.edi.EdiViewCenter = Class.extend({
- init: function(element, edi){
- var self = this;
- this.edi_document = edi.document;
- this.$element = element;
- QWeb.add_template("/web_edi/static/src/xml/edi.xml");
- },
- start: function() {
- },
- render: function(){
- template = "EdiViewCenter";
- this.$element.append($(QWeb.render(template, {'view': this})))
- }
-});
-
-openerp.edi.EdiViewRightTop = Class.extend({
- init: function(element, edi){
- var self = this;
- this.edi_document = edi.document;
- this.$element = element;
- QWeb.add_template("/web_edi/static/src/xml/edi.xml");
- this.$_element = $('')
- .appendTo(document.body)
- .delegate('button.oe_edi_button_import', 'click', {'edi': edi} , this.do_import)
- },
- start: function() {
- },
- render: function(){
- template = "EdiViewRightTop";
- if (this.$current) {
- this.$current.remove();
- }
- this.$current = this.$_element.clone(true);
- this.$current.empty().append(QWeb.render(template, this));
- this.$element.append(this.$current);
-
- },
- do_import: function(e){
- $element = $(e.view.document.body)
- token = e.data.edi.token
- db = e.data.edi.db
- var current_url = $(location).attr('href')
- var pathName = current_url.substring(0, current_url.lastIndexOf('/') +1);
-
- if ($element.find('#oe_edi_rd_import_openerp').attr('checked') == true)
- {
- // import EDI
- server_url = $element.find('#oe_edi_txt_server_url').val()
- edi_url = pathName + 'get_edi?db=' + db + '&token=' + token
- edi_url = encodeURIComponent(edi_url)
- window.location = 'http://' + server_url + '/base/static/src/base.html?import_edi&edi_url=' + edi_url
- }
- if ($element.find('#oe_edi_rd_import_saas_account').attr('checked') == true)
- {
- // create SAAS Account
- }
- if ($element.find('#oe_edi_rd_import_other').attr('checked') == true)
- {
- // GET EDI document
- edi_url = pathName + 'get_edi?db=' + db + '&token=' + token
- window.location = edi_url
- }
- }
-});
-
-openerp.edi.EdiViewRightBottom = Class.extend({
- init: function(element, edi){
- var self = this;
- this.edi_document = edi.document;
- this.$element = element;
- QWeb.add_template("/web_edi/static/src/xml/edi.xml");
- },
- start: function() {
- },
- render: function(){
- template = "EdiViewRightBottom";
- this.$element.append($(QWeb.render(template, this)))
- }
-});
-
-openerp.edi.Registry = Class.extend({
- init: function (mapping) {
- this.map = mapping || {};
- },
-
- get_object: function (key) {
- var path_string = this.map[key];
- if (path_string === undefined) {
- // key is not Found
- return undefined;
- }
-
- var object_match = openerp;
- var path = path_string.split('.');
- // ignore first section
- for(var i=1; i
Import successful, click Ok to see the new document ').dialog({
- modal: true,
- title: 'Successful',
- buttons: {
- Ok: function() {
- $(this).dialog("close");
- var action = {
- "res_model": response[0][0],
- "res_id": parseInt(response[0][1], 10),
- "views":[[false,"form"]],
- "type":"ir.actions.act_window",
- "view_type":"form",
- "view_mode":"form"
- }
- action.flags = {
- search_view: false,
- sidebar : false,
- views_switcher : false,
- action_buttons : false,
- pager: false
- }
- var action_manager = new openerp.base.ActionManager(self.session, 'oe_app');
-
- action_manager.start();
- action_manager.do_action(action);
- }
- }
-
- });
- }
- else{
- $(QWeb.render("DialogWarning", "Sorry, Import is not successful.")).dialog({
- modal: true,
- buttons: {
- Ok: function() {
- $(this).dialog("close");
- }
- }
- });
- }
-
- });
- }
-});
-var parameters = jQuery.deparam(jQuery.param.querystring());
-
-
-if('import_edi' in parameters) {
- var import_edi = new openerp.web_edi.EdiImport();
- import_edi.import_edi(parameters.edi_url);
-}
-}
-// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
diff --git a/addons/edi/static/src/js/edi_import.js b/addons/edi/static/src/js/edi_import.js
new file mode 100644
index 00000000000..5219676405f
--- /dev/null
+++ b/addons/edi/static/src/js/edi_import.js
@@ -0,0 +1,75 @@
+
+openerp.web.edi_import = function(openerp) {
+var QWeb = new QWeb2.Engine();
+openerp.web.EdiImport = openerp.web.WebClient.extend({
+
+ init: function(element_id) {
+ this._super(element_id);
+ },
+ start: function() {
+ this._super();
+ },
+ do_import: function(){
+ var self = this;
+ self.rpc('/web/import_edi/import_edi_url', self.params, function(response){
+ if (response.length) {
+ $('Import successful, click Ok to see the new document
').dialog({
+ modal: true,
+ title: 'Successful',
+ buttons: {
+ Ok: function() {
+ $(this).dialog("close");
+ var action = {
+ "res_model": response[0][0],
+ "res_id": parseInt(response[0][1], 10),
+ "views":[[false,"form"]],
+ "type":"ir.actions.act_window",
+ "view_type":"form",
+ "view_mode":"form"
+ }
+ action.flags = {
+ search_view: false,
+ sidebar : false,
+ views_switcher : false,
+ action_buttons : false,
+ pager: false
+ }
+ var action_manager = new openerp.web.ActionManager(self);
+ action_manager.appendTo($("#oe_app"));
+ action_manager.start();
+ action_manager.do_action(action);
+ }
+ }
+
+ });
+ }
+ else{
+ $(QWeb.render("DialogWarning", "Sorry, Import is not successful.")).dialog({
+ modal: true,
+ buttons: {
+ Ok: function() {
+ $(this).dialog("close");
+ }
+ }
+ });
+ }
+ });
+ },
+ import_edi: function(edi_url) {
+ var self = this;
+ this.params = {};
+
+ if(edi_url) this.params['edi_url'] = decodeURIComponent(edi_url);
+
+ if (!this.session.db){
+ this.start();
+ this.session.on_session_valid.add_last(self.do_import);
+
+ }
+ else{
+ self.do_import();
+ }
+ }
+});
+}
+// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
diff --git a/addons/edi/static/src/js/edi_view.js b/addons/edi/static/src/js/edi_view.js
new file mode 100644
index 00000000000..713e7d1fe9f
--- /dev/null
+++ b/addons/edi/static/src/js/edi_view.js
@@ -0,0 +1,148 @@
+
+openerp.web.edi_view = function(openerp) {
+ openerp.web.edi_views = new openerp.web.Registry();
+ var QWeb = new QWeb2.Engine();
+ // EDI View Engine
+ openerp.web.EdiView = openerp.web.Sessionless.extend({
+ init: function(element_id){
+ var self = this;
+ this.template = "EdiView";
+ this.element_id = element_id;
+ this.$element = $('#' + element_id);
+ QWeb.add_template("/web_edi/static/src/xml/edi.xml");
+
+ },
+ start: function() {
+ },
+ view_edi: function(token, db) {
+ var params = {};
+ if(token) params['token'] = token;
+ if(db) params['db'] = db;
+ this.rpc('/web/get_edi/get_edi_document', params, this.on_response);
+ },
+
+ on_response: function(value){
+ var self = this;
+ this.template = "EdiView";
+ this.element_id = "oe";
+ self.$element = $('#' + this.element_id);
+ self.$element.html(QWeb.render(self.template, this));
+
+ var edi_document = value.document;
+
+ var render = function(key, element_id, response){
+ var registry = openerp.web.edi_views;
+ model = response.model
+ // get namespace of view of particular model from registry
+ try {
+ edi_view = registry.get_object(key + '_' + model);
+ }catch (e) {
+ edi_view = undefined;
+ }
+ // if not found, take default namespace of view
+ if (edi_view == undefined){
+ edi_view = registry.get_object(key)
+ }
+ $edi_frame = self.$element.find(element_id);
+
+ // create instance of QWeb of view namespace
+ edi_qweb = new (edi_view)($edi_frame, response)
+ edi_qweb.render();
+ };
+
+ // EDI Center Frame
+ render('view_center', 'div.oe_edi_center', value)
+
+ // EDI Right TOP Frame
+ render('view_right_top', 'div.oe_edi_right_top', value)
+
+ //EDI Right Bottom Frame
+ render('view_right_bottom', 'div.oe_edi_right_bottom', value)
+
+ },
+
+ });
+
+openerp.web.edi_views.add('view_center' , 'openerp.web.EdiViewCenter');
+openerp.web.EdiViewCenter = openerp.web.Class.extend({
+ init: function(element, edi){
+ var self = this;
+ this.edi_document = edi.document;
+ this.$element = element;
+ QWeb.add_template("/web_edi/static/src/xml/edi.xml");
+ },
+ start: function() {
+ },
+ render: function(){
+ template = "EdiViewCenter";
+ this.$element.append($(QWeb.render(template, {'view': this})))
+ }
+});
+
+openerp.web.edi_views.add('view_right_top' , 'openerp.web.EdiViewRightTop');
+openerp.web.EdiViewRightTop = openerp.web.Class.extend({
+ init: function(element, edi){
+ var self = this;
+ this.edi_document = edi.document;
+ this.$element = element;
+ QWeb.add_template("/web_edi/static/src/xml/edi.xml");
+ this.$_element = $('')
+ .appendTo(document.body)
+ .delegate('button.oe_edi_button_import', 'click', {'edi': edi} , this.do_import)
+ },
+ start: function() {
+ },
+ render: function(){
+ template = "EdiViewRightTop";
+ if (this.$current) {
+ this.$current.remove();
+ }
+ this.$current = this.$_element.clone(true);
+ this.$current.empty().append(QWeb.render(template, this));
+ this.$element.append(this.$current);
+ },
+ do_import: function(e){
+ $element = $(e.view.document.body)
+ token = e.data.edi.token
+ db = e.data.edi.db
+ var current_url = $(location).attr('href')
+ var pathName = current_url.substring(0, current_url.lastIndexOf('/') +1);
+
+ if ($element.find('#oe_edi_rd_import_openerp').attr('checked') == 'checked')
+ {
+ // import EDI
+ server_url = $element.find('#oe_edi_txt_server_url').val()
+ edi_url = pathName + 'get_edi?db=' + db + '&token=' + token
+ edi_url = encodeURIComponent(edi_url)
+ window.location = 'http://' + server_url + '/web/import_edi?edi_url=' + edi_url
+ }
+ if ($element.find('#oe_edi_rd_import_saas_account').attr('checked') == 'checked')
+ {
+ // create SAAS Account
+ }
+ if ($element.find('#oe_edi_rd_import_other').attr('checked') == 'checked')
+ {
+ // GET EDI document
+ edi_url = pathName + 'get_edi?db=' + db + '&token=' + token
+ window.location = edi_url
+ }
+ }
+});
+
+openerp.web.edi_views.add('view_right_bottom' , 'openerp.web.EdiViewRightBottom');
+openerp.web.EdiViewRightBottom = openerp.web.Class.extend({
+ init: function(element, edi){
+ var self = this;
+ this.edi_document = edi.document;
+ this.$element = element;
+ QWeb.add_template("/web_edi/static/src/xml/edi.xml");
+ },
+ start: function() {
+ },
+ render: function(){
+ template = "EdiViewRightBottom";
+ this.$element.append($(QWeb.render(template, this)))
+ }
+});
+}
+// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
diff --git a/addons/edi/static/src/js/sessionless.js b/addons/edi/static/src/js/sessionless.js
new file mode 100644
index 00000000000..8890ab938cd
--- /dev/null
+++ b/addons/edi/static/src/js/sessionless.js
@@ -0,0 +1,75 @@
+openerp.web.sessionless = function(openerp) {
+ var QWeb = new QWeb2.Engine();
+ openerp.web.Sessionless = openerp.web.SessionAware.extend({
+ rpc: function(url, params, success_callback, error_callback) {
+ var self = this;
+ // Call using the rpc_mode
+ var deferred = $.Deferred();
+ this.rpc_ajax(url, {
+ jsonrpc: "2.0",
+ method: "call",
+ params: params,
+ id:null
+ }).then(function () {deferred.resolve.apply(deferred, arguments);},
+ function(error) {deferred.reject(error, $.Event());});
+ return deferred.fail(function() {
+ deferred.fail(function(error, event) {
+ if (!event.isDefaultPrevented()) {
+ self.on_rpc_error(error, event);
+ }
+ });
+ }).then(success_callback, error_callback).promise();
+ },
+ /**
+ * Raw JSON-RPC call
+ *
+ * @returns {jQuery.Deferred} ajax-webd deferred object
+ */
+ rpc_ajax: function(url, payload) {
+ var self = this;
+ this.on_rpc_request();
+ // url can be an $.ajax option object
+ if (_.isString(url)) {
+ url = {
+ url: url
+ }
+ }
+ var ajax = _.extend({
+ type: "POST",
+ url: url,
+ dataType: 'json',
+ contentType: 'application/json',
+ data: JSON.stringify(payload),
+ processData: false
+ }, url);
+ var deferred = $.Deferred();
+ $.ajax(ajax).done(function(response, textStatus, jqXHR) {
+ self.on_rpc_response();
+ if (!response.error) {
+ deferred.resolve(response["result"], textStatus, jqXHR);
+ return;
+ }
+ if (response.error.data.type !== "session_invalid") {
+ deferred.reject(response.error);
+ return;
+ }
+
+ }).fail(function(jqXHR, textStatus, errorThrown) {
+ self.on_rpc_response();
+ var error = {
+ code: -32098,
+ message: "XmlHttpRequestError " + errorThrown,
+ data: {type: "xhr"+textStatus, debug: jqXHR.responseText, objects: [jqXHR, errorThrown] }
+ };
+ deferred.reject(error);
+ });
+ return deferred.promise();
+ },
+ on_rpc_request: function() {
+ },
+ on_rpc_response: function() {
+ },
+ on_rpc_error: function(error) {
+ },
+ });
+}