diff --git a/addons/web/common/session.py b/addons/web/common/session.py index be1a2b749da..905670404a9 100644 --- a/addons/web/common/session.py +++ b/addons/web/common/session.py @@ -45,6 +45,12 @@ class OpenERPSession(object): del state['config'] return state + def openerp_entreprise(self): + if not self._uid: + return False + else: + return self.model('publisher_warranty.contract').status()['status'] == 'full' + def build_connection(self): conn = openerplib.Connection(self.config.connector, database=self._db, login=self._login, user_id=self._uid, password=self._password) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 6a7ab94a645..996b5f2095f 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -365,6 +365,17 @@ class Database(openerpweb.Controller): class Session(openerpweb.Controller): _cp_path = "/web/session" + @openerpweb.jsonrequest + def get_session_info(self, req): + return { + "session_id": req.session_id, + "uid": req.session._uid, + "context": req.session.get_context() if req.session._uid else {}, + "db": req.session._db, + "login": req.session._login, + "openerp_entreprise": req.session.openerp_entreprise(), + } + @openerpweb.jsonrequest def authenticate(self, req, db, login, password, base_location=None): wsgienv = req.httprequest.environ @@ -376,24 +387,8 @@ class Session(openerpweb.Controller): user_agent="%s / %s" % (release.name, release.version), ) req.session.authenticate(db, login, password, env) - ctx = req.session.get_context() if req.session._uid else {} - return { - "session_id": req.session_id, - "uid": req.session._uid, - "context": ctx, - "db": req.session._db, - "login": req.session._login - } - - @openerpweb.jsonrequest - def get_session_info(self, req): - return { - "uid": req.session._uid, - "context": req.session.get_context() if req.session._uid else False, - "db": req.session._db, - "login": req.session._login - } + return self.get_session_info(req) @openerpweb.jsonrequest def change_password (self,req,fields): diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 19ac5e3d8a6..39297d892f4 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1888,6 +1888,25 @@ ul.oe-arrow-list li.oe-arrow-list-selected .oe-arrow-list-after { display: block; } +/* Dialog traceback cases */ +.openerp .oe_error_detail{ + display: block; +} +.openerp .oe_error_send{ + display:block; +} +.openerp .oe_fielddiv{ + display:inline-block; + width:100%; +} +.openerp .oe_fielddiv input[type=text],textarea{ + width:100%; +} +/* for Alignment center */ +.openerp .oe_centeralign{ + text-align:center; +} + .openerp .oe_applications_tiles { color: #4C4C4C; text-shadow: #EEE 0 1px 0; diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 015281a7a09..70f70c7ec4e 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -167,7 +167,7 @@ openerp.web.CrashManager = openerp.web.CallbackEnabled.extend({ } }, on_managed_error: function(error) { - $('
' + QWeb.render('DialogWarning', {error: error}) + '
').dialog({ + $('
' + QWeb.render('CrashManagerWarning', {error: error}) + '
').dialog({ title: "OpenERP " + _.str.capitalize(error.type), buttons: [ {text: _t("Ok"), click: function() { $(this).dialog("close"); }} @@ -175,15 +175,42 @@ openerp.web.CrashManager = openerp.web.CallbackEnabled.extend({ }); }, on_traceback: function(error) { + var self = this; + var buttons = {}; + if (openerp.connection.openerp_entreprise) { + buttons[_t("Send OpenERP Enterprise Report")] = function() { + $this = $(this); + var issuename = $('#issuename').val(); + var explanation = $('#explanation').val(); + var remark = $('#remark').val(); + // Call the send method from server to send mail with details + new openerp.web.DataSet(self, 'publisher_warranty.contract').call_and_eval('send', [error.data,explanation,remark,issuename]).then(function(result){ + if (result === false) { + alert('There was a communication error.') + } else { + $this.dialog('close'); + } + }); + }; + buttons[_t("Dont send")] = function() { + $(this).dialog("close"); + }; + } else { + buttons[_t("Ok")] = function() { + $(this).dialog("close"); + }; + } var dialog = new openerp.web.Dialog(this, { - title: "OpenERP " + _.str.capitalize(error.type), + title: "OpenERP " + _.str.capitalize(this.error.type), autoOpen: true, - buttons: [ - {text: _t("Ok"), click: function() { $(this).dialog("close"); }} - ] + width: '80%', + height: '50%', + min_width: '800px', + min_height: '600px', + buttons: buttons }).start(); - dialog.$element.html(QWeb.render('DialogTraceback', {error: error})); - } + dialog.$element.html(QWeb.render('CrashManagerError', {session: openerp.connection, error: error})); + }, }); openerp.web.Loading = openerp.web.Widget.extend(/** @lends openerp.web.Loading# */{ @@ -1084,6 +1111,10 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie self.action_manager = new openerp.web.ActionManager(self); self.action_manager.appendTo($("#oe_app")); self.bind_hashchange(); + if (!self.session.openerp_entreprise) { + self.$element.find('.oe_footer_powered').append(' - Unsupported/Community Version'); + $('title').html('OpenERP - Usupported/Community Version'); + } }); }, do_reload: function() { diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index 066e904a8df..646b71834c9 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -373,6 +373,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. this.username = false; this.user_context= {}; this.db = false; + this.openerp_entreprise = false; this.module_list = []; this.module_loaded = {"web": true}; this.context = {}; @@ -549,7 +550,8 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. db: result.db, username: result.login, uid: result.uid, - user_context: result.context + user_context: result.context, + openerp_entreprise: result.openerp_entreprise }); var deferred = self.do_load_qweb(['/web/webclient/qweb']); if(self.session_is_valid()) { @@ -574,7 +576,8 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. db: result.db, username: result.login, uid: result.uid, - user_context: result.context + user_context: result.context, + openerp_entreprise: result.openerp_entreprise }); if (!volatile) { self.set_cookie('session_id', self.session_id); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index a6f9be9b128..837e2eae1f9 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -247,6 +247,54 @@ + + + + + + +
+

+ + var message = d.message ? d.message : d.error.data.fault_code; + d.html_error = context.engine.tools.html_escape(message) + .replace(/\n/g, '
'); +
+ +

+
+
+ + + Your version of OpenERP is unsupported. Support & maintenance services are available here: OpenERP Entreprise. + + +
+
+
OpenERP Enterprise Contract.
+

Your report will be sent to the OpenERP Enterprise team.

+
+
+ +


+
+
+ +


+
+
+ +
+
+

+
+
+
+
+
+
+
+ - - - - - - -
-

- - var message = d.message ? d.message : d.error.data.fault_code; - d.html_error = context.engine.tools.html_escape(message) - .replace(/\n/g, '
'); -
- -

-
-
- -
-
-
-
diff --git a/addons/web_process/static/src/xml/web_process.xml b/addons/web_process/static/src/xml/web_process.xml index 5364157f1d2..4361b02164a 100644 --- a/addons/web_process/static/src/xml/web_process.xml +++ b/addons/web_process/static/src/xml/web_process.xml @@ -34,7 +34,7 @@ - Support / Publisher Warranty + Support / OpenERP Enterprise Get the OpenERP Warranty