有没有办法在特定时间后撤销模块的访问权限?

时间:2017-02-14 12:12:15

标签: openerp

我们想要只读模块。单击父菜单后,所有子菜单也应该只读。 试过fields_view_get()但是有太多的表格来编写方法! 那么有没有其他方法可以做到这一点。我们将根据特定日期永久禁用模块。 请帮忙。

1 个答案:

答案 0 :(得分:0)

您可以遵循的算法取决于您的用户对您的服务器的访问权限。如果他们无法访问“设置”菜单,那么您可以执行的操作是每隔X分钟运行一次cron作业,以验证他们对模块的订阅。

如果cron作业发现他们的订阅无效并且您想要使某些菜单不可点击或某些视图只读,您可以对数据库运行以下查询以找出特定模块创建的视图:

select * from ir_model_data where module = 'your_module_name';

ir_model_data模型实际上包含模块包含的数据的所有键。您使用XML文件(或不使用)创建的所有菜单,视图,组等都在那里。

获得光标中的所有记录后,您可以cr.fetchall()然后循环返回值。每条记录都有modelres_id。当您看到自己感兴趣的菜单或视图时,可以将其active字段设置为false以完全隐藏视图或菜单。

当您循环搜索结果并找到一个字段(即包含model='ir.model.fields'的记录时,您可以将readonly字段设置为True,以便此字段是只读的。您可以执行此操作每个领域。

您可以理解这种方法不是防弹措施。如果您的用户可以访问这些设置(即管理员权限),那么您不能使用Odoo的cron作业,而是配置从您的操作系统运行的cron作业,以调用将执行上述过程的外部Python脚本。 / p>

此外,如果您只读取视图/菜单/字段,它们可能会在Web浏览器上呈现为只读,但没有什么能阻止最终用户制作rpc请求并发送不适当的json数据。

如果用户对您的服务器具有SSH访问权限,则您无能为力。