Moved code related to post creation to MVP
This commit is contained in:
@@ -11,7 +11,6 @@ import views
|
||||
import interactors
|
||||
import languageHandler
|
||||
import widgetUtils
|
||||
from . import messages
|
||||
from presenters import player
|
||||
import output
|
||||
from . import selector
|
||||
@@ -114,14 +113,14 @@ class baseBuffer(object):
|
||||
""" Create a post in the current user's wall.
|
||||
This process is handled in two parts. This is the first part, where the GUI is created and user can send the post.
|
||||
During the second part (threaded), the post will be sent to the API."""
|
||||
p = messages.post(session=self.session, title=_("Write your post"), caption="", text="")
|
||||
if p.message.get_response() == widgetUtils.OK:
|
||||
p = presenters.postPresenter(session=self.session, interactor=interactors.postInteractor(), view=views.post(title=_("Write your post"), message="", text=""))
|
||||
if hasattr(p, "text") or hasattr(p, "privacy"):
|
||||
call_threaded(self.do_last, p=p)
|
||||
|
||||
def do_last(self, p, parent_endpoint="wall", child_endpoint="post", *args, **kwargs):
|
||||
""" Second part of post function. Here everything is going to be sent to the API"""
|
||||
msg = p.message.get_text()
|
||||
privacy_opts = p.get_privacy_options()
|
||||
msg = p.text
|
||||
privacy_opts = p.privacy
|
||||
attachments = ""
|
||||
if hasattr(p, "attachments"):
|
||||
attachments = self.upload_attachments(p.attachments)
|
||||
@@ -259,9 +258,9 @@ class baseBuffer(object):
|
||||
post = self.get_post()
|
||||
if post == None:
|
||||
return
|
||||
comment = messages.comment(title=_("Add a comment"), caption="", text="")
|
||||
if comment.message.get_response() == widgetUtils.OK:
|
||||
msg = comment.message.get_text().encode("utf-8")
|
||||
comment = presenters.postPresenter(session=self.session, interactor=interactors.postInteractor(), view=views.post(title=_("Add a comment"), message="", text="", mode="comment"))
|
||||
if hasattr(comment, "text") or hasattr(comment, "privacy"):
|
||||
msg = comment.text
|
||||
try:
|
||||
user = post[self.user_key]
|
||||
id = post[self.post_key]
|
||||
@@ -435,8 +434,8 @@ class feedBuffer(baseBuffer):
|
||||
return super(feedBuffer, self).post()
|
||||
owner_id = self.kwargs["owner_id"]
|
||||
user = self.session.get_user_name(owner_id)
|
||||
p = messages.post(session=self.session, title=_("Post to {user}'s wall").format(user=user,), caption="", text="")
|
||||
if p.message.get_response() == widgetUtils.OK:
|
||||
p = presenters.postPresenter(session=self.session, interactor=interactors.postInteractor(), view=views.post(title=_("Write your post"), message="", text=""))
|
||||
if hasattr(p, "text") or hasattr(p, "privacy"):
|
||||
call_threaded(self.do_last, p=p, owner_id=owner_id)
|
||||
|
||||
class communityBuffer(feedBuffer):
|
||||
|
@@ -23,7 +23,6 @@ from wxUI.dialogs import search as searchDialogs
|
||||
from wxUI.dialogs import timeline, creation
|
||||
from update import updater
|
||||
from issueReporter import issueReporter
|
||||
from . import messages
|
||||
from . import buffers
|
||||
from presenters import player
|
||||
from . import posts
|
||||
|
@@ -1,83 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
import time
|
||||
import widgetUtils
|
||||
import presenters
|
||||
import views
|
||||
import interactors
|
||||
import output
|
||||
from pubsub import pub
|
||||
from wxUI.dialogs import message, selector
|
||||
from extra import SpellChecker, translator
|
||||
from logging import getLogger
|
||||
|
||||
log = getLogger("controller.message")
|
||||
|
||||
class post(object):
|
||||
def __init__(self, session, title, caption, text, post_type="post"):
|
||||
super(post, self).__init__()
|
||||
self.session = session
|
||||
self.title = title
|
||||
self.message = getattr(message, post_type)(title, caption, text)
|
||||
self.message.set_title(title)
|
||||
widgetUtils.connect_event(self.message.spellcheck, widgetUtils.BUTTON_PRESSED, self.spellcheck)
|
||||
widgetUtils.connect_event(self.message.translateButton, widgetUtils.BUTTON_PRESSED, self.translate)
|
||||
widgetUtils.connect_event(self.message.mention, widgetUtils.BUTTON_PRESSED, self.mention)
|
||||
self.images = []
|
||||
if hasattr(self.message, "attach"):
|
||||
widgetUtils.connect_event(self.message.attach, widgetUtils.BUTTON_PRESSED, self.show_attach_dialog)
|
||||
|
||||
def get_privacy_options(self):
|
||||
p = self.message.get("privacy")
|
||||
if p == _("Friends of friends"):
|
||||
privacy = 0
|
||||
elif p == _("All users"):
|
||||
privacy = 1
|
||||
return privacy
|
||||
|
||||
def mention(self, *args, **kwargs):
|
||||
try:
|
||||
fields = "id, first_name, last_name"
|
||||
friends = self.session.vk.client.friends.get(count=5000, fields=fields)
|
||||
except AttributeError:
|
||||
time.sleep(2)
|
||||
log.exception("Error retrieving friends...")
|
||||
return self.mention(*args, **kwargs)
|
||||
users = []
|
||||
for i in friends["items"]:
|
||||
users.append("{0} {1}".format(i["first_name"], i["last_name"]))
|
||||
select = selector.selectPeople(users)
|
||||
if select.get_response() == widgetUtils.OK and select.users.GetCount() > 0:
|
||||
self.tagged_people = []
|
||||
tagged_users = select.get_all_users()
|
||||
for i in tagged_users:
|
||||
self.tagged_people.append("[id%s|%s]" % (str(friends["items"][i]["id"]), friends["items"][i]["first_name"]))
|
||||
self.message.text.SetValue(self.message.text.GetValue()+ ", ".join(self.tagged_people))
|
||||
|
||||
def translate(self, *args, **kwargs):
|
||||
dlg = translator.gui.translateDialog()
|
||||
if dlg.get_response() == widgetUtils.OK:
|
||||
text_to_translate = self.message.get_text()
|
||||
dest = [x[0] for x in translator.translator.available_languages()][dlg.get("dest_lang")]
|
||||
msg = translator.translator.translate(text_to_translate, dest)
|
||||
self.message.set_text(msg)
|
||||
self.message.text_focus()
|
||||
output.speak(_("Translated"))
|
||||
dlg.Destroy()
|
||||
|
||||
def spellcheck(self, event=None):
|
||||
text = self.message.get_text()
|
||||
checker = SpellChecker.spellchecker.spellChecker(text, "")
|
||||
if hasattr(checker, "fixed_text"):
|
||||
self.message.set_text(checker.fixed_text)
|
||||
checker.clean()
|
||||
|
||||
def show_attach_dialog(self, *args, **kwargs):
|
||||
a = presenters.attachPresenter(session=self.session, view=views.attachDialog(), interactor=interactors.attachInteractor())
|
||||
if len(a.attachments) != 0:
|
||||
self.attachments = a.attachments
|
||||
|
||||
class comment(post):
|
||||
def __init__(self, session, title, caption, text):
|
||||
super(comment, self).__init__(session, title, caption, text, "comment")
|
||||
self.message.set_title(_("New comment"))
|
@@ -7,10 +7,12 @@ import os
|
||||
import six
|
||||
import threading
|
||||
import arrow
|
||||
from . import messages
|
||||
import requests
|
||||
import languageHandler
|
||||
import widgetUtils
|
||||
import views
|
||||
import presenters
|
||||
import interactors
|
||||
import output
|
||||
import wx
|
||||
import webbrowser
|
||||
@@ -266,9 +268,9 @@ class postController(object):
|
||||
pass
|
||||
|
||||
def add_comment(self, *args, **kwargs):
|
||||
comment = messages.comment(session=self.session, title=_("Add a comment"), caption="", text="")
|
||||
if comment.message.get_response() == widgetUtils.OK:
|
||||
msg = comment.message.get_text().encode("utf-8")
|
||||
comment = presenters.postPresenter(session=self.session, interactor=interactors.postInteractor(), view=views.post(title=_("Add a comment"), message="", text="", mode="comment"))
|
||||
if hasattr(comment, "text") or hasattr(comment, "privacy"):
|
||||
msg = comment.text
|
||||
try:
|
||||
user = self.post[self.user_identifier]
|
||||
id = self.post[self.post_identifier]
|
||||
|
Reference in New Issue
Block a user