From 0b508d66fe8b4b0fb70f22a1f3fee5887913ad06 Mon Sep 17 00:00:00 2001 From: "RGA(OpenERP)" <> Date: Fri, 12 Oct 2012 19:23:42 +0530 Subject: [PATCH 01/10] [IMP] imporve code + usability bzr revid: rgaopenerp-20121012135342-hjj8slov7yvfwal0 --- addons/google_docs/__openerp__.py | 1 + addons/google_docs/static/src/js/gdocs.js | 30 +++++++++------------ addons/google_docs/static/src/xml/gdocs.xml | 8 ++++++ 3 files changed, 22 insertions(+), 17 deletions(-) create mode 100644 addons/google_docs/static/src/xml/gdocs.xml diff --git a/addons/google_docs/__openerp__.py b/addons/google_docs/__openerp__.py index 8b9a4123aa9..716a603043d 100644 --- a/addons/google_docs/__openerp__.py +++ b/addons/google_docs/__openerp__.py @@ -28,6 +28,7 @@ 'installable': True, 'auto_install': False, 'js': ['static/src/js/gdocs.js'], + 'qweb': ['static/src/xml/gdocs.xml'], 'data': [ 'security/ir.model.access.csv', 'res_config_user_view.xml' diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index bcfd24f8c0d..c2c0ded407b 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -1,28 +1,22 @@ openerp.google_docs = function(instance, m) { -var _t = instance.web._t; +var QWeb = instance.web.qweb, + _t = instance.web._t; instance.web.Sidebar = instance.web.Sidebar.extend({ - on_attachments_loaded: function(attachments) { - var self = this; - self._super(attachments); - // if attachment contains a google doc url do nothing - // else display a button to create a google doc - var flag = false; - _.each(attachments, function(i) { - if (i.url && i.url.match('/docs.google.com/')) { flag = true; } + redraw: function() { + var self = this; + this._super.apply(this, arguments); + self.$el.find('.oe_sidebar_add_attachment').after(QWeb.render('Google_doc', {widget: self})) + self.$el.find('.oe_sidebar_add_google_doc').on('click', function (e) { + self.on_google_doc(); }); - if (! flag) { - this.add_items('files', [ - { label: _t('Add Google Doc...'), callback: self.on_google_doc }, - ]); - } }, on_google_doc: function() { var self = this; var form = self.getParent(); form.sidebar_context().then(function (context) { var ds = new instance.web.DataSet(this, 'ir.attachment', context); - ds.call('google_doc_get', [form.dataset.model, [form.datarecord.id], context], function(r) { + def = ds.call('google_doc_get', [form.dataset.model, [form.datarecord.id], context], function(r) { if (r == 'False') { var params = { error: response, @@ -33,8 +27,10 @@ var _t = instance.web._t; modal: true, }); } - form.reload(); - }); + + }).done(function(){ + form.reload(); + }); }) } }) diff --git a/addons/google_docs/static/src/xml/gdocs.xml b/addons/google_docs/static/src/xml/gdocs.xml new file mode 100644 index 00000000000..85a3b3f8be0 --- /dev/null +++ b/addons/google_docs/static/src/xml/gdocs.xml @@ -0,0 +1,8 @@ + + + + +
  • Add Google Doc...
  • +
    +
    \ No newline at end of file From 2c6281b4fb1c1512c4bdeb5e70c7e17fd73c5a67 Mon Sep 17 00:00:00 2001 From: Vijaykumar Baladaniya Date: Mon, 15 Oct 2012 11:41:28 +0530 Subject: [PATCH 02/10] Improve field size and make required field. bzr revid: vba@tinyerp.com-20121015061128-in7l3ncrld2yc7kf --- addons/google_docs/google_docs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index f1477f9c7f2..76530c1290c 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -135,7 +135,7 @@ class config(osv.osv): _columns = { 'model_id': fields.many2one('ir.model', 'Model', required=True), - 'gdocs_resource_id': fields.char('Google Resource ID to Use as Template', size=64,help=''' + 'gdocs_resource_id': fields.char('Google Resource ID to Use as Template', size=256, help=''' This is the id of the template document, on google side. You can find it thanks to its URL: *for a text document with url like `https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is `document:123456789` *for a spreadsheet document with url like `https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, the ID is `spreadsheet:123456789` @@ -143,7 +143,7 @@ This is the id of the template document, on google side. You can find it thanks *for a drawing document with url like `https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`, the ID is `drawings:123456789` ... '''), - 'name_template': fields.char('Google Doc Name Pattern', size=64, help='Choose how the new google docs will be named, on google side'), + 'name_template': fields.char('Google Doc Name Pattern', size=64, help='Choose how the new google docs will be named, on google side', required=True), } _defaults = { From ec017acc0787793610e419472fefbc93c05cd46e Mon Sep 17 00:00:00 2001 From: Vijaykumar Baladaniya Date: Mon, 15 Oct 2012 12:44:27 +0530 Subject: [PATCH 03/10] [IMP]Improve code. bzr revid: vba@tinyerp.com-20121015071427-kgi4rlcqy6pwx8u9 --- addons/google_docs/google_docs.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 47029e78210..cdae5ab0399 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -125,7 +125,10 @@ class google_docs_ir_attachment(osv.osv): google_docs_config = pool_gdoc_config.search(cr, uid, [('model_id', '=', res_model)], context=context) if google_docs_config: name_gdocs = pool_gdoc_config.browse(cr, uid, google_docs_config, context=context)[0].name_template + try: name_gdocs = name_gdocs % model_fields_dic + except: + raise osv.except_osv(_('Key Error!'), _("Your Google Doc Name Pattern is not correct.")) google_template_id = pool_gdoc_config.browse(cr, uid, google_docs_config[0], context=context).gdocs_resource_id google_document = pool_ir_attachment.copy_gdoc(cr, uid, res_model, res_id, name_gdocs, google_template_id, context=context) else: @@ -138,7 +141,7 @@ class config(osv.osv): _columns = { 'model_id': fields.many2one('ir.model', 'Model', required=True), - 'gdocs_resource_id': fields.char('Google Resource ID to Use as Template', size=256, help=''' + 'gdocs_resource_id': fields.char('Google Resource ID to Use as Template', size=64, help=''' This is the id of the template document, on google side. You can find it thanks to its URL: *for a text document with url like `https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is `document:123456789` *for a spreadsheet document with url like `https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, the ID is `spreadsheet:123456789` From 66f00492b140566fa136c5ef55cd95dbb362d1ec Mon Sep 17 00:00:00 2001 From: Vijaykumar Baladaniya Date: Mon, 15 Oct 2012 13:08:03 +0530 Subject: [PATCH 04/10] [IMP]Improve message. bzr revid: vba@tinyerp.com-20121015073803-vr85y6d1n03al7u2 --- addons/google_docs/google_docs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index cdae5ab0399..7be713f4bbb 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -128,7 +128,7 @@ class google_docs_ir_attachment(osv.osv): try: name_gdocs = name_gdocs % model_fields_dic except: - raise osv.except_osv(_('Key Error!'), _("Your Google Doc Name Pattern is not correct.")) + raise osv.except_osv(_('Key Error!'), _("Your Google Doc Name Pattern's key does not found in object.")) google_template_id = pool_gdoc_config.browse(cr, uid, google_docs_config[0], context=context).gdocs_resource_id google_document = pool_ir_attachment.copy_gdoc(cr, uid, res_model, res_id, name_gdocs, google_template_id, context=context) else: From 9932152fae4904e994c74a47f149615b3ca39104 Mon Sep 17 00:00:00 2001 From: "RGA(OpenERP)" <> Date: Tue, 16 Oct 2012 13:00:53 +0530 Subject: [PATCH 05/10] [IMP] add counter on google doc when more than one document attached bzr revid: rgaopenerp-20121016073053-nd6s90drak6crs0a --- addons/google_docs/static/src/js/gdocs.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index a1704cde69c..f293447f2ea 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -3,6 +3,13 @@ var QWeb = instance.web.qweb, _t = instance.web._t; instance.web.Sidebar = instance.web.Sidebar.extend({ + on_attachments_loaded: function(attachments) { + var self = this; + _.chain(attachments) + .filter(function(attachment){ if (attachment.name ==='Google Doc') return true}) + .map(function(attachment, i){ attachment.name = _.str.sprintf(_t("%s (%s)"), attachment.name, i+1)}) + self._super(attachments); + }, redraw: function() { var self = this; this._super.apply(this, arguments); From 7368b52a95524897be9bc511035ad5a6ba28c3e4 Mon Sep 17 00:00:00 2001 From: "RGA(OpenERP)" <> Date: Tue, 16 Oct 2012 17:12:59 +0530 Subject: [PATCH 06/10] [IMP] counter should be apply on multiple section with same name attribute bzr revid: rgaopenerp-20121016114259-9g496xqj8ldal1vk --- addons/google_docs/static/src/js/gdocs.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index f293447f2ea..a0cc7353f3e 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -1,13 +1,18 @@ openerp.google_docs = function(instance, m) { var QWeb = instance.web.qweb, _t = instance.web._t; - +//{} instance.web.Sidebar = instance.web.Sidebar.extend({ on_attachments_loaded: function(attachments) { var self = this; _.chain(attachments) - .filter(function(attachment){ if (attachment.name ==='Google Doc') return true}) - .map(function(attachment, i){ attachment.name = _.str.sprintf(_t("%s (%s)"), attachment.name, i+1)}) + .groupBy(function(attachment) { return attachment.name}) + .each(function(attachment){ + if(attachment.length > 1) + _.map(attachment, function(attachment, i){ + attachment.name = _.str.sprintf(_t("%s (%s)"), attachment.name, i+1) + }) + }) self._super(attachments); }, redraw: function() { From 067fa7fe7cd631a4cb50d494c7d99c050dd7fd28 Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Wed, 17 Oct 2012 12:16:15 +0530 Subject: [PATCH 07/10] [FIX] bzr revid: hmo@tinyerp.com-20121017064615-gaodqeqwx25rgt34 --- addons/google_docs/google_docs.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 7be713f4bbb..6e839969998 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -125,10 +125,10 @@ class google_docs_ir_attachment(osv.osv): google_docs_config = pool_gdoc_config.search(cr, uid, [('model_id', '=', res_model)], context=context) if google_docs_config: name_gdocs = pool_gdoc_config.browse(cr, uid, google_docs_config, context=context)[0].name_template - try: - name_gdocs = name_gdocs % model_fields_dic - except: - raise osv.except_osv(_('Key Error!'), _("Your Google Doc Name Pattern's key does not found in object.")) + try: + name_gdocs = name_gdocs % model_fields_dic + except: + raise osv.except_osv(_('Key Error!'), _("Your Google Doc Name Pattern's key does not found in object.")) google_template_id = pool_gdoc_config.browse(cr, uid, google_docs_config[0], context=context).gdocs_resource_id google_document = pool_ir_attachment.copy_gdoc(cr, uid, res_model, res_id, name_gdocs, google_template_id, context=context) else: From fee84c9c5d234748912d5ea9b478e72b8986a933 Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Wed, 17 Oct 2012 12:22:24 +0530 Subject: [PATCH 08/10] [FIX] bzr revid: hmo@tinyerp.com-20121017065224-go11e1c1rmvr60vy --- addons/google_docs/static/src/js/gdocs.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index fb9e95c0b63..a7d9074e2c8 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -1,7 +1,7 @@ openerp.google_docs = function(instance, m) { -var QWeb = instance.web.qweb, - _t = instance.web._t; -//{} +var _t = instance.web._t, + QWeb = instance.web.qweb; + instance.web.Sidebar = instance.web.Sidebar.extend({ on_attachments_loaded: function(attachments) { var self = this; From 99c6701ba55576f0bc0cf2ad03d27cafa1f8a2c3 Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Wed, 17 Oct 2012 12:40:08 +0530 Subject: [PATCH 09/10] [IMP] document: display name with number if more than one attachment has same number bzr revid: hmo@tinyerp.com-20121017071008-1khlntrrdi7cxgao --- addons/document/static/src/js/document.js | 17 +++++++++++++++-- addons/google_docs/static/src/js/gdocs.js | 16 ++-------------- addons/google_docs/static/src/xml/gdocs.xml | 4 ++-- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/addons/document/static/src/js/document.js b/addons/document/static/src/js/document.js index 2dde2696c81..e4bce2da76e 100644 --- a/addons/document/static/src/js/document.js +++ b/addons/document/static/src/js/document.js @@ -5,6 +5,19 @@ openerp.document = function (instance) { this._super.apply(this, arguments); this.sections.splice(1, 0, { 'name' : 'files', 'label' : _t('Attachment(s)'), }); this.items['files'] = []; - } + }, + on_attachments_loaded: function(attachments) { + //to display number in name if more then one attachment which has same name. + var self = this; + _.chain(attachments) + .groupBy(function(attachment) { return attachment.name}) + .each(function(attachment){ + if(attachment.length > 1) + _.map(attachment, function(attachment, i){ + attachment.name = _.str.sprintf(_t("%s (%s)"), attachment.name, i+1) + }) + }) + self._super(attachments); + }, }); -}; \ No newline at end of file +}; diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index a7d9074e2c8..1cdb22aeb41 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -2,23 +2,11 @@ openerp.google_docs = function(instance, m) { var _t = instance.web._t, QWeb = instance.web.qweb; - instance.web.Sidebar = instance.web.Sidebar.extend({ - on_attachments_loaded: function(attachments) { - var self = this; - _.chain(attachments) - .groupBy(function(attachment) { return attachment.name}) - .each(function(attachment){ - if(attachment.length > 1) - _.map(attachment, function(attachment, i){ - attachment.name = _.str.sprintf(_t("%s (%s)"), attachment.name, i+1) - }) - }) - self._super(attachments); - }, + instance.web.Sidebar.include({ redraw: function() { var self = this; this._super.apply(this, arguments); - self.$el.find('.oe_sidebar_add_attachment').after(QWeb.render('Google_doc', {widget: self})) + self.$el.find('.oe_sidebar_add_attachment').after(QWeb.render('AddGoogleDocumentItem', {widget: self})) self.$el.find('.oe_sidebar_add_google_doc').on('click', function (e) { self.on_google_doc(); }); diff --git a/addons/google_docs/static/src/xml/gdocs.xml b/addons/google_docs/static/src/xml/gdocs.xml index 85a3b3f8be0..0c8d9c3b01f 100644 --- a/addons/google_docs/static/src/xml/gdocs.xml +++ b/addons/google_docs/static/src/xml/gdocs.xml @@ -2,7 +2,7 @@ - +
  • Add Google Doc...
  • -
    \ No newline at end of file + From 3da067914a9f2e3574213f2aba492c45bfb55d8d Mon Sep 17 00:00:00 2001 From: TTA <> Date: Fri, 19 Oct 2012 16:10:20 +0530 Subject: [PATCH 10/10] Fixed list view issue. bzr revid: vba@tinyerp.com-20121019104020-9tz7t6h7xwa4dali --- addons/google_docs/google_docs.py | 3 +- addons/google_docs/static/src/js/gdocs.js | 35 ++++++++++++----------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 6e839969998..f0f6f22a7c5 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -114,7 +114,8 @@ class google_docs_ir_attachment(osv.osv): a length of 1 element only (batch processing is not supported in the code, though nothing really prevent it) :return: the google document object created ''' - assert len(ids) == 1, 'Creating google docs may only be done by one at a time' + if len(ids) != 1: + raise osv.except_osv(_('Google Docs Error!'), _("Creating google docs may only be done by one at a time.")) res_id = ids[0] pool_ir_attachment = self.pool.get('ir.attachment') pool_gdoc_config = self.pool.get('google.docs.config') diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index 1cdb22aeb41..6e8ff59f377 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -13,24 +13,27 @@ var _t = instance.web._t, }, on_google_doc: function() { var self = this; - var form = self.getParent(); - form.sidebar_context().then(function (context) { - var ds = new instance.web.DataSet(this, 'ir.attachment', context); - ds.call('google_doc_get', [form.dataset.model, [form.datarecord.id], context]).then(function(r) { - if (r == 'False') { - var params = { - error: response, - message: _t("The user google credentials are not set yet. Contact your administrator for help.") + var view = self.getParent(); + var ids = ( view.fields_view.type != "form" )? view.groups.get_selection().ids : [ view.datarecord.id ]; + if( !_.isEmpty(ids) ){ + view.sidebar_context().then(function (context) { + var ds = new instance.web.DataSet(this, 'ir.attachment', context); + ds.call('google_doc_get', [view.dataset.model, ids, context]).then(function(r) { + if (r == 'False') { + var params = { + error: response, + message: _t("The user google credentials are not set yet. Contact your administrator for help.") + } + $(openerp.web.qweb.render("DialogWarning", params)).dialog({ + title: _t("User Google credentials are not yet set."), + modal: true, + }); } - $(openerp.web.qweb.render("DialogWarning", params)).dialog({ - title: _t("User Google credentials are not yet set."), - modal: true, - }); - } - }).done(function(){ - form.reload(); + }).done(function(){ + view.reload(); + }); }); - }); + } } }); };