Use caching on properties

This commit is contained in:
XANTRONIX Development 2024-11-11 01:04:20 -05:00
parent 5544cbbd56
commit 9b4aaa101f

View file

@ -125,7 +125,7 @@ class Message(DatabaseTable):
return self._body
def header(self, key: str):
if self.headers is None:
if self._headers is None:
self.read(self.content)
return self.headers.get(key.lower())
@ -151,40 +151,66 @@ class Message(DatabaseTable):
@created_on.setter
def created_on(self, value):
self.headers['date'] = str(value)
if self._headers is not None:
self._headers['date'] = str(value)
self._cache['created_on'] = str(value)
@property
def message_id(self) -> str:
if self._headers is None:
return self._cache.get('message_id')
return self.header('Message-ID')
@message_id.setter
def message_id(self, value):
self.headers['message-id'] = value
if self._headers is None:
self._cache['message_id'] = value
else:
self.headers['message-id'] = value
@property
def parent_id(self) -> str:
if self._headers is None:
return self._cache.get('parent_id')
return self.header('References')
@parent_id.setter
def parent_id(self, value):
self.headers['references'] = value
if self._headers is None:
self._cache['parent_id'] = value
else:
self.headers['references'] = value
@property
def sender(self) -> str:
if self._headers is None:
return self._cache.get('sender')
return self.headers.get('from', 'Unknown')
@sender.setter
def sender(self, value):
self.headers['from'] = value
if self._headers is None:
self._cache['sender'] = value
else:
self.headers['from'] = value
@property
def subject(self) -> str:
if self._headers is None:
return self._cache.get('subject', '(no subject)')
return self.headers.get('subject', '(no subject)')
@subject.setter
def subject(self, value):
self.headers['subject'] = value
if self._headers is None:
self._cache['subject'] = value
else:
self.headers['subject'] = value
def is_first_line(self):
return len(self.headers) == 1 and (self._body == '' or self._body is None)