Beispiel #1
0
    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)
Beispiel #2
0
 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)
Beispiel #3
0
    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)
Beispiel #4
0
    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)
Beispiel #5
0
    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"])
Beispiel #6
0
    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="パスワードを変更しました")
Beispiel #7
0
    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")
Beispiel #8
0
 def setUpClass(cls):
     cls.API = DatabaseAPI(alternative_db=cls.DBNAME)
     cls.API.connect()
Beispiel #9
0
def get_kintone_env_by_domain(domain):
    from karura.database_api import DatabaseAPI
    uri = get_database_uri()
    api = DatabaseAPI(database_uri=uri)
Beispiel #10
0
 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))
Beispiel #11
0
 def get(self):
     self.render("user.html", key=DatabaseAPI.key_to_dict(self.current_user))