From b4020d0f9521af115d7863f0fd389d16a2740bcd Mon Sep 17 00:00:00 2001 From: Manuel Cortez Date: Thu, 19 Jul 2018 12:27:01 -0500 Subject: [PATCH] Implemented get_more_items to dm's. Closes #235 --- src/controller/buffersController.py | 26 +++++++++++++++++++++----- src/sessionmanager/session.py | 5 ++++- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/controller/buffersController.py b/src/controller/buffersController.py index 07a40898..11011d70 100644 --- a/src/controller/buffersController.py +++ b/src/controller/buffersController.py @@ -727,7 +727,27 @@ class baseBufferController(bufferController): class directMessagesController(baseBufferController): def get_more_items(self): - output.speak(_(u"This action is not supported for this buffer"), True) + try: + items = self.session.get_more_items(self.function, dm=True, name=self.name, count=self.session.settings["general"]["max_tweets_per_call"], cursor=self.session.db[self.name]["cursor"], *self.args, **self.kwargs) + except TwythonError as e: + output.speak(e.message, True) + return + for i in items: + if self.session.settings["general"]["reverse_timelines"] == False: + self.session.db[self.name]["items"].insert(0, i) + else: + self.session.db[self.name]["items"].append(i) + selected = self.buffer.list.get_selected() + if self.session.settings["general"]["reverse_timelines"] == True: + for i in items: + tweet = self.compose_function(i, self.session.db, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], self.session) + self.buffer.list.insert_item(True, *tweet) + self.buffer.list.select_item(selected) + else: + for i in items: + tweet = self.compose_function(i, self.session.db, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], self.session) + self.buffer.list.insert_item(True, *tweet) + output.speak(_(u"%s items retrieved") % (len(items)), True) def get_tweet(self): tweet = self.session.db[self.name]["items"][self.buffer.list.get_selected()] @@ -956,7 +976,6 @@ class peopleBufferController(baseBufferController): else: self.session.db[self.name]["items"].append(i) selected = self.buffer.list.get_selected() -# self.put_items_on_list(len(items)) if self.session.settings["general"]["reverse_timelines"] == True: for i in items: tweet = self.compose_function(i, self.session.db, self.session.settings["general"]["relative_times"], self.session) @@ -966,9 +985,6 @@ class peopleBufferController(baseBufferController): for i in items: tweet = self.compose_function(i, self.session.db, self.session.settings["general"]["relative_times"], self.session) self.buffer.list.insert_item(True, *tweet) -# self.buffer.list.select_item(selection) -# else: -# self.buffer.list.select_item(selection-elements) output.speak(_(u"%s items retrieved") % (len(items)), True) def put_items_on_list(self, number_of_items): diff --git a/src/sessionmanager/session.py b/src/sessionmanager/session.py index ebbd557c..6d98bceb 100644 --- a/src/sessionmanager/session.py +++ b/src/sessionmanager/session.py @@ -187,7 +187,7 @@ class Session(object): self.twitter.verify_authorisation(self.settings, pincode) self.authorisation_dialog.Destroy() - def get_more_items(self, update_function, users=False, name=None, *args, **kwargs): + def get_more_items(self, update_function, users=False, dm=False, name=None, *args, **kwargs): results = [] data = getattr(self.twitter.twitter, update_function)(*args, **kwargs) if users == True: @@ -196,6 +196,9 @@ class Session(object): for i in data["users"]: results.append(i) elif type(data) == list: results.extend(data[1:]) + elif dm == True: + self.db[name]["cursor"] = data["next_cursor"] + for i in data["events"]: results.append(i) else: results.extend(data[1:]) return results