diff --git a/weboob/backends/aum/adopte.py b/weboob/backends/aum/adopte.py index 4bc8e3c5..e7095d53 100644 --- a/weboob/backends/aum/adopte.py +++ b/weboob/backends/aum/adopte.py @@ -197,12 +197,14 @@ class AdopteUnMec(Browser): @pageaccess def get_thread_mails(self, id): - self.page.open_thread_page(id) + if not self.is_on_page(ContactThreadPage) or self.page.get_id() != int(id): + self.page.open_thread_page(id) return self.page.get_mails() @pageaccess def post_mail(self, id, content): - self.page.open_thread_page(id) + if not self.is_on_page(ContactThreadPage) or self.page.get_id() != int(id): + self.page.open_thread_page(id) self.page.post(content) @pageaccess diff --git a/weboob/backends/aum/backend.py b/weboob/backends/aum/backend.py index fffcecc8..f1dddb8a 100644 --- a/weboob/backends/aum/backend.py +++ b/weboob/backends/aum/backend.py @@ -40,6 +40,10 @@ class AuMBackend(Backend, ICapMessages, ICapMessagesReply): if not self._browser: self._browser = AdopteUnMec(self.config['username'], self.config['password']) return self._browser + if name == 'queue_messages': + if not hasattr(self, '_queue_messages'): + self._queue_messages = [] + return self._queue_messages raise AttributeError, name def iter_messages(self, thread=None): @@ -47,6 +51,11 @@ class AuMBackend(Backend, ICapMessages, ICapMessagesReply): yield message def iter_new_messages(self, thread=None): + for message in self.queue_messages: + if not thread or message.get_thread_id() == thread: + yield message + self.queue_messages = [] + for message in self._iter_messages(thread, True): yield message @@ -57,7 +66,7 @@ class AuMBackend(Backend, ICapMessages, ICapMessagesReply): contacts.reverse() for contact in contacts: - if only_new and not contact.is_new(): + if only_new and not contact.is_new() or thread and int(thread) != contact.get_id(): continue mails = self.browser.get_thread_mails(contact.get_id()) @@ -70,5 +79,9 @@ class AuMBackend(Backend, ICapMessages, ICapMessagesReply): if not profile: profile = self.browser.get_profile(contact.get_id()) mail.signature += u'\n%s' % profile.get_profile_text() - print mail.signature yield mail + + def post_reply(self, thread_id, reply_id, title, message): + for message in self._iter_messages(thread_id, True): + self.queue_messages.append(message) + return self.browser.post(thread_id, message) diff --git a/weboob/backends/aum/pages/contact_thread.py b/weboob/backends/aum/pages/contact_thread.py index 4e1b4e18..abbf6963 100644 --- a/weboob/backends/aum/pages/contact_thread.py +++ b/weboob/backends/aum/pages/contact_thread.py @@ -267,7 +267,6 @@ class ContactThreadPage(PageBase): id_regexp = re.compile("/thread.php\?id=([0-9]+)") def loaded(self): - self.items = [] a_list = self.document.getElementsByTagName('a') @@ -311,6 +310,8 @@ class ContactThreadPage(PageBase): self.items[-1].reply_date = mail.get_date_int() self.items += [mail] - def get_mails(self): + def get_id(self): + return self.id + def get_mails(self): return self.items diff --git a/weboob/backends/dlfp/backend.py b/weboob/backends/dlfp/backend.py index 6e5c6fee..c0b9c3b3 100644 --- a/weboob/backends/dlfp/backend.py +++ b/weboob/backends/dlfp/backend.py @@ -107,5 +107,5 @@ class DLFPBackend(Backend, ICapMessages, ICapMessagesReply): self.storage.set(self.name, 'seen', what, seen) self.storage.save(self.name) - def post_reply(self, thread_id, reply_id, message): - return self.browser.post(thread_id, reply_id, message) + def post_reply(self, thread_id, reply_id, title, message): + return self.browser.post(thread_id, reply_id, title, message)