2015-09-05 4 views
6

私は、[カレンダー] - > [セキュリティ]フォルダ内の削除アクセス出してみました - あなたは変更カレンダーのセキュリティのcsvファイルで従業員がOdooでカレンダーイベントを削除しないように制限するにはどうすればよいですか?

+0

"1"はアクセス権を付与することを意味し、 "0"はその逆を意味します。 –

+0

はい私はそれを知っていますが、0にしても影響しませんでした。 –

+0

"calender.attendee_employee"モデルのすべてのアクセス権を調べ、どのグループが削除権を持っているかを確認して、 。ユーザーがデータを削除することができる他のアクセス権のために発生する可能性があります。 –

答えて

0

>をcalendar_event_all従業員が、どんな結果に

access_calendar_attendee_employee,calendar.attendee_employee,model_calendar_attendee,base.group_user,1,1,1,1 

を与えていない、これは、アクセスセキュリティのラインでありますカレンダーイベントの下のアクセス権:

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> 
+0

私はすでにこれを行っていますが、効果はありません。それは他のユーザーが他のユーザーイベントを削除することができます –

+0

私は理解できませんか? –

+0

私は既にアクセス権の変更を行っていますが、あるユーザが他のユーザのカレンダーイベントを削除することができます –

0

ここでアイデアです、リンク解除メソッドをオーバーライドすることにより てみ

def unlink(self,cr,uid,ids,context=None): 
... 
... 

レコードを削除しようとするたびにunlinkメソッドが呼び出され、uidには現在のユーザーIDがあります。 したがって、すべてのユーザーの削除を制限する場合は、メソッド内で適切なメッセージを使用して例外を発生させます。 他のユーザーの削除を制限する場合は、現在のuidとrecord uidを比較してください。それらが異なる場合は、例外を発生させます。

0

JavaScriptを使用して目的を管理できます。このコードは、ユーザーだけで

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")); 
       } 
      }); 
    }, 

:カスタムモジュールのごsrc/staticフォルダ内のJSファイルを作成し、このコードを追加します(これはあなたのモジュールの__openerp__.pydataでファイルをJS含めることを忘れないでください)指定されたグループ(Users.callメソッド内)に属しているユーザーは、カレンダーイベントを削除できます(確認ダイアログが表示されます:本当にこのレコードを削除しますか?)。そのグループに所属していないユーザーには、警告メッセージが表示されます。ユーザーはこのイベントを削除する権限を持っていません

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> 

ノートレコードルールを使用することができます。

関連する問題