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

Closed
AnatolyWorm opened this issue Jun 16, 2024 · 2 comments · Fixed by #244
Closed

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

AnatolyWorm opened this issue Jun 16, 2024 · 2 comments · Fixed by #244
Assignees

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
2 participants