def post(self, domain): body = tornado.escape.json_decode(self.request.body) app_id = body["app_id"] api = DatabaseAPI() krequest = kintoneRequest(env=api.get_kintone_env(domain)) dfe = krequest.download(body) _df = dfe.df.copy(deep=True) predictor = Predictor.load_from_env(krequest.env, app_id) pred = predictor.predict(dfe.df) pred_column = pred.name + "_prediction" _df[pred_column] = pred type_header = {} for c in _df.columns: if c in dfe.df.columns.tolist() + [pred.name, pred_column]: _c = c if c != pred_column else pred.name type_header[c] = FTypeNames[dfe.ftypes[_c]] else: type_header[c] = "" if c == pred.name: type_header[c] += "/TGT" # todo: control attirubte not in api elif c == pred_column: type_header[c] += "/PRED" type_header[c] = [type_header[c]] # for from_dict columns dfe = None # free memory ordered = [ c for c in _df.columns if c not in [pred.name, pred_column] ] + [pred.name, pred_column] _df = _df[ordered] self.download_file(_df, "prediction.tsv", type_header)
def post(self, domain): body = tornado.escape.json_decode(self.request.body) app_id = body["app_id"] api = DatabaseAPI() krequest = kintoneRequest(env=api.get_kintone_env(domain)) dfe = krequest.request_to_dfe(body) self.train(self, app_id, krequest, dfe)
def post(self, domain): app_id = self.get_argument("app_id", None, True) error = None if not app_id or not app_id.isdigit(): error = ErrorMessage.create("アプリケーションIDが正しく指定されていません") api = DatabaseAPI() krequest = kintoneRequest(env=api.get_kintone_env(domain)) dfe = krequest.file_to_df(self.request.body) TrainingHandler.train(self, app_id, krequest, dfe)
def post(self, domain): body = tornado.escape.json_decode(self.request.body) app_id = body["app_id"] values = body["values"] api = DatabaseAPI() krequest = kintoneRequest(env=api.get_kintone_env(domain)) df = krequest.record_to_df(body) predictor = Predictor.load_from_env(krequest.env, app_id) pred = predictor.predict(df).values result = {"prediction": "{}".format(pred[0])} self.write(result)
def post(self): domain = self.get_body_argument("domain", default="") user = self.get_body_argument("user", default="") password = self.get_body_argument("password", default="") password_re = self.get_body_argument("password_re", default="") kind = self.get_body_argument("kind", default="login") error = None if not domain or not user or not password: error = ErrorMessage.create("ユーザーID、またはパスワードが入力されていません") elif sum(len(x) < 3 for x in (domain, user, password)) > 0: error = ErrorMessage.create("ユーザーID、またはパスワードの長さが不十分です") elif kind == "register" and password != password_re: error = ErrorMessage.create("パスワードが一致しません") key = "" if error is not None: self.set_status(400) else: api = DatabaseAPI() if kind == "register": try: registered = api.register_user(domain, user, password) key = registered["key"] except Exception as ex: print(ex) self.set_status(400) error = ErrorMessage.create("ユーザー登録時にエラーが発生しました") elif kind == "login": try: login = api.authenticate_user(domain, user, password) key = login["key"] except Exception as ex: print(ex) self.set_status(401) error = ErrorMessage.create("ログイン認証時にエラーが発生しました") else: self.set_status(400) error = ErrorMessage.create("想定されていない認証リクエストです") if key: self.set_secure_cookie(self.COOKIE_NAME, key) self.render("user.html", key=DatabaseAPI.key_to_dict(key)) else: self.render("index.html", kind=kind, error=error["error"])
def put(self): password_old = self.get_body_argument("password_old", default="") password = self.get_body_argument("password", default="") password_re = self.get_body_argument("password_re", default="") error = None if not password_old or not password or not password_re: error = ErrorMessage.create("パスワードが入力されていません") if len(password) < 3 or password != password_re: error = ErrorMessage.create("パスワードの長さが不十分、または一致しません") api = DatabaseAPI() user, domain = api.key_split(self.current_user) try: change_ok = api.change_user_password(domain, user, password_old, password) except Exception as ex: print(ex) self.set_status(401) error = ErrorMessage.create("パスワードの変更に失敗しました") if error: self.render("user.html", key=DatabaseAPI.key_to_dict(self.current_user), error=error["error"]) else: self.render("user.html", key=DatabaseAPI.key_to_dict(self.current_user), success="パスワードを変更しました")
def delete(self): password = self.get_body_argument("password", default="") error = None if not password: error = ErrorMessage.create("パスワードが入力されていません") api = DatabaseAPI() user, domain = api.key_split(self.current_user) try: delete_ok = api.delete_user(domain, user, password) except Exception as ex: print(ex) self.set_status(401) error = ErrorMessage.create("アカウントの削除に失敗しました") if error: self.render("user.html", key=DatabaseAPI.key_to_dict(self.current_user), error=error["error"]) else: self.clear_cookie(self.COOKIE_NAME) self.render("index.html")
def setUpClass(cls): cls.API = DatabaseAPI(alternative_db=cls.DBNAME) cls.API.connect()
def get_kintone_env_by_domain(domain): from karura.database_api import DatabaseAPI uri = get_database_uri() api = DatabaseAPI(database_uri=uri)
def get(self): if not self.current_user: self.render("index.html") else: self.render("user.html", key=DatabaseAPI.key_to_dict(self.current_user))
def get(self): self.render("user.html", key=DatabaseAPI.key_to_dict(self.current_user))