morington

Untitled

Oct 14th, 2023 (edited)
696
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.05 KB | None | 0 0
  1. from typing import Any, Optional
  2.  
  3. import structlog
  4. from flask import Blueprint, render_template, request, Response
  5. from structlog.stdlib import BoundLogger
  6.  
  7. from .. import MethodRequest, RoutesAPI, api
  8.  
  9. category_bp = Blueprint(__name__, __name__)
  10. logger: BoundLogger = structlog.get_logger(__name__)
  11.  
  12.  
  13. @category_bp.route('add_category', methods=['POST'])
  14. def add_category(
  15.         title: str,
  16.         manufacturer_id: int,
  17.         parent_id: Optional[int] = None,
  18. ) -> Any:
  19.     """
  20.    Добавление новой категории
  21.  
  22.    :title: Название категории
  23.    :manufacturer_id: ID производителя
  24.    :parent_id: ID родительской категории
  25.  
  26.    :return: str
  27.    "OK"
  28.    """
  29.  
  30.     return api(
  31.         method=MethodRequest.post,
  32.         route=RoutesAPI.add_category,
  33.         params={
  34.             'title': title,
  35.             'manufacturer_id': manufacturer_id,
  36.             'parent_id': parent_id
  37.         }
  38.     )
  39.  
  40.  
  41. @category_bp.route('get_categories', methods=['GET'])
  42. def get_categories(
  43.         manufacturer_id: int,
  44.         offset: int = 0,
  45.         limit: int = 300,
  46.         is_archive: bool = False,
  47.         is_parent: bool = False
  48. ) -> Any:
  49.     """
  50.    Получение списка категорий по производителю
  51.  
  52.    :manufacturer_id: ID производителя
  53.    :offset: Начало списка категорий
  54.    :limit: Количество категорий
  55.    :is_archive: Искать ли категории в архиве?
  56.    :is_parent: Искать ли только родительские категории?
  57.  
  58.    :return: dict
  59.    Возвращает список категорий и общее количество вне фильтра
  60.  
  61.    {
  62.        "items": [
  63.            {
  64.                "id": 8,
  65.                "title": "Название категории",
  66.                "parent_id": None или ID категории,
  67.                "manufacturer_id": ID производителя,
  68.                "is_archive": False или True,
  69.                "timestamp": "14.10.2023 00:00:00"
  70.            }
  71.        ],
  72.        "count": 1
  73.    }
  74.    """
  75.  
  76.     return api(
  77.         method=MethodRequest.get,
  78.         route=RoutesAPI.get_categories,
  79.         params={
  80.             "manufacturer_id": manufacturer_id,
  81.             "offset": offset,
  82.             "limit": limit,
  83.             "is_archive": is_archive,
  84.             "is_parent": is_parent
  85.         }
  86.     )
  87.  
  88.  
  89. @category_bp.route('del_category', methods=['DELETE'])
  90. def del_category(
  91.         category_id: int,
  92.         is_archive: bool = False
  93. ) -> Any:
  94.     """
  95.    Удаление категории
  96.  
  97.    :category_id: ID категории
  98.    :is_archive: Искать ли категории в архиве?
  99.  
  100.    :return: dict
  101.    Возвращает удаленную категорию, сделано так, чтобы можно было быстро восстановить
  102.    {
  103.        "id": ID категории,
  104.        "title": "Название категории",
  105.        "parent_id": None или ID категории,
  106.        "manufacturer_id": ID производителя,
  107.        "is_archive": False или True,
  108.        "timestamp": "14.10.2023 00:00:00"
  109.    }
  110.    """
  111.  
  112.     return api(
  113.         method=MethodRequest.delete,
  114.         route=RoutesAPI.del_category,
  115.         params={
  116.             "category_id": category_id,
  117.             "is_archive": is_archive
  118.         }
  119.     )
  120.  
  121.  
  122. @category_bp.route('edit_category', methods=['PUT'])
  123. def edit_category(
  124.         category_id: int,
  125.         category_title: Optional[str] = None,
  126.         parent_id: Optional[int] = None,
  127.         manufacturer_id: Optional[int] = None,
  128.         is_archive: bool = False
  129. ) -> Any:
  130.     """
  131.    Редактирование категорий
  132.    Аргументы опциональный, чтобы можно было свободно менять данные.
  133.    К примеру указывая `manufacturer_id` он изменит ID производителя.
  134.  
  135.    :category_id: ID категории
  136.    :category_title: Название категории
  137.    :parent_id: ID родительской категории
  138.    :manufacturer_id: ID производителя
  139.    :is_archive: Искать ли категории в архиве?
  140.  
  141.    :return: dict
  142.    Возвращает редактированную категорию.
  143.  
  144.    {
  145.        "id": ID категории,
  146.        "title": "Название категории",
  147.        "parent_id": None или ID категории,
  148.        "manufacturer_id": ID производителя,
  149.        "is_archive": False или True,
  150.        "timestamp": "14.10.2023 00:00:00"
  151.    }
  152.    """
  153.  
  154.     return api(
  155.         method=MethodRequest.put,
  156.         route=RoutesAPI.edit_category,
  157.         params={
  158.             "category_id": category_id,
  159.             "category_title": category_title,
  160.             "parent_id": parent_id,
  161.             "manufacturer_id": manufacturer_id,
  162.             "is_archive": is_archive
  163.         }
  164.     )
  165.  
  166.  
  167. @category_bp.route('category_archiving', methods=['PUT'])
  168. def category_archiving(
  169.         category_id: int,
  170.         status: bool = True
  171. ) -> Any:
  172.     """
  173.    Добавляет выбранную категорию в архив
  174.  
  175.    :category_id: ID категории
  176.    :status: Статус архивации (True или False)
  177.  
  178.    :return: dict
  179.    Возвращает редактированную категорию.
  180.  
  181.    {
  182.        "id": ID категории,
  183.        "title": "Название категории",
  184.        "parent_id": None или ID категории,
  185.        "manufacturer_id": ID производителя,
  186.        "is_archive": False или True,
  187.        "timestamp": "14.10.2023 00:00:00"
  188.    }
  189.    """
  190.  
  191.     return api(
  192.         method=MethodRequest.put,
  193.         route=RoutesAPI.category_archiving,
  194.         params={
  195.             "category_id": category_id,
  196.             "status": status
  197.         }
  198.     )
  199.  
Advertisement
Add Comment
Please, Sign In to add comment