Now it is possible to post as group or username in group walls
This commit is contained in:
@@ -475,12 +475,15 @@ class feedBuffer(baseBuffer):
|
||||
|
||||
class communityBuffer(feedBuffer):
|
||||
|
||||
def __init__(self, group_info, *args, **kwargs):
|
||||
super(communityBuffer, self).__init__(*args, **kwargs)
|
||||
self.group_data = group_info
|
||||
|
||||
def create_tab(self, parent):
|
||||
self.tab = home.communityTab(parent)
|
||||
self.connect_events()
|
||||
self.tab.name = self.name
|
||||
if hasattr(self, "can_post") and self.can_post == False and hasattr(self.tab, "post"):
|
||||
self.tab.post.Enable(False)
|
||||
self.tab.post.Enable(False)
|
||||
|
||||
def connect_events(self):
|
||||
super(communityBuffer, self).connect_events()
|
||||
@@ -497,9 +500,30 @@ class communityBuffer(feedBuffer):
|
||||
if self.can_get_items:
|
||||
# Strangely, groups.get does not return counters so we need those to show options for loading specific posts for communities.
|
||||
self.group_info = self.session.vk.client.groups.getById(group_ids=-1*self.kwargs["owner_id"], fields="counters")[0]
|
||||
# print(self.group_info["counters"])
|
||||
self.group_info.update(self.group_data)
|
||||
print(self.group_info)
|
||||
if "can_post" in self.group_info and self.group_info["can_post"] == True:
|
||||
self.tab.post.Enable(True)
|
||||
super(communityBuffer, self).get_items(*args, **kwargs)
|
||||
|
||||
def post(self, *args, **kwargs):
|
||||
menu = wx.Menu()
|
||||
user1 = self.session.get_user(self.session.user_id)
|
||||
user2 = self.session.get_user(self.kwargs["owner_id"])
|
||||
user = menu.Append(wx.NewId(), _("Post as {user1_nom}").format(**user1))
|
||||
group = menu.Append(wx.NewId(), _("Post as {user1_nom}").format(**user2))
|
||||
menu.Bind(widgetUtils.MENU, lambda evt: self._post(evt, 1), group)
|
||||
menu.Bind(widgetUtils.MENU, lambda evt: self._post(evt, 0), user)
|
||||
self.tab.post.PopupMenu(menu, self.tab.post.GetPosition())
|
||||
|
||||
def _post(self, event, from_group):
|
||||
owner_id = self.kwargs["owner_id"]
|
||||
user = self.session.get_user(owner_id, key="user1")
|
||||
title = _("Post to {user1_nom}'s wall").format(**user)
|
||||
p = presenters.createPostPresenter(session=self.session, interactor=interactors.createPostInteractor(), view=views.createPostDialog(title=title, message="", text=""))
|
||||
if hasattr(p, "text") or hasattr(p, "privacy"):
|
||||
call_threaded(self.do_last, p=p, owner_id=owner_id, from_group=from_group)
|
||||
|
||||
class topicBuffer(feedBuffer):
|
||||
|
||||
def create_tab(self, parent):
|
||||
|
@@ -200,14 +200,14 @@ class Controller(object):
|
||||
if self.session.settings["load_at_startup"]["communities"] == False and force_action == False:
|
||||
return
|
||||
log.debug("Create community buffers...")
|
||||
groups= self.session.vk.client.groups.get(user_id=user_id, extended=1, count=1000)
|
||||
groups= self.session.vk.client.groups.get(user_id=user_id, extended=1, count=1000, fields="can_post")
|
||||
self.session.groups=groups["items"]
|
||||
# Let's feed the local database cache with new groups coming from here.
|
||||
data= dict(profiles=[], groups=self.session.groups)
|
||||
self.session.process_usernames(data)
|
||||
if create_buffers:
|
||||
for i in self.session.groups:
|
||||
wx.CallAfter(pub.sendMessage, "create_buffer", buffer_type="communityBuffer", buffer_title=i["name"], parent_tab="communities", loadable=True, get_items=True, kwargs=dict(parent=self.window.tb, name="{0}_community".format(i["id"],), composefunc="render_status", session=self.session, endpoint="get", parent_endpoint="wall", extended=1, count=self.session.settings["buffers"]["count_for_wall_buffers"], owner_id=-1*i["id"]))
|
||||
wx.CallAfter(pub.sendMessage, "create_buffer", buffer_type="communityBuffer", buffer_title=i["name"], parent_tab="communities", loadable=True, get_items=True, kwargs=dict(parent=self.window.tb, name="{0}_community".format(i["id"],), composefunc="render_status", session=self.session, group_info=i, endpoint="get", parent_endpoint="wall", extended=1, count=self.session.settings["buffers"]["count_for_wall_buffers"], owner_id=-1*i["id"]))
|
||||
time.sleep(0.15)
|
||||
|
||||
def login(self):
|
||||
|
Reference in New Issue
Block a user