Moved code related to post creation to MVP

This commit is contained in:
2019-01-07 13:16:20 -06:00
parent 0d7bae5be8
commit b4625335b6
11 changed files with 156 additions and 105 deletions

View File

@@ -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):

View File

@@ -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

View File

@@ -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"))

View File

@@ -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]