def is_acceptable(self, user_id, friend_id):
     user = ShourUser.get_by_id(int(user_id))
     friend = ShourUser.get_by_id(int(friend_id))
     if not user:
         # 申請元が存在しない
         raise ShourAppError(20001)
     if not friend:
         # 相手方が存在しない
         raise ShourAppError(20002)
     else:
         # 申請元または相手方ユーザーが存在しない
         return [user, friend]
 def activate(self, token, tmp_user_id, user_id):
     if token:
         tmp_user = db.get(token)
         user = ShourUser.get_by_id(int(user_id))
     else:
         # アクティベートに失敗
         raise ShourAppError(10006)
     if tmp_user and user:
         if tmp_user.used == True:
             # アクティベートに失敗
             raise ShourAppError(10006)
         elif user.active == True:
             # アクティベートに失敗
             raise ShourAppError(10006)
         # クロスグループトランザクションCross-Group (XG) Transactions有効化
         xg_on = db.create_transaction_options(xg=True)
         db.run_in_transaction_options(xg_on, ShourTempUser.activate_all, tmp_user, user)
     else:
         # アクティベートに失敗
         raise ShourAppError(10006)