def update_account_state(accountname, desired_state): """ POST /accounts/{accountname}/state Body: {"state": "enabled"|"disabled"} :param accountname: str account name to update :param desired_state: json object for desired state to set :return: account json object """ try: with session_scope() as session: mgr = manager_factory.for_session(session) verify_account(accountname, mgr) result = mgr.update_account_state( accountname, AccountStates(desired_state.get("state"))) if result: return account_db_to_status_msg(result), 200 else: return make_response_error("Error updating account state"), 500 except (InvalidStateError, DisableAdminAccountError) as ex: return make_response_error(str(ex), in_httpcode=400), 400 except AccountNotFoundError as ex: return make_response_error("Account not found", in_httpcode=404), 404 except Exception as e: logger.exception("API Error") return make_response_error("Error updating account state", in_httpcode=500), 500
def list_accounts(state=None): """ GET /accounts :param active: :return: """ try: with session_scope() as session: mgr = manager_factory.for_session(session) if state is not None: try: state = AccountStates(state) except: return ( make_response_error( "Bad Request: state {} not a valid value", in_httpcode=400), 400, ) response = mgr.list_accounts(with_state=state) return list(map(account_db_to_msg, response)), 200 except Exception as ex: logger.exception("API Error") return make_response_error("Error listing accounts", in_httpcode=500), 500