예제 #1
0
    def get(self, user_id, word_id):
        """
        用户查看词条的详细信息
        :param user_id: 用户id
        :param word_id: 词条id
        :return:
        """
        try:
            # 验证提交数据的合法性
            if (word_id is None) or (not word_id) or (word_id == 'None'):
                resp = ResponseJSON(400, description="url有误", status=103)
                raise tornado.gen.Return(self.write(resp.resultStr()))

            # 获取商品数据
            word = yield word_db.word_scan_batch(str(word_id))
            if word is None:
                rsp = ResponseJSON(code=404, description="查询不到商品")
            elif word == 403:
                rsp = ResponseJSON(code=403, description="品牌商信息有误")
            else:
                rsp = ResponseJSON(code=200, data=word)
        except Exception as e:
            import traceback
            traceback.print_exc()
            rsp = ResponseJSON(code=500, description="查询出错")
            logger.error('WordHandler catch an exception, word_id: ' +
                         str(word_id) + '\n' + '\tException: ' + e.message)
        finally:
            raise tornado.gen.Return(self.write(rsp.resultStr()))
예제 #2
0
    def delete(self, user_id, word_id):
        """
        该方法用于用户在删除词条
        :param args:
        :param kwargs:
        :return:
        """
        # 验证提交数据的合法性
        if (word_id is None) or (not word_id) or (word_id == 'None'):
            resp = ResponseJSON(400, description="url有误", status=103)
            raise tornado.gen.Return(self.write(resp.resultStr()))

        try:
            result = yield word_db.word_del(str(word_id), str(user_id))
        except Exception as e:
            logger.error(e.message)
            resp = ResponseJSON(500,
                                description="删除词条失败,检查词条是否已删除",
                                status=105)
            raise tornado.gen.Return(self.write(resp.resultStr()))

        if result:
            resp = ResponseJSON(201, description="删除词条成功")
            raise tornado.gen.Return(self.write(resp.resultStr()))
        else:
            resp = ResponseJSON(400, description="删除词条失败", status=106)
            raise tornado.gen.Return(self.write(resp.resultStr()))
예제 #3
0
    def get(self):
        q = self.get_query_argument("q", None, strip=True)
        src_lang = self.get_query_argument("from", None)
        dst_lang = self.get_query_argument("to", None)

        if not q:
            resp_json = ResponseJSON(400, description="无效搜索关键字")
            raise gen.Return(self.write(resp_json.resultStr()))

        if not src_lang or src_lang in YOUDAO_LANG_TYPE:
            resp_json = ResponseJSON(400, description="无效源语言类型")
            raise gen.Return(self.write(resp_json.resultStr()))

        if not dst_lang or dst_lang in YOUDAO_LANG_TYPE:
            resp_json = ResponseJSON(400, description="无效源语言类型")
            raise gen.Return(self.write(resp_json.resultStr()))

        try:
            result = yield youdao.get_result(q=str(q),
                                             src_lang=str(src_lang),
                                             dst_lang=str(dst_lang))
        except Exception, e:
            # import traceback
            # traceback.print_exc()
            logger.error('调用翻译接口出错:' + str(e))
            resp_json = ResponseJSON(500, description="调用翻译接口出错", status=108)
            raise gen.Return(self.write(resp_json.resultStr()))
예제 #4
0
    def __validate_key_words(self, word_ori, word_explain, word_phonetic,
                             word_us_phonetic, word_uk_phonetic, speak_url,
                             word_tip, word_weight):
        """
        验证用户输入的关键字是否都满足要求(有效)
        :return:若有一个不有效都返回False
        """
        try:
            str(word_ori) if word_ori is not None else None
            str(word_explain) if word_explain is not None else None
            str(word_phonetic) if word_phonetic is not None else None
            str(word_us_phonetic) if word_us_phonetic is not None else None
            str(word_uk_phonetic) if word_uk_phonetic is not None else None
            str(speak_url) if speak_url is not None else None
            str(word_tip) if word_tip is not None else None
            int(word_weight) if word_weight is not None else None
        except Exception as e:
            logger.error(e.message)
            return False

        return True
예제 #5
0
class TranslateHandler(RequestHandlerAha):
    """
    aha取词翻译模块
    """
    @coroutine
    def get(self):
        q = self.get_query_argument("q", None, strip=True)
        src_lang = self.get_query_argument("from", None)
        dst_lang = self.get_query_argument("to", None)

        if not q:
            resp_json = ResponseJSON(400, description="无效搜索关键字")
            raise gen.Return(self.write(resp_json.resultStr()))

        if not src_lang or src_lang in YOUDAO_LANG_TYPE:
            resp_json = ResponseJSON(400, description="无效源语言类型")
            raise gen.Return(self.write(resp_json.resultStr()))

        if not dst_lang or dst_lang in YOUDAO_LANG_TYPE:
            resp_json = ResponseJSON(400, description="无效源语言类型")
            raise gen.Return(self.write(resp_json.resultStr()))

        try:
            result = yield youdao.get_result(q=str(q),
                                             src_lang=str(src_lang),
                                             dst_lang=str(dst_lang))
        except Exception, e:
            # import traceback
            # traceback.print_exc()
            logger.error('调用翻译接口出错:' + str(e))
            resp_json = ResponseJSON(500, description="调用翻译接口出错", status=108)
            raise gen.Return(self.write(resp_json.resultStr()))

        if result is None:
            logger.error('未查到关于' + str(q) + '的翻译内容')
            resp_json = ResponseJSON(500, description="未查到内容", status=110)
            raise gen.Return(self.write(resp_json.resultStr()))
        else:
            resp_json = ResponseJSON(200, data=result)
            raise gen.Return(self.write(resp_json.resultStr()))
예제 #6
0
    def post(self, *args, **kwargs):
        # 获得post的数据
        origineStr = self.request.body

        # 解析Json数据格式
        wordObj = json_decode(origineStr)

        # 解析json中的用户id
        try:
            user_id = int(wordObj["user_id"])
        except Exception as e:
            logger.warning(e.message)
            respJson = ResponseJSON(400, description="json数据格式有误,无效用户id")
            raise tornado.gen.Return(self.write(respJson.resultStr()))

        try:
            word_ori = wordObj['word_ori']
            word_explain = wordObj.get("word_explain", None)
            word_phonetic = wordObj.get("word_phonetic", None)
            word_us_phonetic = wordObj.get("word_us_phonetic", None)
            word_uk_phonetic = wordObj.get("word_uk_phonetic", None)
            speak_url = wordObj.get("speak_url", None)
            easy_forget = wordObj.get("easy_forget", False)
            is_memoried = wordObj.get("is_memoried", False)
            word_tip = wordObj.get("word_tip", None)
            word_weight = wordObj.get("word_weight", None)
        except Exception as e:
            logger.error(e.message)
            respJson = ResponseJSON(400, description="json数据格式有误,请检查数据格式")
            raise tornado.gen.Return(self.write(respJson.resultStr()))

        # 判断一下用到的关键字是否合法
        key_words_legal = self.__validate_key_words(
            word_ori=word_ori,
            word_explain=word_explain,
            word_phonetic=word_phonetic,
            word_us_phonetic=word_us_phonetic,
            word_uk_phonetic=word_uk_phonetic,
            speak_url=speak_url,
            word_tip=word_tip,
            word_weight=word_weight)

        if not key_words_legal:
            logger.warning("提交的json数据可能数据格式不正确")
            respJson = ResponseJSON(400, description="你提交的json数据可能数据格式不正确")
            raise tornado.gen.Return(self.write(respJson.resultStr()))

        # 根据以上信息获得词条的id
        word_id = self.__generate_word_id()
        try:
            # 将商品基本信息和详细信息图片的名字保存到数据库
            result = yield word_db.word_add(word_id=str(word_id),
                                            user_id=str(user_id),
                                            word_ori=word_ori,
                                            word_explain=word_explain,
                                            word_phonetic=word_phonetic,
                                            word_us_phonetic=word_us_phonetic,
                                            word_uk_phonetic=word_uk_phonetic,
                                            speak_url=speak_url,
                                            word_tip=word_tip,
                                            word_weight=word_weight,
                                            easy_forget=easy_forget,
                                            is_memoried=is_memoried)
        except ValueError as e:
            logger.warning(e.message)
            respJson = ResponseJSON(400, description="参数错误!!!")
            yield word_db.word_add_rollback(word_id=word_id)
            raise tornado.gen.Return(self.write(respJson.resultStr()))
        except Exception as e:
            import traceback
            traceback.print_exc()
            logger.error(e.message)
            yield word_db.word_add_rollback(word_id=word_id)
            logger.warning(e.message)
            respJson = ResponseJSON(400, description="json数据格式有误")
            raise tornado.gen.Return(self.write(respJson.resultStr()))

        # 数据库添加结果,失败则回滚数据库
        if not result:
            # 回滚数据库
            yield word_db.word_add_rollback(word_id=word_id)
            respJson = ResponseJSON(500,
                                    description="将商品基本信息和详细信息图片的名字保存到数据库失败")
            raise tornado.gen.Return(self.write(respJson.resultStr()))
        # 成功则将id加入result_list
        else:
            data = {"word_id": word_id, "user_id": user_id}
            resp = ResponseJSON(201, data=data, description="词条上传成功")
            raise tornado.gen.Return(self.write(resp.resultStr()))
예제 #7
0
    def patch(self, user_id, word_id, **kwargs):
        """
        该方法用于处理用户修改词条信息
        :param args:
        :param kwargs:
        :return:
        """
        origineStr = self.request.body

        # 验证提交数据的合法性
        if (word_id is None) or (not word_id) or (word_id == 'None'):
            resp = ResponseJSON(400, description="url有误", status=103)
            raise tornado.gen.Return(self.write(resp.resultStr()))

        wordObj = json_decode(origineStr)

        # 获取基本信息
        attr_dict = dict()
        attr_dict["word_ori"] = wordObj.get("word_ori", None)
        attr_dict["word_explain"] = wordObj.get("word_explain", None)
        attr_dict["word_phonetic"] = wordObj.get("word_phonetic", None)
        attr_dict["word_us_phonetic"] = wordObj.get("word_us_phonetic", None)
        attr_dict["word_uk_phonetic"] = wordObj.get("word_uk_phonetic", None)
        attr_dict["speak_url"] = wordObj.get("speak_url", None)
        attr_dict["word_tip"] = wordObj.get("word_tip", None)
        attr_dict["word_weight"] = wordObj.get("word_weight", None)
        attr_dict["easy_forget"] = wordObj.get("easy_forget", None)
        attr_dict["is_memoried"] = wordObj.get("is_memoried", None)

        # 判断是否需要修改
        if all(attr_dict[idx] is None for idx in attr_dict):
            respJson = ResponseJSON(500, description="没有要更新的条目")
            raise tornado.gen.Return(self.write(respJson.resultStr()))

        # 判断一下用到的关键字是否合法
        key_words_legal = self.__validate_key_words(
            word_ori=attr_dict['word_ori'],
            word_explain=attr_dict['word_explain'],
            word_phonetic=attr_dict['word_phonetic'],
            word_us_phonetic=attr_dict['word_us_phonetic'],
            word_uk_phonetic=attr_dict['word_uk_phonetic'],
            speak_url=attr_dict['speak_url'],
            word_tip=attr_dict['word_tip'],
            word_weight=attr_dict['word_weight'])
        if not key_words_legal:
            logger.warning("提交的json数据可能数据格式不正确")
            respJson = ResponseJSON(400, description="你提交的json数据可能数据格式不正确,请核对")
            raise tornado.gen.Return(self.write(respJson.resultStr()))

        # 调用数据库存储词条基本信息的接口
        try:
            result = yield word_db.word_modify(str(word_id), str(user_id),
                                               attr_dict)
            logger.debug("调用数据库修改词条基本信息的接口")
        except Exception as e:
            import traceback
            traceback.print_exc()
            logger.error(e.message)
            respJson = ResponseJSON(500, description="更新词条基本信息时数据库报错")
            raise tornado.gen.Return(self.write(respJson.resultStr()))

        if result:
            respJson = ResponseJSON(200, description="词条修改成功")
            raise tornado.gen.Return(self.write(respJson.resultStr()))
        else:
            respJson = ResponseJSON(500, description="词条修改失败")
            raise tornado.gen.Return(self.write(respJson.resultStr()))