Odoo v10:什么是sudo()和SUPERUSER_ID?

时间:2018-04-05 20:10:59

标签: python python-2.7 odoo odoo-10

我们可以更改方法DELIMITER $$ CREATE PROCEDURE sp_Example() BEGIN SET @countOfTable = (select count(*) from Db1.tbl1); IF @countOfTable > 0 THEN INSERT INTO db1.tblLog ( BatchStoreId, Origin ) SELECT (SELECT DISTINCT SomeID FROM db1.tbl1) as SomeId, (SELECT Origin FROM db1.tblKey WHERE Origin = 'ThisText') as Origin; ELSE SELECT 'table is empty!' as ErrorMessage; End if; SET @countOpp = (SELECT count(*) FROM db1.tbl2), @MR = (SELECT DISTINCT SomeID FROM db1.tbl1), @Opp = (SELECT DISTINCT OtherIDFROM db1.tbl2); IF @countOpp > 0 and @MR = @Opp THEN INSERT INTO db1.tbllog ( SomeID, Origin ) SELECT (SELECT DISTINCT SomeID FROM db1.tbl2) as SomeID, (SELECT Origin FROM db1.tblkey WHERE Origin = 'Secondary Text') as Origin; ELSE SELECT 'SomeID's Do Not Match in tables db1.tbl1 and db1.tbl2' as ErrorMessage; End if; END; 或变量sudo(),以便每次都能获得当前用户而不是管理员吗?

1 个答案:

答案 0 :(得分:0)

如果是SUPERUSER_ID,那就是固定变量。您可以在OCB的openerp文件夹的文件__init__.py中修改它:

SUPERUSER_ID = 1  # Put any ID you want

当然,我不建议你这样做。如果您想获得当前的UID,请执行以下操作:

self.env.user.id

但是,如果是sudo(),你可以毫无问题地做你想做的事。只需将当前用户的ID作为参数发送给方法,如下所示:

xxx.sudo(self.env.user.id).xxx()

但是,您知道任何操作都是由当前用户执行的,除非您应用方法sudo()使操作由与当前用户不同的其他用户执行。我想说的是,如果你什么都不做,那么这些动作是由当前用户执行的,你不需要使用sudo()