Another bugfix. Yeesh.
[halbot.git] / perms.py
bloba167810c08f608d98dfa277fbfed3142ebd4485c
1 class Perms(object):
2 symbols = {}
3 def __init__(self, level, symbol=None):
4 self.level = level
5 self.symbol = symbol
6 if symbol:
7 Perms.symbols[symbol] = self
8 def __cmp__(self, other):
9 return self.level - other.level
10 def __str__(self):
11 if self.symbol:
12 return self.symbol
13 else:
14 return str(self.level)
15 #@staticmethod
16 def from_symbol(symbol):
17 return Perms.symbols.get(symbol, Perms(0))
18 from_symbol = staticmethod(from_symbol)
19 ban = Perms(-2)
20 none = Perms(-1)
21 present = Perms(0) # Default for from_symbol, albeit == not is.
22 voice = Perms(1, "+")
23 hop = Perms(2, "%")
24 op = Perms(3, "@")
25 admin = Perms(4, "&")
26 owner = Perms(5, "~")
27 ircop = Perms(6)
29 def get_perms(who, where, info):
30 from globals import private, my_users
31 if info.ircop:
32 return ircop
33 if where == private:
34 server_perm = owner
35 else:
36 server_perm = info.channel_perms.get(where, none)
37 if info.registered:
38 my_perm = my_users.get(who, none)
39 else:
40 my_perm = none
41 return max(server_perm, my_perm)