2015-08-14 1 views
1

Я использовал следующий код для создания события календаря из моего настраиваемого модуля.Как я могу переопределить этот метод в odoo?

def create_calender_event(self,cr,uid,ids,context=None): 
    calendar_obj = self.pool.get('calendar.event')  
    for rec in self.browse(cr,uid,ids,context=context): 
     if rec.action: 
      for rec_res in rec.action: 
       calendar_obj.create(cr,uid,{'name' : rec_res.act_ion, 
        'user_id' : rec_res.asgnd_to.id, 
        'start_date' : fields.date.today(), 
        'stop_date' : rec_res.due_date, 
        'allday' : True, 
        'partner_ids' : [(6,0, [rec_res.asgnd_to.partner_id.id])] 
       },context=context) 
    return True 

объект Календарь событий использует следующую функцию

def _send_mail_to_attendees(self, cr, uid, ids, email_from=tools.config.get('email_from', False),template_xmlid='calendar_template_meeting_invitation', force=False, context=None): 

Я хочу знать, если я могу переопределить этот метод и установить свой собственный шаблон электронной почты в моем коде выше, так что электронная почта, отправленная при создании календаря событие отправит мое настраиваемое сообщение шаблона электронной почты

ответ

0

Вы можете управлять этим параметром в контексте. В Odoo 8, вы можете изменить контекст таким образом (вы должны написать это в функции, которая вызывает метод_send_mail_to_attendees -это может быть один из них: do_mail_reminder, create_attendees, do_sendmail или write метод класса calendar_event -) :

context.update({ 
    'set_my_template': True, 
    'my_template_xml_id': 'your_module.your_template_xml_id', 
}) 

После того, как вы размещали функцию, которая делает вызов и добавил к нему мир кода, который я написал чуть выше, вы должны переписать def _send_mail_to_attendees таким образом:

def _send_mail_to_attendees(
    self, cr, uid, ids, email_from=tools.config.get('email_from', False), 
    template_xmlid='calendar_template_meeting_invitation', 
    force=False, context=None): 
    if context.get('set_my_template', False): 
     template_xmlid = context.get('my_template_xml_id', False) 
    result = super(calendar_attendee, self)._send_mail_to_attendees(
     cr, uid, ids, email_from, template_xmlid, force, context) 
+0

Forvas большое спасибо за а nswer. К сожалению, я получаю эту ошибку. AttributeError: объект «mom.meeting» не имеет атрибута «env» –

+0

Функция '_send_mail_to_attendees' находится внутри класса' calendar.attendee', не так ли? И функция 'create_calender_event' находится внутри класса, который вы создали. Является ли 'mom.meeting' именем этого класса? (Я имею в виду, это ваша функция 'create_calender_event' внутри класса' mom.meeting') – forvas

+0

да, это внутри класса, без проблем. Может ли проблема с заменой env на ._context решить проблему? (На самом деле я уже изменил с env на ._context) –