Added view and presenter for topic displayer. Needs some more methods yet
This commit is contained in:
parent
7bee6cf1ea
commit
2bcc14888c
@ -502,6 +502,90 @@ class displayCommentPresenter(displayPostPresenter):
|
|||||||
a = displayCommentPresenter(session=self.session, postObject=c, interactor=interactors.displayPostInteractor(), view=views.displayComment())
|
a = displayCommentPresenter(session=self.session, postObject=c, interactor=interactors.displayPostInteractor(), view=views.displayComment())
|
||||||
self.clear_comments_list()
|
self.clear_comments_list()
|
||||||
|
|
||||||
|
class displayTopicPresenter(displayPostPresenter):
|
||||||
|
|
||||||
|
def __init__(self, session, postObject, group_id, view, interactor):
|
||||||
|
self.type = "topic"
|
||||||
|
self.modulename = "display_topic"
|
||||||
|
self.interactor = interactor
|
||||||
|
self.view = view
|
||||||
|
self.interactor.install(view=view, presenter=self, modulename=self.modulename)
|
||||||
|
self.session = session
|
||||||
|
self.post = postObject
|
||||||
|
self.group_id = group_id
|
||||||
|
self.load_images = False
|
||||||
|
# We'll put images here, so it will be easier to work with them.
|
||||||
|
self.images = []
|
||||||
|
self.imageIndex = 0
|
||||||
|
result = self.get_post_information()
|
||||||
|
# Stop loading everything else if post was deleted.
|
||||||
|
if result == False:
|
||||||
|
self.interactor.uninstall()
|
||||||
|
return
|
||||||
|
self.worker = threading.Thread(target=self.load_all_components)
|
||||||
|
self.worker.finished = threading.Event()
|
||||||
|
self.worker.start()
|
||||||
|
self.attachments = []
|
||||||
|
self.run()
|
||||||
|
|
||||||
|
def load_all_components(self):
|
||||||
|
self.get_comments()
|
||||||
|
|
||||||
|
def get_post_information(self):
|
||||||
|
title = self.post["title"]
|
||||||
|
self.send_message("set_title", value=title)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def get_comments(self):
|
||||||
|
""" Get comments and insert them in a list."""
|
||||||
|
self.comments = self.session.vk.client.board.getComments(group_id=self.group_id, topic_id=self.post["id"], need_likes=1, count=100, extended=1)
|
||||||
|
# print(self.comments["items"])
|
||||||
|
# print(self.post)
|
||||||
|
comments_ = []
|
||||||
|
for i in self.comments["items"]:
|
||||||
|
# If comment has a "deleted" key it should not be displayed, obviously.
|
||||||
|
if "deleted" in i:
|
||||||
|
continue
|
||||||
|
from_ = get_user(i["from_id"], self.comments["profiles"])
|
||||||
|
# match user mentions inside text comment.
|
||||||
|
matched_data = re.match(".*(\[id\d+:bp-\d+_\d+\|)(\D+)(\])", i["text"])
|
||||||
|
# If matched data exists we should modify the title.
|
||||||
|
# if len(matched_data.groups()) > 2:
|
||||||
|
# from_ = "{from_} > {to_}".format(from_=from_, to_=matched_data.groups()[1])
|
||||||
|
original_date = arrow.get(i["date"])
|
||||||
|
created_at = original_date.humanize(locale=languageHandler.curLang[:2])
|
||||||
|
likes = str(i["likes"]["count"])
|
||||||
|
if matched_data != None:
|
||||||
|
text = re.sub("\[id\d+:bp-\d+_\d+\|\D+\]", matched_data.groups()[1]+", ", i["text"])
|
||||||
|
else:
|
||||||
|
text = i["text"]
|
||||||
|
comments_.append((from_, text, created_at, likes))
|
||||||
|
self.send_message("add_items", control="comments", items=comments_)
|
||||||
|
|
||||||
|
def post_like(self):
|
||||||
|
c = self.interactor.view.comments.get_selected()
|
||||||
|
id = self.comments["items"][c]["id"]
|
||||||
|
if self.comments["items"][c]["likes"]["user_likes"] == 1:
|
||||||
|
l = self.session.vk.client.likes.delete(owner_id=-1*self.group_id, item_id=id, type="topic_comment")
|
||||||
|
output.speak(_("You don't like this"))
|
||||||
|
self.comments["items"][c]["likes"]["count"] = l["likes"]
|
||||||
|
self.comments["items"][c]["likes"]["user_likes"] = 2
|
||||||
|
self.send_message("set_label", control="like", label=_("&Like"))
|
||||||
|
else:
|
||||||
|
l = self.session.vk.client.likes.add(owner_id=-1*self.group_id, item_id=id, type="topic_comment")
|
||||||
|
output.speak(_("You liked this"))
|
||||||
|
self.send_message("set_label", control="like", label=_("&Dislike"))
|
||||||
|
self.comments["items"][c]["likes"]["count"] = l["likes"]
|
||||||
|
self.comments["items"][c]["likes"]["user_likes"] = 1
|
||||||
|
self.clear_comments_list()
|
||||||
|
|
||||||
|
def change_comment(self, comment):
|
||||||
|
comment = self.comments["items"][comment]
|
||||||
|
if comment["likes"]["user_likes"] == 1:
|
||||||
|
self.send_message("set_label", control="like", label=_("&Dislike"))
|
||||||
|
else:
|
||||||
|
self.send_message("set_label", control="like", label=_("&Like"))
|
||||||
|
|
||||||
class displayAudioPresenter(base.basePresenter):
|
class displayAudioPresenter(base.basePresenter):
|
||||||
def __init__(self, session, postObject, view, interactor):
|
def __init__(self, session, postObject, view, interactor):
|
||||||
super(displayAudioPresenter, self).__init__(view=view, interactor=interactor, modulename="display_audio")
|
super(displayAudioPresenter, self).__init__(view=view, interactor=interactor, modulename="display_audio")
|
||||||
|
@ -193,6 +193,41 @@ class displayComment(displayBasicPost):
|
|||||||
if comment: box.Add(self.comment, 0, wx.ALL, 5)
|
if comment: box.Add(self.comment, 0, wx.ALL, 5)
|
||||||
return box
|
return box
|
||||||
|
|
||||||
|
class displayTopic(displayBasicPost):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(displayTopic, self).__init__(*args, **kwargs)
|
||||||
|
comments_box = self.create_comments_list()
|
||||||
|
self.sizer.Add(comments_box, 0, wx.ALL, 5)
|
||||||
|
attachments_box = self.create_attachments()
|
||||||
|
self.sizer.Add(attachments_box, 0, wx.ALL, 5)
|
||||||
|
self.attachments.list.Enable(False)
|
||||||
|
self.create_photo_viewer()
|
||||||
|
self.image.Enable(False)
|
||||||
|
self.create_tools_button()
|
||||||
|
self.sizer.Add(self.tools, 0, wx.ALL, 5)
|
||||||
|
actions_box = self.create_action_buttons()
|
||||||
|
self.sizer.Add(actions_box, 0, wx.ALL, 5)
|
||||||
|
self.sizer.Add(self.create_dialog_buttons())
|
||||||
|
self.done()
|
||||||
|
|
||||||
|
def create_action_buttons(self, comment=True):
|
||||||
|
self.like = wx.Button(self.panel, -1, _("&Like"))
|
||||||
|
if comment: self.comment = wx.Button(self.panel, -1, _("Add comment"))
|
||||||
|
box = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
|
box.Add(self.like, 0, wx.ALL, 5)
|
||||||
|
if comment: box.Add(self.comment, 0, wx.ALL, 5)
|
||||||
|
return box
|
||||||
|
|
||||||
|
def create_comments_list(self):
|
||||||
|
lbl = wx.StaticText(self.panel, -1, _("Posts"))
|
||||||
|
self.comments = widgetUtils.list(self.panel, _("User"), _("Comment"), _("Date"), _("Likes"), style=wx.LC_REPORT)
|
||||||
|
self.reply = wx.Button(self.panel, -1, _("Reply"))
|
||||||
|
box = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
|
box.Add(lbl, 0, wx.ALL, 5)
|
||||||
|
box.Add(self.comments.list, 0, wx.ALL, 5)
|
||||||
|
box.Add(self.reply, 0, wx.ALL, 5)
|
||||||
|
return box
|
||||||
|
|
||||||
class displayAudio(widgetUtils.BaseDialog):
|
class displayAudio(widgetUtils.BaseDialog):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(displayAudio, self).__init__(parent=None, *args, **kwargs)
|
super(displayAudio, self).__init__(parent=None, *args, **kwargs)
|
||||||
|
Loading…
Reference in New Issue
Block a user