lavkach3

Форк
0
/
inventory_adapter.py 
90 строк · 3.6 Кб
1
import json
2
from uuid import UUID
3

4
from app.inventory.inventory_config import config
5
from app.inventory.order.schemas import SuggestConfirmScheme
6
from core.fastapi.adapters import BaseAdapter
7
from core.fastapi.adapters.action_decorator import action
8
from core.types import UUIDEncoder
9

10

11
class InventoryAdapter(BaseAdapter):
12
    module = 'basic'
13
    protocol = config.APP_PROTOCOL
14
    port = config.APP_PORT
15
    host = config.APP_HOST
16
    bff_methods = []
17

18
    async def order(self, params=None, **kwargs):
19
        data = await self.list(model='order', params=params)
20
        return data
21

22
    async def order_type(self, params=None, **kwargs):
23
        path = '/api/inventory/order_type'
24
        responce = await self.session.get(self.domain + path, params=params)
25
        data = responce.json()
26
        return data
27

28
    @action(model='move', multiple=False, permits=[])
29
    async def action_move_confirm(self, payload: dict | str) -> dict:
30
        """
31

32
        """
33
        path = f'/api/inventory/move/confirm'
34
        if isinstance(payload, str):
35
            payload = json.loads(payload)
36
        responce = await self.client.post(self.host + path, json=payload, params={})
37
        return responce.json()
38

39
    @action(model='move', multiple=False, permits=[])
40
    async def action_move_confirmmmm(self, payload: dict | str):
41
        """
42

43
        """
44
        path = f'/api/inventory/move/confirm'
45
        if isinstance(payload, str):
46
            payload = json.loads(payload)
47
        responce = await self.client.post(self.host + path, json=payload, params={})
48
        return responce.json()
49

50
    @action(model='suggest',schema=SuggestConfirmScheme, multiple=True, permits=[])
51
    async def action_suggest_confirm(self, schema: SuggestConfirmScheme | dict):
52
        if isinstance(schema, dict):
53
            schema = SuggestConfirmScheme(**schema)
54
        path = f'/api/inventory/suggest/confirm'
55
        responce = await self.client.post(self.host + path, json=schema.model_dump_json(), params={})
56
        return responce.json()
57

58
    @action(model='move', multiple=False, permits=[])
59
    async def get_moves_by_barcode(self, barcode: str, order_id: UUID):
60
        path = f'/api/inventory/move/get_moves_by_barcode'
61
        payload = {
62
            'barcode': barcode,
63
            'order_id': order_id.__str__()
64
        }
65
        responce = await self.client.post(self.host + path, json=payload, params={})
66
        return responce.json()
67

68
    @action(model='order', multiple=False, permits=[])
69
    async def order_start(self, payload: dict, **kwargs):
70
        """Назначение пользователя на заказ, если не указан, то возьется из запроса"""
71
        if isinstance(payload, dict):
72
            payload = json.dumps(payload, cls=UUIDEncoder)
73
        path = f'/api/inventory/order/order_start'
74
        responce = await self.client.post(self.host + path, json=payload, params={})
75
        return responce.json()
76

77
    @action(model='order', multiple=False, permits=[])
78
    async def assign_order(self, order_id, user_id: UUID):
79
        """Назначение пользователя на заказ, если не указан, то возьется из запроса"""
80
        if isinstance(user_id, UUID):
81
            user_id = user_id.__str__()
82
        if isinstance(order_id, UUID):
83
            order_id = order_id.__str__()
84
        path = f'/api/inventory/order/assign_order'
85
        payload = {
86
            'order_id': order_id,
87
            'user_id': user_id if user_id else None
88
        }
89
        responce = await self.client.post(self.host + path, json=payload, params={})
90
        return responce.json()

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.