2017-02-14 17 views
0

我们想让模块只读。点击父菜单后,所有子菜单也应该是只读的。 试过fields_view_get()但是有太多的表单来编写这个方法! 那么有没有其他的方式来做到这一点。我们根据特定日期永久禁用模块。 请帮忙。在特定时间之后有什么办法可以取消模块访问吗?

+0

究竟你读的意思只有当你谈论的模块和子菜单? –

+0

“禁用模块”是什么意思?你想让你的模块在一段时间后停止工作吗? – Majikat

+0

@GeorgeDaramouskas我们的要求太过于过时,只能将旧数据库中的数据保持为只读。我们正在迁移,但现在想保留旧数据/流程,而不让用户在特定日期之后创建新数据。基本上所有的形式都是只读的。 – Meg

回答

0

,您可以按照实现,这将取决于什么样的访问你的用户的算法有你的服务器。如果他们无法访问“设置”菜单,那么您可以做的是每X分钟运行一次cron作业,以验证其模块的订阅。

如果cron作业认定其认购无效,你想使某些菜单无法点击或阅读一些看法只有你才能对数据库运行下面的查询找出什么看法做一个特定的模块创建:

select * from ir_model_data where module = 'your_module_name';

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

一旦你在你的光标的所有记录,你可以cr.fetchall(),然后循环的返回值。每个记录将有一个model和一个res_id。当您看到您拥有一个您感兴趣的菜单或视图时,您可以将其active字段设置为false以完全隐藏视图或菜单。

当您在结果循环,并找到一个场(即是具有model='ir.model.fields'的记录,你可以在readonly字段设置为True,这样该领域是只读的。您可以为每一个领域做到这一点。

正如你可以理解的,这种方法并不是防弹的,如果你的用户可以访问设置(即管理员权限),那么你不能使用Odoo的cron作业,而是配置一个cron作业从你的操作系统运行来调用一个外部Python脚本,将做上述过程。

另外,如果你只读设置的意见/菜单/场,他们可能会被渲染成只读的网络浏览器,但是没有任何东西阻止最终用户制作rpc请求并发送不适当的json数据。

如果用户有您的服务器的SSH访问权限有没有什么可以做的。

相关问题