Should be fully separated now. Next up: How many times will it break before it runs?
[halbot.git] / perms.py
blob1e083255d9ad104bd3700ea916eac3ca0f9e0676
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.present)
18 from_symbol = staticmethod(from_symbol)
19 ban = Perms(-2)
20 none = Perms(-1)
21 present = Perms(0)
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 if info.ircop:
31 return Perms.ircop
32 if where == private:
33 server_perm = Perms.owner
34 else:
35 server_perm = info.channel_perms.get(where, Perms.none)
36 if info.registered:
37 my_perm = my_users.get(who, Perms.none)
38 else:
39 my_perm = Perms.none
40 return max(server_perm, my_perm)