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

Reply via email to