changeset e3941cc6b21a in /home/hg/repos/gajim details:http://hg.gajim.org/gajim?cmd=changeset;node=e3941cc6b21a description: Add 'role' and 'affiliate' command to command system.
diffstat: src/command_system/implementation/middleware.py | 2 +- src/command_system/implementation/standard.py | 24 ++++++++++++++++++++++++ src/command_system/mapping.py | 8 ++++---- 3 files changed, 29 insertions(+), 5 deletions(-) diffs (85 lines): diff -r 42f7ecdf64a2 -r e3941cc6b21a src/command_system/implementation/middleware.py --- a/src/command_system/implementation/middleware.py Fri Aug 10 10:43:02 2012 +0200 +++ b/src/command_system/implementation/middleware.py Sat Aug 11 14:59:05 2012 +0400 @@ -71,7 +71,7 @@ except CommandError, error: self.echo_error("%s: %s" % (error.name, error.message)) except Exception: - self.echo_error("Error during command execution!") + self.echo_error(_("Error during command execution!")) print_exc() else: self.command_succeeded = True diff -r 42f7ecdf64a2 -r e3941cc6b21a src/command_system/implementation/standard.py --- a/src/command_system/implementation/standard.py Fri Aug 10 10:43:02 2012 +0200 +++ b/src/command_system/implementation/standard.py Sat Aug 11 14:59:05 2012 +0400 @@ -352,6 +352,30 @@ raise CommandError(_("Nickname not found")) self.connection.gc_set_role(self.room_jid, who, 'none', reason or str()) + @command(raw=True) + @doc(_("""Set occupant role in group chat. + Role can be given as one of the following values: + moderator, participant, visitor, none""")) + def role(self, who, role): + if role not in ('moderator', 'participant', 'visitor', 'none'): + raise CommandError(_("Invalid role given")) + if not who in gajim.contacts.get_nick_list(self.account, self.room_jid): + raise CommandError(_("Nickname not found")) + self.connection.gc_set_role(self.room_jid, who, role) + + @command(raw=True) + @doc(_("""Set occupant affiliation in group chat. + Affiliation can be given as one of the following values: + owner, admin, member, outcast, none""")) + def affiliate(self, who, affiliation): + if affiliation not in ('owner', 'admin', 'member', 'outcast', 'none'): + raise CommandError(_("Invalid affiliation given")) + if not who in gajim.contacts.get_nick_list(self.account, self.room_jid): + raise CommandError(_("Nickname not found")) + contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, who) + self.connection.gc_set_affiliation(self.room_jid, contact.jid, + affiliation) + @command @doc(_("Display names of all group chat occupants")) def names(self, verbose=False): diff -r 42f7ecdf64a2 -r e3941cc6b21a src/command_system/mapping.py --- a/src/command_system/mapping.py Fri Aug 10 10:43:02 2012 +0200 +++ b/src/command_system/mapping.py Sat Aug 11 14:59:05 2012 +0400 @@ -162,7 +162,7 @@ try: stopper, (start, end) = args[spec_len - 2] except IndexError: - raise CommandError("Missing arguments", command) + raise CommandError(_("Missing arguments"), command) # The essential point of the whole play. After # boundaries are being determined (supposingly correct) @@ -172,7 +172,7 @@ raw = raw.strip() or None if not raw and not command.empty: - raise CommandError("Missing arguments", command) + raise CommandError(_("Missing arguments"), command) # Discard residual arguments and all of the options as # raw command does not support options and if an option @@ -192,7 +192,7 @@ if command.empty: args.append((None, (0, 0))) else: - raise CommandError("Missing arguments", command) + raise CommandError(_("Missing arguments"), command) # The first stage of transforming options we have got to a format # that can be used to associate them with declared keyword @@ -259,7 +259,7 @@ for arg, (spec_key, spec_value) in zip(overlapped, spec_kwargs): opts.append((spec_key, arg)) else: - raise CommandError("Excessive arguments", command) + raise CommandError(_("Excessive arguments"), command) # Detect every switch and ensure it will not receive any arguments. # Normally this does not happen unless overlapping is enabled. _______________________________________________ Commits mailing list Commits@gajim.org http://lists.gajim.org/cgi-bin/listinfo/commits