From fefd25861a820d489feeb85f665c79d88b017c24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Fri, 24 Feb 2012 11:52:15 +0100 Subject: [PATCH 001/375] [IMP] new module google_docs bzr revid: rlo@openerp.com-20120224105215-clev3ip7n8zhb3kt --- addons/google_docs/__init__.py | 1 + addons/google_docs/__openerp__.py | 6 ++ addons/google_docs/google_docs.py | 119 ++++++++++++++++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100644 addons/google_docs/__init__.py create mode 100644 addons/google_docs/__openerp__.py create mode 100644 addons/google_docs/google_docs.py diff --git a/addons/google_docs/__init__.py b/addons/google_docs/__init__.py new file mode 100644 index 00000000000..dd6285502c0 --- /dev/null +++ b/addons/google_docs/__init__.py @@ -0,0 +1 @@ +import google_docs diff --git a/addons/google_docs/__openerp__.py b/addons/google_docs/__openerp__.py new file mode 100644 index 00000000000..991a3e07e2c --- /dev/null +++ b/addons/google_docs/__openerp__.py @@ -0,0 +1,6 @@ +{ + 'name': 'Wiki', + 'version': '0.1', + 'depends': ['google_base_account'], + 'description': 'Module to attach a google document to any model.' +} diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py new file mode 100644 index 00000000000..a2693ac95a7 --- /dev/null +++ b/addons/google_docs/google_docs.py @@ -0,0 +1,119 @@ +from osv import osv, fields +import gdata.docs.data +import gdata.docs.client +from gdata.client import RequestError + +class google_docs(osv.osv): + _name = 'google.docs' + + _table = 'google_docs_templates' + _columns = { + 'id': fields.integer('ID', readonly=True), + 'model': fields.many2one('ir.model', 'Model'), + 'gdocs_res_id': fields.char('Google resource ID', size=64, translate=False) + } + + edit_url_template = 'https://docs.google.com/Edit?docid=%s' + prefix_gdoc_id_res = 'document:' + + def copy_gdoc(self, cr, uid, model, context=None): + '''Associate a copy of the gdoc identified by 'gdocs_res_id' to the current entity. + @param cr: the current row from the database cursor. + @param uid: the current user ID, for security checks. + @param model: the current model name. + @param context: a standard dictionary for contextual values. + @return the url of the copy itself. + @return -1 if the template hasn't been assigned yet. + @return -2 if the google_base_account hasn't been configured yet.''' + + if context==None: + context={} + + # check template for the current model + model_obj = self.pool.get(model) + res_gdocs_obj = self.pool.get('google.docs') + domain = [('model' , '=', model_obj)] + gdoc = res_gdocs_obj.search(cr,uid,domain,context=context) + if not gdoc: + return -1 + + # check google_base_account + users_obj = self.pool.get('res.users') + user = users_obj.browse(cr, uid, [uid])[0] + if not user.gmail_user or not user.gmail_password: + return -2 + + # copy the document + client = gdata.docs.client.DocsClient(source='openerp.com') + client.ssl = True + client.http_client.debug = False + client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') + resource = client.get_resource_by_id(gdoc.gdocs_res_id) + copied_resource = client.copy_resource(entry=resource, title=resource.title.text + ' (generated from OpenERP)') + + return self.edit_url_template % (copied_resource.resource_id.text,) + + def get_documents_list(self, cr, uid, context=None): + '''Return the list of google documents available at the user's account. + @param cr: the current row from the database cursor. + @param uid: the current user ID, for security checks. + @param context: a standard dictionary for contextual values. + @return a list with information about the documents in form of tuples (document_name, document_resource_id). + @return -2 if the google_base_account hasn't been configured yet.''' + + if context == None: + context = {} + + # check google_base_account + users_obj = self.pool.get('res.users') + user = users_obj.browse(cr, uid, [uid])[0] + if not user.gmail_user or not user.gmail_password: + return -2 + + # get the documents list + client = gdata.docs.client.DocsClient(source='openerp.com') + client.ssl = True + client.http_client.debug = False + client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') + + return map(lambda doc: (doc.title.text, doc.resource_id.text[len(prefix_gdoc_id_res):]), filter(lambda r: r.resource_id.text.startswith('document:'), client.get_all_resources())) + + + def set_model_document_template(self, cr, uid, model, resource_id, context=None): + '''Set the default document template for the specified model. This template doesn't have to be a google documents template itself, but just a document. + @param cr: current row for the database cursor. + @param uid: the current user ID, for security checks. + @param model: the current model name. + @param resource_id: resource_id associated to the chosen document. + @param context: a standard dictionary for contextual values. + @return 0 on successful execution. + @return -2 if the google_base_account hasn't been configured yet. + @retrurn -3 if the given resource_id doesn't exist in the user's google docs account. + ''' + + if context == None: + context = {} + + # check google_base_account + users_obj = self.pool.get('res.users') + user = users_obj.browse(cr, uid, [uid])[0] + if not user.gmail_user or not user.gmail_password: + return -2 + + # check resource_id + client = gdata.docs.client.DocsClient(source='openerp.com') + client.ssl = True + client.http_client.debug = False + client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') + try: + client.get_resource_by_id(resource_id) + except RequestError: + return -3 + + # set the model document template + model_template_id = self.create(cr, uid, + { 'model': self.pool.get(model), + 'gdocs_res_id': resource_id + }) + + return 0 From e4a58bf7c57a8c00a8c7451372bed96704f522d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Fri, 24 Feb 2012 12:03:09 +0100 Subject: [PATCH 002/375] [FIX] bzr revid: rlo@openerp.com-20120224110309-0hdmfu8vo918906q --- 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 a2693ac95a7..957fcbf0871 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -88,7 +88,7 @@ class google_docs(osv.osv): @param context: a standard dictionary for contextual values. @return 0 on successful execution. @return -2 if the google_base_account hasn't been configured yet. - @retrurn -3 if the given resource_id doesn't exist in the user's google docs account. + @return -3 if the given resource_id doesn't exist in the user's google docs account. ''' if context == None: From 9d28250005d879408ebbd73a05c8be40ee1a8105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Fri, 24 Feb 2012 14:30:15 +0100 Subject: [PATCH 003/375] [imp] bzr revid: rlo@openerp.com-20120224133015-2vt3gnkknnh2vrjd --- addons/google_docs/google_docs.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 957fcbf0871..46db3eb4448 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -2,6 +2,7 @@ from osv import osv, fields import gdata.docs.data import gdata.docs.client from gdata.client import RequestError +from gdata.docs.service import DOCUMENT_LABEL class google_docs(osv.osv): _name = 'google.docs' @@ -13,14 +14,16 @@ class google_docs(osv.osv): 'gdocs_res_id': fields.char('Google resource ID', size=64, translate=False) } + name_template = 'Sales order %s %s' edit_url_template = 'https://docs.google.com/Edit?docid=%s' - prefix_gdoc_id_res = 'document:' + prefix_gdoc_id_res = DOCUMENT_LABEL + ':' - def copy_gdoc(self, cr, uid, model, context=None): + def copy_gdoc(self, cr, uid, model, folder=None, context=None): '''Associate a copy of the gdoc identified by 'gdocs_res_id' to the current entity. @param cr: the current row from the database cursor. @param uid: the current user ID, for security checks. @param model: the current model name. + @param folder: folder in which to store the copy. @param context: a standard dictionary for contextual values. @return the url of the copy itself. @return -1 if the template hasn't been assigned yet. @@ -49,7 +52,7 @@ class google_docs(osv.osv): client.http_client.debug = False client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') resource = client.get_resource_by_id(gdoc.gdocs_res_id) - copied_resource = client.copy_resource(entry=resource, title=resource.title.text + ' (generated from OpenERP)') + copied_resource = client.copy_resource(entry=resource, title= self.name_template % (, model)) return self.edit_url_template % (copied_resource.resource_id.text,) @@ -117,3 +120,10 @@ class google_docs(osv.osv): }) return 0 + + +class google_docs_folder(osv.osv): + _name = 'google.docs.folder' + _columns = { + 'res_id': fields.char('GDocs resource id', size=64, translate=False), + } From 9eaa5de2aca09c44976d5472dbb66565038be494 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Fri, 24 Feb 2012 14:52:28 +0100 Subject: [PATCH 004/375] [fix] bzr revid: rlo@openerp.com-20120224135228-rurois3a83l50lu1 --- addons/google_docs/google_docs.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 46db3eb4448..538511b51c2 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -12,9 +12,9 @@ class google_docs(osv.osv): 'id': fields.integer('ID', readonly=True), 'model': fields.many2one('ir.model', 'Model'), 'gdocs_res_id': fields.char('Google resource ID', size=64, translate=False) + 'name_template': fields.char('Google resource ID', size=64, translate=False) } - name_template = 'Sales order %s %s' edit_url_template = 'https://docs.google.com/Edit?docid=%s' prefix_gdoc_id_res = DOCUMENT_LABEL + ':' @@ -32,6 +32,15 @@ class google_docs(osv.osv): if context==None: context={} + template_vars = { + 'db' : cr.dbname, + 'model' : model, + 'id' : id, + 'salt' : salt, + 'name' : '', + } + name_template = 'Sales order %s %s' + # check template for the current model model_obj = self.pool.get(model) res_gdocs_obj = self.pool.get('google.docs') From 2df3400a35696a0a95925edd1592c2467e9802a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Fri, 24 Feb 2012 14:53:15 +0100 Subject: [PATCH 005/375] [fix] bzr revid: rlo@openerp.com-20120224135315-31phn9wvp1meth03 --- 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 538511b51c2..d4f48edb91a 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -12,7 +12,7 @@ class google_docs(osv.osv): 'id': fields.integer('ID', readonly=True), 'model': fields.many2one('ir.model', 'Model'), 'gdocs_res_id': fields.char('Google resource ID', size=64, translate=False) - 'name_template': fields.char('Google resource ID', size=64, translate=False) + 'name_template': fields.char('GDoc name template', size=64, translate=False) } edit_url_template = 'https://docs.google.com/Edit?docid=%s' From 33c3e277b6b496f8aa1c5a22c244390e29a6fba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Fri, 24 Feb 2012 14:54:58 +0100 Subject: [PATCH 006/375] [fix] bzr revid: rlo@openerp.com-20120224135458-2bz5k9fyyjymylye --- 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 d4f48edb91a..0ad64124d04 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -88,7 +88,7 @@ class google_docs(osv.osv): client.http_client.debug = False client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') - return map(lambda doc: (doc.title.text, doc.resource_id.text[len(prefix_gdoc_id_res):]), filter(lambda r: r.resource_id.text.startswith('document:'), client.get_all_resources())) + return map(lambda doc: (doc.title.text, doc.resource_id.text[len(prefix_gdoc_id_res):]), filter(lambda r: r.resource_id.text.startswith(prefix_gdoc_id_res), client.get_all_resources())) def set_model_document_template(self, cr, uid, model, resource_id, context=None): From d680f6c1a16d8f1415b78c8de674c32b6949aba3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Fri, 24 Feb 2012 15:01:19 +0100 Subject: [PATCH 007/375] [fix] bzr revid: rlo@openerp.com-20120224140119-hoapkm5d13uietx1 --- addons/google_docs/google_docs.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 0ad64124d04..718952fba34 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -27,19 +27,20 @@ class google_docs(osv.osv): @param context: a standard dictionary for contextual values. @return the url of the copy itself. @return -1 if the template hasn't been assigned yet. - @return -2 if the google_base_account hasn't been configured yet.''' + @return -2 if the google_base_account hasn't been configured yet. + ''' if context==None: context={} - template_vars = { + template_vars = { 'db' : cr.dbname, 'model' : model, 'id' : id, 'salt' : salt, 'name' : '', } - name_template = 'Sales order %s %s' + name_template = 'Sales order %s %s' # check template for the current model model_obj = self.pool.get(model) @@ -71,7 +72,8 @@ class google_docs(osv.osv): @param uid: the current user ID, for security checks. @param context: a standard dictionary for contextual values. @return a list with information about the documents in form of tuples (document_name, document_resource_id). - @return -2 if the google_base_account hasn't been configured yet.''' + @return -2 if the google_base_account hasn't been configured yet. + ''' if context == None: context = {} From 38291a99acc380b8f5e4f17736f06dfe28815267 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Fri, 24 Feb 2012 15:39:23 +0100 Subject: [PATCH 008/375] commit bzr revid: al@openerp.com-20120224143923-pm9home907bxztqt --- addons/google_docs/google_docs.py | 56 +++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 718952fba34..8a48de0b05c 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -4,6 +4,62 @@ import gdata.docs.client from gdata.client import RequestError from gdata.docs.service import DOCUMENT_LABEL +# _columns = { +# 'id': fields.integer('ID', readonly=True), +# 'model': fields.many2one('ir.model', 'Model'), +# 'multiple': fields.boolean('Multiple'), +# 'gdocs_res_id': fields.char('Google resource ID', size=64, translate=False) +# +# } +# +## edit_url_template = 'https://docs.google.com/Edit?docid=%s' +## prefix_gdoc_id_res = 'document:' +# +# def google_docs_get(self, cr, uid, model, id): +# attachment = self.search(cr, uid, [('res_model', '=', model), ('res_id', '=', id), ('type', '=', 'url'), ('url', 'like', 'https://docs.oogle.com')]) +# if attachment: +# return self.read(cr, uid, attachment)[0]['url'] +# else: +# url = self.pad_generate_url(cr, uid, model, id) +# self.create(cr, uid, { +# 'res_model' : model, +# 'res_id' : id, +# 'type' : 'url', +# 'name' : 'Pad', +# 'url' : url, +# }) +# return url +# +# def generate_name(self, cr, uid, model, id): +# template_vars = { +# 'db' : cr.dbname, +# 'model' : model, +# 'id' : id, +# 'salt' : salt, +# 'name' : self.pool.get(model).name_get(cr,uid,[id])[0], +# } +# return pad_url_template % template_vars +# +# +# def button_add_google_docs_google_docs_add_doc(self, cr, uid, model, id): +# #pad_url_template = self.pool.get('res.users').browse(cr,uid,[uid])[0].company_id.pad_url_template +# #s = string.ascii_uppercase + string.digits +# #salt = ''.join([s[random.randint(0, len(s) - 1)] for i in range(8)]) +# +# # i lookup in the table google_docs.templates to check the policy +# +# # if multiple: 1 +# +# # if i find a template i will duplicate the template +# +# # else empty 'word' text +# +# # else +# # if no document exists do like 1 -^ +# # else +# # jumpt to the existing document +# + class google_docs(osv.osv): _name = 'google.docs' From 8876e8c045fdee003b13cf1befa5e9daa4b2ebae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Fri, 24 Feb 2012 16:02:34 +0100 Subject: [PATCH 009/375] [imp] button bzr revid: rlo@openerp.com-20120224150234-l1do7nj8576lfwcd --- addons/google_docs/res_company.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 addons/google_docs/res_company.xml diff --git a/addons/google_docs/res_company.xml b/addons/google_docs/res_company.xml new file mode 100644 index 00000000000..0324039c8f2 --- /dev/null +++ b/addons/google_docs/res_company.xml @@ -0,0 +1,16 @@ + + + + res.company.form.gdocs + res.company + form + + + + + + + + + + From fd914eb2e3e09fec08733989e5c8456d4516194a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Fri, 24 Feb 2012 16:29:20 +0100 Subject: [PATCH 010/375] [fix] bzr revid: rlo@openerp.com-20120224152920-vdi47f2k49kke2e0 --- addons/google_docs/google_docs.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 8a48de0b05c..90edb15b104 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -67,7 +67,7 @@ class google_docs(osv.osv): _columns = { 'id': fields.integer('ID', readonly=True), 'model': fields.many2one('ir.model', 'Model'), - 'gdocs_res_id': fields.char('Google resource ID', size=64, translate=False) + 'gdocs_res_id': fields.char('Google resource ID', size=64, translate=False), 'name_template': fields.char('GDoc name template', size=64, translate=False) } @@ -96,7 +96,7 @@ class google_docs(osv.osv): 'salt' : salt, 'name' : '', } - name_template = 'Sales order %s %s' + name_template = 'Sales order %s' # check template for the current model model_obj = self.pool.get(model) @@ -118,7 +118,7 @@ class google_docs(osv.osv): client.http_client.debug = False client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') resource = client.get_resource_by_id(gdoc.gdocs_res_id) - copied_resource = client.copy_resource(entry=resource, title= self.name_template % (, model)) + copied_resource = client.copy_resource(entry=resource, title= self.name_template % (model, )) return self.edit_url_template % (copied_resource.resource_id.text,) From ebfb0be2e156b49a14790300ce746dba78a159d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Mon, 27 Feb 2012 10:02:24 +0100 Subject: [PATCH 011/375] [IMP] copy from pad bzr revid: rlo@openerp.com-20120227090224-zujpg9zhf2nd5ioe --- addons/google_docs/__openerp__.py | 12 ++++++++ .../{res_company.xml => res_gdocs.xml} | 2 +- addons/google_docs/static/src/js/gdocs.js | 29 +++++++++++++++++++ addons/google_docs/static/src/xml/gdocs.xml | 13 +++++++++ 4 files changed, 55 insertions(+), 1 deletion(-) rename addons/google_docs/{res_company.xml => res_gdocs.xml} (91%) create mode 100644 addons/google_docs/static/src/js/gdocs.js 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 991a3e07e2c..2461be1e151 100644 --- a/addons/google_docs/__openerp__.py +++ b/addons/google_docs/__openerp__.py @@ -1,6 +1,18 @@ { 'name': 'Wiki', 'version': '0.1', + 'author': 'OpenERP SA', + 'website': 'http://openerp.com', + 'data': [ + 'res_gdocs.xml' + ], + 'installable': True, + 'auto_install': False, + 'web': True, + 'js': ['static/src/js/gdocs.js'], + 'qweb' : [ + "static/src/xml/*.xml", + ], 'depends': ['google_base_account'], 'description': 'Module to attach a google document to any model.' } diff --git a/addons/google_docs/res_company.xml b/addons/google_docs/res_gdocs.xml similarity index 91% rename from addons/google_docs/res_company.xml rename to addons/google_docs/res_gdocs.xml index 0324039c8f2..b1a54fdc63e 100644 --- a/addons/google_docs/res_company.xml +++ b/addons/google_docs/res_gdocs.xml @@ -2,7 +2,7 @@ res.company.form.gdocs - res.company + google.docs form diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js new file mode 100644 index 00000000000..e605577d45a --- /dev/null +++ b/addons/google_docs/static/src/js/gdocs.js @@ -0,0 +1,29 @@ +openerp.gdocs = function(instance) { + +instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.extend({ + on_attachments_loaded: function(attachments) { + this._super(attachments); + var self = this; + var $padbtn = self.$element.find('button.gdocs'); + var is_pad = function(a) { + return a.type == 'url' && a.name == 'GDocs'; + }; + if (_.any(attachments, is_pad)) { + $padbtn.hide(); + } else { + $padbtn.show().click(self.on_add_pad); + } + }, + on_add_pad: function() { + var self = this; + var $padbtn = this.$element.find('button.gdocs'); + $padbtn.attr('disabled', 'true').find('img, span').toggle(); + this.view.dataset.call_button('pad_get', [[this.view.datarecord.id], this.view.dataset.get_context()], function(r) { + $padbtn.hide(); + self.do_update(); + self.do_action(r.result); + }); + } +}); + +}; 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..52decbfdbc1 --- /dev/null +++ b/addons/google_docs/static/src/xml/gdocs.xml @@ -0,0 +1,13 @@ + + + + + + + + + From eaf646c9e226c6bb729f5fdbdfdb291bf902631a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Mon, 27 Feb 2012 10:19:29 +0100 Subject: [PATCH 012/375] [imp] view bzr revid: rlo@openerp.com-20120227091929-pvcmtg5kes25pxid --- addons/google_docs/res_gdocs.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/google_docs/res_gdocs.xml b/addons/google_docs/res_gdocs.xml index b1a54fdc63e..660252de986 100644 --- a/addons/google_docs/res_gdocs.xml +++ b/addons/google_docs/res_gdocs.xml @@ -7,7 +7,7 @@ - + From cea3437f596f73558e23f1e67d61029daccf8d6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Mon, 27 Feb 2012 11:56:36 +0100 Subject: [PATCH 013/375] [imp] view bzr revid: rlo@openerp.com-20120227105636-czaw0ghb4jl6if1j --- addons/google_docs/{res_gdocs.xml => google_docs.xml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename addons/google_docs/{res_gdocs.xml => google_docs.xml} (91%) diff --git a/addons/google_docs/res_gdocs.xml b/addons/google_docs/google_docs.xml similarity index 91% rename from addons/google_docs/res_gdocs.xml rename to addons/google_docs/google_docs.xml index 660252de986..d0e842b566e 100644 --- a/addons/google_docs/res_gdocs.xml +++ b/addons/google_docs/google_docs.xml @@ -8,7 +8,7 @@ - + From 37ed7a1d9f1819fd39cbf0eb0679ae17e1afd91a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Mon, 27 Feb 2012 13:38:34 +0100 Subject: [PATCH 014/375] [imp] view bzr revid: rlo@openerp.com-20120227123834-todar214ngca7pu0 --- addons/google_docs/google_docs.py | 3 +-- addons/google_docs/static/src/js/gdocs.js | 20 ++++++++++---------- addons/google_docs/static/src/xml/gdocs.xml | 2 +- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 90edb15b104..def1f3097e1 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -74,12 +74,11 @@ class google_docs(osv.osv): edit_url_template = 'https://docs.google.com/Edit?docid=%s' prefix_gdoc_id_res = DOCUMENT_LABEL + ':' - def copy_gdoc(self, cr, uid, model, folder=None, context=None): + def copy_gdoc(self, cr, uid, model, context=None): '''Associate a copy of the gdoc identified by 'gdocs_res_id' to the current entity. @param cr: the current row from the database cursor. @param uid: the current user ID, for security checks. @param model: the current model name. - @param folder: folder in which to store the copy. @param context: a standard dictionary for contextual values. @return the url of the copy itself. @return -1 if the template hasn't been assigned yet. diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index e605577d45a..30edffaad7f 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -4,22 +4,22 @@ instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.exte on_attachments_loaded: function(attachments) { this._super(attachments); var self = this; - var $padbtn = self.$element.find('button.gdocs'); - var is_pad = function(a) { + var $gdocbtn = self.$element.find('button.gdocs'); + var is_gdoc = function(a) { return a.type == 'url' && a.name == 'GDocs'; }; - if (_.any(attachments, is_pad)) { - $padbtn.hide(); + if (_.any(attachments, is_gdoc)) { + $gdocbtn.hide(); } else { - $padbtn.show().click(self.on_add_pad); + $gdocbtn.show().click(self.on_add_gdoc); } }, - on_add_pad: function() { + on_add_gdoc: function() { var self = this; - var $padbtn = this.$element.find('button.gdocs'); - $padbtn.attr('disabled', 'true').find('img, span').toggle(); - this.view.dataset.call_button('pad_get', [[this.view.datarecord.id], this.view.dataset.get_context()], function(r) { - $padbtn.hide(); + var $gdocbtn = this.$element.find('button.gdocs');alert($gdocbtn); + $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); + this.view.dataset.call_button('copy_gdoc', [[this.view.datarecord.id], this.view.dataset.get_context()], function(r) { + $gdocbtn.hide(); self.do_update(); self.do_action(r.result); }); diff --git a/addons/google_docs/static/src/xml/gdocs.xml b/addons/google_docs/static/src/xml/gdocs.xml index 52decbfdbc1..bc7a56842ba 100644 --- a/addons/google_docs/static/src/xml/gdocs.xml +++ b/addons/google_docs/static/src/xml/gdocs.xml @@ -4,7 +4,7 @@ - From 95d9cb9f4ec264b0ee35fdc5bef9058d9cfdbe0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Mon, 27 Feb 2012 14:54:25 +0100 Subject: [PATCH 015/375] [imp] view bzr revid: rlo@openerp.com-20120227135425-879tmcgw20dfy2a1 --- addons/google_docs/__openerp__.py | 6 ++-- addons/google_docs/google_docs.py | 31 +++++++++++++++++---- addons/google_docs/static/src/js/gdocs.js | 1 + addons/google_docs/static/src/xml/gdocs.xml | 2 +- 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/addons/google_docs/__openerp__.py b/addons/google_docs/__openerp__.py index 2461be1e151..309ca13edc0 100644 --- a/addons/google_docs/__openerp__.py +++ b/addons/google_docs/__openerp__.py @@ -1,17 +1,17 @@ { - 'name': 'Wiki', + 'name': 'Google Docs', 'version': '0.1', 'author': 'OpenERP SA', 'website': 'http://openerp.com', 'data': [ - 'res_gdocs.xml' + 'google_docs.xml' ], 'installable': True, 'auto_install': False, 'web': True, 'js': ['static/src/js/gdocs.js'], 'qweb' : [ - "static/src/xml/*.xml", + "static/src/xml/gdocs.xml", ], 'depends': ['google_base_account'], 'description': 'Module to attach a google document to any model.' diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index def1f3097e1..59101ba5b09 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -70,7 +70,15 @@ class google_docs(osv.osv): 'gdocs_res_id': fields.char('Google resource ID', size=64, translate=False), 'name_template': fields.char('GDoc name template', size=64, translate=False) } + print ''' +######################################### + +GOOGLE DOCS + +######################################### + +''' edit_url_template = 'https://docs.google.com/Edit?docid=%s' prefix_gdoc_id_res = DOCUMENT_LABEL + ':' @@ -84,6 +92,15 @@ class google_docs(osv.osv): @return -1 if the template hasn't been assigned yet. @return -2 if the google_base_account hasn't been configured yet. ''' + print ''' + +######################################### + +google_docs.copy_gdoc() + +######################################### + +''' if context==None: context={} @@ -121,14 +138,15 @@ class google_docs(osv.osv): return self.edit_url_template % (copied_resource.resource_id.text,) +''' def get_documents_list(self, cr, uid, context=None): - '''Return the list of google documents available at the user's account. + ' ''Return the list of google documents available at the user's account. @param cr: the current row from the database cursor. @param uid: the current user ID, for security checks. @param context: a standard dictionary for contextual values. @return a list with information about the documents in form of tuples (document_name, document_resource_id). @return -2 if the google_base_account hasn't been configured yet. - ''' + '' ' if context == None: context = {} @@ -146,10 +164,11 @@ class google_docs(osv.osv): client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') return map(lambda doc: (doc.title.text, doc.resource_id.text[len(prefix_gdoc_id_res):]), filter(lambda r: r.resource_id.text.startswith(prefix_gdoc_id_res), client.get_all_resources())) +''' - +''' def set_model_document_template(self, cr, uid, model, resource_id, context=None): - '''Set the default document template for the specified model. This template doesn't have to be a google documents template itself, but just a document. + '' 'Set the default document template for the specified model. This template doesn't have to be a google documents template itself, but just a document. @param cr: current row for the database cursor. @param uid: the current user ID, for security checks. @param model: the current model name. @@ -158,7 +177,7 @@ class google_docs(osv.osv): @return 0 on successful execution. @return -2 if the google_base_account hasn't been configured yet. @return -3 if the given resource_id doesn't exist in the user's google docs account. - ''' + ' '' if context == None: context = {} @@ -186,7 +205,7 @@ class google_docs(osv.osv): }) return 0 - +''' class google_docs_folder(osv.osv): _name = 'google.docs.folder' diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index 30edffaad7f..579414ee74a 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -2,6 +2,7 @@ openerp.gdocs = function(instance) { instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.extend({ on_attachments_loaded: function(attachments) { + alert('gdocs.js.on_attachments_loaded()'); this._super(attachments); var self = this; var $gdocbtn = self.$element.find('button.gdocs'); diff --git a/addons/google_docs/static/src/xml/gdocs.xml b/addons/google_docs/static/src/xml/gdocs.xml index bc7a56842ba..9f78a91c28f 100644 --- a/addons/google_docs/static/src/xml/gdocs.xml +++ b/addons/google_docs/static/src/xml/gdocs.xml @@ -4,7 +4,7 @@ - From 087c191730d611058b0303cf38d10989d868a7f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Mon, 27 Feb 2012 14:57:51 +0100 Subject: [PATCH 016/375] [imp] view bzr revid: rlo@openerp.com-20120227135751-33nd5qduv2jp58cu --- addons/google_docs/google_docs.py | 56 ------------------------------- 1 file changed, 56 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 59101ba5b09..2f2c4919271 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -4,62 +4,6 @@ import gdata.docs.client from gdata.client import RequestError from gdata.docs.service import DOCUMENT_LABEL -# _columns = { -# 'id': fields.integer('ID', readonly=True), -# 'model': fields.many2one('ir.model', 'Model'), -# 'multiple': fields.boolean('Multiple'), -# 'gdocs_res_id': fields.char('Google resource ID', size=64, translate=False) -# -# } -# -## edit_url_template = 'https://docs.google.com/Edit?docid=%s' -## prefix_gdoc_id_res = 'document:' -# -# def google_docs_get(self, cr, uid, model, id): -# attachment = self.search(cr, uid, [('res_model', '=', model), ('res_id', '=', id), ('type', '=', 'url'), ('url', 'like', 'https://docs.oogle.com')]) -# if attachment: -# return self.read(cr, uid, attachment)[0]['url'] -# else: -# url = self.pad_generate_url(cr, uid, model, id) -# self.create(cr, uid, { -# 'res_model' : model, -# 'res_id' : id, -# 'type' : 'url', -# 'name' : 'Pad', -# 'url' : url, -# }) -# return url -# -# def generate_name(self, cr, uid, model, id): -# template_vars = { -# 'db' : cr.dbname, -# 'model' : model, -# 'id' : id, -# 'salt' : salt, -# 'name' : self.pool.get(model).name_get(cr,uid,[id])[0], -# } -# return pad_url_template % template_vars -# -# -# def button_add_google_docs_google_docs_add_doc(self, cr, uid, model, id): -# #pad_url_template = self.pool.get('res.users').browse(cr,uid,[uid])[0].company_id.pad_url_template -# #s = string.ascii_uppercase + string.digits -# #salt = ''.join([s[random.randint(0, len(s) - 1)] for i in range(8)]) -# -# # i lookup in the table google_docs.templates to check the policy -# -# # if multiple: 1 -# -# # if i find a template i will duplicate the template -# -# # else empty 'word' text -# -# # else -# # if no document exists do like 1 -^ -# # else -# # jumpt to the existing document -# - class google_docs(osv.osv): _name = 'google.docs' From 3568bed68046537878e7386597abfb7978de3cdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Mon, 27 Feb 2012 16:13:11 +0100 Subject: [PATCH 017/375] [imp] view bzr revid: rlo@openerp.com-20120227151311-38go1bn2ihs1n5jq --- addons/google_docs/static/src/js/gdocs.js | 10 ++++++++-- addons/google_docs/static/src/xml/gdocs.xml | 9 ++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index 579414ee74a..14996da46a5 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -2,7 +2,6 @@ openerp.gdocs = function(instance) { instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.extend({ on_attachments_loaded: function(attachments) { - alert('gdocs.js.on_attachments_loaded()'); this._super(attachments); var self = this; var $gdocbtn = self.$element.find('button.gdocs'); @@ -17,7 +16,7 @@ instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.exte }, on_add_gdoc: function() { var self = this; - var $gdocbtn = this.$element.find('button.gdocs');alert($gdocbtn); + var $gdocbtn = this.$element.find('button.gdocs'); $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); this.view.dataset.call_button('copy_gdoc', [[this.view.datarecord.id], this.view.dataset.get_context()], function(r) { $gdocbtn.hide(); @@ -28,3 +27,10 @@ instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.exte }); }; + +$(function() { + console.log($('#gd-button')); + $('#gd-button').click(function(){alert('click');}); + alert('binded'); +} +); diff --git a/addons/google_docs/static/src/xml/gdocs.xml b/addons/google_docs/static/src/xml/gdocs.xml index 9f78a91c28f..61c169fe531 100644 --- a/addons/google_docs/static/src/xml/gdocs.xml +++ b/addons/google_docs/static/src/xml/gdocs.xml @@ -4,7 +4,14 @@ - From f0a9682a6aa6814817cca4e31fe9561bed60d126 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Mon, 27 Feb 2012 17:12:00 +0100 Subject: [PATCH 018/375] [imp] js things bzr revid: rlo@openerp.com-20120227161200-toovqcewybgxsitg --- addons/google_docs/static/src/js/gdocs.js | 28 ++++++--------------- addons/google_docs/static/src/xml/gdocs.xml | 2 +- 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index 14996da46a5..11690f70e2a 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -1,22 +1,16 @@ -openerp.gdocs = function(instance) { +console.log('fegegegwnw') +openerp.google_docs = function(instance) { +console.log('nw') instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.extend({ - on_attachments_loaded: function(attachments) { - this._super(attachments); - var self = this; - var $gdocbtn = self.$element.find('button.gdocs'); - var is_gdoc = function(a) { - return a.type == 'url' && a.name == 'GDocs'; - }; - if (_.any(attachments, is_gdoc)) { - $gdocbtn.hide(); - } else { - $gdocbtn.show().click(self.on_add_gdoc); - } + init: function() { + this._super.apply(this, arguments); + this.$element.delegate('.oe_google_docs_button', 'click', self.on_add_gdoc); }, on_add_gdoc: function() { var self = this; - var $gdocbtn = this.$element.find('button.gdocs'); +console.log('--------'); + var $gdocbtn = this.$element.find('.oe_google_docs_button'); $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); this.view.dataset.call_button('copy_gdoc', [[this.view.datarecord.id], this.view.dataset.get_context()], function(r) { $gdocbtn.hide(); @@ -28,9 +22,3 @@ instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.exte }; -$(function() { - console.log($('#gd-button')); - $('#gd-button').click(function(){alert('click');}); - alert('binded'); -} -); diff --git a/addons/google_docs/static/src/xml/gdocs.xml b/addons/google_docs/static/src/xml/gdocs.xml index 61c169fe531..7ee2297c545 100644 --- a/addons/google_docs/static/src/xml/gdocs.xml +++ b/addons/google_docs/static/src/xml/gdocs.xml @@ -11,7 +11,7 @@


- From af04b6860cfe10259a63a44cd6b4a4f8234eed8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Mon, 27 Feb 2012 17:14:13 +0100 Subject: [PATCH 019/375] [imp] js things bzr revid: rlo@openerp.com-20120227161413-ie6cn7rwoezhht6v --- addons/google_docs/static/src/js/gdocs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index 11690f70e2a..6ef889e3fa0 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -5,7 +5,7 @@ console.log('nw') instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.extend({ init: function() { this._super.apply(this, arguments); - this.$element.delegate('.oe_google_docs_button', 'click', self.on_add_gdoc); + this.$element.delegate('.oe_google_docs_button', 'click', this.on_add_gdoc); }, on_add_gdoc: function() { var self = this; From ec2ceb5d6bf9c9a12102de64b2eded66cc7c7062 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Tue, 28 Feb 2012 09:22:26 +0100 Subject: [PATCH 020/375] [imp] js is calling the module bzr revid: rlo@openerp.com-20120228082226-su74ddghivymtp09 --- addons/google_docs/static/src/js/gdocs.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index 6ef889e3fa0..32a57e18c0c 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -1,18 +1,15 @@ -console.log('fegegegwnw') -openerp.google_docs = function(instance) { +openerp.google_docs = function(instance, session) { -console.log('nw') instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.extend({ init: function() { this._super.apply(this, arguments); - this.$element.delegate('.oe_google_docs_button', 'click', this.on_add_gdoc); + this.$element.delegate('.oe_google_docs_button', 'click', this.on_add_gdoc); }, on_add_gdoc: function() { var self = this; -console.log('--------'); var $gdocbtn = this.$element.find('.oe_google_docs_button'); $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); - this.view.dataset.call_button('copy_gdoc', [[this.view.datarecord.id], this.view.dataset.get_context()], function(r) { + new openerp.sessions.session0.web.DataSet(this, 'google.docs').call_button('copy_gdoc', [[this.view.datarecord.id], this.view.dataset.get_context()], function(r) { $gdocbtn.hide(); self.do_update(); self.do_action(r.result); From 841f8b12b413dd7a0d4091182d092128f27da5f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Tue, 28 Feb 2012 15:46:23 +0100 Subject: [PATCH 021/375] [imp] gdata code bzr revid: rlo@openerp.com-20120228144623-4bk6lsnthk2elqbv --- addons/google_docs/google_docs.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 2f2c4919271..1dd632aab83 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -49,38 +49,40 @@ google_docs.copy_gdoc() if context==None: context={} - template_vars = { + '''template_vars = { 'db' : cr.dbname, 'model' : model, 'id' : id, 'salt' : salt, 'name' : '', - } + }''' name_template = 'Sales order %s' - # check template for the current model - model_obj = self.pool.get(model) - res_gdocs_obj = self.pool.get('google.docs') - domain = [('model' , '=', model_obj)] - gdoc = res_gdocs_obj.search(cr,uid,domain,context=context) - if not gdoc: - return -1 - # check google_base_account users_obj = self.pool.get('res.users') user = users_obj.browse(cr, uid, [uid])[0] if not user.gmail_user or not user.gmail_password: return -2 + # check template for the current model + # TODO check module logic + '''model_obj = self.pool.get(model[0]) + res_gdocs_obj = self.pool.get('google.docs') + domain = [('model' , '=', model_obj)] + gdoc = res_gdocs_obj.search(cr,uid,domain,context=context) + if not gdoc: + + return -1 +''' # copy the document client = gdata.docs.client.DocsClient(source='openerp.com') client.ssl = True client.http_client.debug = False client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') - resource = client.get_resource_by_id(gdoc.gdocs_res_id) - copied_resource = client.copy_resource(entry=resource, title= self.name_template % (model, )) + resource = gdata.docs.data.Resource(gdata.docs.data.DOCUMENT_LABEL) + new_resource = client.post(entry=resource, uri='https://docs.google.com/feeds/default/private/full/') - return self.edit_url_template % (copied_resource.resource_id.text,) + return self.edit_url_template % (new_resource.resource_id.text,) ''' def get_documents_list(self, cr, uid, context=None): From f8213e68f0a1d5ffde27a47b70211a0cb205db9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Wed, 29 Feb 2012 09:38:33 +0100 Subject: [PATCH 022/375] [imp] integration with google_base_account bzr revid: rlo@openerp.com-20120229083833-yd0wfg8x5ywc9e1c --- addons/google_docs/google_docs.py | 9 +++++++-- addons/google_docs/static/src/js/gdocs.js | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 1dd632aab83..1c36533e614 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -23,7 +23,7 @@ GOOGLE DOCS ######################################### ''' - edit_url_template = 'https://docs.google.com/Edit?docid=%s' + edit_url_template = 'https://docs.google.com/document/d/%s/edit' prefix_gdoc_id_res = DOCUMENT_LABEL + ':' def copy_gdoc(self, cr, uid, model, context=None): @@ -61,6 +61,9 @@ google_docs.copy_gdoc() # check google_base_account users_obj = self.pool.get('res.users') user = users_obj.browse(cr, uid, [uid])[0] + print '%s' % user.__dict__ + print '%s' % user.gmail_user + print '%s' % user.gmail_password if not user.gmail_user or not user.gmail_password: return -2 @@ -81,7 +84,9 @@ google_docs.copy_gdoc() client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') resource = gdata.docs.data.Resource(gdata.docs.data.DOCUMENT_LABEL) new_resource = client.post(entry=resource, uri='https://docs.google.com/feeds/default/private/full/') - + print new_resource.__dict__ + print new_resource.resource_id.text + print new_resource.resource_id return self.edit_url_template % (new_resource.resource_id.text,) ''' diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index 32a57e18c0c..6e0ae93fdf3 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -10,6 +10,7 @@ instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.exte var $gdocbtn = this.$element.find('.oe_google_docs_button'); $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); new openerp.sessions.session0.web.DataSet(this, 'google.docs').call_button('copy_gdoc', [[this.view.datarecord.id], this.view.dataset.get_context()], function(r) { + console.log(r); $gdocbtn.hide(); self.do_update(); self.do_action(r.result); From 4c04da28b7e3c78785cbb51892b26facc1b15f1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Wed, 29 Feb 2012 13:29:40 +0100 Subject: [PATCH 023/375] [imp] working... the only thing missing is linking from the model web to the gdoc web bzr revid: rlo@openerp.com-20120229122940-16h3bwa6j8zbz01s --- addons/google_docs/google_docs.py | 152 +++++----------------- addons/google_docs/static/src/js/gdocs.js | 4 +- 2 files changed, 36 insertions(+), 120 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 1c36533e614..57cd9441566 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -4,162 +4,80 @@ import gdata.docs.client from gdata.client import RequestError from gdata.docs.service import DOCUMENT_LABEL -class google_docs(osv.osv): - _name = 'google.docs' +class google_docs_config(osv.osv): + _name = 'google.docs.config' + _inherit = 'ir.attachment' - _table = 'google_docs_templates' _columns = { - 'id': fields.integer('ID', readonly=True), 'model': fields.many2one('ir.model', 'Model'), - 'gdocs_res_id': fields.char('Google resource ID', size=64, translate=False), - 'name_template': fields.char('GDoc name template', size=64, translate=False) + 'gdocs_resource_id': fields.char('Google resource ID', size=64), + 'name_template': fields.char('GDoc name template', size=64) } - print ''' -######################################### + _defaults = { + 'name_template': 'Google Document' + } -GOOGLE DOCS - -######################################### - -''' edit_url_template = 'https://docs.google.com/document/d/%s/edit' prefix_gdoc_id_res = DOCUMENT_LABEL + ':' def copy_gdoc(self, cr, uid, model, context=None): + #import pdb; pdb.set_trace() '''Associate a copy of the gdoc identified by 'gdocs_res_id' to the current entity. @param cr: the current row from the database cursor. @param uid: the current user ID, for security checks. @param model: the current model name. @param context: a standard dictionary for contextual values. @return the url of the copy itself. - @return -1 if the template hasn't been assigned yet. @return -2 if the google_base_account hasn't been configured yet. ''' - print ''' - -######################################### - -google_docs.copy_gdoc() - -######################################### - -''' if context==None: context={} - '''template_vars = { - 'db' : cr.dbname, - 'model' : model, - 'id' : id, - 'salt' : salt, - 'name' : '', - }''' name_template = 'Sales order %s' # check google_base_account users_obj = self.pool.get('res.users') user = users_obj.browse(cr, uid, [uid])[0] - print '%s' % user.__dict__ - print '%s' % user.gmail_user - print '%s' % user.gmail_password if not user.gmail_user or not user.gmail_password: return -2 - # check template for the current model - # TODO check module logic - '''model_obj = self.pool.get(model[0]) - res_gdocs_obj = self.pool.get('google.docs') - domain = [('model' , '=', model_obj)] - gdoc = res_gdocs_obj.search(cr,uid,domain,context=context) - if not gdoc: - - return -1 -''' - # copy the document + # create the document client = gdata.docs.client.DocsClient(source='openerp.com') client.ssl = True client.http_client.debug = False client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') resource = gdata.docs.data.Resource(gdata.docs.data.DOCUMENT_LABEL) - new_resource = client.post(entry=resource, uri='https://docs.google.com/feeds/default/private/full/') - print new_resource.__dict__ - print new_resource.resource_id.text - print new_resource.resource_id - return self.edit_url_template % (new_resource.resource_id.text,) + gdocs_resource = client.post(entry=resource, uri='https://docs.google.com/feeds/default/private/full/') + return gdocs_resource -''' - def get_documents_list(self, cr, uid, context=None): - ' ''Return the list of google documents available at the user's account. - @param cr: the current row from the database cursor. - @param uid: the current user ID, for security checks. - @param context: a standard dictionary for contextual values. - @return a list with information about the documents in form of tuples (document_name, document_resource_id). - @return -2 if the google_base_account hasn't been configured yet. - '' ' +class google_docs(osv.osv): + _name = 'google.docs' - if context == None: - context = {} - # check google_base_account - users_obj = self.pool.get('res.users') - user = users_obj.browse(cr, uid, [uid])[0] - if not user.gmail_user or not user.gmail_password: - return -2 + def doc_get(self, cr, uid, model, id, context=None): + google_docs_ref = self.pool.get('google.docs.config') + gdocs_resource_id = google_docs_ref.search(cr, uid, [('model', '=', model)]) - # get the documents list - client = gdata.docs.client.DocsClient(source='openerp.com') - client.ssl = True - client.http_client.debug = False - client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') + if gdocs_resource_id: + return google_docs_ref.edit_url_template % (gdocs_resource_id, ) + else: + gdocs_resource = google_docs_ref.copy_gdoc(cr, uid, model, context) + print gdocs_resource + if gdocs_resource == -2: + return gdocs_resource - return map(lambda doc: (doc.title.text, doc.resource_id.text[len(prefix_gdoc_id_res):]), filter(lambda r: r.resource_id.text.startswith(prefix_gdoc_id_res), client.get_all_resources())) -''' + print gdocs_resource -''' - def set_model_document_template(self, cr, uid, model, resource_id, context=None): - '' 'Set the default document template for the specified model. This template doesn't have to be a google documents template itself, but just a document. - @param cr: current row for the database cursor. - @param uid: the current user ID, for security checks. - @param model: the current model name. - @param resource_id: resource_id associated to the chosen document. - @param context: a standard dictionary for contextual values. - @return 0 on successful execution. - @return -2 if the google_base_account hasn't been configured yet. - @return -3 if the given resource_id doesn't exist in the user's google docs account. - ' '' - - if context == None: - context = {} - - # check google_base_account - users_obj = self.pool.get('res.users') - user = users_obj.browse(cr, uid, [uid])[0] - if not user.gmail_user or not user.gmail_password: - return -2 - - # check resource_id - client = gdata.docs.client.DocsClient(source='openerp.com') - client.ssl = True - client.http_client.debug = False - client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') - try: - client.get_resource_by_id(resource_id) - except RequestError: - return -3 - - # set the model document template - model_template_id = self.create(cr, uid, - { 'model': self.pool.get(model), - 'gdocs_res_id': resource_id + import pdb; pdb.set_trace() + # save the reference + gdocs_resource_id = gdocs_resource.resource_id.text[gdocs_resource.prefix_gdoc_id_res+1:] + google_docs_ref.create(cr, uid, { + 'model': model, + 'google_resource_id': gdocs_resource_id, + 'name': gdocs_resource_title.text, }) - - return 0 -''' - -class google_docs_folder(osv.osv): - _name = 'google.docs.folder' - _columns = { - 'res_id': fields.char('GDocs resource id', size=64, translate=False), - } + print gdocs_resource.resource_id.text + print gdocs_resource_id + return google_docs_ref.edit_url_template % (gdocs_resource_id,) diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index 6e0ae93fdf3..14103681306 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -9,11 +9,9 @@ instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.exte var self = this; var $gdocbtn = this.$element.find('.oe_google_docs_button'); $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); - new openerp.sessions.session0.web.DataSet(this, 'google.docs').call_button('copy_gdoc', [[this.view.datarecord.id], this.view.dataset.get_context()], function(r) { + new openerp.sessions.session0.web.DataSet(this, 'google.docs').call('doc_get', [this.view.datarecord.id, this.view.dataset.get_context()], function(r) { console.log(r); - $gdocbtn.hide(); self.do_update(); - self.do_action(r.result); }); } }); From 854e18a73724b97107dcaf172c77855713fe7a18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Wed, 29 Feb 2012 13:37:58 +0100 Subject: [PATCH 024/375] [imp]fixrkremove pdb statements bzr revid: rlo@openerp.com-20120229123758-0tcguv9olvul3trk --- addons/google_docs/google_docs.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 57cd9441566..abc7d81e189 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -70,9 +70,8 @@ class google_docs(osv.osv): print gdocs_resource - import pdb; pdb.set_trace() # save the reference - gdocs_resource_id = gdocs_resource.resource_id.text[gdocs_resource.prefix_gdoc_id_res+1:] + gdocs_resource_id = gdocs_resource.resource_id.text[len(google_docs_ref.prefix_gdoc_id_res):] google_docs_ref.create(cr, uid, { 'model': model, 'google_resource_id': gdocs_resource_id, From 67ffbbac7a14a31d278043f1a5b962a41730ece1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Wed, 29 Feb 2012 13:39:42 +0100 Subject: [PATCH 025/375] [fix] remove debug statements bzr revid: rlo@openerp.com-20120229123942-a3ntcfz15xgqek4g --- addons/google_docs/google_docs.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index abc7d81e189..e253d62ffbb 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -64,12 +64,9 @@ class google_docs(osv.osv): return google_docs_ref.edit_url_template % (gdocs_resource_id, ) else: gdocs_resource = google_docs_ref.copy_gdoc(cr, uid, model, context) - print gdocs_resource if gdocs_resource == -2: return gdocs_resource - print gdocs_resource - # save the reference gdocs_resource_id = gdocs_resource.resource_id.text[len(google_docs_ref.prefix_gdoc_id_res):] google_docs_ref.create(cr, uid, { @@ -77,6 +74,5 @@ class google_docs(osv.osv): 'google_resource_id': gdocs_resource_id, 'name': gdocs_resource_title.text, }) - print gdocs_resource.resource_id.text - print gdocs_resource_id + return google_docs_ref.edit_url_template % (gdocs_resource_id,) From 1ade3b205fc01dc4d476fa295d8e046a44755b19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Wed, 29 Feb 2012 18:23:19 +0100 Subject: [PATCH 026/375] [fix] bzr revid: rlo@openerp.com-20120229172319-rzwcu1egrhw9ggms --- addons/google_docs/google_docs.py | 9 +++++---- addons/google_docs/static/src/js/gdocs.js | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index e253d62ffbb..b60acd16197 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -55,11 +55,12 @@ class google_docs_config(osv.osv): class google_docs(osv.osv): _name = 'google.docs' - - def doc_get(self, cr, uid, model, id, context=None): + def doc_get(self, cr, uid, model, ids, context=None): google_docs_ref = self.pool.get('google.docs.config') - gdocs_resource_id = google_docs_ref.search(cr, uid, [('model', '=', model)]) - + gdocs_resource_id = google_docs_ref.search(cr, uid, [('model', '=', model), ('id', 'in', ids)]) + #print gdocs_resource_id + #print google_docs_ref.edit_url_template % (gdocs_resource_id, ) + #import pdb; pdb.set_trace() if gdocs_resource_id: return google_docs_ref.edit_url_template % (gdocs_resource_id, ) else: diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index 14103681306..a126bfed5c3 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -9,8 +9,8 @@ instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.exte var self = this; var $gdocbtn = this.$element.find('.oe_google_docs_button'); $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); - new openerp.sessions.session0.web.DataSet(this, 'google.docs').call('doc_get', [this.view.datarecord.id, this.view.dataset.get_context()], function(r) { - console.log(r); + var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); + ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord.id]], function(r) { self.do_update(); }); } From cde742506ee92500e9cd2e4c41b041613d225442 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Wed, 29 Feb 2012 19:45:20 +0100 Subject: [PATCH 027/375] [fix] logic... bzr revid: rlo@openerp.com-20120229184520-vs679o9drs1vls4r --- addons/google_docs/google_docs.py | 97 +++++++++++++++++++++---------- 1 file changed, 65 insertions(+), 32 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index b60acd16197..689f5522cd3 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -4,24 +4,25 @@ import gdata.docs.client from gdata.client import RequestError from gdata.docs.service import DOCUMENT_LABEL -class google_docs_config(osv.osv): - _name = 'google.docs.config' +class google_docs_ir_attachment(osv.osv): _inherit = 'ir.attachment' - _columns = { - 'model': fields.many2one('ir.model', 'Model'), - 'gdocs_resource_id': fields.char('Google resource ID', size=64), - 'name_template': fields.char('GDoc name template', size=64) - } + def _auth(self, cr, uid): + # check google_base_account + users_obj = self.pool.get('res.users') + user = users_obj.browse(cr, uid, [uid])[0] + if not user.gmail_user or not user.gmail_password: + return -2 - _defaults = { - 'name_template': 'Google Document' - } + # login + client = gdata.docs.client.DocsClient(source='openerp.com') + client.ssl = True + client.http_client.debug = False + client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') + + return client - edit_url_template = 'https://docs.google.com/document/d/%s/edit' - prefix_gdoc_id_res = DOCUMENT_LABEL + ':' - - def copy_gdoc(self, cr, uid, model, context=None): + def create_empty_gdoc(self, cr, uid, model, context=None): #import pdb; pdb.set_trace() '''Associate a copy of the gdoc identified by 'gdocs_res_id' to the current entity. @param cr: the current row from the database cursor. @@ -35,45 +36,77 @@ class google_docs_config(osv.osv): if context==None: context={} - name_template = 'Sales order %s' - - # check google_base_account - users_obj = self.pool.get('res.users') - user = users_obj.browse(cr, uid, [uid])[0] - if not user.gmail_user or not user.gmail_password: + client = _auth(cr, uid) + if client == -2: return -2 - # create the document - client = gdata.docs.client.DocsClient(source='openerp.com') - client.ssl = True - client.http_client.debug = False - client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') resource = gdata.docs.data.Resource(gdata.docs.data.DOCUMENT_LABEL) gdocs_resource = client.post(entry=resource, uri='https://docs.google.com/feeds/default/private/full/') return gdocs_resource + def copy_gdoc(self, cr, uid, model, gdocs_resource_id, context=None): + if context==None: + context={} + + client = _auth(cr, uid) + if client == -2: + return -2 + + # fetch and copy the original document + original_resource = client.get_resource_by_id(gdocs_resource_id) + return client.copy_resource(entry=original_resource) + + def gdoc_get(self, cr, uid, model, context=None): + google_docs_config_ref = self.pool.get('google.docs.config') + google_template_ids = google_docs_config_ref.search(cr, uid, [('model', '=', model)]) + if not google_template_ids: + # there isn't any template. Create an empty doc. + return self.create_gdoc(cr, uid, model, context) + + # otherwise, copy document from existing template + return self.copy_gdoc(cr, uid, model, google_template_ids[0].gdocs_resource_id + +class google_docs_config(osv.osv): + _name = 'google.docs.config' + + _columns = { + 'model_id': fields.many2one('ir.model', 'Model'), + 'gdocs_resource_id': fields.char('Google resource ID', size=64), + 'name_template': fields.char('GDoc name template', size=64), + 'url': fields.char('url for the template', size=122), + } + + _defaults = { + 'name_template': 'Google Document' + } + + edit_url_template = 'https://docs.google.com/document/d/%s/edit' + prefix_gdoc_id_res = DOCUMENT_LABEL + ':' + + class google_docs(osv.osv): _name = 'google.docs' - def doc_get(self, cr, uid, model, ids, context=None): - google_docs_ref = self.pool.get('google.docs.config') + def doc_get(self, cr, uid, model, ids, context=None):# TODO fix logic here + google_docs_ref = self.pool.get('ir.attachment') gdocs_resource_id = google_docs_ref.search(cr, uid, [('model', '=', model), ('id', 'in', ids)]) #print gdocs_resource_id #print google_docs_ref.edit_url_template % (gdocs_resource_id, ) - #import pdb; pdb.set_trace() if gdocs_resource_id: return google_docs_ref.edit_url_template % (gdocs_resource_id, ) else: - gdocs_resource = google_docs_ref.copy_gdoc(cr, uid, model, context) + ir_attachment_res = self.pool.get('ir.attachment') + gdocs_resource = ir_attachment_res.create_empty_gdoc(cr, uid, model, context) if gdocs_resource == -2: return gdocs_resource # save the reference gdocs_resource_id = gdocs_resource.resource_id.text[len(google_docs_ref.prefix_gdoc_id_res):] + import pdb; pdb.set_trace() google_docs_ref.create(cr, uid, { - 'model': model, - 'google_resource_id': gdocs_resource_id, - 'name': gdocs_resource_title.text, + 'model_id': self.pool.get(model), + 'gdocs_resource_id': gdocs_resource_id, + 'name': gdocs_resource.title.text, }) return google_docs_ref.edit_url_template % (gdocs_resource_id,) From 2947f6dbb8563bfab55d457e9b1c0cc99f0fc4f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Thu, 1 Mar 2012 15:45:07 +0100 Subject: [PATCH 028/375] [imp] add middleware support for spreadsheets and presentations bzr revid: rlo@openerp.com-20120301144507-k9kqsrdzwi0h8mf5 --- addons/google_docs/google_docs.py | 93 ++++++++++++++++++++----------- 1 file changed, 59 insertions(+), 34 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 689f5522cd3..3e6c398b155 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -22,39 +22,70 @@ class google_docs_ir_attachment(osv.osv): return client - def create_empty_gdoc(self, cr, uid, model, context=None): + def create_empty_google_doc(self, cr, uid, model, id, context=None): #import pdb; pdb.set_trace() '''Associate a copy of the gdoc identified by 'gdocs_res_id' to the current entity. @param cr: the current row from the database cursor. @param uid: the current user ID, for security checks. @param model: the current model name. @param context: a standard dictionary for contextual values. - @return the url of the copy itself. + @return the document object. @return -2 if the google_base_account hasn't been configured yet. ''' - if context==None: + if context is None: context={} - client = _auth(cr, uid) + # authenticate + client = self._auth(cr, uid) if client == -2: return -2 - resource = gdata.docs.data.Resource(gdata.docs.data.DOCUMENT_LABEL) - gdocs_resource = client.post(entry=resource, uri='https://docs.google.com/feeds/default/private/full/') + if 'type' not in context: + context['type'] = 'text' + + # create the document in google docs + if context['type']=='slide': + local_resource = gdata.docs.data.Resource(gdata.docs.data.PRESENTATION_LABEL) + elif context['type']=='spreadsheet': + local_resource = gdata.docs.data.Resource(gdata.docs.data.SPREADSHEET_LABEL) + else: + local_resource = gdata.docs.data.Resource(gdata.docs.data.DOCUMENT_LABEL) + gdocs_resource = client.post(entry=local_resource, uri='https://docs.google.com/feeds/default/private/full/') + + # register into the db + self.create(cr, uid, { + 'model': context['active_model'], #model, + 'res_id': context['active_id'], + 'type': 'url', + #'name': TODO pending from the working config + 'url': gdocs_resource.get_alternate_link().href + }) + return gdocs_resource def copy_gdoc(self, cr, uid, model, gdocs_resource_id, context=None): - if context==None: + if context is None: context={} - client = _auth(cr, uid) + client = self._auth(cr, uid) if client == -2: return -2 # fetch and copy the original document original_resource = client.get_resource_by_id(gdocs_resource_id) - return client.copy_resource(entry=original_resource) + copy_resource = client.copy_resource(entry=original_resource) + + # register into the db + self.create(cr, uid, { + 'model': context['active_model'], + 'res_id': context['active_id'], + 'type': 'url', + #'name': TODO pending from the working config + 'url': copy_resource.get_alternate_link().href + }) + + return copy_resource def gdoc_get(self, cr, uid, model, context=None): google_docs_config_ref = self.pool.get('google.docs.config') @@ -64,7 +95,7 @@ class google_docs_ir_attachment(osv.osv): return self.create_gdoc(cr, uid, model, context) # otherwise, copy document from existing template - return self.copy_gdoc(cr, uid, model, google_template_ids[0].gdocs_resource_id + return self.copy_gdoc(cr, uid, model, google_template_ids[0].gdocs_resource_id) class google_docs_config(osv.osv): _name = 'google.docs.config' @@ -72,41 +103,35 @@ class google_docs_config(osv.osv): _columns = { 'model_id': fields.many2one('ir.model', 'Model'), 'gdocs_resource_id': fields.char('Google resource ID', size=64), - 'name_template': fields.char('GDoc name template', size=64), - 'url': fields.char('url for the template', size=122), + 'name_template': fields.char('GDoc name template ', size=64, help='This is the name which appears on google side'), + 'name': fields.char('Name', size=64, help='This is the attachment\'s name. As well, it appears on the panel.') + # 'multi': fields.boolean('Multiple documents') } _defaults = { 'name_template': 'Google Document' } - edit_url_template = 'https://docs.google.com/document/d/%s/edit' - prefix_gdoc_id_res = DOCUMENT_LABEL + ':' class google_docs(osv.osv): _name = 'google.docs' def doc_get(self, cr, uid, model, ids, context=None):# TODO fix logic here - google_docs_ref = self.pool.get('ir.attachment') - gdocs_resource_id = google_docs_ref.search(cr, uid, [('model', '=', model), ('id', 'in', ids)]) - #print gdocs_resource_id - #print google_docs_ref.edit_url_template % (gdocs_resource_id, ) - if gdocs_resource_id: - return google_docs_ref.edit_url_template % (gdocs_resource_id, ) - else: - ir_attachment_res = self.pool.get('ir.attachment') - gdocs_resource = ir_attachment_res.create_empty_gdoc(cr, uid, model, context) - if gdocs_resource == -2: - return gdocs_resource + google_docs_config_ref = self.pool.get('google.docs.config') + ir_attachment_ref = self.pool.get('ir.attachment') + google_docs_config = google_docs_config_ref.search(cr, uid, [('model_id', '=', model)]) + + if not google_docs_config: + google_document = ir_attachment_ref.create_empty_google_doc(cr, uid, model, ids, context) + #else: + - # save the reference - gdocs_resource_id = gdocs_resource.resource_id.text[len(google_docs_ref.prefix_gdoc_id_res):] - import pdb; pdb.set_trace() - google_docs_ref.create(cr, uid, { - 'model_id': self.pool.get(model), - 'gdocs_resource_id': gdocs_resource_id, - 'name': gdocs_resource.title.text, - }) + print google_docs_config - return google_docs_ref.edit_url_template % (gdocs_resource_id,) + if not google_docs_config: + return -1 + + + + return 0 From 82937d5cc8a812bee3ed4199757417e78f534dff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Thu, 1 Mar 2012 16:09:14 +0100 Subject: [PATCH 029/375] [imp] add frontend support for spreadsheets and presentations bzr revid: rlo@openerp.com-20120301150914-0733ak0tdhdpaw8h --- addons/google_docs/static/src/js/gdocs.js | 28 ++++++++++++++++++--- addons/google_docs/static/src/xml/gdocs.xml | 12 +++++++-- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index a126bfed5c3..9723aac2723 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -3,14 +3,34 @@ openerp.google_docs = function(instance, session) { instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.extend({ init: function() { this._super.apply(this, arguments); - this.$element.delegate('.oe_google_docs_button', 'click', this.on_add_gdoc); + this.$element.delegate('.oe_google_docs_text_button', 'click', this.on_add_text_gdoc); + this.$element.delegate('.oe_google_docs_spreadsheet_button', 'click', this.on_add_spreadsheet_gdoc); + this.$element.delegate('.oe_google_docs_slide_button', 'click', this.on_add_slide_gdoc); }, - on_add_gdoc: function() { + on_add_text_gdoc: function() { var self = this; - var $gdocbtn = this.$element.find('.oe_google_docs_button'); + var $gdocbtn = this.$element.find('.oe_google_docs_text_button'); $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); - ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord.id]], function(r) { + ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord.id], 'text'], function(r) { + self.do_update(); + }); + }, + on_add_spreadsheet_gdoc: function() { + var self = this; + var $gdocbtn = this.$element.find('.oe_google_docs_spreadsheet_button'); + $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); + var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); + ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord, id], 'spreadsheet'], function(r) { + self.do_update(); + }); + }, + on_add_slide_gdoc: function() { + var self = this; + var $gdocbtn = this.$element.find('.oe_google_docs_slide_button'); + $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); + var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); + ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord,id], 'slide'], function(r) { self.do_update(); }); } diff --git a/addons/google_docs/static/src/xml/gdocs.xml b/addons/google_docs/static/src/xml/gdocs.xml index 7ee2297c545..f401512e96b 100644 --- a/addons/google_docs/static/src/xml/gdocs.xml +++ b/addons/google_docs/static/src/xml/gdocs.xml @@ -11,9 +11,17 @@


- + +
From 663a525f76ccf263dbb37b451a9c7f2898217a2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Thu, 1 Mar 2012 16:25:30 +0100 Subject: [PATCH 030/375] [imp] integrate frontend - middleware bzr revid: rlo@openerp.com-20120301152530-2ldz1w96y4pu2x9w --- addons/google_docs/google_docs.py | 47 +++++++++---------------------- 1 file changed, 14 insertions(+), 33 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 3e6c398b155..040dce932ea 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -22,32 +22,26 @@ class google_docs_ir_attachment(osv.osv): return client - def create_empty_google_doc(self, cr, uid, model, id, context=None): + def create_empty_google_doc(self, cr, uid, model, id, type_doc): #import pdb; pdb.set_trace() '''Associate a copy of the gdoc identified by 'gdocs_res_id' to the current entity. @param cr: the current row from the database cursor. @param uid: the current user ID, for security checks. @param model: the current model name. - @param context: a standard dictionary for contextual values. + @param type_doc: text, spreadsheet or slide. @return the document object. @return -2 if the google_base_account hasn't been configured yet. ''' - if context is None: - context={} - # authenticate client = self._auth(cr, uid) if client == -2: return -2 - if 'type' not in context: - context['type'] = 'text' - # create the document in google docs - if context['type']=='slide': + if type_doc=='slide': local_resource = gdata.docs.data.Resource(gdata.docs.data.PRESENTATION_LABEL) - elif context['type']=='spreadsheet': + elif type_doc=='spreadsheet': local_resource = gdata.docs.data.Resource(gdata.docs.data.SPREADSHEET_LABEL) else: local_resource = gdata.docs.data.Resource(gdata.docs.data.DOCUMENT_LABEL) @@ -55,8 +49,8 @@ class google_docs_ir_attachment(osv.osv): # register into the db self.create(cr, uid, { - 'model': context['active_model'], #model, - 'res_id': context['active_id'], + 'model': model, + 'res_id': ids[0], 'type': 'url', #'name': TODO pending from the working config 'url': gdocs_resource.get_alternate_link().href @@ -64,7 +58,7 @@ class google_docs_ir_attachment(osv.osv): return gdocs_resource - def copy_gdoc(self, cr, uid, model, gdocs_resource_id, context=None): + def copy_gdoc(self, cr, uid, model, id): if context is None: context={} @@ -78,8 +72,8 @@ class google_docs_ir_attachment(osv.osv): # register into the db self.create(cr, uid, { - 'model': context['active_model'], - 'res_id': context['active_id'], + 'model': model, + 'res_id': id[0], 'type': 'url', #'name': TODO pending from the working config 'url': copy_resource.get_alternate_link().href @@ -87,16 +81,6 @@ class google_docs_ir_attachment(osv.osv): return copy_resource - def gdoc_get(self, cr, uid, model, context=None): - google_docs_config_ref = self.pool.get('google.docs.config') - google_template_ids = google_docs_config_ref.search(cr, uid, [('model', '=', model)]) - if not google_template_ids: - # there isn't any template. Create an empty doc. - return self.create_gdoc(cr, uid, model, context) - - # otherwise, copy document from existing template - return self.copy_gdoc(cr, uid, model, google_template_ids[0].gdocs_resource_id) - class google_docs_config(osv.osv): _name = 'google.docs.config' @@ -117,21 +101,18 @@ class google_docs_config(osv.osv): class google_docs(osv.osv): _name = 'google.docs' - def doc_get(self, cr, uid, model, ids, context=None):# TODO fix logic here + def doc_get(self, cr, uid, model, id, type_doc):# TODO fix logic here google_docs_config_ref = self.pool.get('google.docs.config') ir_attachment_ref = self.pool.get('ir.attachment') google_docs_config = google_docs_config_ref.search(cr, uid, [('model_id', '=', model)]) - + if not google_docs_config: - google_document = ir_attachment_ref.create_empty_google_doc(cr, uid, model, ids, context) - #else: - + google_document = ir_attachment_ref.create_empty_google_doc(cr, uid, model, ids, type_doc) + else: + google_document = ir_attachment_ref.copy_gdoc(cr, uid, model, id) print google_docs_config if not google_docs_config: return -1 - - - return 0 From 65d257d4e9fd9bee1c6ab82e63f4f122aa2ffe41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Thu, 1 Mar 2012 16:28:05 +0100 Subject: [PATCH 031/375] [imp] bzr revid: rlo@openerp.com-20120301152805-p7wosq6x4johbosj --- 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 040dce932ea..34b4e5a16ed 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -107,7 +107,7 @@ class google_docs(osv.osv): google_docs_config = google_docs_config_ref.search(cr, uid, [('model_id', '=', model)]) if not google_docs_config: - google_document = ir_attachment_ref.create_empty_google_doc(cr, uid, model, ids, type_doc) + google_document = ir_attachment_ref.create_empty_google_doc(cr, uid, model, id, type_doc) else: google_document = ir_attachment_ref.copy_gdoc(cr, uid, model, id) From 2b774dddfb3bd5cfd43fccade36f6ac362ab25d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Fri, 2 Mar 2012 09:15:13 +0100 Subject: [PATCH 032/375] [imp] js bzr revid: rlo@openerp.com-20120302081513-mzexq3vw6ftzw45s --- addons/google_docs/static/src/js/gdocs.js | 77 ++++++++++++----------- 1 file changed, 42 insertions(+), 35 deletions(-) diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index 9723aac2723..825bd577b66 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -1,40 +1,47 @@ openerp.google_docs = function(instance, session) { -instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.extend({ - init: function() { - this._super.apply(this, arguments); - this.$element.delegate('.oe_google_docs_text_button', 'click', this.on_add_text_gdoc); - this.$element.delegate('.oe_google_docs_spreadsheet_button', 'click', this.on_add_spreadsheet_gdoc); - this.$element.delegate('.oe_google_docs_slide_button', 'click', this.on_add_slide_gdoc); - }, - on_add_text_gdoc: function() { - var self = this; - var $gdocbtn = this.$element.find('.oe_google_docs_text_button'); - $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); - var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); - ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord.id], 'text'], function(r) { - self.do_update(); - }); - }, - on_add_spreadsheet_gdoc: function() { - var self = this; - var $gdocbtn = this.$element.find('.oe_google_docs_spreadsheet_button'); - $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); - var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); - ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord, id], 'spreadsheet'], function(r) { - self.do_update(); - }); - }, - on_add_slide_gdoc: function() { - var self = this; - var $gdocbtn = this.$element.find('.oe_google_docs_slide_button'); - $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); - var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); - ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord,id], 'slide'], function(r) { - self.do_update(); - }); - } -}); + instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.extend({ + init: function() { + this._super.apply(this, arguments); + this.$element.delegate('.oe_google_docs_text_button', 'click', this.on_add_text_gdoc); + this.$element.delegate('.oe_google_docs_spreadsheet_button', 'click', this.on_add_spreadsheet_gdoc); + this.$element.delegate('.oe_google_docs_slide_button', 'click', this.on_add_slide_gdoc); + }, + on_add_text_gdoc: function() { + console.log('on_add_text_gdoc:'); + var self = this; + var $gdocbtn = this.$element.find('.oe_google_docs_text_button'); + $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); + var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); + ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord.id], 'text'], function(r) { + console.log('on_add_text_gdoc: return'); + self.do_update(); + }); + }, + on_add_spreadsheet_gdoc: function() { + console.log('on_add_spreadsheet_gdoc:'); + var self = this; + var $gdocbtn = this.$element.find('.oe_google_docs_spreadsheet_button'); + $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); + var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); + console.log('on_add_spreadsheet_gdoc:'); + ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord.id], 'spreadsheet'], function(r) { + console.log('on_add_spreadsheet_gdoc: return'); + self.do_update(); + }); + }, + on_add_slide_gdoc: function() { + console.log ('on_add_slide_gdoc:'); + var self = this; + var $gdocbtn = this.$element.find('.oe_google_docs_slide_button'); + $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); + var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); + ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord.id], 'slide'], function(r) { + console.log('on_add_slide_gdoc: return'); + self.do_update(); + }); + } + }); }; From 9afb5cfe64b8f67e4ccfe6e048046fb6937aeef0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Fri, 2 Mar 2012 09:30:13 +0100 Subject: [PATCH 033/375] [imp] py bzr revid: rlo@openerp.com-20120302083013-4pvtkjma36ovlzhy --- addons/google_docs/google_docs.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 34b4e5a16ed..5e1f30e38fa 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -22,8 +22,8 @@ class google_docs_ir_attachment(osv.osv): return client - def create_empty_google_doc(self, cr, uid, model, id, type_doc): - #import pdb; pdb.set_trace() + def create_empty_google_doc(self, cr, uid, model, ids, type_doc): + import pdb; pdb.set_trace() '''Associate a copy of the gdoc identified by 'gdocs_res_id' to the current entity. @param cr: the current row from the database cursor. @param uid: the current user ID, for security checks. @@ -49,16 +49,16 @@ class google_docs_ir_attachment(osv.osv): # register into the db self.create(cr, uid, { - 'model': model, + 'res_model': model, 'res_id': ids[0], 'type': 'url', - #'name': TODO pending from the working config + 'name': 'new_foo', # TODO pending from the working config 'url': gdocs_resource.get_alternate_link().href }) return gdocs_resource - def copy_gdoc(self, cr, uid, model, id): + def copy_gdoc(self, cr, uid, model, ids): if context is None: context={} @@ -72,10 +72,10 @@ class google_docs_ir_attachment(osv.osv): # register into the db self.create(cr, uid, { - 'model': model, - 'res_id': id[0], + 'res_model': model, + 'res_id': ids[0], 'type': 'url', - #'name': TODO pending from the working config + 'name': 'copy_foo', # TODO pending from the working config 'url': copy_resource.get_alternate_link().href }) From f0775d762e80c2fdd48b689b253bb02db14e569a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Fri, 2 Mar 2012 09:40:06 +0100 Subject: [PATCH 034/375] [imp] kind of working, just the configuration is missing bzr revid: rlo@openerp.com-20120302084006-m3qx6zfypl6g57r8 --- addons/google_docs/google_docs.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 5e1f30e38fa..3f544c983bc 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -23,7 +23,6 @@ class google_docs_ir_attachment(osv.osv): return client def create_empty_google_doc(self, cr, uid, model, ids, type_doc): - import pdb; pdb.set_trace() '''Associate a copy of the gdoc identified by 'gdocs_res_id' to the current entity. @param cr: the current row from the database cursor. @param uid: the current user ID, for security checks. @@ -52,7 +51,7 @@ class google_docs_ir_attachment(osv.osv): 'res_model': model, 'res_id': ids[0], 'type': 'url', - 'name': 'new_foo', # TODO pending from the working config + 'name': 'new_foo %s' % (type_doc,) , # TODO pending from the working config 'url': gdocs_resource.get_alternate_link().href }) @@ -75,7 +74,7 @@ class google_docs_ir_attachment(osv.osv): 'res_model': model, 'res_id': ids[0], 'type': 'url', - 'name': 'copy_foo', # TODO pending from the working config + 'name': 'copy_foo %s' (type_doc,) , # TODO pending from the working config 'url': copy_resource.get_alternate_link().href }) From ff1fc1a7e9476f33e8a580c0c1f8942e5004bf0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Fri, 2 Mar 2012 11:35:05 +0100 Subject: [PATCH 035/375] [imp] bzr revid: rlo@openerp.com-20120302103505-em22nbb5chumfzuf --- addons/google_docs/__openerp__.py | 3 +- addons/google_docs/google_docs.py | 43 +++++++++++++++++------ addons/google_docs/static/src/js/gdocs.js | 18 ++++++---- 3 files changed, 46 insertions(+), 18 deletions(-) diff --git a/addons/google_docs/__openerp__.py b/addons/google_docs/__openerp__.py index 309ca13edc0..be8eb85d21e 100644 --- a/addons/google_docs/__openerp__.py +++ b/addons/google_docs/__openerp__.py @@ -1,8 +1,9 @@ { 'name': 'Google Docs', - 'version': '0.1', + 'version': '0.2', 'author': 'OpenERP SA', 'website': 'http://openerp.com', + 'category': 'Tools', 'data': [ 'google_docs.xml' ], diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 3f544c983bc..a63043e65ba 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -1,8 +1,31 @@ +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2012 OpenERP SA (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + from osv import osv, fields -import gdata.docs.data -import gdata.docs.client -from gdata.client import RequestError -from gdata.docs.service import DOCUMENT_LABEL +try: + import gdata.docs.data + import gdata.docs.client + from gdata.client import RequestError + from gdata.docs.service import DOCUMENT_LABEL +except ImportError: + raise osv.except_osv(_('Google Docs Error!'), _('Please install gdata-python-client from http://code.google.com/p/gdata-python-client/downloads/list')) class google_docs_ir_attachment(osv.osv): _inherit = 'ir.attachment' @@ -12,7 +35,7 @@ class google_docs_ir_attachment(osv.osv): users_obj = self.pool.get('res.users') user = users_obj.browse(cr, uid, [uid])[0] if not user.gmail_user or not user.gmail_password: - return -2 + return False # login client = gdata.docs.client.DocsClient(source='openerp.com') @@ -29,13 +52,13 @@ class google_docs_ir_attachment(osv.osv): @param model: the current model name. @param type_doc: text, spreadsheet or slide. @return the document object. - @return -2 if the google_base_account hasn't been configured yet. + @return False if the google_base_account hasn't been configured yet. ''' # authenticate client = self._auth(cr, uid) - if client == -2: - return -2 + if client == False: + return False # create the document in google docs if type_doc=='slide': @@ -62,8 +85,8 @@ class google_docs_ir_attachment(osv.osv): context={} client = self._auth(cr, uid) - if client == -2: - return -2 + if client == False: + return False # fetch and copy the original document original_resource = client.get_resource_by_id(gdocs_resource_id) diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index 825bd577b66..63978868901 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -9,36 +9,40 @@ openerp.google_docs = function(instance, session) { this.$element.delegate('.oe_google_docs_slide_button', 'click', this.on_add_slide_gdoc); }, on_add_text_gdoc: function() { - console.log('on_add_text_gdoc:'); var self = this; var $gdocbtn = this.$element.find('.oe_google_docs_text_button'); $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord.id], 'text'], function(r) { - console.log('on_add_text_gdoc: return'); + console.log(r); + if (r == 'False') { + var params = { + error: response, + message: "The user google credentials are not set yet. Contact your administrator for help." + } + $(openerp.web.qweb.render("DialogWarning", params)).dialog({ + title: "User Google credentials are not yet set.", + modal: true, + }); + } self.do_update(); }); }, on_add_spreadsheet_gdoc: function() { - console.log('on_add_spreadsheet_gdoc:'); var self = this; var $gdocbtn = this.$element.find('.oe_google_docs_spreadsheet_button'); $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); - console.log('on_add_spreadsheet_gdoc:'); ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord.id], 'spreadsheet'], function(r) { - console.log('on_add_spreadsheet_gdoc: return'); self.do_update(); }); }, on_add_slide_gdoc: function() { - console.log ('on_add_slide_gdoc:'); var self = this; var $gdocbtn = this.$element.find('.oe_google_docs_slide_button'); $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord.id], 'slide'], function(r) { - console.log('on_add_slide_gdoc: return'); self.do_update(); }); } From 01e67d6dd52daae8e4a54202501167b451655ce9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Mon, 5 Mar 2012 14:52:40 +0100 Subject: [PATCH 036/375] [imp] init config bzr revid: rlo@openerp.com-20120305135240-o1a4sjcerod4l7jh --- addons/google_docs/google_docs.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index a63043e65ba..c254b4944ea 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -104,7 +104,9 @@ class google_docs_ir_attachment(osv.osv): return copy_resource class google_docs_config(osv.osv): - _name = 'google.docs.config' + #_name = 'google.docs.config' + _inherit = 'res.users' + _description = 'User\'s gdocs config' _columns = { 'model_id': fields.many2one('ir.model', 'Model'), @@ -118,7 +120,19 @@ class google_docs_config(osv.osv): 'name_template': 'Google Document' } - + def create(self, cr, uid, vals, context=None): + res = super(users, self).create(cr, uid, vals, context=context) + model_obj=self.pool.get('ir.model') + if vals.get('context_gdocs_resource_id') and vals.get('context_model_id'): + self.write(cr, uid, #[vals['model_id']], {'member_ids':[(4, res)]}, + { + 'model_id': model_obj.get(cr, uid, vals.get('context_model_id'))[0], + 'gdocs_resource_id': vals.get('context_gdocs_resource_id'), + 'name_template': vals('context_name_template'), + 'name': vals('context_name'), + }, + context) + return res class google_docs(osv.osv): _name = 'google.docs' From ce1d3ce094db59b966adf02f8f0a841d84df1707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Mon, 5 Mar 2012 15:50:01 +0100 Subject: [PATCH 037/375] [imp] config view bzr revid: rlo@openerp.com-20120305145001-uut48z736imzbwtn --- addons/google_docs/google_docs.py | 2 +- addons/google_docs/res_config_user_view.xml | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 addons/google_docs/res_config_user_view.xml diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index c254b4944ea..dc4fc7d07b7 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -124,7 +124,7 @@ class google_docs_config(osv.osv): res = super(users, self).create(cr, uid, vals, context=context) model_obj=self.pool.get('ir.model') if vals.get('context_gdocs_resource_id') and vals.get('context_model_id'): - self.write(cr, uid, #[vals['model_id']], {'member_ids':[(4, res)]}, + self.write(cr, uid, { 'model_id': model_obj.get(cr, uid, vals.get('context_model_id'))[0], 'gdocs_resource_id': vals.get('context_gdocs_resource_id'), diff --git a/addons/google_docs/res_config_user_view.xml b/addons/google_docs/res_config_user_view.xml new file mode 100644 index 00000000000..f328e408c10 --- /dev/null +++ b/addons/google_docs/res_config_user_view.xml @@ -0,0 +1,18 @@ + + + + + + res.gdocs.users.form + res.users + form + + + + + + + + + + From fd89caf3cb964e150cb5b8cc7c224cc64ae32fe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Mon, 5 Mar 2012 17:11:15 +0100 Subject: [PATCH 038/375] [imp] bzr revid: rlo@openerp.com-20120305161115-i20h6xst3sg5n181 --- addons/google_docs/google_docs.py | 42 ++++++++++----------- addons/google_docs/res_config_user_view.xml | 12 +++--- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index dc4fc7d07b7..8e093271c9e 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -103,10 +103,27 @@ class google_docs_ir_attachment(osv.osv): return copy_resource -class google_docs_config(osv.osv): - #_name = 'google.docs.config' +class google_docs(osv.osv): + _name = 'google.docs' + + def doc_get(self, cr, uid, model, id, type_doc):# TODO fix logic here + google_docs_config_ref = self.pool.get('res.users') + ir_attachment_ref = self.pool.get('ir.attachment') + google_docs_config = google_docs_config_ref.search(cr, uid, [('model_id', '=', model)]) + + if not google_docs_config: + google_document = ir_attachment_ref.create_empty_google_doc(cr, uid, model, id, type_doc) + else: + google_document = ir_attachment_ref.copy_gdoc(cr, uid, model, id) + + print google_docs_config + + if not google_docs_config: + return -1 + +class users(osv.osv): _inherit = 'res.users' - _description = 'User\'s gdocs config' + _description = "User\'s gdocs config" _columns = { 'model_id': fields.many2one('ir.model', 'Model'), @@ -134,21 +151,4 @@ class google_docs_config(osv.osv): context) return res -class google_docs(osv.osv): - _name = 'google.docs' - - def doc_get(self, cr, uid, model, id, type_doc):# TODO fix logic here - google_docs_config_ref = self.pool.get('google.docs.config') - ir_attachment_ref = self.pool.get('ir.attachment') - google_docs_config = google_docs_config_ref.search(cr, uid, [('model_id', '=', model)]) - - if not google_docs_config: - google_document = ir_attachment_ref.create_empty_google_doc(cr, uid, model, id, type_doc) - else: - google_document = ir_attachment_ref.copy_gdoc(cr, uid, model, id) - - print google_docs_config - - if not google_docs_config: - return -1 - +google_docs_config() diff --git a/addons/google_docs/res_config_user_view.xml b/addons/google_docs/res_config_user_view.xml index f328e408c10..1292947812f 100644 --- a/addons/google_docs/res_config_user_view.xml +++ b/addons/google_docs/res_config_user_view.xml @@ -1,16 +1,18 @@ + - - res.gdocs.users.form + + + google_docs.config.user.inherited.form res.users + form - - - + From 0102ccd723b7e5837f657cb5fdc643e4b0ec00a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Tue, 6 Mar 2012 11:31:51 +0100 Subject: [PATCH 039/375] [imp] bzr revid: rlo@openerp.com-20120306103151-983wrsjoyw6rlo2h --- addons/google_docs/__openerp__.py | 2 +- addons/google_docs/google_docs.py | 2 +- addons/google_docs/google_docs.xml | 32 +++++++++++++++++------------- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/addons/google_docs/__openerp__.py b/addons/google_docs/__openerp__.py index be8eb85d21e..84fc2899ec3 100644 --- a/addons/google_docs/__openerp__.py +++ b/addons/google_docs/__openerp__.py @@ -1,5 +1,5 @@ { - 'name': 'Google Docs', + 'name': 'Google Docs integration', 'version': '0.2', 'author': 'OpenERP SA', 'website': 'http://openerp.com', diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 8e093271c9e..1fc3daf7959 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -151,4 +151,4 @@ class users(osv.osv): context) return res -google_docs_config() +users() diff --git a/addons/google_docs/google_docs.xml b/addons/google_docs/google_docs.xml index d0e842b566e..12107a53419 100644 --- a/addons/google_docs/google_docs.xml +++ b/addons/google_docs/google_docs.xml @@ -1,16 +1,20 @@ + - - - res.company.form.gdocs - google.docs - form - - - - - - - - - + + + + + + res.user.google_docs.config.inherited + res.users + + form + + + + + + + From b216e3af53b8424c0243f953536c91c660951bb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Tue, 6 Mar 2012 11:38:11 +0100 Subject: [PATCH 040/375] [imp] bzr revid: rlo@openerp.com-20120306103811-tjj7cgdc21jl2hs1 --- addons/google_docs/google_docs.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/google_docs/google_docs.xml b/addons/google_docs/google_docs.xml index 12107a53419..e623e23f005 100644 --- a/addons/google_docs/google_docs.xml +++ b/addons/google_docs/google_docs.xml @@ -11,8 +11,7 @@ form - + From 2a33e0e3b7c128040b1d8a1100cf66fa85e5c70d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Tue, 6 Mar 2012 13:03:19 +0100 Subject: [PATCH 041/375] [imp] bzr revid: rlo@openerp.com-20120306120319-uy3rny4texi1yzlu --- addons/google_docs/google_docs.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/google_docs/google_docs.xml b/addons/google_docs/google_docs.xml index e623e23f005..cb1fed68657 100644 --- a/addons/google_docs/google_docs.xml +++ b/addons/google_docs/google_docs.xml @@ -10,9 +10,9 @@ form - + - + From 80229d461930b205f15d1d8d2651efe1913360ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Tue, 6 Mar 2012 13:58:58 +0100 Subject: [PATCH 042/375] [imp] user config bzr revid: rlo@openerp.com-20120306125858-22qgeowa58mw419r --- addons/google_docs/google_docs.py | 10 +++++----- addons/google_docs/google_docs.xml | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 1fc3daf7959..91c6d1daab4 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -126,15 +126,15 @@ class users(osv.osv): _description = "User\'s gdocs config" _columns = { - 'model_id': fields.many2one('ir.model', 'Model'), - 'gdocs_resource_id': fields.char('Google resource ID', size=64), - 'name_template': fields.char('GDoc name template ', size=64, help='This is the name which appears on google side'), - 'name': fields.char('Name', size=64, help='This is the attachment\'s name. As well, it appears on the panel.') + 'context_model_id': fields.many2one('ir.model', 'Model'), + 'context_gdocs_resource_id': fields.char('Google resource ID', size=64), + 'context_name_template': fields.char('GDoc name template ', size=64, help='This is the name which appears on google side'), + 'context_name': fields.char('Name', size=64, help='This is the attachment\'s name. As well, it appears on the panel.') # 'multi': fields.boolean('Multiple documents') } _defaults = { - 'name_template': 'Google Document' + 'context_name_template': 'Google Document' } def create(self, cr, uid, vals, context=None): diff --git a/addons/google_docs/google_docs.xml b/addons/google_docs/google_docs.xml index cb1fed68657..0aeff3dde5f 100644 --- a/addons/google_docs/google_docs.xml +++ b/addons/google_docs/google_docs.xml @@ -12,6 +12,9 @@ + + + From 98036bbe03dde733bd680a947639309f97a4664e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Tue, 6 Mar 2012 14:08:08 +0100 Subject: [PATCH 043/375] [imp] user config bzr revid: rlo@openerp.com-20120306130808-c9vvp9zq67j6g4jx --- addons/google_docs/google_docs.xml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/addons/google_docs/google_docs.xml b/addons/google_docs/google_docs.xml index 0aeff3dde5f..333909f11a0 100644 --- a/addons/google_docs/google_docs.xml +++ b/addons/google_docs/google_docs.xml @@ -10,12 +10,15 @@ form - - - - - - + + + + + + + + +
From 1fcc9a8b17bf2c730afa5ebaf71ee3d5d4975196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Wed, 7 Mar 2012 10:30:30 +0100 Subject: [PATCH 044/375] [imp] add entries into user preferences form bzr revid: rlo@openerp.com-20120307093030-hrp6k8vvyhej7enc --- .../google_base_account_view.xml | 46 +++++++++++++------ addons/google_docs/google_docs.xml | 20 ++++++++ 2 files changed, 51 insertions(+), 15 deletions(-) diff --git a/addons/google_base_account/google_base_account_view.xml b/addons/google_base_account/google_base_account_view.xml index 9296ba135c0..eb01e3ad370 100644 --- a/addons/google_base_account/google_base_account_view.xml +++ b/addons/google_base_account/google_base_account_view.xml @@ -1,20 +1,36 @@ - - res.users.google.form1 - res.users - form - - - - - - - - - - - + + res.users.google.form1 + res.users + form + + + + + + + + + + + + + + res.users.prefs.google.form1 + res.users + form + + + + + + + + + + + diff --git a/addons/google_docs/google_docs.xml b/addons/google_docs/google_docs.xml index 333909f11a0..1d49319749a 100644 --- a/addons/google_docs/google_docs.xml +++ b/addons/google_docs/google_docs.xml @@ -4,6 +4,26 @@ + + res.user.google_docs.prefs.inherited + res.users + + form + + + + + + + + + + + + res.user.google_docs.config.inherited res.users From 714c70e435e4efd24537a68c853e6b13b2f457b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Mon, 12 Mar 2012 13:38:52 +0100 Subject: [PATCH 045/375] [imp] menu entry bzr revid: rlo@openerp.com-20120312123852-qc8881g3s3w1rk9n --- addons/google_docs/res_config_user_view.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/google_docs/res_config_user_view.xml b/addons/google_docs/res_config_user_view.xml index 1292947812f..cc6268f6757 100644 --- a/addons/google_docs/res_config_user_view.xml +++ b/addons/google_docs/res_config_user_view.xml @@ -16,5 +16,6 @@ + From a08205304ba18db7160c56ba4dc5502f36c689e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Mon, 12 Mar 2012 15:41:31 +0100 Subject: [PATCH 046/375] [imp] bzr revid: rlo@openerp.com-20120312144131-k6sx56o0x699cr56 --- addons/google_docs/google_docs.py | 27 ++++++++++++--------- addons/google_docs/res_config_user_view.xml | 5 ++-- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 91c6d1daab4..874c8893ca6 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -109,7 +109,7 @@ class google_docs(osv.osv): def doc_get(self, cr, uid, model, id, type_doc):# TODO fix logic here google_docs_config_ref = self.pool.get('res.users') ir_attachment_ref = self.pool.get('ir.attachment') - google_docs_config = google_docs_config_ref.search(cr, uid, [('model_id', '=', model)]) + google_docs_config = google_docs_config_ref.search(cr, uid, [('context_model_id', '=', model)]) if not google_docs_config: google_document = ir_attachment_ref.create_empty_google_doc(cr, uid, model, id, type_doc) @@ -121,20 +121,22 @@ class google_docs(osv.osv): if not google_docs_config: return -1 -class users(osv.osv): - _inherit = 'res.users' - _description = "User\'s gdocs config" +class config(osv.osv): + _name = 'google.docs.config' + _description = "Google Docs templates config" _columns = { 'context_model_id': fields.many2one('ir.model', 'Model'), 'context_gdocs_resource_id': fields.char('Google resource ID', size=64), 'context_name_template': fields.char('GDoc name template ', size=64, help='This is the name which appears on google side'), - 'context_name': fields.char('Name', size=64, help='This is the attachment\'s name. As well, it appears on the panel.') - # 'multi': fields.boolean('Multiple documents') + 'context_name': fields.char('Name', size=64, help='This is the attachment\'s name. As well, it appears on the panel.'), + 'context_multiple': fields.boolean('Multiple documents') } _defaults = { - 'context_name_template': 'Google Document' + 'context_name_template': 'Google Document', + 'context_name': 'pr_%(name)', + 'context_multiple': False, } def create(self, cr, uid, vals, context=None): @@ -143,12 +145,13 @@ class users(osv.osv): if vals.get('context_gdocs_resource_id') and vals.get('context_model_id'): self.write(cr, uid, { - 'model_id': model_obj.get(cr, uid, vals.get('context_model_id'))[0], - 'gdocs_resource_id': vals.get('context_gdocs_resource_id'), - 'name_template': vals('context_name_template'), - 'name': vals('context_name'), + 'context_model_id': model_obj.get(cr, uid, vals.get('context_model_id'))[0], + 'context_gdocs_resource_id': vals.get('context_gdocs_resource_id'), + 'context_name_template': vals.get('context_name_template'), + 'context_name': self.context_name % {'name': vals.get('context_name')}, + 'context_multiple': vals.get('context_multiple'), }, context) return res -users() +config() diff --git a/addons/google_docs/res_config_user_view.xml b/addons/google_docs/res_config_user_view.xml index cc6268f6757..25d043808f6 100644 --- a/addons/google_docs/res_config_user_view.xml +++ b/addons/google_docs/res_config_user_view.xml @@ -6,8 +6,7 @@ google_docs.config.user.inherited.form - res.users - + google.docs.config form @@ -16,6 +15,6 @@ - + From a03c7370a726745028b4ae95fb080212edcb09b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Wed, 14 Mar 2012 10:28:16 +0100 Subject: [PATCH 047/375] [fix] fix views according to review bzr revid: rlo@openerp.com-20120314092816-9y67h31gmm7lfjgf --- .../google_base_account_view.xml | 16 --------------- addons/google_docs/google_docs.xml | 20 ------------------- 2 files changed, 36 deletions(-) diff --git a/addons/google_base_account/google_base_account_view.xml b/addons/google_base_account/google_base_account_view.xml index eb01e3ad370..3f228a6dee8 100644 --- a/addons/google_base_account/google_base_account_view.xml +++ b/addons/google_base_account/google_base_account_view.xml @@ -16,21 +16,5 @@ - - - res.users.prefs.google.form1 - res.users - form - - - - - - - - - - - diff --git a/addons/google_docs/google_docs.xml b/addons/google_docs/google_docs.xml index 1d49319749a..333909f11a0 100644 --- a/addons/google_docs/google_docs.xml +++ b/addons/google_docs/google_docs.xml @@ -4,26 +4,6 @@ - - res.user.google_docs.prefs.inherited - res.users - - form - - - - - - - - - - - - res.user.google_docs.config.inherited res.users From 7774af75d71376aa937acbbe3804daa3cdd92b01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Wed, 14 Mar 2012 11:42:05 +0100 Subject: [PATCH 048/375] [imp] menu entry bzr revid: rlo@openerp.com-20120314104205-y3rpasw7vft8lcb7 --- addons/google_docs/__openerp__.py | 7 +++++-- addons/google_docs/res_config_user_view.xml | 8 +++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/addons/google_docs/__openerp__.py b/addons/google_docs/__openerp__.py index 84fc2899ec3..437e5a864f5 100644 --- a/addons/google_docs/__openerp__.py +++ b/addons/google_docs/__openerp__.py @@ -4,9 +4,9 @@ 'author': 'OpenERP SA', 'website': 'http://openerp.com', 'category': 'Tools', - 'data': [ + ''' 'data': [ 'google_docs.xml' - ], + ],''' 'installable': True, 'auto_install': False, 'web': True, @@ -14,6 +14,9 @@ 'qweb' : [ "static/src/xml/gdocs.xml", ], + 'update_xml': [ + 'res_config_user_view.xml' + ], 'depends': ['google_base_account'], 'description': 'Module to attach a google document to any model.' } diff --git a/addons/google_docs/res_config_user_view.xml b/addons/google_docs/res_config_user_view.xml index 25d043808f6..ecad7aaeb74 100644 --- a/addons/google_docs/res_config_user_view.xml +++ b/addons/google_docs/res_config_user_view.xml @@ -15,6 +15,12 @@ - + + google_docs.config.user.inherited.form + google.docs.config + ir.actions.act_window + + + From d7eafc7be860c2716a7f4cf23841aa2c4d4b92e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Wed, 14 Mar 2012 12:14:02 +0100 Subject: [PATCH 049/375] [imp] menu entry bzr revid: rlo@openerp.com-20120314111402-pgvsget19m5ttzli --- addons/google_docs/res_config_user_view.xml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/addons/google_docs/res_config_user_view.xml b/addons/google_docs/res_config_user_view.xml index ecad7aaeb74..6dee0d6211e 100644 --- a/addons/google_docs/res_config_user_view.xml +++ b/addons/google_docs/res_config_user_view.xml @@ -4,10 +4,10 @@ - - google_docs.config.user.inherited.form + + google_docs.config.form google.docs.config - form + tree - google_docs.config.user.inherited.form + Models configuration google.docs.config ir.actions.act_window - + form + - + + From 416ffbb6350c45bc834974f36a3483348d58996a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Wed, 14 Mar 2012 13:55:02 +0100 Subject: [PATCH 050/375] [imp] bzr revid: rlo@openerp.com-20120314125502-ca1g8cw7y3dm65e4 --- addons/google_docs/google_docs.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 874c8893ca6..4d2533b9c0b 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -140,15 +140,15 @@ class config(osv.osv): } def create(self, cr, uid, vals, context=None): - res = super(users, self).create(cr, uid, vals, context=context) + res = super(config, self).create(cr, uid, vals, context=context) model_obj=self.pool.get('ir.model') if vals.get('context_gdocs_resource_id') and vals.get('context_model_id'): self.write(cr, uid, { - 'context_model_id': model_obj.get(cr, uid, vals.get('context_model_id'))[0], + 'context_model_id': model_obj.read(cr, uid, [vals.get('context_model_id')])[0], 'context_gdocs_resource_id': vals.get('context_gdocs_resource_id'), 'context_name_template': vals.get('context_name_template'), - 'context_name': self.context_name % {'name': vals.get('context_name')}, + 'context_name': vals.get('context_name'), 'context_multiple': vals.get('context_multiple'), }, context) From 38cd2dbe298f3b93b8ebc6dc87e016f0e6e09173 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Wed, 14 Mar 2012 14:18:51 +0100 Subject: [PATCH 051/375] [imp] config form bzr revid: rlo@openerp.com-20120314131851-a3kzuzxt7f33fc9x --- addons/google_docs/google_docs.py | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 4d2533b9c0b..0d99f5f6d35 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -139,19 +139,4 @@ class config(osv.osv): 'context_multiple': False, } - def create(self, cr, uid, vals, context=None): - res = super(config, self).create(cr, uid, vals, context=context) - model_obj=self.pool.get('ir.model') - if vals.get('context_gdocs_resource_id') and vals.get('context_model_id'): - self.write(cr, uid, - { - 'context_model_id': model_obj.read(cr, uid, [vals.get('context_model_id')])[0], - 'context_gdocs_resource_id': vals.get('context_gdocs_resource_id'), - 'context_name_template': vals.get('context_name_template'), - 'context_name': vals.get('context_name'), - 'context_multiple': vals.get('context_multiple'), - }, - context) - return res - config() From 78903a8554d776632a17cde897ddcd2a7093b329 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Wed, 14 Mar 2012 16:29:29 +0100 Subject: [PATCH 052/375] [imp] bzr revid: rlo@openerp.com-20120314152929-gqshx94zrcn34qzk --- addons/google_docs/google_docs.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 0d99f5f6d35..e78444fb045 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -139,4 +139,11 @@ class config(osv.osv): 'context_multiple': False, } + def has_config_set(self, cr, uid, model): + print model + import pdb + pdb.set_trace() + domain = [('context_model_id', '=', model)] + return self.search_count(cr, uid, domain) != 0 + config() From ebb97da4d16ffdbf74091bc6742f1f175ac0142b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20L=C3=B3pez=20L=C3=B3pez=20=28OpenERP=29?= Date: Fri, 16 Mar 2012 10:00:54 +0100 Subject: [PATCH 053/375] [fix] fix according to requirements bzr revid: rlo@openerp.com-20120316090054-0datu37ojj98lx13 --- addons/google_docs/google_docs.py | 12 +++---- addons/google_docs/static/src/js/gdocs.js | 39 ++++++++++------------- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index e78444fb045..e822bb304bf 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -106,7 +106,7 @@ class google_docs_ir_attachment(osv.osv): class google_docs(osv.osv): _name = 'google.docs' - def doc_get(self, cr, uid, model, id, type_doc):# TODO fix logic here + def doc_get(self, cr, uid, model, id, type_doc): google_docs_config_ref = self.pool.get('res.users') ir_attachment_ref = self.pool.get('ir.attachment') google_docs_config = google_docs_config_ref.search(cr, uid, [('context_model_id', '=', model)]) @@ -139,11 +139,11 @@ class config(osv.osv): 'context_multiple': False, } - def has_config_set(self, cr, uid, model): - print model - import pdb - pdb.set_trace() + def get_config(self, cr, uid, model): domain = [('context_model_id', '=', model)] - return self.search_count(cr, uid, domain) != 0 + if self.search_count(cr, uid, domain) != 0: + return False + else: + return self.search(cr, uid, domain) config() diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index 63978868901..b7353fd0bba 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -4,11 +4,24 @@ openerp.google_docs = function(instance, session) { instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.extend({ init: function() { this._super.apply(this, arguments); - this.$element.delegate('.oe_google_docs_text_button', 'click', this.on_add_text_gdoc); - this.$element.delegate('.oe_google_docs_spreadsheet_button', 'click', this.on_add_spreadsheet_gdoc); - this.$element.delegate('.oe_google_docs_slide_button', 'click', this.on_add_slide_gdoc); + var self = this; + var config = new instance.web.DataSet(this, 'google.docs.config', this.view.dataset.get_context()); + config.call('get_config', [this.view.dataset.ids[this.view.dataset.index]], function(r) { + console.log(r); + // if the configuration isn't set, the buttons should be hidden. + if (r==false) { + $('.oe_google_docs_text_button').css('display', 'none'); + + return; + } + + var attachment = new instance.web.DataSet(this, 'ir.attachment', self.view.dataset.get_context()); + attachment.call('copy_gdoc', [self.view.dataset.model, [self.view.datarecord.id]], function(res) { + console.log(res); + }); + }); }, - on_add_text_gdoc: function() { + on_add_gdoc: function() { var self = this; var $gdocbtn = this.$element.find('.oe_google_docs_text_button'); $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); @@ -28,24 +41,6 @@ openerp.google_docs = function(instance, session) { self.do_update(); }); }, - on_add_spreadsheet_gdoc: function() { - var self = this; - var $gdocbtn = this.$element.find('.oe_google_docs_spreadsheet_button'); - $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); - var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); - ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord.id], 'spreadsheet'], function(r) { - self.do_update(); - }); - }, - on_add_slide_gdoc: function() { - var self = this; - var $gdocbtn = this.$element.find('.oe_google_docs_slide_button'); - $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); - var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); - ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord.id], 'slide'], function(r) { - self.do_update(); - }); - } }); }; From 9d5db695ee3e1cfc1f0d306bccf117640a14927b Mon Sep 17 00:00:00 2001 From: MVA Date: Mon, 19 Mar 2012 11:31:32 +0100 Subject: [PATCH 054/375] [REF] correct the code and change the view files bzr revid: mva@openerp.com-20120319103132-av7c09avg4p0xgt3 --- addons/google_docs/__openerp__.py | 3 -- addons/google_docs/google_docs.py | 53 +++++++++++---------- addons/google_docs/google_docs.xml | 25 ---------- addons/google_docs/res_config_user_view.xml | 30 +++++++++--- addons/google_docs/static/src/js/gdocs.js | 3 +- addons/google_docs/static/src/xml/gdocs.xml | 10 +--- 6 files changed, 54 insertions(+), 70 deletions(-) delete mode 100644 addons/google_docs/google_docs.xml diff --git a/addons/google_docs/__openerp__.py b/addons/google_docs/__openerp__.py index 437e5a864f5..237804c4f5b 100644 --- a/addons/google_docs/__openerp__.py +++ b/addons/google_docs/__openerp__.py @@ -4,9 +4,6 @@ 'author': 'OpenERP SA', 'website': 'http://openerp.com', 'category': 'Tools', - ''' 'data': [ - 'google_docs.xml' - ],''' 'installable': True, 'auto_install': False, 'web': True, diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index e822bb304bf..d37f28eb349 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -30,22 +30,22 @@ except ImportError: class google_docs_ir_attachment(osv.osv): _inherit = 'ir.attachment' - def _auth(self, cr, uid): + def _auth(self, cr, uid,context=None): # check google_base_account users_obj = self.pool.get('res.users') user = users_obj.browse(cr, uid, [uid])[0] - if not user.gmail_user or not user.gmail_password: + if not user.gmail_user or not user.gmail_password: return False # login client = gdata.docs.client.DocsClient(source='openerp.com') client.ssl = True client.http_client.debug = False - client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') + client.ClientLogin(user.gmail_user, user.gmail_password, client.source, service='writely') #authentification in a gmail account return client - def create_empty_google_doc(self, cr, uid, model, ids, type_doc): + def create_empty_google_doc(self, cr, uid, model, ids, type_doc,context=None): '''Associate a copy of the gdoc identified by 'gdocs_res_id' to the current entity. @param cr: the current row from the database cursor. @param uid: the current user ID, for security checks. @@ -54,12 +54,13 @@ class google_docs_ir_attachment(osv.osv): @return the document object. @return False if the google_base_account hasn't been configured yet. ''' - + # authenticate client = self._auth(cr, uid) if client == False: - return False - + return False #return an error + + # create the document in google docs if type_doc=='slide': local_resource = gdata.docs.data.Resource(gdata.docs.data.PRESENTATION_LABEL) @@ -67,6 +68,7 @@ class google_docs_ir_attachment(osv.osv): local_resource = gdata.docs.data.Resource(gdata.docs.data.SPREADSHEET_LABEL) else: local_resource = gdata.docs.data.Resource(gdata.docs.data.DOCUMENT_LABEL) + gdocs_resource = client.post(entry=local_resource, uri='https://docs.google.com/feeds/default/private/full/') # register into the db @@ -76,30 +78,28 @@ class google_docs_ir_attachment(osv.osv): 'type': 'url', 'name': 'new_foo %s' % (type_doc,) , # TODO pending from the working config 'url': gdocs_resource.get_alternate_link().href - }) - + },context=context) + + return gdocs_resource - def copy_gdoc(self, cr, uid, model, ids): - if context is None: - context={} - + def copy_gdoc(self, cr, uid, model, ids,context=None): client = self._auth(cr, uid) if client == False: return False - # fetch and copy the original document original_resource = client.get_resource_by_id(gdocs_resource_id) copy_resource = client.copy_resource(entry=original_resource) - + # register into the db self.create(cr, uid, { 'res_model': model, 'res_id': ids[0], 'type': 'url', - 'name': 'copy_foo %s' (type_doc,) , # TODO pending from the working config + 'name': 'file_name', + 'name': 'copy_foo %s' (type_doc,) , #TODO pending from the working config 'url': copy_resource.get_alternate_link().href - }) + },context=context) return copy_resource @@ -107,20 +107,17 @@ class google_docs(osv.osv): _name = 'google.docs' def doc_get(self, cr, uid, model, id, type_doc): - google_docs_config_ref = self.pool.get('res.users') ir_attachment_ref = self.pool.get('ir.attachment') - google_docs_config = google_docs_config_ref.search(cr, uid, [('context_model_id', '=', model)]) + google_docs_config = self.pool.get('google.docs.config').search(cr, uid, [('context_model_id', '=', model)]) - if not google_docs_config: - google_document = ir_attachment_ref.create_empty_google_doc(cr, uid, model, id, type_doc) - else: + if google_docs_config: google_document = ir_attachment_ref.copy_gdoc(cr, uid, model, id) - - print google_docs_config - - if not google_docs_config: + else: + google_document = ir_attachment_ref.create_empty_google_doc(cr, uid, model, id, type_doc) return -1 + + class config(osv.osv): _name = 'google.docs.config' _description = "Google Docs templates config" @@ -138,6 +135,10 @@ class config(osv.osv): 'context_name': 'pr_%(name)', 'context_multiple': False, } + def has_config_set(self, cr, uid, model,context=None): + print model + import pdb + pdb.set_trace() def get_config(self, cr, uid, model): domain = [('context_model_id', '=', model)] diff --git a/addons/google_docs/google_docs.xml b/addons/google_docs/google_docs.xml deleted file mode 100644 index 333909f11a0..00000000000 --- a/addons/google_docs/google_docs.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - res.user.google_docs.config.inherited - res.users - - form - - - - - - - - - - - - - - diff --git a/addons/google_docs/res_config_user_view.xml b/addons/google_docs/res_config_user_view.xml index 6dee0d6211e..09fa3ae4dda 100644 --- a/addons/google_docs/res_config_user_view.xml +++ b/addons/google_docs/res_config_user_view.xml @@ -4,25 +4,41 @@ - - google_docs.config.form + + google_docs.config.tree google.docs.config tree - + - + + + google_docs.config.form + google.docs.config + form + + + + + + + + + + + + + Models configuration google.docs.config ir.actions.act_window form - + - + diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index b7353fd0bba..c6bc1caa5ed 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -4,6 +4,7 @@ openerp.google_docs = function(instance, session) { instance.web.form.SidebarAttachments = instance.web.form.SidebarAttachments.extend({ init: function() { this._super.apply(this, arguments); + this.$element.delegate('.oe_google_docs_text_button', 'click', this.on_add_text_gdoc); var self = this; var config = new instance.web.DataSet(this, 'google.docs.config', this.view.dataset.get_context()); config.call('get_config', [this.view.dataset.ids[this.view.dataset.index]], function(r) { @@ -21,7 +22,7 @@ openerp.google_docs = function(instance, session) { }); }); }, - on_add_gdoc: function() { + on_add_text_gdoc: function() { var self = this; var $gdocbtn = this.$element.find('.oe_google_docs_text_button'); $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); diff --git a/addons/google_docs/static/src/xml/gdocs.xml b/addons/google_docs/static/src/xml/gdocs.xml index f401512e96b..1182e9f8421 100644 --- a/addons/google_docs/static/src/xml/gdocs.xml +++ b/addons/google_docs/static/src/xml/gdocs.xml @@ -4,13 +4,6 @@ -
-
-
-
-
-
-
+
From f77cecb90c39041267455b05b23764f85e6783a5 Mon Sep 17 00:00:00 2001 From: MVA Date: Tue, 20 Mar 2012 17:03:20 +0100 Subject: [PATCH 055/375] [IMP] add oauth bzr revid: mva@openerp.com-20120320160320-tykxuosgpq1r28ag --- addons/google_docs/google_docs.py | 52 +++++++++++++++------ addons/google_docs/res_config_user_view.xml | 2 - addons/google_docs/static/src/js/gdocs.js | 1 - addons/google_docs/static/src/xml/gdocs.xml | 7 ++- 4 files changed, 42 insertions(+), 20 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index d37f28eb349..09bb1879bdd 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -24,6 +24,9 @@ try: import gdata.docs.client from gdata.client import RequestError from gdata.docs.service import DOCUMENT_LABEL + import gdata.auth + import gdata.docs.service + import webbrowser except ImportError: raise osv.except_osv(_('Google Docs Error!'), _('Please install gdata-python-client from http://code.google.com/p/gdata-python-client/downloads/list')) @@ -56,11 +59,15 @@ class google_docs_ir_attachment(osv.osv): ''' # authenticate + + ''' client = self._auth(cr, uid) if client == False: - return False #return an error - - + return False + ''' + client = self.pool.get('google.oauth') + client.login(cr,uid,ids,context=context) + # create the document in google docs if type_doc=='slide': local_resource = gdata.docs.data.Resource(gdata.docs.data.PRESENTATION_LABEL) @@ -68,8 +75,9 @@ class google_docs_ir_attachment(osv.osv): local_resource = gdata.docs.data.Resource(gdata.docs.data.SPREADSHEET_LABEL) else: local_resource = gdata.docs.data.Resource(gdata.docs.data.DOCUMENT_LABEL) - - gdocs_resource = client.post(entry=local_resource, uri='https://docs.google.com/feeds/default/private/full/') + + #create a new doc in Google Docs + gdocs_resource = client.Post(entry=local_resource, uri='https://docs.google.com/feeds/default/private/full/') # register into the db self.create(cr, uid, { @@ -117,14 +125,13 @@ class google_docs(osv.osv): return -1 - class config(osv.osv): _name = 'google.docs.config' _description = "Google Docs templates config" _columns = { 'context_model_id': fields.many2one('ir.model', 'Model'), - 'context_gdocs_resource_id': fields.char('Google resource ID', size=64), + 'context_gdocs_resource_id': fields.char('Google resource ID', size=64,help='This is the id of the template document you kind find it in the URL'), 'context_name_template': fields.char('GDoc name template ', size=64, help='This is the name which appears on google side'), 'context_name': fields.char('Name', size=64, help='This is the attachment\'s name. As well, it appears on the panel.'), 'context_multiple': fields.boolean('Multiple documents') @@ -135,16 +142,35 @@ class config(osv.osv): 'context_name': 'pr_%(name)', 'context_multiple': False, } - def has_config_set(self, cr, uid, model,context=None): - print model - import pdb - pdb.set_trace() - def get_config(self, cr, uid, model): domain = [('context_model_id', '=', model)] if self.search_count(cr, uid, domain) != 0: return False else: return self.search(cr, uid, domain) - config() + + + +class oauth (osv.osv): + _name = 'google.oauth' + def login(self,cr,uid,ids,context=None): + consumer_key = '751376579939.apps.googleusercontent.com' + consumer_secret = '_KGpgyO8DZIseyG3N-j-h8gN' + gd_client = gdata.docs.service.DocsService() + #Set OAuth input parameters + gd_client.SetOAuthInputParameters(gdata.auth.OAuthSignatureMethod.HMAC_SHA1,consumer_key, consumer_secret=consumer_secret) + #Fetch OAuth Request token + request_token = gd_client.FetchOAuthRequestToken() + #Set the fetched OAuth token + gd_client.SetOAuthToken(request_token) + #Generate OAuth authorization URL + auth_url = gd_client.GenerateOAuthAuthorizationURL() + webbrowser.open(auth_url) + print gd_client.SetOAuthToken(request_token) + consumer_key = raw_input('Please enter consumer key: ') + + #Upgrade to an OAuth access token + gd_client.UpgradeToOAuthAccessToken() + #Access Token + gd_client.token_store.find_token(request_token.scopes[0]) diff --git a/addons/google_docs/res_config_user_view.xml b/addons/google_docs/res_config_user_view.xml index 09fa3ae4dda..9920cc6965b 100644 --- a/addons/google_docs/res_config_user_view.xml +++ b/addons/google_docs/res_config_user_view.xml @@ -29,8 +29,6 @@
- - Models configuration google.docs.config diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index c6bc1caa5ed..c32dc4c8829 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -12,7 +12,6 @@ openerp.google_docs = function(instance, session) { // if the configuration isn't set, the buttons should be hidden. if (r==false) { $('.oe_google_docs_text_button').css('display', 'none'); - return; } diff --git a/addons/google_docs/static/src/xml/gdocs.xml b/addons/google_docs/static/src/xml/gdocs.xml index 1182e9f8421..927b35f115d 100644 --- a/addons/google_docs/static/src/xml/gdocs.xml +++ b/addons/google_docs/static/src/xml/gdocs.xml @@ -5,14 +5,13 @@ - - From 2f1baf8f40908b54db0950f596fbe98e35d7cf9a Mon Sep 17 00:00:00 2001 From: MVA Date: Wed, 28 Mar 2012 11:34:56 +0200 Subject: [PATCH 058/375] [IMP] replace the static name in the document name bzr revid: mva@openerp.com-20120328093456-7wgnnvizvg0r747i --- addons/google_docs/google_docs.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index bba8524023a..8c882a3422a 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -61,13 +61,13 @@ class google_docs_ir_attachment(osv.osv): local_resource = gdata.docs.data.Resource(gdata.docs.data.DOCUMENT_LABEL) #create a new doc in Google Docs gdocs_resource = client.post(entry=local_resource, uri='https://docs.google.com/feeds/default/private/full/') - name = gdocs_resource.title + # register into the db self.create(cr, uid, { 'res_model': model, 'res_id': ids[0], 'type': 'url', - 'name': name, + 'name': ('new_%s' % gdocs_resource.title.text), 'url': gdocs_resource.get_alternate_link().href, },context=context) @@ -86,8 +86,7 @@ class google_docs_ir_attachment(osv.osv): 'res_model': model, 'res_id': ids[0], 'type': 'url', - 'name': 'file_name', - 'name': 'copy_foo' , #TODO pending from the working config + 'name': 'copy_%s' % gdocs_resource.title.text, 'url': copy_resource.get_alternate_link().href },context=context) From c46481f1deb9e692058cd1ed42f9b96127ad6556 Mon Sep 17 00:00:00 2001 From: MVA Date: Wed, 28 Mar 2012 11:47:18 +0200 Subject: [PATCH 059/375] [IMP] add a raise error to check if configuration is ok bzr revid: mva@openerp.com-20120328094718-xk5brbglmeo49cid --- addons/google_docs/google_docs.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 8c882a3422a..13d9634dcf8 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -43,7 +43,8 @@ class google_docs_ir_attachment(osv.osv): user_config = google_pool.default_get( cr, uid, {'user' : '' , 'password' : ''},context=context) #login gmail account client = google_pool.google_login( user_config['user'], user_config['password'], type='docs_client', context=context) - + if not client: + raise osv.except_osv(('Google Docs Error!'),("Check your google configuration in users/synchronization") ) return client def create_empty_google_doc(self, cr, uid, model, ids, type_doc,context=None): From 774aa481c2f60df74d8b01f03b00cad002d8e105 Mon Sep 17 00:00:00 2001 From: MVA Date: Wed, 28 Mar 2012 12:10:15 +0200 Subject: [PATCH 060/375] [IMP] correct the copy with the good document title bzr revid: mva@openerp.com-20120328101015-4v1fit8z3cno9y91 --- addons/google_docs/google_docs.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 13d9634dcf8..1e6071cd716 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -78,16 +78,17 @@ class google_docs_ir_attachment(osv.osv): def copy_gdoc(self, cr, uid, model, google_res_id, ids,context=None): client = self._auth(cr, uid) # fetch and copy the original document + print 'test' original_resource = client.get_resource_by_id(google_res_id) - #copy the document you choose in the configuration - copy_resource = client.copy_resource(original_resource,'copy_foo') + #copy the document you choose in the configuration + copy_resource = client.copy_resource(original_resource,'copy_%s' % original_resource.title.text) # register into the db self.create(cr, uid, { 'res_model': model, 'res_id': ids[0], 'type': 'url', - 'name': 'copy_%s' % gdocs_resource.title.text, + 'name': 'copy_%s' % original_resource.title.text, 'url': copy_resource.get_alternate_link().href },context=context) From 95a86ec57dfb22569ed9b1bd8ea36ae44f9e6856 Mon Sep 17 00:00:00 2001 From: MVA Date: Wed, 28 Mar 2012 13:41:13 +0200 Subject: [PATCH 061/375] [IMP] add some comment and add a raise if the google resource is not correct bzr revid: mva@openerp.com-20120328114113-vspkkbvpdfnt3mho --- addons/google_docs/google_docs.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 1e6071cd716..6e91ee64658 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -76,13 +76,18 @@ class google_docs_ir_attachment(osv.osv): return 1 def copy_gdoc(self, cr, uid, model, google_res_id, ids,context=None): + ''' + copy an existing document in google docs + ''' + client = self._auth(cr, uid) # fetch and copy the original document - print 'test' - original_resource = client.get_resource_by_id(google_res_id) - #copy the document you choose in the configuration - copy_resource = client.copy_resource(original_resource,'copy_%s' % original_resource.title.text) - + try: + original_resource = client.get_resource_by_id(google_res_id) + #copy the document you choose in the configuration + copy_resource = client.copy_resource(original_resource,'copy_%s' % original_resource.title.text) + except: + raise osv.except_osv(('Google Docs Error!'),("Your ressource id is not correct. You can find the id in the google docs URL") ) # register into the db self.create(cr, uid, { 'res_model': model, @@ -126,6 +131,10 @@ class config(osv.osv): 'context_name': 'pr_%(name)', } def get_config(self, cr, uid, model): + ''' + Method use with the js to hidde or show the add google doc button + @return : list of configuration ids or false + ''' domain = [('context_model_id', '=', model)] if self.search_count(cr, uid, domain) != 0: return False From d4152e970378881f82373d4e09c8d23eea1d2535 Mon Sep 17 00:00:00 2001 From: MVA Date: Fri, 30 Mar 2012 16:51:49 +0200 Subject: [PATCH 062/375] [IMP] change js remove unusfull code and the file name configuration bzr revid: mva@openerp.com-20120330145149-04gqj8lvleb9pa53 --- addons/google_docs/google_docs.py | 39 ++++++++++++--------- addons/google_docs/res_config_user_view.xml | 11 +++--- addons/google_docs/static/src/js/gdocs.js | 20 ++++------- addons/google_docs/static/src/xml/gdocs.xml | 3 +- 4 files changed, 35 insertions(+), 38 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 6e91ee64658..3045cbab279 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -47,7 +47,7 @@ class google_docs_ir_attachment(osv.osv): raise osv.except_osv(('Google Docs Error!'),("Check your google configuration in users/synchronization") ) return client - def create_empty_google_doc(self, cr, uid, model, ids, type_doc,context=None): + def create_empty_google_doc(self, cr, uid, name_gdocs, model, ids, type_doc,context=None): '''Associate a copy of the gdoc identified by 'gdocs_res_id' to the current entity. @param cr: the current row from the database cursor. @param uid: the current user ID, for security checks. @@ -62,24 +62,22 @@ class google_docs_ir_attachment(osv.osv): local_resource = gdata.docs.data.Resource(gdata.docs.data.DOCUMENT_LABEL) #create a new doc in Google Docs gdocs_resource = client.post(entry=local_resource, uri='https://docs.google.com/feeds/default/private/full/') - # register into the db self.create(cr, uid, { 'res_model': model, 'res_id': ids[0], 'type': 'url', - 'name': ('new_%s' % gdocs_resource.title.text), + 'name': 'Google Doc', 'url': gdocs_resource.get_alternate_link().href, },context=context) return 1 - def copy_gdoc(self, cr, uid, model, google_res_id, ids,context=None): + def copy_gdoc(self, cr, uid, name_gdocs, model, google_res_id, ids,context=None): ''' copy an existing document in google docs ''' - client = self._auth(cr, uid) # fetch and copy the original document try: @@ -93,7 +91,7 @@ class google_docs_ir_attachment(osv.osv): 'res_model': model, 'res_id': ids[0], 'type': 'url', - 'name': 'copy_%s' % original_resource.title.text, + 'name': name_gdocs, 'url': copy_resource.get_alternate_link().href },context=context) @@ -104,14 +102,20 @@ class google_docs(osv.osv): def doc_get(self, cr, uid, model, id, type_doc,context=None): ir_attachment_ref = self.pool.get('ir.attachment') - google_docs_config = self.pool.get('google.docs.config').search(cr, uid, [('context_model_id', '=', model)]) + pool_gdoc_config = self.pool.get('google.docs.config') + google_docs_config = pool_gdoc_config.search(cr, uid, [('model_id', '=', model)]) + name_gdocs='' + if google_docs_config: + name_gdocs = pool_gdoc_config.browse(cr,uid,google_docs_config,context=context)[0].name_template + print name_gdocs + # check if a model is configurate with a template if google_docs_config: for google_config in self.pool.get('google.docs.config').browse(cr,uid,google_docs_config,context=context): - google_res_id = google_config.context_gdocs_resource_id - google_document = ir_attachment_ref.copy_gdoc(cr, uid, model,google_res_id, id) + google_res_id = google_config.gdocs_resource_id + google_document = ir_attachment_ref.copy_gdoc(cr, uid,name_gdocs ,model,google_res_id, id) else: - google_document = ir_attachment_ref.create_empty_google_doc(cr, uid, model, id, type_doc) + google_document = ir_attachment_ref.create_empty_google_doc(cr, uid,name_gdocs, model, id, type_doc) return -1 @@ -120,24 +124,25 @@ class config(osv.osv): _description = "Google Docs templates config" _columns = { - 'context_model_id': fields.many2one('ir.model', 'Model'), - 'context_gdocs_resource_id': fields.char('Google resource ID', size=64,help='This is the id of the template document you kind find it in the URL'), - 'context_name_template': fields.char('GDoc name template ', size=64, help='This is the name which appears on google side'), - 'context_name': fields.char('Name', size=64, help='This is the attachment\'s name. As well, it appears on the panel.'), + 'model_id': fields.many2one('ir.model', 'Model'), + 'gdocs_resource_id': fields.char('Google resource ID', size=64,help='This is the id of the template document you kind find it in the URL'), + 'name_template': fields.char('GDoc name template ', size=64, help='This is the name which appears on google side'), } _defaults = { - 'context_name_template': 'Google Document', - 'context_name': 'pr_%(name)', + 'name_template': 'pr_%(name)', } def get_config(self, cr, uid, model): ''' Method use with the js to hidde or show the add google doc button @return : list of configuration ids or false ''' - domain = [('context_model_id', '=', model)] + domain = [('model_id', '=', model)] if self.search_count(cr, uid, domain) != 0: return False + # attached only one document to a model + if self.pool.get('ir.attachment').search_count(cr,uid,[('url','like','https://docs.google.com/document%')]) !=0: + return False else: return self.search(cr, uid, domain) diff --git a/addons/google_docs/res_config_user_view.xml b/addons/google_docs/res_config_user_view.xml index be56f324d2d..46abe5b2d80 100644 --- a/addons/google_docs/res_config_user_view.xml +++ b/addons/google_docs/res_config_user_view.xml @@ -10,7 +10,7 @@ tree - + @@ -21,10 +21,9 @@ form - - - - + + +
@@ -34,7 +33,7 @@ google.docs.config ir.actions.act_window form - +
diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index c32dc4c8829..9dc4f5c88d3 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -8,36 +8,28 @@ openerp.google_docs = function(instance, session) { var self = this; var config = new instance.web.DataSet(this, 'google.docs.config', this.view.dataset.get_context()); config.call('get_config', [this.view.dataset.ids[this.view.dataset.index]], function(r) { - console.log(r); // if the configuration isn't set, the buttons should be hidden. if (r==false) { - $('.oe_google_docs_text_button').css('display', 'none'); + $('.oe_google_docs_text_button',this.$element).hide(); return; } var attachment = new instance.web.DataSet(this, 'ir.attachment', self.view.dataset.get_context()); attachment.call('copy_gdoc', [self.view.dataset.model, [self.view.datarecord.id]], function(res) { - console.log(res); }); }); }, + start: function() { + this._super(); + console.log($('.oe_google_docs_text_button',this.$element)) + $('.oe_google_docs_text_button',this.$element) + }, on_add_text_gdoc: function() { var self = this; var $gdocbtn = this.$element.find('.oe_google_docs_text_button'); $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord.id], 'text'], function(r) { - console.log(r); - if (r == 'False') { - var params = { - error: response, - message: "The user google credentials are not set yet. Contact your administrator for help." - } - $(openerp.web.qweb.render("DialogWarning", params)).dialog({ - title: "User Google credentials are not yet set.", - modal: true, - }); - } self.do_update(); }); }, diff --git a/addons/google_docs/static/src/xml/gdocs.xml b/addons/google_docs/static/src/xml/gdocs.xml index acb352bf9b0..2de7efcbd43 100644 --- a/addons/google_docs/static/src/xml/gdocs.xml +++ b/addons/google_docs/static/src/xml/gdocs.xml @@ -5,7 +5,8 @@ From fb989dbfb7161b9f79ce5bf2024a5f13423b1b6f Mon Sep 17 00:00:00 2001 From: MVA Date: Mon, 2 Apr 2012 15:18:17 +0200 Subject: [PATCH 063/375] [IMP] change the way to name the attachement and change when you already have a google document the button will be hide bzr revid: mva@openerp.com-20120402131817-oxv227m8i11pfsjx --- addons/google_docs/google_docs.py | 19 +++++------ addons/google_docs/static/src/js/gdocs.js | 40 +++++++++++++---------- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index 3045cbab279..e195fcf21a6 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -105,9 +105,11 @@ class google_docs(osv.osv): pool_gdoc_config = self.pool.get('google.docs.config') google_docs_config = pool_gdoc_config.search(cr, uid, [('model_id', '=', model)]) name_gdocs='' + model_fields_dic = self.pool.get(model).read(cr,uid,id,[]) + if google_docs_config: name_gdocs = pool_gdoc_config.browse(cr,uid,google_docs_config,context=context)[0].name_template - print name_gdocs + name_gdocs = name_gdocs % model_fields_dic[0] # check if a model is configurate with a template if google_docs_config: @@ -130,22 +132,17 @@ class config(osv.osv): } _defaults = { - 'name_template': 'pr_%(name)', + 'name_template': 'pr_%(name)s', } - def get_config(self, cr, uid, model): + def get_config(self, cr, uid, ids, model,context=None): ''' Method use with the js to hidde or show the add google doc button @return : list of configuration ids or false ''' - domain = [('model_id', '=', model)] - if self.search_count(cr, uid, domain) != 0: - return False - # attached only one document to a model - if self.pool.get('ir.attachment').search_count(cr,uid,[('url','like','https://docs.google.com/document%')]) !=0: - return False + if self.pool.get('ir.attachment').search_count(cr,uid,[('url','like','https://docs.google.com/document%'),('res_model','=',model),('res_id','=',ids[0])]) !=0: + return False else: - return self.search(cr, uid, domain) - + return True config() diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index 9dc4f5c88d3..425de5045d8 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -5,31 +5,35 @@ openerp.google_docs = function(instance, session) { init: function() { this._super.apply(this, arguments); this.$element.delegate('.oe_google_docs_text_button', 'click', this.on_add_text_gdoc); - var self = this; - var config = new instance.web.DataSet(this, 'google.docs.config', this.view.dataset.get_context()); - config.call('get_config', [this.view.dataset.ids[this.view.dataset.index]], function(r) { - // if the configuration isn't set, the buttons should be hidden. - if (r==false) { - $('.oe_google_docs_text_button',this.$element).hide(); - return; - } + }, + + + on_attachments_loaded: function(attachments) { + this._super(attachments); + var config = new instance.web.DataSet(this, 'google.docs.config', this.view.dataset.get_context()); + config.call('get_config', [[this.view.datarecord.id],this.view.dataset.model,this.view.dataset.get_context()], function(r) { + if (r == false){ + $('.oe_google_docs_text_button',this.$element).hide(); + } + }); + }, - var attachment = new instance.web.DataSet(this, 'ir.attachment', self.view.dataset.get_context()); - attachment.call('copy_gdoc', [self.view.dataset.model, [self.view.datarecord.id]], function(res) { - }); - }); - }, - start: function() { - this._super(); - console.log($('.oe_google_docs_text_button',this.$element)) - $('.oe_google_docs_text_button',this.$element) - }, on_add_text_gdoc: function() { var self = this; var $gdocbtn = this.$element.find('.oe_google_docs_text_button'); $gdocbtn.attr('disabled', 'true').find('img, span').toggle(); var ds = new instance.web.DataSet(this, 'google.docs', this.view.dataset.get_context()); ds.call('doc_get', [this.view.dataset.model, [this.view.datarecord.id], 'text'], function(r) { + if (r == 'False') { + var params = { + error: response, + message: "The user google credentials are not set yet. Contact your administrator for help." + } + $(openerp.web.qweb.render("DialogWarning", params)).dialog({ + title: "User Google credentials are not yet set.", + modal: true, + }); + } self.do_update(); }); }, From 515af1d3d988af70a833a22ada9edce49dd3c351 Mon Sep 17 00:00:00 2001 From: MVA Date: Tue, 3 Apr 2012 09:07:52 +0200 Subject: [PATCH 064/375] [IMP] change the domain to enable spreadsheet and reindentation in the js file bzr revid: mva@openerp.com-20120403070752-4gfw1hg3p6ifzmwi --- addons/google_docs/google_docs.py | 2 +- addons/google_docs/static/src/js/gdocs.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index e195fcf21a6..5a6d33e9725 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -139,7 +139,7 @@ class config(osv.osv): Method use with the js to hidde or show the add google doc button @return : list of configuration ids or false ''' - if self.pool.get('ir.attachment').search_count(cr,uid,[('url','like','https://docs.google.com/document%'),('res_model','=',model),('res_id','=',ids[0])]) !=0: + if self.pool.get('ir.attachment').search_count(cr,uid,[('url','like','https://docs.google.com/%'),('res_model','=',model),('res_id','=',ids[0])]) !=0: return False else: return True diff --git a/addons/google_docs/static/src/js/gdocs.js b/addons/google_docs/static/src/js/gdocs.js index 425de5045d8..a8e941f01f6 100644 --- a/addons/google_docs/static/src/js/gdocs.js +++ b/addons/google_docs/static/src/js/gdocs.js @@ -13,7 +13,7 @@ openerp.google_docs = function(instance, session) { var config = new instance.web.DataSet(this, 'google.docs.config', this.view.dataset.get_context()); config.call('get_config', [[this.view.datarecord.id],this.view.dataset.model,this.view.dataset.get_context()], function(r) { if (r == false){ - $('.oe_google_docs_text_button',this.$element).hide(); + $('.oe_google_docs_text_button',this.$element).hide(); } }); }, From cbf9c244beab1689c1499baad9a3084d18625474 Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Tue, 10 Apr 2012 12:46:27 +0530 Subject: [PATCH 065/375] [IMP] set home page of all menus bzr revid: jap@tinyerp.com-20120410071627-4gk2gz2fhf45ruux --- addons/account/account_invoice_view.xml | 3 +++ addons/account/board_account_view.xml | 2 +- addons/document/board_document_view.xml | 4 ++-- addons/document/document_view.xml | 4 ++++ addons/event/event_view.xml | 2 ++ addons/hr/hr_board.xml | 2 +- addons/hr/hr_view.xml | 3 +++ addons/membership/membership_view.xml | 2 ++ addons/mrp/board_manufacturing_view.xml | 4 ++-- addons/mrp/mrp_view.xml | 3 +++ addons/project/board_project_view.xml | 4 ++-- addons/project/project_view.xml | 3 +++ addons/purchase/board_purchase_view.xml | 2 +- addons/purchase/purchase_view.xml | 11 +++++++---- .../purchase_requisition_view.xml | 2 +- addons/sale/board_sale_view.xml | 4 ++-- addons/sale/sale_view.xml | 2 +- addons/stock/board_warehouse_view.xml | 2 +- addons/stock/stock_view.xml | 5 ++++- 19 files changed, 45 insertions(+), 19 deletions(-) diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index 6d499b4d3ad..4444c51dd02 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -430,6 +430,9 @@ With Customer Invoices you can create and manage sales invoices issued to your customers. OpenERP can also generate draft invoices automatically from sales orders or deliveries. You should only confirm them before sending them to your customers. + diff --git a/addons/account/board_account_view.xml b/addons/account/board_account_view.xml index 6417bb99d88..1d7865c0f01 100644 --- a/addons/account/board_account_view.xml +++ b/addons/account/board_account_view.xml @@ -63,7 +63,7 @@ - + diff --git a/addons/document/board_document_view.xml b/addons/document/board_document_view.xml index 4412423c97b..44fb44d2a18 100644 --- a/addons/document/board_document_view.xml +++ b/addons/document/board_document_view.xml @@ -49,8 +49,8 @@ id="menu_reports_document_manager" icon="terp-graph"/> - + board.document.manager.form1 diff --git a/addons/document/document_view.xml b/addons/document/document_view.xml index e426444f26d..4ddd85bb8f7 100644 --- a/addons/document/document_view.xml +++ b/addons/document/document_view.xml @@ -357,6 +357,10 @@ action="action_document_file_form" id="menu_document_files" parent="menu_document_doc"/> + + + ir.actions.act_window diff --git a/addons/event/event_view.xml b/addons/event/event_view.xml index 0825cef42c5..200b9f88237 100644 --- a/addons/event/event_view.xml +++ b/addons/event/event_view.xml @@ -304,6 +304,8 @@ Event is the low level object used by meeting and others documents that should be synchronized with mobile devices or calendar applications through caldav. Most of the users should work in the Calendar menu, and not in the list of events. + + - + diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index a954d916385..df5de845c9e 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -188,6 +188,9 @@ Here you can manage your work force by creating employees and assigning them specific properties in the system. Maintain all employee related information and keep track of anything that needs to be recorded for them. The personal information tab will help you maintain their identity data. The Categories tab gives you the opportunity to assign them related employee categories depending on their position and activities within the company. A category can be a seniority level within the company or a department. The Timesheets tab allows to assign them a specific timesheet and analytic journal where they will be able to enter time through the system. In the note tab, you can enter text data that should be recorded for a specific employee. + + kanban diff --git a/addons/membership/membership_view.xml b/addons/membership/membership_view.xml index bdb04525d43..074bed97fcd 100644 --- a/addons/membership/membership_view.xml +++ b/addons/membership/membership_view.xml @@ -208,6 +208,8 @@ + + diff --git a/addons/mrp/board_manufacturing_view.xml b/addons/mrp/board_manufacturing_view.xml index cb81d51d439..4ce4f5e5995 100644 --- a/addons/mrp/board_manufacturing_view.xml +++ b/addons/mrp/board_manufacturing_view.xml @@ -35,8 +35,8 @@ id="menu_board_manufacturing" parent="menus_dash_mrp" sequence="1"/> - + diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index f96147e9344..7533ddea12e 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -840,6 +840,9 @@ + + Manufacturing Orders ir.actions.act_window diff --git a/addons/project/board_project_view.xml b/addons/project/board_project_view.xml index f4a855283ba..bca37ac3fc4 100644 --- a/addons/project/board_project_view.xml +++ b/addons/project/board_project_view.xml @@ -117,9 +117,9 @@ parent="menu_project_dashboard" sequence="1"/> - + name="Project" sequence="10" action="open_board_project"/> --> diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 95538513f0c..2b86de95427 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -542,6 +542,9 @@ + + Overpassed Tasks project.task diff --git a/addons/purchase/board_purchase_view.xml b/addons/purchase/board_purchase_view.xml index 4c9e776b96b..4d8280059b0 100644 --- a/addons/purchase/board_purchase_view.xml +++ b/addons/purchase/board_purchase_view.xml @@ -116,7 +116,7 @@ parent="menu_purchase_deshboard" sequence="4"/> - + diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index 007c85b98f1..4de426e71f9 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -3,7 +3,7 @@ @@ -312,8 +312,11 @@ - + sequence="0"/> + + + Purchase Orders ir.actions.act_window @@ -323,7 +326,7 @@ Use this menu to search within your purchase orders by references, supplier, products, etc. For each purchase order, you can track the products received, and control the supplier invoices. - + diff --git a/addons/purchase_requisition/purchase_requisition_view.xml b/addons/purchase_requisition/purchase_requisition_view.xml index d6a736eea9c..5e77f46b1a2 100644 --- a/addons/purchase_requisition/purchase_requisition_view.xml +++ b/addons/purchase_requisition/purchase_requisition_view.xml @@ -173,7 +173,7 @@ diff --git a/addons/sale/board_sale_view.xml b/addons/sale/board_sale_view.xml index 8a6caf1a849..4d45151dece 100644 --- a/addons/sale/board_sale_view.xml +++ b/addons/sale/board_sale_view.xml @@ -124,9 +124,9 @@ - + name="Sales"/> --> diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 09ad9381e26..6feff81e9ee 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -1,7 +1,7 @@ diff --git a/addons/stock/board_warehouse_view.xml b/addons/stock/board_warehouse_view.xml index b8de9cf445e..a24f59aa08f 100644 --- a/addons/stock/board_warehouse_view.xml +++ b/addons/stock/board_warehouse_view.xml @@ -70,7 +70,7 @@ - + diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml index 592cb180d22..1d81f80829c 100644 --- a/addons/stock/stock_view.xml +++ b/addons/stock/stock_view.xml @@ -4,7 +4,7 @@ @@ -1924,6 +1924,9 @@ Stock Management + + From 4347226b1d16f73c84f9606b613ec0053602d628 Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Tue, 10 Apr 2012 16:21:25 +0530 Subject: [PATCH 066/375] [IMP] board: improve xml code to set module kanban on setting main menu bzr revid: jap@tinyerp.com-20120410105125-ysmtfc1qgizmldly --- addons/board/board_data_admin.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/board/board_data_admin.xml b/addons/board/board_data_admin.xml index 5f8c2f1b05c..88580c3deb5 100644 --- a/addons/board/board_data_admin.xml +++ b/addons/board/board_data_admin.xml @@ -54,7 +54,7 @@ - + From a163b926e393ef63b30c5f23aad2d652be7ef57d Mon Sep 17 00:00:00 2001 From: "DBR (OpenERP)" Date: Wed, 18 Apr 2012 17:54:59 +0530 Subject: [PATCH 067/375] [IMP]stock: click on warehouse menu tn open product kanban view bzr revid: dbr@tinyerp.com-20120418122459-l27y5wa1b38oaid6 --- addons/product/product_view.xml | 11 +++++++++-- addons/stock/stock_view.xml | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml index 2a12fc9ad08..b721dd2031d 100644 --- a/addons/product/product_view.xml +++ b/addons/product/product_view.xml @@ -263,19 +263,26 @@ - + tree - + form + + + kanban + + + + diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml index cfa73a8806d..4edc1cef753 100644 --- a/addons/stock/stock_view.xml +++ b/addons/stock/stock_view.xml @@ -5,7 +5,7 @@ + web_icon_hover="images/warehouse-hover.png" action="product.product_normal_action"/> From c6ee2737b344ce7f211eac70c9b57c3b7850ea5f Mon Sep 17 00:00:00 2001 From: "DBR (OpenERP)" Date: Thu, 19 Apr 2012 12:58:30 +0530 Subject: [PATCH 068/375] [IMP]sale : remove action of partner form bzr revid: dbr@tinyerp.com-20120419072830-gu41w6tmdmfgowp5 --- addons/hr/hr_board.xml | 1 - addons/sale/sale_view.xml | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/hr/hr_board.xml b/addons/hr/hr_board.xml index 20c0e626619..582d6175d8b 100644 --- a/addons/hr/hr_board.xml +++ b/addons/hr/hr_board.xml @@ -24,7 +24,6 @@ - diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 9b6ede9a278..fc9bc907b1e 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -2,8 +2,7 @@ + id="base.menu_base_partner" name="Sales" sequence="0" groups="base.group_sale_salesman,base.group_sale_manager"/> From d30492d5e316feb39772bae44906712e697c666b Mon Sep 17 00:00:00 2001 From: "DBR (OpenERP)" Date: Thu, 19 Apr 2012 16:04:08 +0530 Subject: [PATCH 069/375] [IMP]sale: Add action bzr revid: dbr@tinyerp.com-20120419103408-d3fag9s327hdow8h --- addons/sale/sale_view.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index fc9bc907b1e..9a0147ef909 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -1,8 +1,6 @@ - + From b3d0828564370a97f340b567131425fc8ba9e8c8 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 23 Apr 2012 11:50:57 +0200 Subject: [PATCH 070/375] [FIX] bloody logo link bzr revid: xmo@openerp.com-20120423095057-gytshtkft5002693 --- addons/web/static/src/xml/base.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 57970c1486e..65c084731bc 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -275,7 +275,10 @@ - + + d.url = '/' + (window.location.search || ''); + +
+ @@ -87,17 +98,13 @@ - - -
+ + @@ -137,17 +147,12 @@ - - - @@ -125,15 +123,25 @@ ir.module.module form -
- - + +
+
+ + - - - @@ -147,26 +155,15 @@ - -
- - - - diff --git a/openerp/addons/base/static/src/css/modules.css b/openerp/addons/base/static/src/css/modules.css index 47460a0972b..ed20ec0907d 100644 --- a/openerp/addons/base/static/src/css/modules.css +++ b/openerp/addons/base/static/src/css/modules.css @@ -36,6 +36,7 @@ .oe_module_desc p { margin: 3px 0 5px; + color: #808080; } .oe_module_desc .oe_button { From 1c09d982bc5dc993d185e0a3a2195b531723ab39 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 21 May 2012 09:25:00 +0200 Subject: [PATCH 299/375] [ADD] note about non-standard fields in facets and facet values bzr revid: xmo@openerp.com-20120521072500-bzjlrybvtepgryq2 --- doc/search-view.rst | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/doc/search-view.rst b/doc/search-view.rst index 02a239924e5..f94132bf3bd 100644 --- a/doc/search-view.rst +++ b/doc/search-view.rst @@ -376,8 +376,17 @@ necessarily having to reimplement all of or ``@filter_domain``. ``"="`` for :js:class:`~openerp.web.search.Field` -Converting to facet objects ---------------------------- +Arbitrary data storage +++++++++++++++++++++++ + +:js:class:`~openerp.web.search.Facet` and +:js:class:`~openerp.web.search.FacetValue` objects (and structures) +provided by your widgets should never be altered by the search view +(or an other widget). This means you are free to add arbitrary fields +in these structures if you need to (because you have more complex +needs than the attributes described in this document). + +Ideally this should be avoided, but the possibility remains. Changes ------- From dc293abcb531bdb7a9830c7eb4776ac19920e22a Mon Sep 17 00:00:00 2001 From: "Amit Patel (OpenERP)" Date: Mon, 21 May 2012 14:10:52 +0530 Subject: [PATCH 300/375] [IMP]:account_voucher:set statusbar at top and also improved code with indentation. bzr revid: apa@tinyerp.com-20120521084052-aexwrj0zuxjkhrk3 --- .../voucher_payment_receipt_view.xml | 18 +++++----- .../voucher_sales_purchase_view.xml | 35 ++++++++----------- 2 files changed, 24 insertions(+), 29 deletions(-) diff --git a/addons/account_voucher/voucher_payment_receipt_view.xml b/addons/account_voucher/voucher_payment_receipt_view.xml index a20eb3b6bf1..f20ca4bdc32 100644 --- a/addons/account_voucher/voucher_payment_receipt_view.xml +++ b/addons/account_voucher/voucher_payment_receipt_view.xml @@ -144,14 +144,14 @@ form
-
+
@@ -298,13 +298,13 @@
-
diff --git a/addons/account_voucher/voucher_sales_purchase_view.xml b/addons/account_voucher/voucher_sales_purchase_view.xml index 75161eec3e4..0b83097fecb 100644 --- a/addons/account_voucher/voucher_sales_purchase_view.xml +++ b/addons/account_voucher/voucher_sales_purchase_view.xml @@ -82,17 +82,14 @@
-
@@ -213,19 +210,17 @@
-
+ From 4fe1d0bc50de26ed087ed6277986e2aed3029edb Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 21 May 2012 11:05:47 +0200 Subject: [PATCH 301/375] [FIX] in-drawer filter look in case of very long name also, add help tooltip if the filter has an @help and an @string bzr revid: xmo@openerp.com-20120521090547-99d7pom8k8dbw6z0 --- addons/web/static/src/css/base.css | 3 +-- addons/web/static/src/css/base.sass | 3 +-- addons/web/static/src/xml/base.xml | 3 ++- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 37b4de1dd32..c101e1beb0b 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1342,13 +1342,12 @@ .openerp .oe_searchview .oe_searchview_drawer .oe_searchview_filters li { list-style: none; padding: 3px 6px 3px 18px; - height: 14px; line-height: 14px; color: inherit; cursor: pointer; } .openerp .oe_searchview .oe_searchview_drawer .oe_searchview_filters li.oe_selected { - background: url(/web/static/src/img/icons/gtk-apply.png) left center no-repeat; + background: url(/web/static/src/img/icons/gtk-apply.png) left 2px no-repeat; } .openerp .oe_searchview .oe_searchview_drawer .oe_searchview_filters li:hover { background-color: #f0f0fa; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 67e2399069b..ca47ebf1edb 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1095,13 +1095,12 @@ $colour4: #8a89ba li list-style: none padding: 3px 6px 3px 18px - height: 14px line-height: 14px color: inherit cursor: pointer &.oe_selected - background: url(/web/static/src/img/icons/gtk-apply.png) left center no-repeat + background: url(/web/static/src/img/icons/gtk-apply.png) left 2px no-repeat // after oe_selected so background color is not overridden &:hover background-color: $hover-background diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index f37dbbddc04..43dd5ebbd24 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1378,7 +1378,8 @@
    -
  • +
From e95eee2bce720c24211c3f18e9dd796f0f25ad1f Mon Sep 17 00:00:00 2001 From: "Amit Patel (OpenERP)" Date: Mon, 21 May 2012 14:53:29 +0530 Subject: [PATCH 302/375] [IMP]:base_calendar:set statusbar at top bzr revid: apa@tinyerp.com-20120521092329-usq1wbnmjlpkg5nf --- addons/base_calendar/base_calendar.py | 9 +- addons/base_calendar/base_calendar_view.xml | 153 ++++++++++---------- 2 files changed, 85 insertions(+), 77 deletions(-) diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py index 4dffd8bcbf8..f91ded74685 100644 --- a/addons/base_calendar/base_calendar.py +++ b/addons/base_calendar/base_calendar.py @@ -333,10 +333,10 @@ class calendar_attendee(osv.osv): ('opt-participant', 'Optional Participation'), \ ('non-participant', 'For information Purpose')], 'Role', \ help='Participation role for the calendar user'), - 'state': fields.selection([('tentative', 'Tentative'), - ('needs-action', 'Needs Action'), - ('accepted', 'Accepted'), + 'state': fields.selection([('needs-action', 'Needs Action'), + ('tentative', 'Tentative'), ('declined', 'Declined'), + ('accepted', 'Accepted'), ('delegated', 'Delegated')], 'State', readonly=True, \ help="Status of the attendee's participation"), 'rsvp': fields.boolean('Required Reply?', @@ -1036,8 +1036,9 @@ class calendar_event(osv.osv): 'Show as', states={'done': [('readonly', True)]}), 'base_calendar_url': fields.char('Caldav URL', size=264), 'state': fields.selection([('tentative', 'Tentative'), + ('cancelled', 'Cancelled'), ('confirmed', 'Confirmed'), - ('cancelled', 'Cancelled')], 'State', readonly=True), + ], 'State', readonly=True), 'exdate': fields.text('Exception Date/Times', help="This property \ defines the list of date/time exceptions for a recurring calendar component."), 'exrule': fields.char('Exception Rule', size=352, help="Defines a \ diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml index 8af1746b5e9..f24f206b107 100644 --- a/addons/base_calendar/base_calendar_view.xml +++ b/addons/base_calendar/base_calendar_view.xml @@ -8,59 +8,63 @@ calendar.attendee form - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • + t-att-title="filter.attrs.string ? filter.attrs.help : undefined">
From da0fbecf5338eb24007446f21f21d3ac95f8b3e7 Mon Sep 17 00:00:00 2001 From: "Amit Patel (OpenERP)" Date: Mon, 21 May 2012 15:57:44 +0530 Subject: [PATCH 304/375] [IMP]:account_vouchar:improved domain for attrs. bzr revid: apa@tinyerp.com-20120521102744-6ygc243zu22gy81y --- addons/account_voucher/voucher_sales_purchase_view.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/account_voucher/voucher_sales_purchase_view.xml b/addons/account_voucher/voucher_sales_purchase_view.xml index 0b83097fecb..f9317190b23 100644 --- a/addons/account_voucher/voucher_sales_purchase_view.xml +++ b/addons/account_voucher/voucher_sales_purchase_view.xml @@ -83,7 +83,7 @@