Show people who have liked a post if pressing the likes button in the post displayer
This commit is contained in:
		| @@ -355,7 +355,7 @@ class baseBuffer(object): | |||||||
| 		if "type" in post and post["type"] == "audio": | 		if "type" in post and post["type"] == "audio": | ||||||
| 			a = presenters.displayAudioPresenter(session=self.session, postObject=post["audio"]["items"], interactor=interactors.displayAudioInteractor(), view=views.displayAudio()) | 			a = presenters.displayAudioPresenter(session=self.session, postObject=post["audio"]["items"], interactor=interactors.displayAudioInteractor(), view=views.displayAudio()) | ||||||
| 		elif "type" in post and post["type"] == "friend": | 		elif "type" in post and post["type"] == "friend": | ||||||
| 			pub.sendMessage("open-post", post_object=post, controller_="displayFriendship") | 			pub.sendMessage("open-post", post_object=post, controller_="displayFriendship", vars=dict(caption=_("{user1_nom} added the following friends"))) | ||||||
| 		else: | 		else: | ||||||
| 			pub.sendMessage("open-post", post_object=post, controller_="displayPost") | 			pub.sendMessage("open-post", post_object=post, controller_="displayPost") | ||||||
|  |  | ||||||
|   | |||||||
| @@ -327,12 +327,12 @@ class Controller(object): | |||||||
| 		log.debug("downloading %s URL to %s filename" % (url, filename,)) | 		log.debug("downloading %s URL to %s filename" % (url, filename,)) | ||||||
| 		call_threaded(utils.download_file, url, filename, self.window) | 		call_threaded(utils.download_file, url, filename, self.window) | ||||||
|  |  | ||||||
| 	def view_post(self, post_object, controller_): | 	def view_post(self, post_object, controller_, vars=dict()): | ||||||
| 		""" Display the passed post in the passed post presenter. | 		""" Display the passed post in the passed post presenter. | ||||||
| 		@ post_object dict: A post representation returned by the VK api. The fields present in this dict are different depending on the presenter used to render it. | 		@ post_object dict: A post representation returned by the VK api. The fields present in this dict are different depending on the presenter used to render it. | ||||||
| 		@controller_ string: Name of the post controller, this name will be used for calling interactors, views and presenters. For example, displayPost, displayAudio, etc. | 		@controller_ string: Name of the post controller, this name will be used for calling interactors, views and presenters. For example, displayPost, displayAudio, etc. | ||||||
| 		""" | 		""" | ||||||
| 		p = getattr(presenters, controller_+"Presenter")(session=self.session, postObject=post_object, interactor=getattr(interactors, controller_+"Interactor")(), view=getattr(views, controller_)()) | 		p = getattr(presenters, controller_+"Presenter")(session=self.session, postObject=post_object, interactor=getattr(interactors, controller_+"Interactor")(), view=getattr(views, controller_)(), **vars) | ||||||
|  |  | ||||||
| 	def update_status_bar(self, status): | 	def update_status_bar(self, status): | ||||||
| 		""" Update the status bar present in the main Window. | 		""" Update the status bar present in the main Window. | ||||||
|   | |||||||
| @@ -50,6 +50,8 @@ class displayPostInteractor(base.baseInteractor): | |||||||
| 		widgetUtils.connect_event(self.view.like, widgetUtils.BUTTON_PRESSED, self.on_like) | 		widgetUtils.connect_event(self.view.like, widgetUtils.BUTTON_PRESSED, self.on_like) | ||||||
| 		widgetUtils.connect_event(self.view.comment, widgetUtils.BUTTON_PRESSED, self.on_add_comment) | 		widgetUtils.connect_event(self.view.comment, widgetUtils.BUTTON_PRESSED, self.on_add_comment) | ||||||
| 		widgetUtils.connect_event(self.view.tools, widgetUtils.BUTTON_PRESSED, self.on_show_tools_menu) | 		widgetUtils.connect_event(self.view.tools, widgetUtils.BUTTON_PRESSED, self.on_show_tools_menu) | ||||||
|  | 		if hasattr(self.view, "likes"): | ||||||
|  | 			widgetUtils.connect_event(self.view.likes, widgetUtils.BUTTON_PRESSED, self.on_show_likes_menu) | ||||||
| 		if hasattr(self.view, "repost"): | 		if hasattr(self.view, "repost"): | ||||||
| 			widgetUtils.connect_event(self.view.repost, widgetUtils.BUTTON_PRESSED, self.on_repost) | 			widgetUtils.connect_event(self.view.repost, widgetUtils.BUTTON_PRESSED, self.on_repost) | ||||||
| 			self.view.comments.list.Bind(wx.EVT_LIST_ITEM_FOCUSED, self.on_focus) | 			self.view.comments.list.Bind(wx.EVT_LIST_ITEM_FOCUSED, self.on_focus) | ||||||
| @@ -134,6 +136,9 @@ class displayPostInteractor(base.baseInteractor): | |||||||
| 			comment = self.view.comments.get_selected() | 			comment = self.view.comments.get_selected() | ||||||
| 			self.presenter.change_comment(comment) | 			self.presenter.change_comment(comment) | ||||||
|  |  | ||||||
|  | 	def on_show_likes_menu(self, *args, **kwargs): | ||||||
|  | 		self.presenter.show_likes() | ||||||
|  |  | ||||||
| class displayAudioInteractor(base.baseInteractor): | class displayAudioInteractor(base.baseInteractor): | ||||||
|  |  | ||||||
| 	def set(self, control, value): | 	def set(self, control, value): | ||||||
|   | |||||||
| @@ -417,6 +417,14 @@ class displayPostPresenter(base.basePresenter): | |||||||
| 		self.send_message("clean_list", list="comments") | 		self.send_message("clean_list", list="comments") | ||||||
| 		self.get_comments() | 		self.get_comments() | ||||||
|  |  | ||||||
|  | 	def show_likes(self): | ||||||
|  | 		""" show likes for the specified post.""" | ||||||
|  | 		data = dict(type="post", owner_id=self.post[self.user_identifier], item_id=self.post["id"], extended=True, count=1000, skip_own=True) | ||||||
|  | 		result = self.session.vk.client.likes.getList(**data) | ||||||
|  | 		if result["count"] > 0: | ||||||
|  | 			post = {"source_id": self.post[self.user_identifier], "friends": {"items": result["items"]}} | ||||||
|  | 			pub.sendMessage("open-post", post_object=post, controller_="displayFriendship", vars=dict(caption=_("people who liked this"))) | ||||||
|  |  | ||||||
| class displayCommentPresenter(displayPostPresenter): | class displayCommentPresenter(displayPostPresenter): | ||||||
|  |  | ||||||
| 	def __init__(self, session, postObject, view, interactor): | 	def __init__(self, session, postObject, view, interactor): | ||||||
| @@ -780,7 +788,7 @@ class displayAudioPresenter(base.basePresenter): | |||||||
|  |  | ||||||
| class displayFriendshipPresenter(base.basePresenter): | class displayFriendshipPresenter(base.basePresenter): | ||||||
|  |  | ||||||
| 	def __init__(self, session, postObject, view, interactor, caption=_("{user1_nom} added the following friends")): | 	def __init__(self, session, postObject, view, interactor, caption=""): | ||||||
| 		self.session = session | 		self.session = session | ||||||
| 		self.post = postObject | 		self.post = postObject | ||||||
| 		super(displayFriendshipPresenter, self).__init__(view=view, interactor=interactor, modulename="display_friendship") | 		super(displayFriendshipPresenter, self).__init__(view=view, interactor=interactor, modulename="display_friendship") | ||||||
| @@ -793,16 +801,30 @@ class displayFriendshipPresenter(base.basePresenter): | |||||||
|  |  | ||||||
| 	def get_friend_names(self): | 	def get_friend_names(self): | ||||||
| 		self.friends = self.post["friends"]["items"] | 		self.friends = self.post["friends"]["items"] | ||||||
| 		return [self.session.get_user(i["user_id"])["user1_nom"] for i in self.friends] | 		friends = list() | ||||||
|  | 		for i in self.friends: | ||||||
|  | 			if "user_id" in i: | ||||||
|  | 				friends.append(self.session.get_user(i["user_id"])["user1_nom"]) | ||||||
|  | 			else: | ||||||
|  | 				friends.append(self.session.get_user(i["id"])["user1_nom"]) | ||||||
|  | 		return friends | ||||||
|  |  | ||||||
| 	def set_friends_list(self, friendslist): | 	def set_friends_list(self, friendslist): | ||||||
| 		self.send_message("add_items", control="friends", items=friendslist) | 		self.send_message("add_items", control="friends", items=friendslist) | ||||||
|  |  | ||||||
| 	def view_profile(self, item): | 	def view_profile(self, item): | ||||||
| 		user = self.friends[item] | 		user = self.friends[item] | ||||||
| 		pub.sendMessage("user-profile", person=user["user_id"]) | 		if "user_id" in user: | ||||||
|  | 			id = user["user_id"] | ||||||
|  | 		else: | ||||||
|  | 			id = user["id"] | ||||||
|  | 		pub.sendMessage("user-profile", person=id) | ||||||
|  |  | ||||||
| 	def open_in_browser(self, item): | 	def open_in_browser(self, item): | ||||||
| 		user = self.friends[item] | 		user = self.friends[item] | ||||||
| 		url = "https://vk.com/id{user_id}".format(user_id=user["user_id"]) | 		if "user_id" in user: | ||||||
|  | 			id = user["user_id"] | ||||||
|  | 		else: | ||||||
|  | 			id = user["id"] | ||||||
|  | 		url = "https://vk.com/id{user_id}".format(user_id=id) | ||||||
| 		webbrowser.open_new_tab(url) | 		webbrowser.open_new_tab(url) | ||||||
		Reference in New Issue
	
	Block a user