+
+def get_user_account(user_email, platform_name):
+ """
+ Returns the user configuration for a given platform.
+ This function does not resolve references.
+ """
+ user = db.query(User).filter(User.email == user_email).one()
+ platform = db.query(Platform).filter(Platform.platform == platform_name).one()
+ accounts = [a for a in user.accounts if a.platform == platform]
+ if not accounts:
+ raise Exception, "this account does not exist"
+
+ if accounts[0].auth_type == 'reference':
+ pf = json.loads(accounts[0].config)['reference_platform']
+ return get_user_account(user_email, pf)
+
+ return accounts[0]
+
+def get_user_config(user_email, platform_name):
+ account = get_user_account(user_email, platform_name)
+ return json.loads(account.config) if account.config else {}
+
+def get_platform_config(platform_name):
+ platform = db.query(Platform).filter(Platform.platform == platform_name).one()
+ return json.loads(platform.config) if platform.config else {}