mirror of
https://github.com/jlu5/PyLink.git
synced 2024-11-23 19:19:31 +01:00
classes: fix backwards sorting in Channel.sort_prefixes()
Also remove various workaround code added to address this.
This commit is contained in:
parent
b8df1a1b61
commit
aa44bc15a3
@ -1722,10 +1722,9 @@ class Channel(structures.DeprecatedAttributesObject, structures.CamelCaseToSnake
|
||||
Implements a sorted()-compatible sorter for prefix modes, giving each one a
|
||||
numeric value.
|
||||
"""
|
||||
values = {'owner': 100, 'admin': 10, 'op': 5, 'halfop': 4, 'voice': 3}
|
||||
values = {'owner': 0, 'admin': 100, 'op': 200, 'halfop': 300, 'voice': 500}
|
||||
|
||||
# Default to highest value (1000) for unknown modes, should we choose to
|
||||
# support them.
|
||||
# Default to highest value (1000) for unknown modes, should they appear.
|
||||
return values.get(key, 1000)
|
||||
|
||||
def get_prefix_modes(self, uid, prefixmodes=None):
|
||||
|
@ -209,10 +209,7 @@ def get_prefix_modes(irc, remoteirc, channel, user, mlist=None):
|
||||
|
||||
if channel in irc.channels and user in irc.channels[channel].users:
|
||||
# Iterate over the the prefix modes for relay supported by the remote IRCd.
|
||||
# Note: reverse the order so prefix modes are bursted in their traditional order
|
||||
# (e.g. owner before op before halfop). TODO: SJOIN modes should probably be
|
||||
# consistently sorted IRCd-side.
|
||||
for pmode in reversed(irc.channels[channel].get_prefix_modes(user, prefixmodes=mlist)):
|
||||
for pmode in irc.channels[channel].get_prefix_modes(user, prefixmodes=mlist):
|
||||
if pmode in remoteirc.cmodes:
|
||||
modes += remoteirc.cmodes[pmode]
|
||||
return modes
|
||||
|
@ -616,7 +616,7 @@ class P10Protocol(IRCS2SProtocol):
|
||||
|
||||
# Flip the (prefixmodes, user) pairs in users, and save it as a dict for easy lookup
|
||||
# later of what modes each target user should have.
|
||||
names_dict = dict([(uid, prefixes) for prefixes, uid in users])
|
||||
names_dict = {uid: prefixes for prefixes, uid in users}
|
||||
|
||||
# Wrap all users and send them to prevent cutoff. Subtract 4 off the maximum
|
||||
# buf size to account for user prefix data that may be re-added (e.g. ":ohv")
|
||||
@ -633,9 +633,8 @@ class P10Protocol(IRCS2SProtocol):
|
||||
|
||||
# If the first UID was supposed to have a prefix mode attached, re-add it here
|
||||
first_uid = wrapped_namelist[0]
|
||||
# XXX: I'm not sure why the prefix list has to be reversed for it to match the
|
||||
# original string...
|
||||
first_prefix = names_dict.get(first_uid, '')[::-1]
|
||||
|
||||
first_prefix = names_dict.get(first_uid, '')
|
||||
log.debug('(%s) sjoin: prefixes for first user %s: %s (post-wrap fixing)', self.name,
|
||||
first_uid, first_prefix)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user