From e71afeb10f432d269bc39514b6f262b8d2fcdbdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Cort=C3=A9z?= Date: Tue, 29 Sep 2015 09:22:19 -0500 Subject: [PATCH] View other user's lists is implemented --- src/controller/listsController.py | 31 ++++++++++++++++++++++++++++++- src/controller/mainController.py | 17 +++++++++++++++-- src/wxUI/view.py | 1 - 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/src/controller/listsController.py b/src/controller/listsController.py index bc87d097..9fb8060f 100644 --- a/src/controller/listsController.py +++ b/src/controller/listsController.py @@ -15,12 +15,22 @@ class listsController(object): self.dialog.populate_list(self.get_all_lists()) widgetUtils.connect_event(self.dialog.createBtn, widgetUtils.BUTTON_PRESSED, self.create_list) widgetUtils.connect_event(self.dialog.editBtn, widgetUtils.BUTTON_PRESSED, self.edit_list) + widgetUtils.connect_event(self.dialog.deleteBtn, widgetUtils.BUTTON_PRESSED, self.remove_list) widgetUtils.connect_event(self.dialog.view, widgetUtils.BUTTON_PRESSED, self.open_list_as_buffer) + else: + self.dialog = lists.userListViewer(user) + self.dialog.populate_list(self.get_user_lists(user)) + widgetUtils.connect_event(self.dialog.createBtn, widgetUtils.BUTTON_PRESSED, self.subscribe) + widgetUtils.connect_event(self.dialog.deleteBtn, widgetUtils.BUTTON_PRESSED, self.unsubscribe) self.dialog.get_response() def get_all_lists(self): return [compose.compose_list(item) for item in self.session.db["lists"]] + def get_user_lists(self, user): + self.lists = self.session.twitter.twitter.show_lists(reverse=True, screen_name=user) + return [compose.compose_list(item) for item in self.lists] + def create_list(self, *args, **kwargs): dialog = lists.createListDialog() if dialog.get_response() == widgetUtils.OK: @@ -73,4 +83,23 @@ class listsController(object): def open_list_as_buffer(self, *args, **kwargs): if self.dialog.lista.get_count() == 0: return list = self.session.db["lists"][self.dialog.get_item()] - pub.sendMessage("create-new-buffer", buffer="list", account=self.session.db["user_name"], create=list["name"]) \ No newline at end of file + pub.sendMessage("create-new-buffer", buffer="list", account=self.session.db["user_name"], create=list["name"]) + + def subscribe(self, *args, **kwargs): + if self.dialog.lista.get_count() == 0: return + list_id = self.lists[self.dialog.get_item()]["id"] + try: + list = self.session.twitter.twitter.subscribe_to_list(list_id=list_id) + item = utils.find_item(list["id"], self.session.db["lists"]) + self.session.db.settings["lists"].append(list) + except TwythonError as e: + output.speak("error %s: %s" % (e.status_code, e.msg)) + + def unsubscribe(self, *args, **kwargs): + if self.dialog.lista.get_count() == 0: return + list_id = self.lists[self.dialog.get_item()]["id"] + try: + list = self.session.twitter.twitter.unsubscribe_from_list(list_id=list_id) + self.session.db.settings["lists"].remove(list) + except TwythonError as e: + output.speak("error %s: %s" % (e.status_code, e.msg)) diff --git a/src/controller/mainController.py b/src/controller/mainController.py index e9a7d0d0..43d76098 100644 --- a/src/controller/mainController.py +++ b/src/controller/mainController.py @@ -156,6 +156,7 @@ class Controller(object): widgetUtils.connect_event(self.view, widgetUtils.MENU, self.delete, self.view.delete) widgetUtils.connect_event(self.view, widgetUtils.MENU, self.follow, menuitem=self.view.follow) widgetUtils.connect_event(self.view, widgetUtils.MENU, self.send_dm, self.view.dm) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.view_user_lists, menuitem=self.view.viewLists) widgetUtils.connect_event(self.view, widgetUtils.MENU, self.get_more_items, menuitem=self.view.load_previous_items) widgetUtils.connect_event(self.view, widgetUtils.MENU, self.clear_buffer, menuitem=self.view.clear) widgetUtils.connect_event(self.view, widgetUtils.MENU, self.remove_buffer, self.view.deleteTl) @@ -468,8 +469,20 @@ class Controller(object): buffer = self.get_best_buffer() SoundsTutorial.soundsTutorial(buffer.session) - def view_user_lists(self, users): - pass + def view_user_lists(self, *args, **kwargs): + buff = self.get_best_buffer() + if not hasattr(buff, "get_right_tweet"): return + tweet = buff.get_right_tweet() + if buff.type != "people": + users = utils.get_all_users(tweet, buff.session.db) + else: + users = [tweet["screen_name"]] + dlg = dialogs.utils.selectUserDialog(_(u"Select the user"), users) + if dlg.get_response() == widgetUtils.OK: + user = dlg.get_user() + else: + return + l = listsController.listsController(buff.session, user=user) def add_to_list(self, *args, **kwargs): buff = self.get_best_buffer() diff --git a/src/wxUI/view.py b/src/wxUI/view.py index 214604cf..bade3ead 100644 --- a/src/wxUI/view.py +++ b/src/wxUI/view.py @@ -42,7 +42,6 @@ class mainFrame(wx.Frame): self.addToList = user.Append(wx.NewId(), _(u"&Add to list")) self.removeFromList = user.Append(wx.NewId(), _(u"R&emove from list")) self.viewLists = user.Append(wx.NewId(), _(u"&View lists")) - self.viewLists.Enable(False) self.details = user.Append(wx.NewId(), _(u"Show user &profile")) self.favs = user.Append(wx.NewId(), _(u"V&iew favourites"))