我尝试在日历中取出删除权限 - >安全文件夹 - > calendar_event_all员工,但没有给出任何结果
access_calendar_attendee_employee,calendar.attendee_employee,model_calendar_attendee,base.group_user,1,1,1,1
这是日历安全性的csv文件中的访问安全性行
答案 0 :(得分:0)
您更改日历活动的下方访问权限:
access_calendar_event_all_employee,calendar.event_all_employee,model_calendar_event,base.group_user,1,1,1,0
日历事件限制删除base.group_user = Employee。
如果您想创建自己的组,请添加以下类型代码
示例:强>
<record model="res.groups" id="group_user">
<field name="implied_ids" eval="[(4, ref('group_no_one'))]"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
答案 1 :(得分:0)
这里的想法是, 尝试重写unlink方法
def unlink(self,cr,uid,ids,context=None):
...
...
每当我们尝试删除记录时,都会调用unlink方法,在uid中我们将拥有当前的用户ID。 因此,如果要限制所有用户的删除,则在该方法中使用一些适当的消息引发异常。 如果要限制其他用户的删除,请将当前uid与记录uid进行比较。如果它们不同则提高异常,否则允许。
答案 2 :(得分:0)
您可以使用JavaScript来管理您的目的。在自定义模块的src/static
文件夹中创建一个JS文件并添加此代码(不要忘记将此JS文件包含在模块的data
的{{1}}中) :
__openerp__.py
使用此代码,只有属于指定组的用户(使用openerp.your_module_name = function(instance) {
var _t = instance.web._t;
var Users = new openerp.web.Model('res.users');
var Events = new openerp.web.Model('calendar.event');
instance.web_calendar.CalendarView.include({
remove_event: function(id) {
var self = this;
do_removal = function() {
return $.when(self.dataset.unlink([id])).then(function() {
self.$calendar.fullCalendar('removeEvents', id);
});
};
confirm_removal = function() {
if (self.options.confirm_on_delete) {
if (confirm(_t("Are you sure you want to delete this record?"))) {
do_removal();
}
} else {
do_removal();
}
};
Users.call('has_group', ['put_here_the_module_name_where_the_group_which_can_remove_is_declared.put_here_the_group_which_can_remove'])
.done(function(result) {
if (result == true) {
confirm_removal();
} else {
alert(_t("Your user has not permission to delete this event"));
}
});
},
方法)才能删除日历事件(他们将收到确认对话框:您确定要删除此记录?)。不属于该组的用户将收到一条警告消息:您的用户无权删除此活动。
答案 3 :(得分:0)
您可以像这样扩展unlink方法。
from openerp import models, api, exceptions
class CalendarEvent(models.Model):
_inherit = "calendar.event"
@api.multi
def unlink(self):
for record in self:
if record.create_uid != self.uid:
raise exceptions.Warning(('Error'), ('You cannot delete an event that you did not create.'))
return super(ClassName, self).unlink()
您可以使用记录规则
<record model="ir.rule" id="calendar_event_rule">
<field name="name">Calendar Event : cannot delete someone else's event</field>
<field name="model_id" ref="model_calendar_event"></field>
<!-- Omitting group as you want it to be global -->
<field name="domain_force">[('create_uid', '!=', user.id)]</field>
<field eval="0" name="perm_write"></field>
<field eval="1" name="perm_read"></field>
<field eval="0" name="perm_unlink"></field>
<field eval="1" name="perm_create"></field>
</record>
请注意,使用此规则时,他们也无法对其进行编辑。