From e0dac306f7d4c1e2e2c4777f5859cbae735fa64c Mon Sep 17 00:00:00 2001
From: red-agent <hell.director@gmail.com>
Date: Mon, 5 Oct 2009 12:55:34 +0300
Subject: [PATCH] Modified @documentation to not depend on order

---
 src/command_system/framework.py               | 10 +++---
 src/command_system/implementation/standard.py | 36 +++++++++----------
 2 files changed, 24 insertions(+), 22 deletions(-)

diff --git a/src/command_system/framework.py b/src/command_system/framework.py
index 49e611d5af..f46f701c59 100644
--- a/src/command_system/framework.py
+++ b/src/command_system/framework.py
@@ -327,9 +327,11 @@ def documentation(text):
     Pythonic way - some of Gajim's developers are against it because of the
     scaffolding needed to support the tranlation of such documentation.
     """
-    def decorator(command):
-        handler = command.handler
-        handler.__doc__ = text
-        return command
+    def decorator(target):
+        if isinstance(target, Command):
+            target.handler.__doc__ = text
+        else:
+            target.__doc__ = text
+        return target
 
     return decorator
diff --git a/src/command_system/implementation/standard.py b/src/command_system/implementation/standard.py
index 516546605d..1823caf979 100644
--- a/src/command_system/implementation/standard.py
+++ b/src/command_system/implementation/standard.py
@@ -35,19 +35,19 @@ class StandardCommonCommands(CommandContainer):
 
     HOSTS = (ChatCommands, PrivateChatCommands, GroupChatCommands)
 
-    @documentation(_("Clear the text window"))
     @command
+    @documentation(_("Clear the text window"))
     def clear(self):
         self.conv_textview.clear()
 
-    @documentation(_("Hide the chat buttons"))
     @command
+    @documentation(_("Hide the chat buttons"))
     def compact(self):
         new_status = not self.hide_chat_buttons
         self.chat_buttons_set_visible(new_status)
 
-    @documentation(_("Show help on a given command or a list of available commands if -(-a)ll is given"))
     @command(overlap=True)
+    @documentation(_("Show help on a given command or a list of available commands if -(-a)ll is given"))
     def help(self, command=None, all=False):
         if command:
             command = self.get_command(command)
@@ -73,13 +73,13 @@ class StandardCommonCommands(CommandContainer):
             help = self.get_command('help')
             self.echo(help(self, 'help'))
 
-    @documentation(_("Send a message to the contact"))
     @command(raw=True)
+    @documentation(_("Send a message to the contact"))
     def say(self, message):
         self.send(message)
 
-    @documentation(_("Send action (in the third person) to the current chat"))
     @command(raw=True)
+    @documentation(_("Send action (in the third person) to the current chat"))
     def me(self, action):
         self.send("/me %s" % action)
 
@@ -90,8 +90,8 @@ class StandardChatCommands(CommandContainer):
 
     HOSTS = (ChatCommands,)
 
-    @documentation(_("Send a ping to the contact"))
     @command
+    @documentation(_("Send a ping to the contact"))
     def ping(self):
         if self.account == gajim.ZEROCONF_ACC_NAME:
             raise CommandError(_('Command is not supported for zeroconf accounts'))
@@ -113,8 +113,8 @@ class StandardGroupchatCommands(CommandContainer):
 
     HOSTS = (GroupChatCommands,)
 
-    @documentation(_("Change your nickname in a group chat"))
     @command(raw=True)
+    @documentation(_("Change your nickname in a group chat"))
     def nick(self, new_nick):
         try:
             new_nick = helpers.parse_resource(new_nick)
@@ -123,8 +123,8 @@ class StandardGroupchatCommands(CommandContainer):
         self.connection.join_gc(new_nick, self.room_jid, None, change_nick=True)
         self.new_nick = new_nick
 
-    @documentation(_("Open a private chat window with a specified occupant"))
     @command('query', raw=True)
+    @documentation(_("Open a private chat window with a specified occupant"))
     def chat(self, nick):
         nicks = gajim.contacts.get_nick_list(self.account, self.room_jid)
         if nick in nicks:
@@ -132,8 +132,8 @@ class StandardGroupchatCommands(CommandContainer):
         else:
             raise CommandError(_("Nickname not found"))
 
-    @documentation(_("Open a private chat window with a specified occupant and send him a message"))
     @command('msg', raw=True)
+    @documentation(_("Open a private chat window with a specified occupant and send him a message"))
     def message(self, nick, a_message):
         nicks = gajim.contacts.get_nick_list(self.account, self.room_jid)
         if nick in nicks:
@@ -141,22 +141,22 @@ class StandardGroupchatCommands(CommandContainer):
         else:
             raise CommandError(_("Nickname not found"))
 
-    @documentation(_("Display or change a group chat topic"))
     @command(raw=True, empty=True)
+    @documentation(_("Display or change a group chat topic"))
     def topic(self, new_topic):
         if new_topic:
             self.connection.send_gc_subject(self.room_jid, new_topic)
         else:
             return self.subject
 
-    @documentation(_("Invite a user to a room for a reason"))
     @command(raw=True, empty=True)
+    @documentation(_("Invite a user to a room for a reason"))
     def invite(self, jid, reason):
         self.connection.send_invite(self.room_jid, jid, reason)
         return _("Invited %s to %s") % (jid, self.room_jid)
 
-    @documentation(_("Join a group chat given by a jid, optionally using given nickname"))
     @command(raw=True, empty=True)
+    @documentation(_("Join a group chat given by a jid, optionally using given nickname"))
     def join(self, jid, nick):
         if not nick:
             nick = self.nick
@@ -172,32 +172,32 @@ class StandardGroupchatCommands(CommandContainer):
             except GajimGeneralException:
                 pass
 
-    @documentation(_("Leave the groupchat, optionally giving a reason, and close tab or window"))
     @command('part', 'close', raw=True, empty=True)
+    @documentation(_("Leave the groupchat, optionally giving a reason, and close tab or window"))
     def leave(self, reason):
         self.parent_win.remove_tab(self, self.parent_win.CLOSE_COMMAND, reason)
 
+    @command(raw=True, empty=True)
     @documentation(_("""
     Ban user by a nick or a jid from a groupchat
 
     If given nickname is not found it will be treated as a jid.
     """))
-    @command(raw=True, empty=True)
     def ban(self, who, reason):
         if who in gajim.contacts.get_nick_list(self.account, self.room_jid):
             contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, who)
             who = contact.jid
         self.connection.gc_set_affiliation(self.room_jid, who, 'outcast', reason or str())
 
-    @documentation(_("Kick user by a nick from a groupchat"))
     @command(raw=True, empty=True)
+    @documentation(_("Kick user by a nick from a groupchat"))
     def kick(self, who, reason):
         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, 'none', reason or str())
 
-    @documentation(_("Display names of all group chat occupants"))
     @command
+    @documentation(_("Display names of all group chat occupants"))
     def names(self, verbose=False):
         get_contact = lambda nick: gajim.contacts.get_gc_contact(self.account, self.room_jid, nick)
         nicks = gajim.contacts.get_nick_list(self.account, self.room_jid)
@@ -217,12 +217,12 @@ class StandardGroupchatCommands(CommandContainer):
         else:
             return ', '.join(nicks)
 
-    @documentation(_("Forbid an occupant to send you public or private messages"))
     @command('ignore', raw=True)
+    @documentation(_("Forbid an occupant to send you public or private messages"))
     def block(self, who):
         self.on_block(None, who)
 
-    @documentation(_("Allow an occupant to send you public or private messages"))
     @command('unignore', raw=True)
+    @documentation(_("Allow an occupant to send you public or private messages"))
     def unblock(self, who):
         self.on_unblock(None, who)
-- 
GitLab