From 9d3113fa43698cd55e9aa90b16c75e54b7da8787 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Thu, 13 Jan 2011 15:29:04 +0100 Subject: [PATCH] [FIX] base_contact: enable PL/pgSQL before using it lp bug: https://launchpad.net/bugs/701985 fixed bzr revid: odo@openerp.com-20110113142904-zl7gb9cywkhd8687 --- addons/base_contact/base_contact_installer.py | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/addons/base_contact/base_contact_installer.py b/addons/base_contact/base_contact_installer.py index 3936b336e9f..febba654350 100644 --- a/addons/base_contact/base_contact_installer.py +++ b/addons/base_contact/base_contact_installer.py @@ -37,25 +37,30 @@ class base_contact_installer(osv.osv_memory): """ obj = self.pool.get("base.contact.installer").browse(cr, uid, uid, context=context) if obj.migrate: - cr.execute("""DROP TRIGGER IF EXISTS contactjob on res_partner_contact; - CREATE OR REPLACE FUNCTION add_to_job() RETURNS TRIGGER AS $contactjob$ + # Enable PL/pgSQL if not enabled yet in the database + cr.execute("SELECT 1 FROM pg_language WHERE lanname = 'plpgsql'") + if not cr.fetchone(): + cr.execute("CREATE LANGUAGE plpgsql;") + + cr.execute("""DROP TRIGGER IF EXISTS contactjob on res_partner_contact; + CREATE OR REPLACE FUNCTION add_to_job() RETURNS TRIGGER AS $contactjob$ DECLARE new_name varchar; new_phonenum varchar; BEGIN - IF(TG_OP='INSERT') THEN - INSERT INTO res_partner_job(contact_id, address_id, function, state) VALUES(NEW.id, NEW.website::integer,NEW.first_name, 'current'); - UPDATE res_partner_contact set first_name=Null, website=Null, active=True where id=NEW.id; + IF(TG_OP='INSERT') THEN + INSERT INTO res_partner_job(contact_id, address_id, function, state) VALUES(NEW.id, NEW.website::integer,NEW.first_name, 'current'); + UPDATE res_partner_contact set first_name=Null, website=Null, active=True where id=NEW.id; END IF; RETURN NEW; END; - $contactjob$ LANGUAGE plpgsql; - CREATE TRIGGER contactjob AFTER INSERT ON res_partner_contact FOR EACH ROW EXECUTE PROCEDURE add_to_job();""") + $contactjob$ LANGUAGE plpgsql; + CREATE TRIGGER contactjob AFTER INSERT ON res_partner_contact FOR EACH ROW EXECUTE PROCEDURE add_to_job();""") cr.execute("INSERT into res_partner_contact (name, title, email, first_name, website) (SELECT coalesce(name, 'Noname'), title, email, function , to_char(id, '99999999') from res_partner_address)") cr.execute("DROP TRIGGER IF EXISTS contactjob on res_partner_contact") - + cr.execute("DROP FUNCTION IF EXISTS add_to_job()") base_contact_installer()