summaryrefslogtreecommitdiffstats
path: root/module/plugins/AccountManager.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/AccountManager.py')
-rw-r--r--module/plugins/AccountManager.py45
1 files changed, 21 insertions, 24 deletions
diff --git a/module/plugins/AccountManager.py b/module/plugins/AccountManager.py
index fc521d36c..4211aea4d 100644
--- a/module/plugins/AccountManager.py
+++ b/module/plugins/AccountManager.py
@@ -60,21 +60,21 @@ class AccountManager():
def getAccountPlugins(self):
""" get all account instances"""
-
+
plugins = []
for plugin in self.accounts.keys():
plugins.append(self.getAccountPlugin(plugin))
-
+
return plugins
#----------------------------------------------------------------------
def loadAccounts(self):
"""loads all accounts available"""
-
+
if not exists("accounts.conf"):
f = open("accounts.conf", "wb")
f.write("version: " + str(ACC_VERSION))
f.close()
-
+
f = open("accounts.conf", "rb")
content = f.readlines()
version = content[0].split(":")[1].strip() if content else ""
@@ -87,60 +87,57 @@ class AccountManager():
f.close()
self.core.log.warning(_("Account settings deleted, due to new config format."))
return
-
-
-
+
plugin = ""
name = ""
-
+
for line in content[1:]:
line = line.strip()
-
+
if not line: continue
if line.startswith("#"): continue
if line.startswith("version"): continue
-
+
if line.endswith(":") and line.count(":") == 1:
plugin = line[:-1]
self.accounts[plugin] = {}
-
+
elif line.startswith("@"):
try:
option = line[1:].split()
self.accounts[plugin][name]["options"][option[0]] = [] if len(option) < 2 else ([option[1]] if len(option) < 3 else option[1:])
except:
pass
-
+
elif ":" in line:
name, sep, pw = line.partition(":")
self.accounts[plugin][name] = {"password": pw, "options": {}, "valid": True}
#----------------------------------------------------------------------
def saveAccounts(self):
"""save all account information"""
-
+
f = open("accounts.conf", "wb")
f.write("version: " + str(ACC_VERSION) + "\n")
-
+
for plugin, accounts in self.accounts.iteritems():
f.write("\n")
f.write(plugin+":\n")
-
+
for name,data in accounts.iteritems():
f.write("\n\t%s:%s\n" % (name,data["password"]) )
if data["options"]:
for option, values in data["options"].iteritems():
f.write("\t@%s %s\n" % (option, " ".join(values)))
-
+
f.close()
chmod(f.name, 0600)
-
-
+
#----------------------------------------------------------------------
def initAccountPlugins(self):
"""init names"""
for name in self.core.pluginManager.getAccountPlugins():
self.accounts[name] = {}
-
+
@lock
def updateAccount(self, plugin , user, password=None, options={}):
"""add or update account"""
@@ -148,14 +145,14 @@ class AccountManager():
p = self.getAccountPlugin(plugin)
updated = p.updateAccounts(user, password, options)
#since accounts is a ref in plugin self.accounts doesnt need to be updated here
-
+
self.saveAccounts()
if updated: p.scheduleRefresh(user, force=False)
-
+
@lock
def removeAccount(self, plugin, user):
"""remove account"""
-
+
if plugin in self.accounts:
p = self.getAccountPlugin(plugin)
p.removeAccount(user)
@@ -169,7 +166,7 @@ class AccountManager():
if refresh:
self.core.scheduler.addJob(0, self.core.accountManager.getAccountInfos)
force = False
-
+
for p in self.accounts.keys():
if self.accounts[p]:
p = self.getAccountPlugin(p)
@@ -179,7 +176,7 @@ class AccountManager():
e = AccountUpdateEvent()
self.core.pullManager.addEvent(e)
return data
-
+
def sendChange(self):
e = AccountUpdateEvent()
self.core.pullManager.addEvent(e)