From 050b4caa285e1361a6211ae5503882dc1b022c15 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 1 Aug 2012 15:27:33 +0200 Subject: [PATCH] wip bzr revid: nicolas.vanhoren@openerp.com-20120801132733-p1xjpxf005skr94o --- addons/web_linkedin/__init__.py | 2 +- addons/web_linkedin/__openerp__.py | 3 +- addons/web_linkedin/res_config.py | 53 -------------- addons/web_linkedin/res_config_view.xml | 24 ------- addons/web_linkedin/res_partner_view.xml | 6 -- .../static/src/img/Linkedin_blue.png | Bin 0 -> 5435 bytes addons/web_linkedin/static/src/js/linkedin.js | 68 +++++++++++++++++- .../web_linkedin/static/src/xml/linkedin.xml | 4 +- addons/web_linkedin/web_linkedin.py | 47 ------------ addons/web_linkedin/web_linkedin_view.xml | 21 ++++++ 10 files changed, 93 insertions(+), 135 deletions(-) delete mode 100644 addons/web_linkedin/res_config.py delete mode 100644 addons/web_linkedin/res_config_view.xml delete mode 100644 addons/web_linkedin/res_partner_view.xml create mode 100644 addons/web_linkedin/static/src/img/Linkedin_blue.png create mode 100644 addons/web_linkedin/web_linkedin_view.xml diff --git a/addons/web_linkedin/__init__.py b/addons/web_linkedin/__init__.py index 92b70f98cf8..88f4dc36398 100644 --- a/addons/web_linkedin/__init__.py +++ b/addons/web_linkedin/__init__.py @@ -1,2 +1,2 @@ -import res_config + import web_linkedin \ No newline at end of file diff --git a/addons/web_linkedin/__openerp__.py b/addons/web_linkedin/__openerp__.py index 680bef0c47b..122453d6096 100644 --- a/addons/web_linkedin/__openerp__.py +++ b/addons/web_linkedin/__openerp__.py @@ -9,8 +9,7 @@ This module provides the Integration of the LinkedIn with OpenERP. """, 'update_xml': [ - 'res_partner_view.xml', - 'res_config_view.xml', + 'web_linkedin_view.xml', ], "depends" : ["base"], "js": [ diff --git a/addons/web_linkedin/res_config.py b/addons/web_linkedin/res_config.py deleted file mode 100644 index 4678279f40e..00000000000 --- a/addons/web_linkedin/res_config.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Business Applications -# Copyright (C) 2004-2012 OpenERP S.A. (). -# -# 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 - -class base_config_settings(osv.osv_memory): - _inherit = 'base.config.settings' - _name = 'base.config.settings' - _columns = { - 'default_linkedin_api_key': fields.char('LinkedIn API key', size=128, default_model='res.company', - help="""Give API key of linkedin."""), - 'generate_key': fields.text('Go to URL', readonly=True, - help="""If you have not generate linkedin API Key yet than Go to URL to generate and enter it in above text field."""), - } - _defaults = { - 'generate_key': "To find contact persons from LinkedIn "\ - "\n====================================="\ - "\n* Go to this URL : https://www.linkedin.com/secure/developer "\ - "\n* Add New Application and fill the form,"\ - "\n - JavaScript API Domain is Your domain name (e.g. https://yourcompany.my.openerp.com),"\ - "\n - You can give multiple domain (e.g. yourcompany.my.openerp.com),"\ - "\n - programming tools is Javascript"\ - '\n* Copy the "API Key" and paste it in the field "LinkedIn API Key" here above.' - } - - def execute(self, cr, uid, ids, context=None): - super(base_config_settings,self).execute(cr, uid, ids, context=context) - company_obj = self.pool.get('res.company') - data = self.browse(cr, uid, ids[0], context=context) - company_id = company_obj._company_default_get(cr, uid, 'res.users', context=context) - company_obj.write(cr, uid, [company_id], {'linkedin_api_key': data.default_linkedin_api_key}, context=context) - -base_config_settings() - - diff --git a/addons/web_linkedin/res_config_view.xml b/addons/web_linkedin/res_config_view.xml deleted file mode 100644 index 991f637ec08..00000000000 --- a/addons/web_linkedin/res_config_view.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - General Settings - base.config.settings - - form - 20 - - - - - - - - - - - - - - - diff --git a/addons/web_linkedin/res_partner_view.xml b/addons/web_linkedin/res_partner_view.xml deleted file mode 100644 index de5d694c850..00000000000 --- a/addons/web_linkedin/res_partner_view.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/addons/web_linkedin/static/src/img/Linkedin_blue.png b/addons/web_linkedin/static/src/img/Linkedin_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..c37d0218f7d64711a93bf02cd0469faad5dba9a5 GIT binary patch literal 5435 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 literal 0 HcmV?d00001 diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index d1b163f45ad..d4dc2baf114 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -5,6 +5,72 @@ openerp.web_linkedin = function(instance) { var QWeb = instance.web.qweb; var _t = instance.web._t; - + + instance.web_linkedin.LinkedinTester = instance.web.Class.extend({ + init: function() { + this.api_key = "cxnr0l53n73x"; + this.linkedin_added = false; + this.linkedin_def = $.Deferred(); + }, + test_linkedin: function() { + var self = this; + return this.test_api_key().pipe(function() { + if (self.linkedin_added) + return self.linkedin_def.promise(); + var tag = document.createElement('script'); + tag.type = 'text/javascript'; + tag.src = "http://platform.linkedin.com/in.js"; + tag.innerHTML = 'api_key : ' + self.api_key + '\nauthorize : true'; + document.getElementsByTagName('head')[0].appendChild(tag); + linkedin_added = true; + $(tag).load(function() { + self.linkedin_def.resolve(); + }); + return self.linkedin_def.promise(); + }, function() { + /*return new instance.web.Model("ir.config_parameter").call("set_param", ["web.linkedin.apikey", "cxnr0l53n73x"]).pipe(function() { + return self.test_linkedin(); + });*/ + }); + }, + test_api_key: function() { + if (this.api_key) { + return $.when(); + } + return new instance.web.Model("ir.config_parameter").call("get_param", ["web.linkedin.apikey"]).pipe(function(a) { + if (a !== false) { + self.api_key = a; + return true; + } else { + return $.Deferred().reject(); + } + }); + }, + }); + + instance.web_linkedin.tester = new instance.web_linkedin.LinkedinTester(); + + instance.web_linkedin.Linkedin = instance.web.form.FieldChar.extend({ + init: function() { + this._super.apply(this, arguments); + var self = this; + this.display_dm = new instance.web.DropMisordered(true); + this.on("linkedin_loaded", this, function() { + $("input", self.$element).after(QWeb.render("FieldChar.linkedin")); + }); + }, + initialize_content: function() { + this._super(); + var self = this; + if (! this.get("effective_readonly")) { + this.display_dm.add(instance.web_linkedin.tester.test_linkedin()).then(function() { + self.trigger("linkedin_loaded"); + }); + } else { + this.display_dm.add($.when()); + } + }, + }); + instance.web.form.widgets.add('linkedin', 'instance.web_linkedin.Linkedin'); }; // vim:et fdc=0 fdl=0: diff --git a/addons/web_linkedin/static/src/xml/linkedin.xml b/addons/web_linkedin/static/src/xml/linkedin.xml index ff4d920d031..33ae10752fa 100644 --- a/addons/web_linkedin/static/src/xml/linkedin.xml +++ b/addons/web_linkedin/static/src/xml/linkedin.xml @@ -2,5 +2,7 @@ - + + Yop + \ No newline at end of file diff --git a/addons/web_linkedin/web_linkedin.py b/addons/web_linkedin/web_linkedin.py index 0cbb0b66ed0..4bb525db1ff 100644 --- a/addons/web_linkedin/web_linkedin.py +++ b/addons/web_linkedin/web_linkedin.py @@ -18,52 +18,5 @@ # along with this program. If not, see . # ############################################################################## -import base64 -import urllib2 -import xmlrpclib -import zlib -from web import common -openerpweb = common.http - -from osv import fields, osv - -class company(osv.osv): - _inherit = 'res.company' - _columns = { - 'linkedin_api_key': fields.char('LinkedIn API key', size=128), - } - -company() - -class users(osv.osv): - _inherit = 'res.users' - - def set_linkedin_api_key(self, cr, uid, key, context=None): - company_obj = self.pool.get('res.company') - company_id = company_obj._company_default_get(cr, uid, 'res.users', context=context) - company_obj.write(cr, uid, [company_id], {'linkedin_api_key': key }) - ir_values = self.pool.get('ir.values') - ir_values.set_default(cr, uid, 'res.company', 'linkedin_api_key', key) - - return True -users() - -class res_partner(osv.osv): - _inherit = 'res.partner' - - _columns = { - } - -res_partner() - -# don't know yet if I will remove it -class Binary(openerpweb.Controller): - _cp_path = "/web_linkedin/binary" - - @openerpweb.jsonrequest - def url2binary(self, req,url): - bfile = urllib2.urlopen(url) - return base64.b64encode(bfile.read()) - diff --git a/addons/web_linkedin/web_linkedin_view.xml b/addons/web_linkedin/web_linkedin_view.xml new file mode 100644 index 00000000000..b636722e2c7 --- /dev/null +++ b/addons/web_linkedin/web_linkedin_view.xml @@ -0,0 +1,21 @@ + + + + + res.partner.linkedin.inherit + res.partner + form + + + + + + + + + +