we can now grant and revoke roles and affiliation in group chats
This commit is contained in:
parent
0c96ac4a87
commit
6c95160913
18
Core/core.py
18
Core/core.py
|
@ -914,6 +914,24 @@ class GajimCore:
|
||||||
else:
|
else:
|
||||||
con.send(common.jabber.Presence('%s/%s' % (ev[2][1], ev[2][0]), \
|
con.send(common.jabber.Presence('%s/%s' % (ev[2][1], ev[2][0]), \
|
||||||
'available', show=ev[2][2], status = ev[2][3]))
|
'available', show=ev[2][2], status = ev[2][3]))
|
||||||
|
#('GC_SET_ROLE', account, (room_jid, nick, role))
|
||||||
|
elif ev[0] == 'GC_SET_ROLE':
|
||||||
|
iq = common.jabber.Iq(type='set', to=ev[2][0])
|
||||||
|
item = iq.setQuery(common.jabber.NS_P_MUC_ADMIN).insertTag('item')
|
||||||
|
item.putAttr('nick', ev[2][1])
|
||||||
|
item.putAttr('role', ev[2][2])
|
||||||
|
id = con.getAnID()
|
||||||
|
iq.setID(id)
|
||||||
|
con.send(iq)
|
||||||
|
#('GC_SET_AFFILIATION', account, (room_jid, jid, affiliation))
|
||||||
|
elif ev[0] == 'GC_SET_AFFILIATION':
|
||||||
|
iq = common.jabber.Iq(type='set', to=ev[2][0])
|
||||||
|
item = iq.setQuery(common.jabber.NS_P_MUC_ADMIN).insertTag('item')
|
||||||
|
item.putAttr('jid', ev[2][1])
|
||||||
|
item.putAttr('affiliation', ev[2][2])
|
||||||
|
id = con.getAnID()
|
||||||
|
iq.setID(id)
|
||||||
|
con.send(iq)
|
||||||
#('GPGPASSPHRASE', account, passphrase)
|
#('GPGPASSPHRASE', account, passphrase)
|
||||||
elif ev[0] == 'GPGPASSPHRASE':
|
elif ev[0] == 'GPGPASSPHRASE':
|
||||||
if USE_GPG:
|
if USE_GPG:
|
||||||
|
|
|
@ -615,14 +615,14 @@ class gc:
|
||||||
if model.iter_n_children(parent_iter) == 0:
|
if model.iter_n_children(parent_iter) == 0:
|
||||||
model.remove(parent_iter)
|
model.remove(parent_iter)
|
||||||
|
|
||||||
def add_user_to_roster(self, nick, show, role):
|
def add_user_to_roster(self, nick, show, role, jid):
|
||||||
model = self.tree.get_model()
|
model = self.tree.get_model()
|
||||||
img = self.plugin.roster.pixbufs[show]
|
img = self.plugin.roster.pixbufs[show]
|
||||||
role_iter = self.get_role_iter(role)
|
role_iter = self.get_role_iter(role)
|
||||||
if not role_iter:
|
if not role_iter:
|
||||||
role_iter = model.append(None, (self.plugin.roster.pixbufs['closed']\
|
role_iter = model.append(None, (self.plugin.roster.pixbufs['closed']\
|
||||||
, role))
|
, role, role))
|
||||||
iter = model.append(role_iter, (img, nick))
|
iter = model.append(role_iter, (img, nick, jid))
|
||||||
self.tree.expand_row((model.get_path(role_iter)), False)
|
self.tree.expand_row((model.get_path(role_iter)), False)
|
||||||
return iter
|
return iter
|
||||||
|
|
||||||
|
@ -638,18 +638,18 @@ class gc:
|
||||||
model = self.tree.get_model()
|
model = self.tree.get_model()
|
||||||
if show == 'offline' or show == 'error':
|
if show == 'offline' or show == 'error':
|
||||||
if statusCode == '307':
|
if statusCode == '307':
|
||||||
self.print_conversation(_("%s has been kicked by %s: %s") % (nick, \
|
self.print_conversation(_('%s has been kicked by %s: %s') % (nick, \
|
||||||
jid, actor, reason))
|
jid, actor, reason))
|
||||||
self.remove_user(nick)
|
self.remove_user(nick)
|
||||||
else:
|
else:
|
||||||
iter = self.get_user_iter(nick)
|
iter = self.get_user_iter(nick)
|
||||||
if not iter:
|
if not iter:
|
||||||
iter = self.add_user_to_roster(nick, show, role)
|
iter = self.add_user_to_roster(nick, show, role, jid)
|
||||||
else:
|
else:
|
||||||
actual_role = self.get_role(iter)
|
actual_role = self.get_role(iter)
|
||||||
if role != actual_role:
|
if role != actual_role:
|
||||||
self.remove_user(nick)
|
self.remove_user(nick)
|
||||||
self.add_user_to_roster(nick, show, role)
|
self.add_user_to_roster(nick, show, role, jid)
|
||||||
else:
|
else:
|
||||||
img = self.plugin.roster.pixbufs[show]
|
img = self.plugin.roster.pixbufs[show]
|
||||||
model.set_value(iter, 0, img)
|
model.set_value(iter, 0, img)
|
||||||
|
@ -683,7 +683,7 @@ class gc:
|
||||||
end_iter = buffer.get_end_iter()
|
end_iter = buffer.get_end_iter()
|
||||||
if not tim:
|
if not tim:
|
||||||
tim = time.localtime()
|
tim = time.localtime()
|
||||||
tims = time.strftime("[%H:%M:%S]", tim)
|
tims = time.strftime('[%H:%M:%S]', tim)
|
||||||
buffer.insert(end_iter, tims)
|
buffer.insert(end_iter, tims)
|
||||||
if contact:
|
if contact:
|
||||||
if contact == self.nick:
|
if contact == self.nick:
|
||||||
|
@ -701,112 +701,113 @@ class gc:
|
||||||
|
|
||||||
def kick(self, widget, room_jid, nick):
|
def kick(self, widget, room_jid, nick):
|
||||||
"""kick a user"""
|
"""kick a user"""
|
||||||
self.plugin.send('SET_ROLE', self.account, (room_jid, nick, 'none'))
|
self.plugin.send('GC_SET_ROLE', self.account, (room_jid, nick, 'none'))
|
||||||
|
|
||||||
def grant_voice(self, widget, room_jid, nick):
|
def grant_voice(self, widget, room_jid, nick):
|
||||||
"""grant voice privilege to a user"""
|
"""grant voice privilege to a user"""
|
||||||
self.plugin.send('SET_ROLE', self.account, (room_jid, nick, \
|
self.plugin.send('GC_SET_ROLE', self.account, (room_jid, nick, \
|
||||||
'participant'))
|
'participant'))
|
||||||
|
|
||||||
def revoke_voice(self, widget, room_jid, nick):
|
def revoke_voice(self, widget, room_jid, nick):
|
||||||
"""revoke voice privilege to a user"""
|
"""revoke voice privilege to a user"""
|
||||||
self.plugin.send('SET_ROLE', self.account, (room_jid, nick, 'visitor'))
|
self.plugin.send('GC_SET_ROLE', self.account, (room_jid, nick, 'visitor'))
|
||||||
|
|
||||||
def grant_moderator(self, widget, room_jid, nick):
|
def grant_moderator(self, widget, room_jid, nick):
|
||||||
"""grant moderator privilege to a user"""
|
"""grant moderator privilege to a user"""
|
||||||
self.plugin.send('SET_ROLE', self.account, (room_jid, nick, 'moderator'))
|
self.plugin.send('GC_SET_ROLE', self.account, (room_jid, nick, 'moderator'))
|
||||||
|
|
||||||
def revoke_moderator(self, widget, room_jid, nick):
|
def revoke_moderator(self, widget, room_jid, nick):
|
||||||
"""revoke moderator privilege to a user"""
|
"""revoke moderator privilege to a user"""
|
||||||
self.plugin.send('SET_ROLE', self.account, (room_jid, nick, \
|
self.plugin.send('GC_SET_ROLE', self.account, (room_jid, nick, \
|
||||||
'participant'))
|
'participant'))
|
||||||
|
|
||||||
def ban(self, widget, room_jid, nick):
|
def ban(self, widget, room_jid, jid):
|
||||||
"""ban a user"""
|
"""ban a user"""
|
||||||
self.plugin.send('SET_AFFILIATION', self.account, (room_jid, nick, \
|
self.plugin.send('GC_SET_AFFILIATION', self.account, (room_jid, jid, \
|
||||||
'outcast'))
|
'outcast'))
|
||||||
|
|
||||||
def grant_membership(self, widget, room_jid, nick):
|
def grant_membership(self, widget, room_jid, jid):
|
||||||
"""grant membership privilege to a user"""
|
"""grant membership privilege to a user"""
|
||||||
self.plugin.send('SET_AFFILIATION', self.account, (room_jid, nick, \
|
self.plugin.send('GC_SET_AFFILIATION', self.account, (room_jid, jid, \
|
||||||
'member'))
|
'member'))
|
||||||
|
|
||||||
def revoke_membership(self, widget, room_jid, nick):
|
def revoke_membership(self, widget, room_jid, jid):
|
||||||
"""revoke membership privilege to a user"""
|
"""revoke membership privilege to a user"""
|
||||||
self.plugin.send('SET_AFFILIATION', self.account, (room_jid, nick, \
|
self.plugin.send('GC_SET_AFFILIATION', self.account, (room_jid, jid, \
|
||||||
'none'))
|
'none'))
|
||||||
|
|
||||||
def grant_admin(self, widget, room_jid, nick):
|
def grant_admin(self, widget, room_jid, jid):
|
||||||
"""grant administrative privilege to a user"""
|
"""grant administrative privilege to a user"""
|
||||||
self.plugin.send('SET_AFFILIATION', self.account, (room_jid, nick, \
|
self.plugin.send('GC_SET_AFFILIATION', self.account, (room_jid, jid, \
|
||||||
'admin'))
|
'admin'))
|
||||||
|
|
||||||
def revoke_admin(self, widget, room_jid, nick):
|
def revoke_admin(self, widget, room_jid, jid):
|
||||||
"""revoke administrative privilege to a user"""
|
"""revoke administrative privilege to a user"""
|
||||||
self.plugin.send('SET_AFFILIATION', self.account, (room_jid, nick, \
|
self.plugin.send('GC_SET_AFFILIATION', self.account, (room_jid, jid, \
|
||||||
'member'))
|
'member'))
|
||||||
|
|
||||||
def grant_owner(self, widget, room_jid, nick):
|
def grant_owner(self, widget, room_jid, jid):
|
||||||
"""grant owner privilege to a user"""
|
"""grant owner privilege to a user"""
|
||||||
self.plugin.send('SET_AFFILIATION', self.account, (room_jid, nick, \
|
self.plugin.send('GC_SET_AFFILIATION', self.account, (room_jid, jid, \
|
||||||
'owner'))
|
'owner'))
|
||||||
|
|
||||||
def revoke_owner(self, widget, room_jid, nick):
|
def revoke_owner(self, widget, room_jid, jid):
|
||||||
"""revoke owner privilege to a user"""
|
"""revoke owner privilege to a user"""
|
||||||
self.plugin.send('SET_AFFILIATION', self.account, (room_jid, nick, \
|
self.plugin.send('GC_SET_AFFILIATION', self.account, (room_jid, jid, \
|
||||||
'admin'))
|
'admin'))
|
||||||
|
|
||||||
def mk_menu(self, event, iter):
|
def mk_menu(self, event, iter):
|
||||||
"""Make user's popup menu"""
|
"""Make user's popup menu"""
|
||||||
model = self.tree.get_model()
|
model = self.tree.get_model()
|
||||||
nick = model.get_value(iter, 1)
|
nick = model.get_value(iter, 1)
|
||||||
|
jid = model.get_value(iter, 2)
|
||||||
|
|
||||||
menu = gtk.Menu()
|
menu = gtk.Menu()
|
||||||
item = gtk.MenuItem(_("MUC"))
|
item = gtk.MenuItem(_('MUC'))
|
||||||
menu.append(item)
|
menu.append(item)
|
||||||
|
|
||||||
menu_sub = gtk.Menu()
|
menu_sub = gtk.Menu()
|
||||||
item.set_submenu(menu_sub)
|
item.set_submenu(menu_sub)
|
||||||
item = gtk.MenuItem(_("Kick"))
|
item = gtk.MenuItem(_('Kick'))
|
||||||
menu_sub.append(item)
|
menu_sub.append(item)
|
||||||
item.connect("activate", self.kick, self.jid, nick)
|
item.connect('activate', self.kick, self.jid, nick)
|
||||||
item = gtk.MenuItem(_("Grant voice"))
|
item = gtk.MenuItem(_('Grant voice'))
|
||||||
menu_sub.append(item)
|
menu_sub.append(item)
|
||||||
item.connect("activate", self.grant_voice, self.jid, nick)
|
item.connect('activate', self.grant_voice, self.jid, nick)
|
||||||
item = gtk.MenuItem(_("Revoke voice"))
|
item = gtk.MenuItem(_('Revoke voice'))
|
||||||
menu_sub.append(item)
|
menu_sub.append(item)
|
||||||
item.connect("activate", self.revoke_voice, self.jid, nick)
|
item.connect('activate', self.revoke_voice, self.jid, nick)
|
||||||
item = gtk.MenuItem(_("Grant moderator"))
|
item = gtk.MenuItem(_('Grant moderator'))
|
||||||
menu_sub.append(item)
|
menu_sub.append(item)
|
||||||
item.connect("activate", self.grant_moderator, self.jid, nick)
|
item.connect('activate', self.grant_moderator, self.jid, nick)
|
||||||
item = gtk.MenuItem(_("Revoke moderator"))
|
item = gtk.MenuItem(_('Revoke moderator'))
|
||||||
menu_sub.append(item)
|
menu_sub.append(item)
|
||||||
item.connect("activate", self.revoke_moderator, self.jid, nick)
|
item.connect('activate', self.revoke_moderator, self.jid, nick)
|
||||||
|
if jid:
|
||||||
item = gtk.MenuItem()
|
item = gtk.MenuItem()
|
||||||
menu_sub.append(item)
|
menu_sub.append(item)
|
||||||
|
|
||||||
item = gtk.MenuItem(_("Ban"))
|
item = gtk.MenuItem(_('Ban'))
|
||||||
menu_sub.append(item)
|
menu_sub.append(item)
|
||||||
item.connect("activate", self.ban, self.jid, nick)
|
item.connect('activate', self.ban, self.jid, jid)
|
||||||
item = gtk.MenuItem(_("Grant membership"))
|
item = gtk.MenuItem(_('Grant membership'))
|
||||||
menu_sub.append(item)
|
menu_sub.append(item)
|
||||||
item.connect("activate", self.grant_membership, self.jid, nick)
|
item.connect('activate', self.grant_membership, self.jid, jid)
|
||||||
item = gtk.MenuItem(_("Revoke membership"))
|
item = gtk.MenuItem(_('Revoke membership'))
|
||||||
menu_sub.append(item)
|
menu_sub.append(item)
|
||||||
item.connect("activate", self.revoke_membership, self.jid, nick)
|
item.connect('activate', self.revoke_membership, self.jid, jid)
|
||||||
item = gtk.MenuItem(_("Grant admin"))
|
item = gtk.MenuItem(_('Grant admin'))
|
||||||
menu_sub.append(item)
|
menu_sub.append(item)
|
||||||
item.connect("activate", self.grant_admin, self.jid, nick)
|
item.connect('activate', self.grant_admin, self.jid, jid)
|
||||||
item = gtk.MenuItem(_("Revoke admin"))
|
item = gtk.MenuItem(_('Revoke admin'))
|
||||||
menu_sub.append(item)
|
menu_sub.append(item)
|
||||||
item.connect("activate", self.revoke_admin, self.jid, nick)
|
item.connect('activate', self.revoke_admin, self.jid, jid)
|
||||||
item = gtk.MenuItem(_("Grant owner"))
|
item = gtk.MenuItem(_('Grant owner'))
|
||||||
menu_sub.append(item)
|
menu_sub.append(item)
|
||||||
item.connect("activate", self.grant_owner, self.jid, nick)
|
item.connect('activate', self.grant_owner, self.jid, jid)
|
||||||
item = gtk.MenuItem(_("Revoke owner"))
|
item = gtk.MenuItem(_('Revoke owner'))
|
||||||
menu_sub.append(item)
|
menu_sub.append(item)
|
||||||
item.connect("activate", self.revoke_owner, self.jid, nick)
|
item.connect('activate', self.revoke_owner, self.jid, jid)
|
||||||
|
|
||||||
menu.popup(None, None, None, event.button, event.time)
|
menu.popup(None, None, None, event.button, event.time)
|
||||||
menu.show_all()
|
menu.show_all()
|
||||||
|
@ -873,9 +874,9 @@ class gc:
|
||||||
self.xml = gtk.glade.XML(GTKGUI_GLADE, 'Gc', APP)
|
self.xml = gtk.glade.XML(GTKGUI_GLADE, 'Gc', APP)
|
||||||
self.window = self.xml.get_widget('Gc')
|
self.window = self.xml.get_widget('Gc')
|
||||||
self.tree = self.xml.get_widget('list')
|
self.tree = self.xml.get_widget('list')
|
||||||
|
#status_image, nickname, real_jid
|
||||||
store = gtk.TreeStore(gtk.Image, str)
|
store = gtk.TreeStore(gtk.Image, str, str)
|
||||||
column = gtk.TreeViewColumn('contacts')#, ImageCellRenderer(), image=0)
|
column = gtk.TreeViewColumn('contacts')
|
||||||
render_text = ImageCellRenderer()
|
render_text = ImageCellRenderer()
|
||||||
column.pack_start(render_text, expand = False)
|
column.pack_start(render_text, expand = False)
|
||||||
column.add_attribute(render_text, 'image', 0)
|
column.add_attribute(render_text, 'image', 0)
|
||||||
|
@ -897,15 +898,15 @@ class gc:
|
||||||
buffer = conversation.get_buffer()
|
buffer = conversation.get_buffer()
|
||||||
end_iter = buffer.get_end_iter()
|
end_iter = buffer.get_end_iter()
|
||||||
buffer.create_mark('end', end_iter, 0)
|
buffer.create_mark('end', end_iter, 0)
|
||||||
self.tagIn = buffer.create_tag("incoming")
|
self.tagIn = buffer.create_tag('incoming')
|
||||||
color = self.plugin.config['inmsgcolor']
|
color = self.plugin.config['inmsgcolor']
|
||||||
self.tagIn.set_property("foreground", color)
|
self.tagIn.set_property('foreground', color)
|
||||||
self.tagOut = buffer.create_tag("outgoing")
|
self.tagOut = buffer.create_tag('outgoing')
|
||||||
color = self.plugin.config['outmsgcolor']
|
color = self.plugin.config['outmsgcolor']
|
||||||
self.tagOut.set_property("foreground", color)
|
self.tagOut.set_property('foreground', color)
|
||||||
self.tagStatus = buffer.create_tag("status")
|
self.tagStatus = buffer.create_tag('status')
|
||||||
color = self.plugin.config['statusmsgcolor']
|
color = self.plugin.config['statusmsgcolor']
|
||||||
self.tagStatus.set_property("foreground", color)
|
self.tagStatus.set_property('foreground', color)
|
||||||
self.xml.signal_connect('gtk_widget_destroy', self.delete_event)
|
self.xml.signal_connect('gtk_widget_destroy', self.delete_event)
|
||||||
self.xml.signal_connect('on_focus', self.on_focus)
|
self.xml.signal_connect('on_focus', self.on_focus)
|
||||||
self.xml.signal_connect('on_msg_key_press_event', \
|
self.xml.signal_connect('on_msg_key_press_event', \
|
||||||
|
|
Loading…
Reference in New Issue