Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/jarabe/web/online_accounts_manager.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/jarabe/web/online_accounts_manager.py')
-rw-r--r--src/jarabe/web/online_accounts_manager.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/jarabe/web/online_accounts_manager.py b/src/jarabe/web/online_accounts_manager.py
new file mode 100644
index 0000000..cb7a7ce
--- /dev/null
+++ b/src/jarabe/web/online_accounts_manager.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python
+#
+# Copyright (c) 2013 Walter Bender
+
+#Permission is hereby granted, free of charge, to any person obtaining a copy
+#of this software and associated documentation files (the "Software"), to deal
+#in the Software without restriction, including without limitation the rights
+#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#copies of the Software, and to permit persons to whom the Software is
+#furnished to do so, subject to the following conditions:
+
+#The above copyright notice and this permission notice shall be included in
+#all copies or substantial portions of the Software.
+
+#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+#THE SOFTWARE.
+
+from gi.repository import GObject
+import logging
+import os
+
+from jarabe import config
+
+
+class OnlineAccountsManager(GObject.GObject):
+ @classmethod
+ def all_accounts(cls):
+ accounts = []
+
+ for f in os.listdir(os.path.join(config.ext_path, 'web')):
+ if f.endswith('.py') and not f.startswith('__'):
+ module_name = f[:-3]
+ logging.debug("OnlineAccountsManager loading %s" % \
+ (module_name))
+ try:
+ mod = __import__('web.' + module_name, globals(),
+ locals(), [module_name])
+ accounts.append(mod.get_account())
+ except Exception:
+ logging.exception('Exception while loading extension:')
+ return accounts
+
+ @classmethod
+ def configured_accounts(cls):
+ return [a for a in cls.all_accounts() if a.is_configured()]
+
+ @classmethod
+ def active_accounts(cls):
+ return [a for a in cls.all_accounts() if a.is_active()]