Отправить отдельное письмо для каждой записи об изменении статуса - PullRequest
0 голосов
/ 01 марта 2019

Я работаю в Odoo v10.Я создал страницу с описанием отпуска (в виде дерева), в которой отображается список запросов на отпуск.Каждый запрос на отпуск имеет свой собственный идентификатор электронной почты в базе данных (т.е. идентификатор электронной почты пользователя, который применил этот запрос на отпуск).Пожалуйста, смотрите изображение ниже.Итак, я хочу, чтобы всякий раз, когда я менял здесь состояние записи, электронное письмо отправлялось на адрес этой записи.

Скажем, например, когда я изменяю «состояние» записи, чей столбец имени'werty' от 'To Approve' до 'Approved', тогда на адрес электронной почты, прикрепленный к этой записи, должно быть отправлено электронное письмо.

Мне просто нужен код для функции, которая может быть вызвана при изменении статуса и этой функциидолжен получить электронную почту этой записи и отправить электронную почту на этом.Я написал код для отправки электронной почты на основе электронной почты.Но это только для фиктивной электронной почты.Мне потребовался адрес электронной почты той записи, статус которой я меняю.

this is my leave request page

Вот мой код:

@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()
...