Use caching on properties
This commit is contained in:
parent
5544cbbd56
commit
9b4aaa101f
1 changed files with 32 additions and 6 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue