Skip to content
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

Создавать копию объекта params в UserRequestAbstract #238

Open
AnatolyWorm opened this issue Jun 16, 2024 · 2 comments

Comments

@AnatolyWorm
Copy link

Создаю словарь с параметрами запросов:

params = {
    'filter': {....}
    'select': [...],
}

Переиспользую словарь в нескольких запросах get_all()

bx.get_all(first_source, params)
bx.get_all(second_source, params)
bx.get_all(third_source, params)

После первого запроса к моему params добавляется ключ order и следующий запрос уже не проходит из-за добавленных параметров к объекту params.

Предлагаю передаваемые параметры в UserRequestAbstract использовать не напрямую, а через copy.deepcopy().

import copy

class UserRequestAbstract:
    @beartype
    @icontract.require(lambda method: method, "Method cannot be empty")
    def __init__(
        self,
        bitrix,
        method: str,
        params: Union[Dict[str, Any], None] = None,
        mute=False,
    ):
        self.bitrix = bitrix
        self.srh: ServerRequestHandler = bitrix.srh

        self.method = method
        self.st_method = self.standardized_method(method)

        # st_params будет использоваться для проверки параметров,
        # но на сервер должны уходить параметры без изменения регистра
        self.params = copy.deepcopy(params)
        self.st_params = self.standardized_params(params)

        self.mute = mute
        self.check_special_limitations()
@leshchenko1979
Copy link
Owner

Да, согласен. PR сможете сделать?

@AnatolyWorm
Copy link
Author

Да, согласен. PR сможете сделать?

Да, постараюсь в ближайшее время сделать.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants