Advertisement
Guest User

Untitled

a guest
Nov 3rd, 2020
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.21 KB | None | 0 0
  1. from flask import Flask, request, jsonify
  2. from typing import Any
  3. from part_search.search import make_search
  4. import flask
  5.  
  6. app = Flask(__name__)
  7.  
  8.  
  9. def check_dict_request(request_part: Any) -> bool:
  10.     """
  11.    Проверяем, что в запросе содержаться словари нужного типа
  12.    Arg:
  13.        request_part: часть запроса к api поискового алгоритма
  14.    Return:
  15.        возращает True, если запрос в формате словаря с нужными полями,
  16.        в остальных случаях False
  17.    """
  18.     if not isinstance(request_part, dict):
  19.         return False
  20.     if "bank" not in request_part or "doc_num" not in request_part\
  21.     or "low" not in request_part or "high" not in request_part or "request" not in request_part:
  22.         return False
  23.     return True
  24.  
  25.  
  26. @app.route("/part_search", methods=["POST"])
  27. def part_search_api():
  28.     """
  29.    Api для поиска документа. Принимает запрос в формате списка со словарями
  30.    {"bank": str, "doc_num": int, "low": int, "high": int, "request": str}. Возращает номер параграфа или None
  31.    """
  32.     if not request.is_json:
  33.         return "Запрос не в JSON формате", 400
  34.     json_data = request.get_json()
  35.     references = json_data
  36.     if not isinstance(references, list):
  37.         return "Запрос должен содержать список словарей", 400
  38.     result = []
  39.     for reference in references:
  40.         if not check_dict_request(reference):
  41.             print(f'{reference} должен иметь формат {"bank": str, "doc_num": int, "low": int, "high": int, "request": str}')
  42.             continue
  43.         num = reference["doc_num"]
  44.         bank = reference['bank']
  45.         request = reference['request']
  46.         search_result = make_search(num, bank, request)
  47.         if not search_result:
  48.             print(f'{num=} {bank=} {request=} не найден')
  49.             continue
  50.         one_res = {"par_num": search_result}
  51.         result.append(one_res)
  52.     return jsonify(result)
  53.  
  54.  
  55. if __name__ == "__main__":
  56.     app.run()
  57.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement