Skip to content

#189991 Опциональная валидация параметров, присылаемых Битриксом в BaseBitrixRobot #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Mar 19, 2025
Prev Previous commit
Next Next commit
#189991 more reformat
  • Loading branch information
sia-itsolution committed Mar 17, 2025
commit 02d43e6c3e34c18e8873500ae856d3237db1a278
31 changes: 15 additions & 16 deletions bitrix_robots/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,8 @@ def fix_json_params(self):

@classmethod
def handler_url(cls, view_name):
"""Получить URL обработчика через reverse+название view
"""
Получить URL обработчика через reverse+название view
"""
return 'https://{domain}{path}'.format(
domain=cls.APP_DOMAIN,
Expand Down Expand Up @@ -139,61 +140,59 @@ def _robot_update_params(cls, view_name: str, auth_user_id: int) -> dict:

@classmethod
def is_installed(cls, admin_token: 'BitrixUserToken') -> bool:
"""Зарегистрирован ли робот на портале
"""
Зарегистрирован ли робот на портале
"""
robot_codes = admin_token.call_list_method_v2('bizproc.robot.list')
return any(code == cls.CODE for code in robot_codes)

@classmethod
def install(cls, view_name: str, admin_token: 'BitrixUserToken',
token_user: Optional['BitrixUser'] = None):
"""Встроить робота на портал
def install(cls, view_name: str, admin_token: 'BitrixUserToken', token_user: Optional['BitrixUser'] = None):
"""
Встроить робота на портал
"""
if token_user:
assert token_user.id == admin_token.user_id
else:
token_user = admin_token.user

return admin_token.call_api_method(
'bizproc.robot.add',
params=cls._robot_add_params(view_name, token_user.bitrix_id),
)['result']

@classmethod
def uninstall(cls, admin_token: 'BitrixUserToken'):
"""Удалить робота с портала
"""

Удалить робота с портала
"""
return admin_token.call_api_method(
'bizproc.robot.delete',
params=dict(CODE=cls.CODE),
)['result']

@classmethod
def update(cls, view_name: str, admin_token: 'BitrixUserToken',
token_user: Optional['BitrixUser'] = None):
"""Обновить параметры робота на портале
def update(cls, view_name: str, admin_token: 'BitrixUserToken', token_user: Optional['BitrixUser'] = None):
"""
Обновить параметры робота на портале
"""
if token_user:
assert token_user.id == admin_token.user_id
else:
token_user = admin_token.user

return admin_token.call_api_method(
'bizproc.robot.update',
params=cls._robot_update_params(view_name, token_user.bitrix_id),
)['result']

@classmethod
def install_or_update(cls, view_name: str, admin_token: 'BitrixUserToken',
token_user: 'BitrixUser' = None):
"""Встроить или обновить параметры робота на портале
def install_or_update(cls, view_name: str, admin_token: 'BitrixUserToken', token_user: 'BitrixUser' = None):
"""
Встроить или обновить параметры робота на портале
"""
if cls.is_installed(admin_token):
method = cls.update
else:
method = cls.install

return method(view_name=view_name, admin_token=admin_token, token_user=token_user)

@classmethod
Expand Down