def login(): """Login As title --- tags: [auth] definitions: Auth: type: object description: 登录 properties: name: type: string description: 用户名 password: type: string description: 密码 parameters: - name: req description: stored in the playload with json format. in: body type: json required: true schema: $ref: '#/definitions/Auth' responses: 200: description: Login success schema: $ref: '#/definitions/Admin' """ name = request.json.get('name') password = request.json.get('password') log.info('Admin login: %s | %s', name, password) return jsonify(make_msg(data=admins.login(name, password), msg='登录成功!'))
def delete_word(name): """Delete word by name As title --- definitions: MongoRawResult: type: object properties: n: type: integer description: The count of affected documents ok: type: integer description: 1 for success tags: [word] parameters: - name: name description: 单词名字 in: path type: string required: true responses: 200: description: Delete word. schema: $ref: '#/definitions/MongoRawResult' """ return jsonify(make_msg(data=words.delete_by_name(name)))
def get_admin_fuzzy(): """Get admin list with fuzzy matching Sorted by field updated_at --- tags: [admin] definitions: Admin: type: object description: 管理员 properties: name: type: string description: 用户名 new_password: type: string description: 密码,重置密码可以用该字段 salt: type: string description: 密码盐(加密用,一般不会返回) password: type: string description: 密码(new_password + salt -> password,加密后的密码,也不会返回) nick: type: string description: 昵称 token: type: string description: 最近一次登录的token login_time: type: string description: 最近一次登录时间 created_at: type: datetime description: 管理员创建时间 updated_at: type: datetime description: 管理员最近一次更新(修订)的时间 parameters: - name: keyword in: query type: string required: true - name: skip in: query type: integer required: true - name: limit in: query type: integer required: true responses: 200: description: Admins fuzzy matched. schema: $ref: '#/definitions/Admin' """ keyword = request.args.get('keyword') skip = request.args.get('skip', type=int) limit = request.args.get('limit', type=int) return jsonify(make_msg(data=admins.find_fuzzy(keyword, skip, limit)))
def delete_word_by_ids(): """Delete word by name As title --- definitions: BatchIds: type: array items: type: string description: id array. tags: [word] parameters: - name: req description: 根据id批量删除 in: body type: json required: true schema: $ref: '#/definitions/BatchIds' responses: 200: description: Delete word. schema: $ref: '#/definitions/MongoRawResult' """ log.info('Delete documents: %s', request.json) result = [] for id in request.json: result.append(words.delete_by_id(id)) return jsonify(make_msg(data=result))
def put_word(_id): """Update an exist word As title --- tags: [word] parameters: - name: _id description: 单词id in: path type: string required: false - name: updated_time_on description: 是否更新updated_time字段 in: query type: string required: true - name: req description: stored in the playload with json format and field name will be place by path parameter above. in: body type: json required: true schema: $ref: '#/definitions/Word' responses: 200: description: updated word. schema: $ref: '#/definitions/Word' """ updated_time_on = request.args.get('updated_time_on') updated_time_on = updated_time_on and updated_time_on.lower() == 'true' w = request.json log.info('Put word: %s | %s | %s', _id, updated_time_on, w) return jsonify(make_msg(data=words.update(_id, updated_time_on, w)))
def get_history_by_id(_id): """Get history by id --- tags: [tool] parameters: - name: id in: path type: string required: true responses: 200: description: History matched. schema: $ref: '#/definitions/History' """ return jsonify(make_msg(data=histories.find_by_id(_id)))
def get_admin_by_id(_id): """Get admin by id --- tags: [admin] parameters: - name: id in: path type: string required: true responses: 200: description: Admin matched. schema: $ref: '#/definitions/Admin' """ return jsonify(make_msg(data=admins.find_by_id(_id)))
def logout(): """Lout As title --- tags: [auth] parameters: - name: x-hucat-token description: 放在请求头的令牌 in: header type: String required: true responses: 200: description: Logout success """ return jsonify(make_msg(data=admins.logout(request.headers.get('x-hucat-token')), msg='登录成功!'))
def get_history_fuzzy(): """Get history list with fuzzy matching Sorted by field updated_at --- tags: [tool] definitions: History: type: object description: 工具历史记录 properties: title: type: string description: 历史的标题,推荐使用日期字符串,相同的标题则会覆盖内容 content: type: string description: 历史对应的内容 created_at: type: datetime description: 创建时间 updated_at: type: datetime description: 最近一次更新(修订)的时间 parameters: - name: keyword in: query type: string required: true - name: skip in: query type: integer required: true - name: limit in: query type: integer required: true responses: 200: description: History fuzzy matched. schema: $ref: '#/definitions/History' """ keyword = request.args.get('keyword') skip = request.args.get('skip', type=int) limit = request.args.get('limit', type=int) return jsonify(make_msg(data=histories.find_fuzzy(keyword, skip, limit)))
def delete_history(_id): """Delete history by id As title --- tags: [tool] parameters: - name: id description: 历史id in: path type: string required: true responses: 200: description: Delete history. schema: $ref: '#/definitions/MongoRawResult' """ return jsonify(make_msg(data=histories.delete_by_id(_id)))
def get_word_by_name(name): """Get word detail by name As title --- tags: [word] parameters: - name: name description: 单词名字 in: path type: string required: true responses: 200: description: Word matched. schema: $ref: '#/definitions/Word' """ return jsonify(make_msg(data=words.find_by_name(name)))
def delete_admin(_id): """Delete admin by id As title --- tags: [admin] parameters: - name: id description: 管理员的id in: path type: string required: true responses: 200: description: Delete word. schema: $ref: '#/definitions/MongoRawResult' """ return jsonify(make_msg(data=admins.delete_by_id(_id)))
def put_history(): """Save history and update if exits As title --- tags: [tool] parameters: - name: req description: stored in the playload with json format. in: body type: json required: true schema: $ref: '#/definitions/History' responses: 200: description: updated history. schema: $ref: '#/definitions/History' """ body = request.json log.info('Put History: %s', body) return jsonify(make_msg(data=histories.save_by_title(body)))
def put_admin(): """Save admin and update if exits As title --- tags: [admin] parameters: - name: req description: stored in the playload with json format. in: body type: json required: true schema: $ref: '#/definitions/Admin' responses: 200: description: updated admin. schema: $ref: '#/definitions/Admin' """ body = request.json log.info('Put admin: %s', body) return jsonify(make_msg(data=admins.save_by_name(body)))
def post_word(): """Add a new word As title --- tags: [word] parameters: - name: req description: stored in the playload with json format and field name will be place by path parameter above. in: body type: json required: true schema: $ref: '#/definitions/Word' responses: 200: description: updated word. schema: $ref: '#/definitions/Word' """ w = request.json log.info('Add new word: %s', w) return jsonify(make_msg(data=words.add(w)))
def error(err): log.exception(err) log.warning('custom error: %s', repr(err)) return jsonify(make_msg(rc=err.rc, msg=err.msg))
def get_words_fuzzy(): """Get word list with fuzzy matching Sorted by field updated_at --- tags: [word] definitions: Word: type: object properties: name: type: string description: 单词 derivation: type: string description: 词根组成,如:a+scend chinese: type: string description: 中文解释,多种解释使用逗号(,)分隔 thesauri: type: string description: 同义词,使用逗号(,)分隔 related_words: type: string description: 相关单词,使用逗号(,)分隔 similar_shaped_words: type: string description: 形状相识的单词,使用逗号(,)分隔 comment: type: string description: 其他备注 hardship: type: string description: 难度(陌生度,总分100) created_at: type: datetime description: 单词录入时间 updated_at: type: datetime description: 单词最近一次更新(修订)的时间 parameters: - name: keyword in: query type: string required: true - name: skip in: query type: integer required: true - name: limit in: query type: integer required: true responses: 200: description: Words fuzzy matched. schema: $ref: '#/definitions/Word' """ keyword = request.args.get('keyword') skip = request.args.get('skip', type=int) limit = request.args.get('limit', type=int) resp = make_response( jsonify(make_msg(data=words.find_fuzzy(keyword, skip, limit)))) resp.headers['Access-Control-Allow-Origin'] = '*' return resp
def error(err): log.exception(err) log.error('system error: %s', err) return jsonify(make_msg(rc=50000, msg='Internal Server Error!')), 500