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