Reuse same code for is_admin/is_owner

This commit is contained in:
nyuszika7h 2015-07-19 21:22:04 +02:00
parent c13e3087d6
commit 66a8826eb1

View File

@ -281,7 +281,18 @@ PING_IF_NUMS_ACCS = {}
is_role = lambda plyr, rol: rol in ROLES and plyr in ROLES[rol]
def is_admin(nick, cloak=None, acc=None):
def check_priv(priv):
assert priv in ("owner", "admin")
# Owners can do everything
hosts = set(botconfig.OWNERS)
accounts = set(botconfig.OWNERS_ACCOUNTS)
if priv == "admin":
hosts.update(botconfig.ADMINS)
accounts.update(botconfig.ADMINS_ACCOUNTS)
def do_check(nick, cloak=None, acc=None):
if nick in USERS.keys():
if not cloak:
cloak = USERS[nick]["cloak"]
@ -289,35 +300,21 @@ def is_admin(nick, cloak=None, acc=None):
acc = USERS[nick]["account"]
if acc and acc != "*":
for pattern in set(botconfig.OWNERS_ACCOUNTS + botconfig.ADMINS_ACCOUNTS):
for pattern in set(accounts):
if fnmatch.fnmatch(acc.lower(), pattern.lower()):
return True
if cloak:
for pattern in set(botconfig.OWNERS + botconfig.ADMINS):
for pattern in set(hosts):
if fnmatch.fnmatch(cloak.lower(), pattern.lower()):
return True
return False
def is_owner(nick, cloak=None, acc=None):
if nick in USERS.keys():
if not cloak:
cloak = USERS[nick]["cloak"]
if not acc:
acc = USERS[nick]["account"]
return do_check
if acc and acc != "*":
for pattern in botconfig.OWNERS_ACCOUNTS:
if fnmatch.fnmatch(acc.lower(), pattern.lower()):
return True
if cloak:
for pattern in botconfig.OWNERS:
if fnmatch.fnmatch(cloak.lower(), pattern.lower()):
return True
return False
is_admin = check_priv("admin")
is_owner = check_priv("owner")
def plural(role):
bits = role.split()