Message with MH-specific properties.
| 1832 | |
| 1833 | |
| 1834 | class MHMessage(Message): |
| 1835 | """Message with MH-specific properties.""" |
| 1836 | |
| 1837 | _type_specific_attributes = ['_sequences'] |
| 1838 | |
| 1839 | def __init__(self, message=None): |
| 1840 | """Initialize an MHMessage instance.""" |
| 1841 | self._sequences = [] |
| 1842 | Message.__init__(self, message) |
| 1843 | |
| 1844 | def get_sequences(self): |
| 1845 | """Return a list of sequences that include the message.""" |
| 1846 | return self._sequences[:] |
| 1847 | |
| 1848 | def set_sequences(self, sequences): |
| 1849 | """Set the list of sequences that include the message.""" |
| 1850 | self._sequences = list(sequences) |
| 1851 | |
| 1852 | def add_sequence(self, sequence): |
| 1853 | """Add sequence to list of sequences including the message.""" |
| 1854 | if isinstance(sequence, str): |
| 1855 | if not sequence in self._sequences: |
| 1856 | self._sequences.append(sequence) |
| 1857 | else: |
| 1858 | raise TypeError('sequence type must be str: %s' % type(sequence)) |
| 1859 | |
| 1860 | def remove_sequence(self, sequence): |
| 1861 | """Remove sequence from the list of sequences including the message.""" |
| 1862 | try: |
| 1863 | self._sequences.remove(sequence) |
| 1864 | except ValueError: |
| 1865 | pass |
| 1866 | |
| 1867 | def _explain_to(self, message): |
| 1868 | """Copy MH-specific state to message insofar as possible.""" |
| 1869 | if isinstance(message, MaildirMessage): |
| 1870 | sequences = set(self.get_sequences()) |
| 1871 | if 'unseen' in sequences: |
| 1872 | message.set_subdir('cur') |
| 1873 | else: |
| 1874 | message.set_subdir('cur') |
| 1875 | message.add_flag('S') |
| 1876 | if 'flagged' in sequences: |
| 1877 | message.add_flag('F') |
| 1878 | if 'replied' in sequences: |
| 1879 | message.add_flag('R') |
| 1880 | elif isinstance(message, _mboxMMDFMessage): |
| 1881 | sequences = set(self.get_sequences()) |
| 1882 | if 'unseen' not in sequences: |
| 1883 | message.add_flag('RO') |
| 1884 | else: |
| 1885 | message.add_flag('O') |
| 1886 | if 'flagged' in sequences: |
| 1887 | message.add_flag('F') |
| 1888 | if 'replied' in sequences: |
| 1889 | message.add_flag('A') |
| 1890 | elif isinstance(message, MHMessage): |
| 1891 | for sequence in self.get_sequences(): |
no outgoing calls
no test coverage detected
searching dependent graphs…