Move IMAP Email Content body to an attribute (#11096)

* Move IMAP Email Content body to an attribute

* Fix variable names
This commit is contained in:
NotoriousBDG 2018-01-01 21:09:40 -05:00 committed by Paulus Schoutsen
parent 0f914b4c20
commit e2cec9b3ae
2 changed files with 23 additions and 13 deletions

View File

@ -219,17 +219,19 @@ class EmailContentSensor(Entity):
return
if self.sender_allowed(email_message):
message_body = EmailContentSensor.get_msg_text(email_message)
message = EmailContentSensor.get_msg_subject(email_message)
if self._value_template is not None:
message_body = self.render_template(email_message)
message = self.render_template(email_message)
self._message = message_body
self._message = message
self._state_attributes = {
ATTR_FROM:
EmailContentSensor.get_msg_sender(email_message),
ATTR_SUBJECT:
EmailContentSensor.get_msg_subject(email_message),
ATTR_DATE:
email_message['Date']
email_message['Date'],
ATTR_BODY:
EmailContentSensor.get_msg_text(email_message)
}

View File

@ -60,7 +60,9 @@ class EmailContentSensor(unittest.TestCase):
sensor.entity_id = 'sensor.emailtest'
sensor.schedule_update_ha_state(True)
self.hass.block_till_done()
self.assertEqual("Test Message", sensor.state)
self.assertEqual('Test', sensor.state)
self.assertEqual("Test Message",
sensor.device_state_attributes['body'])
self.assertEqual('sender@test.com',
sensor.device_state_attributes['from'])
self.assertEqual('Test', sensor.device_state_attributes['subject'])
@ -89,13 +91,15 @@ class EmailContentSensor(unittest.TestCase):
sensor.entity_id = "sensor.emailtest"
sensor.schedule_update_ha_state(True)
self.hass.block_till_done()
self.assertEqual("Test Message", sensor.state)
self.assertEqual('Link', sensor.state)
self.assertEqual("Test Message",
sensor.device_state_attributes['body'])
def test_multi_part_only_html(self):
"""Test multi part emails with only HTML."""
msg = MIMEMultipart('alternative')
msg['Subject'] = "Link"
msg['From'] = "sender@test.com"
msg['Subject'] = 'Link'
msg['From'] = 'sender@test.com'
html = "<html><head></head><body>Test Message</body></html>"
@ -113,9 +117,10 @@ class EmailContentSensor(unittest.TestCase):
sensor.entity_id = 'sensor.emailtest'
sensor.schedule_update_ha_state(True)
self.hass.block_till_done()
self.assertEqual('Link', sensor.state)
self.assertEqual(
"<html><head></head><body>Test Message</body></html>",
sensor.state)
sensor.device_state_attributes['body'])
def test_multi_part_only_other_text(self):
"""Test multi part emails with only other text."""
@ -136,7 +141,9 @@ class EmailContentSensor(unittest.TestCase):
sensor.entity_id = 'sensor.emailtest'
sensor.schedule_update_ha_state(True)
self.hass.block_till_done()
self.assertEqual("Test Message", sensor.state)
self.assertEqual('Link', sensor.state)
self.assertEqual("Test Message",
sensor.device_state_attributes['body'])
def test_multiple_emails(self):
"""Test multiple emails."""
@ -172,10 +179,11 @@ class EmailContentSensor(unittest.TestCase):
sensor.schedule_update_ha_state(True)
self.hass.block_till_done()
self.assertEqual("Test Message", states[0].state)
self.assertEqual("Test Message 2", states[1].state)
self.assertEqual("Test", states[0].state)
self.assertEqual("Test 2", states[1].state)
self.assertEqual("Test Message 2", sensor.state)
self.assertEqual("Test Message 2",
sensor.device_state_attributes['body'])
def test_sender_not_allowed(self):
"""Test not whitelisted emails."""