lavkach3

Форк
0
/
basic_adapter.py 
85 строк · 3.2 Кб
1
import json
2
from uuid import UUID
3

4
from app.basic.basic_config import config
5
from core.fastapi.adapters import BaseAdapter
6
from core.fastapi.adapters.action_decorator import action
7

8

9
class BasicAdapter(BaseAdapter):
10
    module = 'basic'
11
    protocol = config.APP_PROTOCOL
12
    port = config.APP_PORT
13
    host = config.APP_HOST
14

15

16

17
    async def refresh_token(self, refresh_schema):
18
        path = f'/api/basic/user/refresh'
19
        body = {
20
            'token': refresh_schema.token,
21
            'refresh_token': refresh_schema.refresh_token
22
        }
23
        responce = await self.client.post(self.host + path, json=body, params=None)
24
        return responce.json()
25

26
    async def user_company_change(self, user_id, company_id):
27
        path = '/api/basic/user/company_change'
28
        body = {
29
            'user_id': user_id,
30
            'company_id': company_id
31
        }
32
        responce = await self.client.post(self.host + path, json=body, params=None)
33
        return responce.json()
34

35
    async def login(self, username, password):
36
        path = f'/api/basic/user/login'
37
        body = {
38
            'email': username,
39
            'password': password
40
        }
41
        responce = await self.client.post(self.host + path, json=body, params=None)
42
        return responce.json()
43

44
    async def dropdown_ids(self, model: str, id: str, itemlink: str, is_named=False, message=None):
45
        """
46
            Виджет на вход получает модуль-модель-ид- и обратную ссылку если нужно, если нет будет /module/model/{id}
47
            _named означает, что так же будет отдат name для отрисовки на тайтле кнопки
48
        """
49
        data = await self.list(model=model)
50
        items = []
51
        title = False
52
        for i in data.get('data'):
53
            if i['id'] == id:
54
                title = i['title']
55
            items.append({
56
                'title': i['title'],
57
                'url': f'{itemlink}/{i["id"]}' if itemlink else f'/{self.module}/{model}/{i["id"]}'
58
                # Если нет ссылки то отдаем ссылку на обьекты по умолчанию (form)
59
            })
60
        return {
61
            'model': model,
62
            'module': self.module,
63
            'title': title,
64
            'message': message,
65
            'items': items
66
        }
67

68
    async def product_by_barcode(self, barcode):
69
        path = f'/api/basic/product/barcode/{barcode}'
70
        responce = await self.client.get(self.host + path, params=None)
71
        return self.env['product'].schemas.get(**responce.json())
72

73
    async def permissions(self, user_id: UUID):
74
        path = f'/api/basic/user/{user_id}/permissions'
75
        responce = await self.client.get(self.host + path, params=None)
76
        return responce.json()
77

78
    @action(model='project', multiple=False, permits=[])
79
    async def action_assign_store(self, payload: dict | str):
80
        """Метод прикрепления к складу """
81
        path = f'/api/basic/project/assign_store'
82
        if isinstance(payload, str):
83
            payload = json.loads(payload)
84
        responce = await self.client.post(self.host + path, json=payload, params={})
85
        return responce.json()

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

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

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

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