Bhumi Thakkar (Open ERP) has proposed merging
lp:~openerp-dev/openerp-web/server-exception-bth into lp:openerp-web.
Requested reviews:
OpenERP R&D Web Team (openerp-dev-web)
For more details, see:
https://code.launchpad.net/~openerp-dev/openerp-web/server-exception-bth/+merge/83368
--
https://code.launchpad.net/~openerp-dev/openerp-web/server-exception-bth/+merge/83368
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openerp-web/server-exception-bth.
=== modified file 'addons/web/controllers/main.py'
--- addons/web/controllers/main.py 2011-11-24 15:46:01 +0000
+++ addons/web/controllers/main.py 2011-11-25 05:08:24 +0000
@@ -268,7 +268,7 @@
params['db_lang'],
params['create_admin_pwd']
)
-
+
try:
return req.session.proxy("db").create(*create_attrs)
except xmlrpclib.Fault, e:
@@ -641,6 +641,7 @@
# make a tree using parent_id
menu_items_map = dict((menu_item["id"], menu_item) for menu_item in menu_items)
+
for menu_item in menu_items:
if menu_item['parent_id']:
parent = menu_item['parent_id'][0]
=== modified file 'addons/web/static/src/css/base.css'
--- addons/web/static/src/css/base.css 2011-11-23 10:05:42 +0000
+++ addons/web/static/src/css/base.css 2011-11-25 05:08:24 +0000
@@ -1544,3 +1544,12 @@
display: block;
}
+/* Dialog traceback cases */
+.expandcase {
+ background: transparent url(/web/static/src/img/expand.gif) 0 50% no-repeat;
+ margin-top:10px;
+}
+.collapsecase {
+ background: transparent url(/web/static/src/img/collapse.gif) 0 50% no-repeat;
+ margin-top:10px;
+}
\ No newline at end of file
=== modified file 'addons/web/static/src/js/chrome.js'
--- addons/web/static/src/js/chrome.js 2011-11-22 10:19:50 +0000
+++ addons/web/static/src/js/chrome.js 2011-11-25 05:08:24 +0000
@@ -167,23 +167,60 @@
});
},
on_traceback: function(error) {
+ this.servererror = new openerp.web.ServerError(error);
+ this.servererror.start();
+ }
+});
+openerp.web.ServerError = openerp.web.Widget.extend({
+ template: 'DialogTraceback',
+ init: function(parent) {
+ this._super();
+ this.parent = parent;
+ },
+ start: function() {
+ var self = this;
var dialog = new openerp.web.Dialog(this, {
- title: "OpenERP " + _.str.capitalize(error.type),
+ title: "OpenERP " + _.str.capitalize(this.parent.type),
autoOpen: true,
- width: '90%',
- height: '90%',
+ width: '80%',
+ height: '80%',
min_width: '800px',
- min_height: '600px',
+ min_height: '800px',
buttons: {
Ok: function() {
$(this).dialog("close");
}
}
}).start();
- dialog.$element.html(QWeb.render('DialogTraceback', {error: error}));
+ dialog.$element.html(QWeb.render('DialogTraceback', {error: this.parent}));
+ dialog.$element.find('#case1').click(function(){
+ dialog.$element.find('#showerror').toggle().prev().toggleClass("expandcase collapsecase");
+ });
+ dialog.$element.find('#case2').click(function(){
+
+ new openerp.web.DataSetSearch(self, 'publisher_warranty.contract').call_and_eval('status', []).then(function(res) {
+ var hasacontract = res.status == "full";
+ if(!hasacontract){
+ dialog.$element.find('#case2').find('a').attr({href:'http://www.openerp.com/support-or-publisher-warranty-contract',target: "_blank"});
+ dialog.$element.find('#case2').find('a').css('text-decoration','none');
+ }else{
+ dialog.$element.find('#fixerror').toggle().prev().toggleClass("expandcase collapsecase");
+ dialog.$element.find('#fixerror').find('#tracebacksend').click(function(){
+ new openerp.web.DataSetSearch(self, 'publisher_warranty.contract').call_and_eval('status', []).then(function(res) {
+ var hasacontract = res.status == "full";
+ if(hasacontract){
+ var issuename = $('#issuename').val();
+ var explanation = $('#explanation').val();
+ var remark = $('#remark').val();
+ new openerp.web.DataSetSearch(self, 'publisher_warranty.contract').call_and_eval('send', [self.parent.data,explanation,remark,issuename]);
+ }
+ });
+ });
+ }
+ });
+ });
}
});
-
openerp.web.Loading = openerp.web.Widget.extend(/** @lends openerp.web.Loading# */{
template: 'Loading',
/**
@@ -500,7 +537,7 @@
openerp.web.Login = openerp.web.Widget.extend(/** @lends openerp.web.Login# */{
remember_credentials: true,
-
+
template: "Login",
identifier_prefix: 'oe-app-login-',
/**
@@ -524,7 +561,7 @@
this.selected_password = localStorage.getItem('last_password_login_success');
}
}
-
+
var qs = jQuery.deparam(jQuery.param.querystring());
if (qs.db) {
this.selected_db = qs.db;
@@ -548,7 +585,7 @@
this.rpc("/web/database/get_list", {}, function(result) {
self.set_db_list(result.db_list);
- },
+ },
function(error, event) {
if (error.data.fault_code === 'AccessDenied') {
event.preventDefault();
@@ -999,7 +1036,6 @@
this.menu = new openerp.web.Menu(this, "oe_menu", "oe_secondary_menu");
this.menu.on_action.add(this.on_menu_action);
-
this.url_internal_hashchange = false;
this.url_external_hashchange = false;
jQuery(window).bind('hashchange', this.on_url_hashchange);
=== modified file 'addons/web/static/src/js/data.js'
--- addons/web/static/src/js/data.js 2011-11-22 10:18:13 +0000
+++ addons/web/static/src/js/data.js 2011-11-25 05:08:24 +0000
@@ -300,8 +300,8 @@
* @param {Function} callback function called with read_slice result
* @returns {$.Deferred}
*/
- read_slice: function (fields, options, callback) {
- return null;
+ read_slice: function (fields, options, callback) {
+ return null;
},
/**
* Reads the current dataset record (from its index)
@@ -448,7 +448,7 @@
return this.call_and_eval('name_get', [ids, this.get_context()], null, 1, callback);
},
/**
- *
+ *
* @param {String} name name to perform a search for/on
* @param {Array} [domain=[]] filters for the objects returned, OpenERP domain
* @param {String} [operator='ilike'] matching operator to use with the provided name value
=== modified file 'addons/web/static/src/js/view_form.js'
--- addons/web/static/src/js/view_form.js 2011-11-24 13:46:27 +0000
+++ addons/web/static/src/js/view_form.js 2011-11-25 05:08:24 +0000
@@ -155,6 +155,7 @@
}
},
on_record_loaded: function(record) {
+
var self = this,
deferred_stack = $.Deferred.queue();
if (!record) {
@@ -543,6 +544,7 @@
return $.Deferred().reject();
} else {
this.datarecord.id = r.result;
+
if (!prepend_on_create) {
this.dataset.ids.push(this.datarecord.id);
this.dataset.index = this.dataset.ids.length - 1;
@@ -2084,7 +2086,7 @@
},
load_views: function() {
var self = this;
-
+
var modes = this.node.attrs.mode;
modes = !!modes ? modes.split(",") : ["tree"];
var views = [];
@@ -2109,7 +2111,7 @@
views.push(view);
});
this.views = views;
-
+
this.viewmanager = new openerp.web.ViewManager(this, this.dataset, views);
this.viewmanager.registry = openerp.web.views.clone({
list: 'openerp.web.form.One2ManyListView',
@@ -2393,7 +2395,7 @@
this.dataset.on_unlink.add_last(function(ids) {
self.on_ui_change();
});
-
+
this.is_setted.then(function() {
self.load_view();
});
=== modified file 'addons/web/static/src/js/view_list_editable.js'
--- addons/web/static/src/js/view_list_editable.js 2011-11-23 09:33:13 +0000
+++ addons/web/static/src/js/view_list_editable.js 2011-11-25 05:08:24 +0000
@@ -292,7 +292,6 @@
var edited_record = self.records.get(self.edition_id),
next_record = self.records.at(
self.records.indexOf(edited_record) + 1);
-
$.when(
self.handle_onwrite(self.edition_id),
self.cancel_pending_edition().then(function () {
@@ -406,7 +405,7 @@
});
list_form_widgets.add(key, new_path);
});
-
+
openerp.web.ListEditableFormView = openerp.web.FormView.extend({
init_view: function() {},
_render_and_insert: function () {
=== modified file 'addons/web/static/src/xml/base.xml'
--- addons/web/static/src/xml/base.xml 2011-11-24 13:46:27 +0000
+++ addons/web/static/src/xml/base.xml 2011-11-25 05:08:24 +0000
@@ -1332,9 +1332,47 @@
</table>
</t>
<t t-name="DialogTraceback">
- <pre><t t-esc="error.message"/></pre>
- <hr/>
- <pre><t t-esc="error.data.debug"/></pre>
+ <div style="width:100%">
+ <div id="case1" class="expandcase">
+ <span style="padding-left:18px;margin-top:5px;"><t t-esc="'Let me fix it'" /></span>
+ </div>
+ <div id="showerror" style="display:none;border:1px solid #999999;overflow:auto;">
+ <pre><t t-esc="error.message"/></pre>
+ <hr/>
+ <pre><t t-esc="error.data.debug"/></pre>
+ </div>
+ </div>
+ <div style="width:100%">
+ <div id="case2" class="expandcase">
+ <span style="padding-left:18px;margin-top:5px;"><a><t t-esc="'Fix it for me'" /></a></span>
+ </div>
+ <div id="fixerror" style="display:none">
+ <table style="width:80%;text-align:center;">
+ <tr>
+ <td colspan="2" style="text-align:center;"><b>Publisher Warranty Contract.</b></td>
+ </tr>
+ <tr>
+ <td colspan="2" style="text-align:center;">Your request will be sent to OpenERP and publisher warranty team will reply you shortly.</td>
+ </tr>
+ <tr>
+ <td style="text-align:right;">Summary :</td>
+ <td><input id="issuename" type="text" size="15" style="width:100%"/></td>
+ </tr>
+ <tr>
+ <td style="text-align:right;">Description :</td>
+ <td><textarea id="explanation" rows="6" style="width:100%"></textarea></td>
+ </tr>
+ <tr>
+ <td style="text-align:right;">What you did :</td>
+ <td><textarea id="remark" rows="6" style="width:100%"></textarea></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td><input id="tracebacksend" type="button" value="Send To Publisher Warranty Team" /></td>
+ </tr>
+ </table>
+ </div>
+ </div>
</t>
<t t-name="SelectCreatePopup">
<div t-att-id="element_id">
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp