Я работаю в Odoo v10.Я создал страницу с описанием отпуска (в виде дерева), в которой отображается список запросов на отпуск.Каждый запрос на отпуск имеет свой собственный идентификатор электронной почты в базе данных (т.е. идентификатор электронной почты пользователя, который применил этот запрос на отпуск).Пожалуйста, смотрите изображение ниже.Итак, я хочу, чтобы всякий раз, когда я менял здесь состояние записи, электронное письмо отправлялось на адрес этой записи.
Скажем, например, когда я изменяю «состояние» записи, чей столбец имени'werty' от 'To Approve' до 'Approved', тогда на адрес электронной почты, прикрепленный к этой записи, должно быть отправлено электронное письмо.
Мне просто нужен код для функции, которая может быть вызвана при изменении статуса и этой функциидолжен получить электронную почту этой записи и отправить электронную почту на этом.Я написал код для отправки электронной почты на основе электронной почты.Но это только для фиктивной электронной почты.Мне потребовался адрес электронной почты той записи, статус которой я меняю.
![this is my leave request page](https://i.stack.imgur.com/O37DJ.png)
Вот мой код:
@api.onchange('state')
def test_server_action(self):
fromaddr = "admin123@gmail.com"
toaddr = "yyy.gmail.com"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(fromaddr, "xyz")
msg['Subject'] = "Leave Request Status"
if (self.state == 'confirm'):
body = "Your leave Request has been approved by Dept. Waiting for final approval from office."
msg.attach(MIMEText(body, 'plain'))
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
if (self.state == 'forward'):
body = "Your leave request is more than 15 days. It has been forwarded to higher authority for approval."
msg.attach(MIMEText(body, 'plain'))
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
if (self.state == 'refuse'):
body = "Your leave request has been refused. Contact your department."
msg.attach(MIMEText(body, 'plain'))
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
if(self.state == 'pending'):
body = "Your leave is in pending."
msg.attach(MIMEText(body, 'plain'))
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()