Closed rolldeep closed 2 years ago
@Krukov , привет, мог бы подсказать как мне корректно сериализовать value_after/value_before?
@Krukov , привет, мог бы подсказать как мне корректно сериализовать value_after/value_before?
Речь ведь идет о сериализции ответа от АМО ? Да там достаточно интересные правила - мне нужно время прикинуть ) думаю завтра вечером отвечу
@Krukov , привет, мог бы подсказать как мне корректно сериализовать value_after/value_before?
Речь ведь идет о сериализции ответа от АМО ? Да там достаточно интересные правила - мне нужно время прикинуть ) думаю завтра вечером отвечу
Да, сериализация.
Жду тогда твоего ответа. Спасибо.
Пока сам поробую поэкспериментировать 🔬
@rolldeep тебе спасибо )
Вообщем я подумал и кажется были следующие варианты 1) отдавать как есть. например:
[{"note": {"id": 42743871}}]
2) отдавать чистые значения без всякой чепухи например:
42743871
или
{
"id": 5233224,
"pipeline_id": 437642
}
в зависимости от типа события 3) по возможности сериализовать сразу в объект например:
Note(id=5233224)
или
Status(id=5233224, name="В работе")
1 - простой но мне кажется создает лишнюю работу для потребителей - нужно будет постоянно выдергивать нужные значения status_id = event.value_after[0]["lead_status"]["id"]
- не удобно
2 - мне больше всего нравиться - простой и сразу дает получить что интересует и запросить что надо уже в зависимости от потребностей
3- слишком сложный в реализации и не думаю что это нужно делать
Вообщем если идти по второму пути то нужно будет определить свою кастомную реализацию _Field примерно так
EVENT_TYPES_WITH_BLANK_VALUE = ("lead_deleted", "lead_restored", "contact_deleted", "contact_restored", "company_deleted", "company_restored", "customer_deleted", "entity_merged", "task_added", "task_deleted", "task_completed")
EVENT_TYPE_LEAD_STATUS_CHANGE = "lead_status_changed"
class _EventValueField(_UnEditableField):
def on_get_instance(self, instance, value):
"""
value here is what we have in value_after/value_before field
For example
[
{
"note": {
"id": 42743871
}
}
],
"""
if instance.type in EVENT_TYPES_WITH_BLANK_VALUE:
return None
if instance.type == EVENT_TYPE_LEAD_STATUS_CHANGE:
return value[0]["lead_status"]
..
class Event:
value_after = _EventValueField("value_after")
value_before = _EventValueField("value_before")
@Krukov ,
Супер, получил данные по событиям до\после. Думаю, можно даже не делать сериализацию в объект.
1 - простой но мне кажется создает лишнюю работу для потребителей - нужно будет постоянно выдержать нужные значения status_id = event.value_after[0]["lead_status"]["id"] - не удобно
Чтобы тут ты посоветовал для динамической реализации?
Чтобы тут ты посоветовал для динамической реализации?
не совсем понял что ты имеешь ввиду ?
В целом то что сейчас есть в MR уже хорошо !
@rolldeep мержу?
@rolldeep мержу?
Привет, давай.
https://pypi.org/project/amocrm-api/2.4.0/
Добавил недостающие типы событий
WIP
В этом pr хочу добавить объект events и фильтр по событиям, с помощью которого можно будет отфильтровать события по воронке и статусу изменения сделаки пример: (https://www.amocrm.ru/developers/content/crm_platform/events-and-notes#events-filter-params).