mirror of https://gitlab.com/bashrc2/epicyon
Tidying of role functions
parent
724da883e6
commit
c90fc15c12
111
roles.py
111
roles.py
|
@ -18,30 +18,10 @@ from utils import loadJson
|
||||||
from utils import saveJson
|
from utils import saveJson
|
||||||
|
|
||||||
|
|
||||||
def clearModeratorStatus(baseDir: str) -> None:
|
def _clearRoleStatus(baseDir: str, role: str) -> None:
|
||||||
"""Removes moderator status from all accounts
|
"""Removes role status from all accounts
|
||||||
This could be slow if there are many users, but only happens
|
This could be slow if there are many users, but only happens
|
||||||
rarely when moderators are appointed or removed
|
rarely when roles are appointed or removed
|
||||||
"""
|
|
||||||
directory = os.fsencode(baseDir + '/accounts/')
|
|
||||||
for f in os.scandir(directory):
|
|
||||||
f = f.name
|
|
||||||
filename = os.fsdecode(f)
|
|
||||||
if filename.endswith(".json") and '@' in filename:
|
|
||||||
filename = os.path.join(baseDir + '/accounts/', filename)
|
|
||||||
if '"moderator"' in open(filename).read():
|
|
||||||
actorJson = loadJson(filename)
|
|
||||||
if actorJson:
|
|
||||||
if actorJson['roles'].get('instance'):
|
|
||||||
if 'moderator' in actorJson['roles']['instance']:
|
|
||||||
actorJson['roles']['instance'].remove('moderator')
|
|
||||||
saveJson(actorJson, filename)
|
|
||||||
|
|
||||||
|
|
||||||
def clearEditorStatus(baseDir: str) -> None:
|
|
||||||
"""Removes editor status from all accounts
|
|
||||||
This could be slow if there are many users, but only happens
|
|
||||||
rarely when editors are appointed or removed
|
|
||||||
"""
|
"""
|
||||||
directory = os.fsencode(baseDir + '/accounts/')
|
directory = os.fsencode(baseDir + '/accounts/')
|
||||||
for f in os.scandir(directory):
|
for f in os.scandir(directory):
|
||||||
|
@ -52,59 +32,88 @@ def clearEditorStatus(baseDir: str) -> None:
|
||||||
if not filename.endswith(".json"):
|
if not filename.endswith(".json"):
|
||||||
continue
|
continue
|
||||||
filename = os.path.join(baseDir + '/accounts/', filename)
|
filename = os.path.join(baseDir + '/accounts/', filename)
|
||||||
if '"editor"' not in open(filename).read():
|
if '"' + role + '"' not in open(filename).read():
|
||||||
continue
|
continue
|
||||||
actorJson = loadJson(filename)
|
actorJson = loadJson(filename)
|
||||||
if not actorJson:
|
if not actorJson:
|
||||||
continue
|
continue
|
||||||
if actorJson['roles'].get('instance'):
|
if actorJson['roles'].get('instance'):
|
||||||
if 'editor' in actorJson['roles']['instance']:
|
if role in actorJson['roles']['instance']:
|
||||||
actorJson['roles']['instance'].remove('editor')
|
actorJson['roles']['instance'].remove(role)
|
||||||
saveJson(actorJson, filename)
|
saveJson(actorJson, filename)
|
||||||
|
|
||||||
|
|
||||||
def _addModerator(baseDir: str, nickname: str, domain: str) -> None:
|
def clearEditorStatus(baseDir: str) -> None:
|
||||||
"""Adds a moderator nickname to the file
|
"""Removes editor status from all accounts
|
||||||
|
This could be slow if there are many users, but only happens
|
||||||
|
rarely when editors are appointed or removed
|
||||||
|
"""
|
||||||
|
_clearRoleStatus(baseDir, 'editor')
|
||||||
|
|
||||||
|
|
||||||
|
def clearModeratorStatus(baseDir: str) -> None:
|
||||||
|
"""Removes moderator status from all accounts
|
||||||
|
This could be slow if there are many users, but only happens
|
||||||
|
rarely when moderators are appointed or removed
|
||||||
|
"""
|
||||||
|
_clearRoleStatus(baseDir, 'moderator')
|
||||||
|
|
||||||
|
|
||||||
|
def _addRole(baseDir: str, nickname: str, domain: str,
|
||||||
|
roleFilename: str) -> None:
|
||||||
|
"""Adds a role nickname to the file
|
||||||
"""
|
"""
|
||||||
if ':' in domain:
|
if ':' in domain:
|
||||||
domain = domain.split(':')[0]
|
domain = domain.split(':')[0]
|
||||||
moderatorsFile = baseDir + '/accounts/moderators.txt'
|
roleFile = baseDir + '/accounts/' + roleFilename
|
||||||
if os.path.isfile(moderatorsFile):
|
if os.path.isfile(roleFile):
|
||||||
# is this nickname already in the file?
|
# is this nickname already in the file?
|
||||||
with open(moderatorsFile, "r") as f:
|
with open(roleFile, "r") as f:
|
||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
for moderator in lines:
|
for roleNickname in lines:
|
||||||
moderator = moderator.strip('\n').strip('\r')
|
roleNickname = roleNickname.strip('\n').strip('\r')
|
||||||
if moderator == nickname:
|
if roleNickname == nickname:
|
||||||
return
|
return
|
||||||
lines.append(nickname)
|
lines.append(nickname)
|
||||||
with open(moderatorsFile, 'w+') as f:
|
with open(roleFile, 'w+') as f:
|
||||||
for moderator in lines:
|
for roleNickname in lines:
|
||||||
moderator = moderator.strip('\n').strip('\r')
|
roleNickname = roleNickname.strip('\n').strip('\r')
|
||||||
if len(moderator) > 1:
|
if len(roleNickname) > 1:
|
||||||
if os.path.isdir(baseDir + '/accounts/' +
|
if os.path.isdir(baseDir + '/accounts/' +
|
||||||
moderator + '@' + domain):
|
roleNickname + '@' + domain):
|
||||||
f.write(moderator + '\n')
|
f.write(roleNickname + '\n')
|
||||||
else:
|
else:
|
||||||
with open(moderatorsFile, "w+") as f:
|
with open(roleFile, "w+") as f:
|
||||||
if os.path.isdir(baseDir + '/accounts/' +
|
if os.path.isdir(baseDir + '/accounts/' +
|
||||||
nickname + '@' + domain):
|
nickname + '@' + domain):
|
||||||
f.write(nickname + '\n')
|
f.write(nickname + '\n')
|
||||||
|
|
||||||
|
|
||||||
def _removeModerator(baseDir: str, nickname: str):
|
def _addModerator(baseDir: str, nickname: str, domain: str) -> None:
|
||||||
"""Removes a moderator nickname from the file
|
"""Adds a moderator nickname to the file
|
||||||
"""
|
"""
|
||||||
moderatorsFile = baseDir + '/accounts/moderators.txt'
|
_addRole(baseDir, nickname, domain, 'moderators.txt')
|
||||||
if not os.path.isfile(moderatorsFile):
|
|
||||||
|
|
||||||
|
def _removeRole(baseDir: str, nickname: str, roleFilename: str) -> None:
|
||||||
|
"""Removes a role nickname from the file
|
||||||
|
"""
|
||||||
|
roleFile = baseDir + '/accounts/' + roleFilename
|
||||||
|
if not os.path.isfile(roleFile):
|
||||||
return
|
return
|
||||||
with open(moderatorsFile, "r") as f:
|
with open(roleFile, "r") as f:
|
||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
with open(moderatorsFile, 'w+') as f:
|
with open(roleFile, 'w+') as f:
|
||||||
for moderator in lines:
|
for roleNickname in lines:
|
||||||
moderator = moderator.strip('\n').strip('\r')
|
roleNickname = roleNickname.strip('\n').strip('\r')
|
||||||
if len(moderator) > 1 and moderator != nickname:
|
if len(roleNickname) > 1 and roleNickname != nickname:
|
||||||
f.write(moderator + '\n')
|
f.write(roleNickname + '\n')
|
||||||
|
|
||||||
|
|
||||||
|
def _removeModerator(baseDir: str, nickname: str) -> None:
|
||||||
|
"""Adds a moderator nickname to the file
|
||||||
|
"""
|
||||||
|
_removeRole(baseDir, nickname, 'moderators.txt')
|
||||||
|
|
||||||
|
|
||||||
def setRole(baseDir: str, nickname: str, domain: str,
|
def setRole(baseDir: str, nickname: str, domain: str,
|
||||||
|
|
Loading…
Reference in New Issue