diff --git a/README.rst b/README.rst index 7e743c7..75c79bc 100644 --- a/README.rst +++ b/README.rst @@ -127,7 +127,11 @@ Example:: utm = custom_field.UrlCustomField("UTM метка") delivery_type = custom_field.SelectCustomField("Способ доставки") address = custom_field.TextCustomField("Адрес") + date = custom_field.DateCustomField( + "Дата платежа") + my_lead = Lead.objects.get(object_id=33462781) + my_lead.date = "10.12.2025" # дату можно указать в виде строки День.Месяц.Год Однако мапинг всех кастомных полей дело утоминетльное, поэтому для генерации файла с готовым мапингом есть команда:: diff --git a/amocrm/v2/entity/custom_field.py b/amocrm/v2/entity/custom_field.py index 46a6fc2..c3caf32 100644 --- a/amocrm/v2/entity/custom_field.py +++ b/amocrm/v2/entity/custom_field.py @@ -1,5 +1,5 @@ from collections import namedtuple -from datetime import datetime +from datetime import datetime, timezone from .. import fields, manager, model from ..interaction import GenericInteraction @@ -244,6 +244,10 @@ def on_get(self, values): def on_set(self, value): if isinstance(value, datetime): value = value.timestamp() + if isinstance(value, str): + date_obj = datetime.strptime(value, "%d.%m.%Y") + date_obj_utc = date_obj.replace(tzinfo=timezone.utc) + value = date_obj_utc.strftime("%Y-%m-%dT%H:%M:%S%z") return super().on_set(value) diff --git a/amocrm/v2/interaction.py b/amocrm/v2/interaction.py index 1ba811e..b01f915 100644 --- a/amocrm/v2/interaction.py +++ b/amocrm/v2/interaction.py @@ -127,6 +127,8 @@ def create(self, data): def update(self, object_id, data): path = "{}/{}".format(self._get_path(), object_id) + for item in data['custom_fields_values']: + item.pop('is_computed', None) response, status = self.request("patch", path, data=data) if status == 400: raise exceptions.ValidationError(response)