4
from app.basic.basic_config import config
5
from core.fastapi.adapters import BaseAdapter
6
from core.fastapi.adapters.action_decorator import action
9
class BasicAdapter(BaseAdapter):
11
protocol = config.APP_PROTOCOL
12
port = config.APP_PORT
13
host = config.APP_HOST
17
async def refresh_token(self, refresh_schema):
18
path = f'/api/basic/user/refresh'
20
'token': refresh_schema.token,
21
'refresh_token': refresh_schema.refresh_token
23
responce = await self.client.post(self.host + path, json=body, params=None)
24
return responce.json()
26
async def user_company_change(self, user_id, company_id):
27
path = '/api/basic/user/company_change'
30
'company_id': company_id
32
responce = await self.client.post(self.host + path, json=body, params=None)
33
return responce.json()
35
async def login(self, username, password):
36
path = f'/api/basic/user/login'
41
responce = await self.client.post(self.host + path, json=body, params=None)
42
return responce.json()
44
async def dropdown_ids(self, model: str, id: str, itemlink: str, is_named=False, message=None):
46
Виджет на вход получает модуль-модель-ид- и обратную ссылку если нужно, если нет будет /module/model/{id}
47
_named означает, что так же будет отдат name для отрисовки на тайтле кнопки
49
data = await self.list(model=model)
52
for i in data.get('data'):
57
'url': f'{itemlink}/{i["id"]}' if itemlink else f'/{self.module}/{model}/{i["id"]}'
58
# Если нет ссылки то отдаем ссылку на обьекты по умолчанию (form)
62
'module': self.module,
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())
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()
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()