A flag on a message
| 96 | |
| 97 | |
| 98 | class MessageFlag(ApiComponent): |
| 99 | """ A flag on a message """ |
| 100 | |
| 101 | def __init__(self, parent, flag_data): |
| 102 | """ An flag on a message |
| 103 | Not available on Outlook Rest Api v2 (only in beta) |
| 104 | |
| 105 | :param parent: parent of this |
| 106 | :type parent: Message |
| 107 | :param dict flag_data: flag data from cloud |
| 108 | """ |
| 109 | super().__init__(protocol=parent.protocol, |
| 110 | main_resource=parent.main_resource) |
| 111 | |
| 112 | self.__message = parent |
| 113 | |
| 114 | self.__status = Flag.from_value(flag_data.get(self._cc('flagStatus'), 'notFlagged')) |
| 115 | |
| 116 | start_obj = flag_data.get(self._cc('startDateTime'), {}) |
| 117 | self.__start = self._parse_date_time_time_zone(start_obj) |
| 118 | |
| 119 | due_date_obj = flag_data.get(self._cc('dueDateTime'), {}) |
| 120 | self.__due_date = self._parse_date_time_time_zone(due_date_obj) |
| 121 | |
| 122 | completed_date_obj = flag_data.get(self._cc('completedDateTime'), {}) |
| 123 | self.__completed = self._parse_date_time_time_zone(completed_date_obj) |
| 124 | |
| 125 | def __repr__(self): |
| 126 | return str(self.__status) |
| 127 | |
| 128 | def __str__(self): |
| 129 | return self.__repr__() |
| 130 | |
| 131 | def __bool__(self): |
| 132 | return self.is_flagged |
| 133 | |
| 134 | def _track_changes(self): |
| 135 | """ Update the track_changes on the message to reflect a |
| 136 | needed update on this field """ |
| 137 | self.__message._track_changes.add('flag') |
| 138 | |
| 139 | @property |
| 140 | def status(self): |
| 141 | return self.__status |
| 142 | |
| 143 | def set_flagged(self, *, start_date=None, due_date=None): |
| 144 | """ Sets this message as flagged |
| 145 | :param start_date: the start datetime of the followUp |
| 146 | :param due_date: the due datetime of the followUp |
| 147 | """ |
| 148 | self.__status = Flag.Flagged |
| 149 | start_date = start_date or dt.datetime.now() |
| 150 | due_date = due_date or dt.datetime.now() |
| 151 | if start_date.tzinfo is None: |
| 152 | start_date = start_date.replace(tzinfo=self.protocol.timezone) |
| 153 | if due_date.tzinfo is None: |
| 154 | due_date = due_date.replace(tzinfo=self.protocol.timezone) |
| 155 | self.__start = start_date |