Merge lp:~ddormer/kali/887467-fjoin-modes into lp:kali

Proposed by Darren Dormer
Status: Needs review
Proposed branch: lp:~ddormer/kali/887467-fjoin-modes
Merge into: lp:kali
Diff against target: 120 lines (+32/-10)
2 files modified
kali/controller.py (+10/-6)
kali/protocol.py (+22/-4)
To merge this branch: bzr merge lp:~ddormer/kali/887467-fjoin-modes
Reviewer Review Type Date Requested Status
Kali Developers Pending
Review via email: mp+165895@code.launchpad.net
To post a comment you must log in.
lp:~ddormer/kali/887467-fjoin-modes updated
140. By Darren Dormer

Added mode parameter.

Unmerged revisions

140. By Darren Dormer

Added mode parameter.

139. By Darren Dormer

Removed redundant code

138. By Darren Dormer

- Fixed a couple docstring typos.
- Fixed FJOIN.
- Added ':' back to the trailing arguments to allow the detection of optional trailing arguments.

137. By Darren Dormer

- Added modes paremeter to irc_FJOIN

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'kali/controller.py'
--- kali/controller.py 2012-01-15 17:02:41 +0000
+++ kali/controller.py 2013-05-27 15:38:24 +0000
@@ -201,7 +201,7 @@
201 self.ctrl = controller201 self.ctrl = controller
202 self.store = self.ctrl.store202 self.store = self.ctrl.store
203 self.cid = ''.join(n for n in self.ctrl.ids.next())203 self.cid = ''.join(n for n in self.ctrl.ids.next())
204 self.uid = self.ctrl.params['sid'] + self.cid 204 self.uid = self.ctrl.params['sid'] + self.cid
205 self.avatars = {}205 self.avatars = {}
206206
207 def event_connected(self, protocol):207 def event_connected(self, protocol):
@@ -324,6 +324,7 @@
324 super(User, self).__init__(*a, **kw)324 super(User, self).__init__(*a, **kw)
325 self.registered = False325 self.registered = False
326 self.channels = set()326 self.channels = set()
327 self.status = {}
327328
328329
329class Channel(record('name'), _ModesMixin):330class Channel(record('name'), _ModesMixin):
@@ -340,7 +341,7 @@
340 @type lists: C{{mode: [values]}}341 @type lists: C{{mode: [values]}}
341342
342 @ivar users: The users currently joined to the channel.343 @ivar users: The users currently joined to the channel.
343 @type users: C{list}344 @type users: C{dict}
344 """345 """
345 def __init__(self, *a, **kw):346 def __init__(self, *a, **kw):
346 super(Channel, self).__init__(*a, **kw)347 super(Channel, self).__init__(*a, **kw)
@@ -456,12 +457,15 @@
456 channel.lists[mode].remove(param)457 channel.lists[mode].remove(param)
457458
458 def event_userStatusAdded(self, source, target, mode, param):459 def event_userStatusAdded(self, source, target, mode, param):
459 channel = self.getChannel(target)460 channels = self.getChannel(target).users[param].status
460 channel.users[param].status.add(mode)461 status = channels.get(target, None)
462 if not status:
463 status = channels[target] = set()
464 status.add(mode)
461465
462 def event_userStatusRemoved(self, source, target, mode, param):466 def event_userStatusRemoved(self, source, target, mode, param):
463 channel = self.getChannel(target)467 channel = self.getChannel(target)
464 channel.users[param].status.remove(mode)468 channel.users[param].status[target].remove(mode)
465469
466 def event_joined(self, channelName, nick):470 def event_joined(self, channelName, nick):
467 try:471 try:
@@ -470,7 +474,7 @@
470 channel = self.channels[channelName] = Channel(channelName)474 channel = self.channels[channelName] = Channel(channelName)
471475
472 user = self.getUser(nick)476 user = self.getUser(nick)
473 channel.users[user] = {}477 channel.users[nick] = user
474 user.channels.add(channel)478 user.channels.add(channel)
475479
476 def event_parted(self, channelName, nick, message):480 def event_parted(self, channelName, nick, message):
477481
=== modified file 'kali/protocol.py'
--- kali/protocol.py 2012-01-05 15:56:39 +0000
+++ kali/protocol.py 2013-05-27 15:38:24 +0000
@@ -47,6 +47,7 @@
4747
48 if ' :' in s:48 if ' :' in s:
49 s, trailing = s.split(' :', 1)49 s, trailing = s.split(' :', 1)
50 trailing = ':' + trailing
5051
51 args = s.split()52 args = s.split()
52 if trailing:53 if trailing:
@@ -71,7 +72,7 @@
71 @type params: C{list}72 @type params: C{list}
7273
73 @returns: (added, removed) modes74 @returns: (added, removed) modes
74 @rtype: C{([(mode, param)], [(mode, param]))}75 @rtype: C{([(mode, param)], [(mode, param)])}
75 """76 """
76 if len(modes) == 0:77 if len(modes) == 0:
77 raise IRCBadModes('Empty mode string')78 raise IRCBadModes('Empty mode string')
@@ -346,11 +347,26 @@
346 else:347 else:
347 self.services.event('channelFlagUnset', source, target, mode)348 self.services.event('channelFlagUnset', source, target, mode)
348349
349 def irc_FJOIN(self, source, channel, timestamp, users):350 def irc_FJOIN(self, source, channel, timestamp, modes, *args):
351 args = list(args)
352 params = []
353 if ':' in args[-1]:
354 users = args.pop().lstrip(':')
355
356 params = args
357 modes = parseModes(modes, params, (self.channelParamModes,''))
350 for user in users.split():358 for user in users.split():
351 prefixes, nick = user.split(',', 1)359 try:
360 prefixes, nick = user.split(',', 1)
361 except ValueError:
362 prefixes, nick = None, user
352 self.services.event('joined', channel, nick)363 self.services.event('joined', channel, nick)
353 # XXX: translate the prefixes into channel mode changes364 if prefixes:
365 for prefix in prefixes:
366 self.addMode_channel(source, channel, prefix, nick)
367
368 for mode in modes[0]:
369 self.addMode_channel(source, channel, *mode)
354370
355 def irc_JOIN(self, source, channels, timestamp):371 def irc_JOIN(self, source, channels, timestamp):
356 for channel in channels.split(','):372 for channel in channels.split(','):
@@ -374,9 +390,11 @@
374 if len(params) == 1:390 if len(params) == 1:
375 pass391 pass
376 else:392 else:
393 #XXX: modeparams aren't always present.
377 paramNames = 'cid timestamp nick hostname fakehost username ip signontime modes modeparams realname'.split()394 paramNames = 'cid timestamp nick hostname fakehost username ip signontime modes modeparams realname'.split()
378395
379 user = dict(zip(paramNames, params))396 user = dict(zip(paramNames, params))
397 user['realname'].lstrip(':')
380 user['cid'] = user['cid'].decode('ascii')398 user['cid'] = user['cid'].decode('ascii')
381 user['nick'] = user['nick'].decode('ascii')399 user['nick'] = user['nick'].decode('ascii')
382 user['modes'] = user['modes'].lstrip('+')400 user['modes'] = user['modes'].lstrip('+')

Subscribers

People subscribed via source and target branches

to all changes: