Exemplo n.º 1
0
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='登录成功!'))
Exemplo n.º 2
0
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)))
Exemplo n.º 3
0
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)))
Exemplo n.º 4
0
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))
Exemplo n.º 5
0
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)))
Exemplo n.º 6
0
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)))
Exemplo n.º 7
0
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)))
Exemplo n.º 8
0
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='登录成功!'))
Exemplo n.º 9
0
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)))
Exemplo n.º 10
0
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)))
Exemplo n.º 11
0
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)))
Exemplo n.º 12
0
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)))
Exemplo n.º 13
0
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)))
Exemplo n.º 14
0
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)))
Exemplo n.º 15
0
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)))
Exemplo n.º 16
0
def error(err):
    log.exception(err)
    log.warning('custom error: %s', repr(err))
    return jsonify(make_msg(rc=err.rc, msg=err.msg))
Exemplo n.º 17
0
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
Exemplo n.º 18
0
def error(err):
    log.exception(err)
    log.error('system error: %s', err)
    return jsonify(make_msg(rc=50000, msg='Internal Server Error!')), 500