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

Добавление тегов к сделке #102

Open
andron23 opened this issue Sep 22, 2023 · 3 comments
Open

Добавление тегов к сделке #102

andron23 opened this issue Sep 22, 2023 · 3 comments
Labels

Comments

@andron23
Copy link

Добрый день!

Подскажите, пожалуйста, как можно добавить тег к сделке? Вроде все делаю, как задумано, но что-то не выходит 😢

Минимальный код для воспроизведения ниже. Заранее спасибо!

Первый вариант - через строку:

self.lead = Lead.objects.create(...)

self.lead.tags.append('тестовый')

Второй вариант - через существующие теги.

self.lead = Lead.objects.create(...)

tag_list = list(Tag.leads.all())
for tag in tag_list:
            if tag.name == self.tag:
                self.tag = tag

self.lead.tags.append(self.tag)

Ошибка:

Traceback (most recent call last):
  File "C:\Users\lizaruzova\Desktop\projects\simulative-api\venv\lib\site-packages\amocrm\v2\model.py", line 49, in save
    self.update()
  File "C:\Users\lizaruzova\Desktop\projects\simulative-api\venv\lib\site-packages\amocrm\v2\model.py", line 63, in update
    self._manager.update(self.id, self._get_updated_data())
  File "C:\Users\lizaruzova\Desktop\projects\simulative-api\venv\lib\site-packages\amocrm\v2\manager.py", line 19, in update
    return self._interaction.update(object_id=object_id, data=data or kwargs)
  File "C:\Users\lizaruzova\Desktop\projects\simulative-api\venv\lib\site-packages\amocrm\v2\interaction.py", line 132, in update
    raise exceptions.ValidationError(response)
amocrm.v2.exceptions.ValidationError: {'validation-errors': [{'request_id': '0', 'errors': [{'code': 'FieldNotExpected', 'path': '_embedded.tags.0.color', 'detail': 'This field was not expected.'}, {'code': 'FieldNotExpected', 'path': '_embedded.tags.1.color', 'detail': 'This field was not expected.'}]}], 'title': 'Bad Request', 'type': 'https://httpstatus.es/400', 'status': 
400, 'detail': 'Request validation failed'}
@andron23
Copy link
Author

В общем, ошибка возникала, кажется, из-за того что при добавлении нового тега ему автоматически присваивался color=None, а дальше при отправке запроса в Amo это почему-то вызывало ошибку.

Решил немного костыльно, но вроде работает - каждый раз просто удаляю сначала все теги, а потом заново их добавляю по имени. Вот пример кода:

current_tags = list(self.lead.tags)

for tag in current_tags:
   self.lead.tags.remove(tag)
   self.lead.tags.append(tag.name)

# в конце добавляю новый тег, ради которого все и затеивалось :)
self.lead.tags.append(self.tag)

Не знаю, может быть я чего-то не доглядел или версия библиотеки не самая последняя. Если зря поднял панику - хорошо. Если просто нужно подправить исходник - будут рад сделать PR :)

@Skorpyon
Copy link

Skorpyon commented Oct 5, 2023

@andron23

Я манкипачнул немного, так лучше чем каждый раз удалять все теги.
Можно вставить в __init__.py проекта, чтоб при запуске выполнялось.

# Манкипатчим библиотеку
from amocrm.v2.entity.tag import _TagsList


def monkeypatched_init(self, tags, on_change):
    """
    BAD CODE THERE
    self._tags is mutable object and this class and arch play with it
    """

    # tags это список словарей.
    # Е#учий АМО фейлится, когда библиотека апдейтит лид с тегами с цветом.
    # Сами придумали цвета и сами "ох, это неожиданный аттрибут, е#итесь как хотите".
    for tag in tags:
        tag.pop("color", None)
    self._tags = tags
    self._on_change = on_change


_TagsList.__init__ = monkeypatched_init

@andron23
Copy link
Author

andron23 commented Oct 5, 2023

@Skorpyon точно, это гениально) Спасибо!

А главное, комментарии содержательные))) И все сразу встало на свои места))

@Krukov Krukov added the bug label Oct 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants