source file: irc/lusers.py
file stats: 39 lines, 39 executed: 100.0% covered
   1. #!/usr/bin/env python
   2. 
   3. class lusers:
   4. 
   5.     _state = None
   6. 
   7.     def __init__(self, state):
   8.         self._state = state
   9.         state.registerCallback(state.CALLBACK_REQUESTLUSERS, self.callbackLusers)
  10. 
  11.     def callbackLusers(self, (origin, target, dummy)):
  12.         if target[0] == self._state.getServerID():
  13.             infostr = "There "
  14.             if len(self._state.users) == 1:
  15.                 infostr += "is 1 user on "
  16.             else:
  17.                 infostr += "are " + str(len(self._state.users)) + " users on "
  18.             if len(self._state.servers) == 1:
  19.                 infostr += "1 server."
  20.             else:
  21.                 infostr += str(len(self._state.servers)) + " servers."
  22.             self._state.oobmsg((self._state.getServerID(), None), origin, "251", [infostr])
  23. 
  24.             operators = 0
  25.             for user in self._state.users:
  26.                 if self._state.users[user].hasMode("o"):
  27.                     operators += 1
  28.             if operators == 1:
  29.                 infostr = "operator online."
  30.             else:
  31.                 infostr = "operators online."
  32.             self._state.oobmsg((self._state.getServerID(), None), origin, "252", [str(operators), infostr])
  33. 
  34.             if len(self._state.channels) == 1:
  35.                 infostr = "channel formed."
  36.             else:
  37.                 infostr = "channels formed."
  38.             self._state.oobmsg((self._state.getServerID(), None), origin, "254", [str(len(self._state.channels)), infostr])
  39. 
  40.             local = 0
  41.             for user in self._state.users:
  42.                 if user[0] == self._state.getServerID():
  43.                     local += 1
  44.             infostr = "I have "
  45.             if local == 1:
  46.                 infostr += "1 client and "
  47.             else:
  48.                 infostr += str(local) + " clients and "
  49.             if len(self._state.servers[self._state.getServerID()].children) == 1:
  50.                 infostr += "1 server."
  51.             else:
  52.                 infostr += str(len(self._state.servers[self._state.getServerID()].children)) + " servers."
  53.             self._state.oobmsg((self._state.getServerID(), None), origin, "255", [infostr])