From 5060e4c6374a5116d0d8b02528f910f8c5f8bcf9 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 15 Jul 2014 16:25:41 +0200 Subject: Fix code indentation, some bad whitespaces and missing authors + use 'not' instead 'is None' + replace __pattern__'s r" with r' + other minor cosmetics --- module/plugins/AccountManager.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'module/plugins/AccountManager.py') diff --git a/module/plugins/AccountManager.py b/module/plugins/AccountManager.py index 1de55effc..80441066f 100644 --- a/module/plugins/AccountManager.py +++ b/module/plugins/AccountManager.py @@ -27,6 +27,7 @@ from module.utils import chmod, lock ACC_VERSION = 1 + class AccountManager(): """manages all accounts""" @@ -47,7 +48,6 @@ class AccountManager(): self.initAccountPlugins() self.loadAccounts() - def getAccountPlugin(self, plugin): """get account instance for plugin or None if anonymous""" if plugin in self.accounts: @@ -66,6 +66,7 @@ class AccountManager(): plugins.append(self.getAccountPlugin(plugin)) return plugins + #---------------------------------------------------------------------- def loadAccounts(self): """loads all accounts available""" @@ -112,6 +113,7 @@ class AccountManager(): elif ":" in line: name, sep, pw = line.partition(":") self.accounts[plugin][name] = {"password": pw, "options": {}, "valid": True} + #---------------------------------------------------------------------- def saveAccounts(self): """save all account information""" -- cgit v1.2.3 From 7b8c458cca7d21a029620f98e453f746fce69cd1 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Mon, 14 Jul 2014 16:10:01 +0200 Subject: Prefer single quote for dict key name --- module/plugins/AccountManager.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'module/plugins/AccountManager.py') diff --git a/module/plugins/AccountManager.py b/module/plugins/AccountManager.py index 80441066f..39e613c1a 100644 --- a/module/plugins/AccountManager.py +++ b/module/plugins/AccountManager.py @@ -106,7 +106,7 @@ class AccountManager(): 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:]) + self.accounts[plugin][name]['options'][option[0]] = [] if len(option) < 2 else ([option[1]] if len(option) < 3 else option[1:]) except: pass @@ -126,9 +126,9 @@ class AccountManager(): 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("\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() -- cgit v1.2.3 From ba916633f2bedb04c7358000b91aed69f52e8e43 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 1 Aug 2014 19:35:59 +0200 Subject: Remove trailing whitespaces + remove license headers + import urllib methods directly + sort and fix key attributes + use save_join instead join + sort some import declarations + other minor code cosmetics --- module/plugins/AccountManager.py | 17 ----------------- 1 file changed, 17 deletions(-) (limited to 'module/plugins/AccountManager.py') diff --git a/module/plugins/AccountManager.py b/module/plugins/AccountManager.py index 39e613c1a..4b8063002 100644 --- a/module/plugins/AccountManager.py +++ b/module/plugins/AccountManager.py @@ -1,22 +1,5 @@ # -*- coding: utf-8 -*- -""" - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, - or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see . - - @author: RaNaN -""" - from os.path import exists from shutil import copy -- cgit v1.2.3 From 0eb6e7ec4a1144dcca824d8add049787d3da1762 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 22 Oct 2014 19:44:59 +0200 Subject: Two space before function declaration --- module/plugins/AccountManager.py | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'module/plugins/AccountManager.py') diff --git a/module/plugins/AccountManager.py b/module/plugins/AccountManager.py index 4b8063002..b039b5827 100644 --- a/module/plugins/AccountManager.py +++ b/module/plugins/AccountManager.py @@ -14,6 +14,7 @@ ACC_VERSION = 1 class AccountManager(): """manages all accounts""" + #---------------------------------------------------------------------- def __init__(self, core): """Constructor""" @@ -24,6 +25,7 @@ class AccountManager(): self.initPlugins() self.saveAccounts() # save to add categories to conf + def initPlugins(self): self.accounts = {} # key = ( plugin ) self.plugins = {} @@ -31,6 +33,7 @@ class AccountManager(): self.initAccountPlugins() self.loadAccounts() + def getAccountPlugin(self, plugin): """get account instance for plugin or None if anonymous""" if plugin in self.accounts: @@ -41,6 +44,7 @@ class AccountManager(): else: return None + def getAccountPlugins(self): """ get all account instances""" @@ -50,6 +54,7 @@ class AccountManager(): return plugins + #---------------------------------------------------------------------- def loadAccounts(self): """loads all accounts available""" @@ -97,6 +102,7 @@ class AccountManager(): name, sep, pw = line.partition(":") self.accounts[plugin][name] = {"password": pw, "options": {}, "valid": True} + #---------------------------------------------------------------------- def saveAccounts(self): """save all account information""" @@ -117,12 +123,14 @@ class AccountManager(): 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""" @@ -134,6 +142,7 @@ class AccountManager(): self.saveAccounts() if updated: p.scheduleRefresh(user, force=False) + @lock def removeAccount(self, plugin, user): """remove account""" @@ -144,6 +153,7 @@ class AccountManager(): self.saveAccounts() + @lock def getAccountInfos(self, force=True, refresh=False): data = {} @@ -162,6 +172,7 @@ class AccountManager(): self.core.pullManager.addEvent(e) return data + def sendChange(self): e = AccountUpdateEvent() self.core.pullManager.addEvent(e) -- cgit v1.2.3 From 9f2ebe486a3e155fb6a60e07cccb77ab6a772eb2 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sun, 26 Oct 2014 02:31:54 +0200 Subject: Extend translation support in plugins + a lot of code cosmetics and typo fixes --- module/plugins/AccountManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module/plugins/AccountManager.py') diff --git a/module/plugins/AccountManager.py b/module/plugins/AccountManager.py index b039b5827..d9888ec8b 100644 --- a/module/plugins/AccountManager.py +++ b/module/plugins/AccountManager.py @@ -74,7 +74,7 @@ class AccountManager(): f = open("accounts.conf", "wb") f.write("version: " + str(ACC_VERSION)) f.close() - self.core.log.warning(_("Account settings deleted, due to new config format.")) + self.core.log.warning(_("Account settings deleted, due to new config format")) return plugin = "" -- cgit v1.2.3 From af98b90aee3d0d726a03be3d0b55485daf10926e Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sun, 9 Nov 2014 21:51:02 +0100 Subject: [AccountManager] I/O error handling --- module/plugins/AccountManager.py | 58 +++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 28 deletions(-) (limited to 'module/plugins/AccountManager.py') diff --git a/module/plugins/AccountManager.py b/module/plugins/AccountManager.py index d9888ec8b..b2010019b 100644 --- a/module/plugins/AccountManager.py +++ b/module/plugins/AccountManager.py @@ -59,22 +59,21 @@ class AccountManager(): 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 "" - f.close() - - if not version or int(version) < ACC_VERSION: - copy("accounts.conf", "accounts.backup") - f = open("accounts.conf", "wb") - f.write("version: " + str(ACC_VERSION)) - f.close() - self.core.log.warning(_("Account settings deleted, due to new config format")) + try: + with open("accounts.conf", "a+") as f: + content = f.readlines() + version = content[0].split(":")[1].strip() if content else "" + + if not version or int(version) < ACC_VERSION: + copy("accounts.conf", "accounts.backup") + f.seek(0) + f.write("version: " + str(ACC_VERSION)) + + self.core.log.warning(_("Account settings deleted, due to new config format")) + return + + except IOError, e: + self.logError(str(e)) return plugin = "" @@ -107,21 +106,24 @@ class AccountManager(): def saveAccounts(self): """save all account information""" - f = open("accounts.conf", "wb") - f.write("version: " + str(ACC_VERSION) + "\n") + try: + with open("accounts.conf", "wb") as f: + f.write("version: " + str(ACC_VERSION) + "\n") + + for plugin, accounts in self.accounts.iteritems(): + f.write("\n") + f.write(plugin+":\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))) - 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))) + chmod(f.name, 0600) - f.close() - chmod(f.name, 0600) + except Exception, e: + self.logError(str(e)) #---------------------------------------------------------------------- -- cgit v1.2.3 From c9e31d875d32de31e54959b82bc35eff2b3e0f3f Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Mon, 10 Nov 2014 00:19:51 +0100 Subject: Code cosmetics --- module/plugins/AccountManager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module/plugins/AccountManager.py') diff --git a/module/plugins/AccountManager.py b/module/plugins/AccountManager.py index b2010019b..4ac62e602 100644 --- a/module/plugins/AccountManager.py +++ b/module/plugins/AccountManager.py @@ -73,7 +73,7 @@ class AccountManager(): return except IOError, e: - self.logError(str(e)) + self.logError(e) return plugin = "" @@ -123,7 +123,7 @@ class AccountManager(): chmod(f.name, 0600) except Exception, e: - self.logError(str(e)) + self.logError(e) #---------------------------------------------------------------------- -- cgit v1.2.3 From 532b31573491c1c8d64c06ed8de23340edcd7866 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Mon, 10 Nov 2014 00:42:35 +0100 Subject: [AccountManager] Don't break pyload if account load fails --- module/plugins/AccountManager.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'module/plugins/AccountManager.py') diff --git a/module/plugins/AccountManager.py b/module/plugins/AccountManager.py index 4ac62e602..b60375699 100644 --- a/module/plugins/AccountManager.py +++ b/module/plugins/AccountManager.py @@ -36,12 +36,20 @@ class AccountManager(): def getAccountPlugin(self, plugin): """get account instance for plugin or None if anonymous""" - if plugin in self.accounts: - if plugin not in self.plugins: - self.plugins[plugin] = self.core.pluginManager.loadClass("accounts", plugin)(self, self.accounts[plugin]) - - return self.plugins[plugin] - else: + try: + if plugin in self.accounts: + if plugin not in self.plugins: + klass = self.core.pluginManager.loadClass("accounts", plugin) + if klass: + self.plugins[plugin] = klass(self, self.accounts[plugin]) + else: + self.logCritical(_("Account plugin %s not loaded") % plugin) + raise + + return self.plugins[plugin] + else: + raise + except: return None -- cgit v1.2.3 From 0852ad27d129276b3eb1c40a14dfaa390175ea77 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Mon, 10 Nov 2014 11:56:51 +0100 Subject: [PluginManager] Improve some routines --- module/plugins/AccountManager.py | 1 - 1 file changed, 1 deletion(-) (limited to 'module/plugins/AccountManager.py') diff --git a/module/plugins/AccountManager.py b/module/plugins/AccountManager.py index b60375699..3cb14403a 100644 --- a/module/plugins/AccountManager.py +++ b/module/plugins/AccountManager.py @@ -43,7 +43,6 @@ class AccountManager(): if klass: self.plugins[plugin] = klass(self, self.accounts[plugin]) else: - self.logCritical(_("Account plugin %s not loaded") % plugin) raise return self.plugins[plugin] -- cgit v1.2.3 From ef4bc4b73756565e40c7453f6b71bc1021735033 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 22 Nov 2014 19:38:25 +0100 Subject: Revert plugins to stable --- module/plugins/AccountManager.py | 152 +++++++++++++++++++-------------------- 1 file changed, 75 insertions(+), 77 deletions(-) (limited to 'module/plugins/AccountManager.py') diff --git a/module/plugins/AccountManager.py b/module/plugins/AccountManager.py index 3cb14403a..fc521d36c 100644 --- a/module/plugins/AccountManager.py +++ b/module/plugins/AccountManager.py @@ -1,4 +1,21 @@ +#!/usr/bin/env python # -*- coding: utf-8 -*- +""" + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, + or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . + + @author: RaNaN +""" from os.path import exists from shutil import copy @@ -10,11 +27,9 @@ from module.utils import chmod, lock ACC_VERSION = 1 - class AccountManager(): """manages all accounts""" - #---------------------------------------------------------------------- def __init__(self, core): """Constructor""" @@ -25,7 +40,6 @@ class AccountManager(): self.initPlugins() self.saveAccounts() # save to add categories to conf - def initPlugins(self): self.accounts = {} # key = ( plugin ) self.plugins = {} @@ -36,110 +50,97 @@ class AccountManager(): def getAccountPlugin(self, plugin): """get account instance for plugin or None if anonymous""" - try: - if plugin in self.accounts: - if plugin not in self.plugins: - klass = self.core.pluginManager.loadClass("accounts", plugin) - if klass: - self.plugins[plugin] = klass(self, self.accounts[plugin]) - else: - raise - - return self.plugins[plugin] - else: - raise - except: - return None + if plugin in self.accounts: + if plugin not in self.plugins: + self.plugins[plugin] = self.core.pluginManager.loadClass("accounts", plugin)(self, self.accounts[plugin]) + return self.plugins[plugin] + else: + return None 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""" - - try: - with open("accounts.conf", "a+") as f: - content = f.readlines() - version = content[0].split(":")[1].strip() if content else "" - - if not version or int(version) < ACC_VERSION: - copy("accounts.conf", "accounts.backup") - f.seek(0) - f.write("version: " + str(ACC_VERSION)) - - self.core.log.warning(_("Account settings deleted, due to new config format")) - return - - except IOError, e: - self.logError(e) + + 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 "" + f.close() + + if not version or int(version) < ACC_VERSION: + copy("accounts.conf", "accounts.backup") + f = open("accounts.conf", "wb") + f.write("version: " + str(ACC_VERSION)) + 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:]) + 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""" - - try: - with open("accounts.conf", "wb") as f: - 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))) - - chmod(f.name, 0600) - - except Exception, e: - self.logError(e) - - + + 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""" @@ -147,22 +148,20 @@ 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) self.saveAccounts() - @lock def getAccountInfos(self, force=True, refresh=False): data = {} @@ -170,7 +169,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) @@ -180,8 +179,7 @@ class AccountManager(): e = AccountUpdateEvent() self.core.pullManager.addEvent(e) return data - - + def sendChange(self): e = AccountUpdateEvent() self.core.pullManager.addEvent(e) -- cgit v1.2.3