fix(recommerce): исправить имена полей маркетинговых флагов для API

- is_new → new (API ожидает 'new', не 'is_new')
- is_popular → popular (API ожидает 'popular', не 'is_popular')
- добавить тестовый скрипт test_is_new.py для проверки флагов

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-13 13:06:39 +03:00
parent 2aa3de7bfa
commit 3cffa9b05d
2 changed files with 140 additions and 10 deletions

View File

@@ -90,16 +90,22 @@ def to_api_product(
if photo.image:
data[f'images[{idx}]'] = photo.image.url
# Обработка флагов товара (формат: 1/0 для Recommerce API)
if hasattr(product, 'is_new'):
data['is_new'] = 1 if product.is_new else 0
if hasattr(product, 'is_popular'):
data['is_popular'] = 1 if product.is_popular else 0
# special - из модели is_special ИЛИ автоматически при скидке
if hasattr(product, 'is_special'):
data['special'] = 1 if (product.is_special or has_discount) else 0
else:
data['special'] = 1 if has_discount else 0
# Обработка маркетинговых флагов (формат: 1/0 для Recommerce API)
# Добавляем только если поле указано в fields ИЛИ fields=None (полное обновление)
if fields is None or 'is_new' in fields:
if hasattr(product, 'is_new'):
data['new'] = 1 if product.is_new else 0
if fields is None or 'is_popular' in fields:
if hasattr(product, 'is_popular'):
data['popular'] = 1 if product.is_popular else 0
# special - из модели is_special ИЛИ автоматически при наличии скидке
if fields is None or 'is_special' in fields:
if hasattr(product, 'is_special'):
data['special'] = 1 if (product.is_special or has_discount) else 0
else:
data['special'] = 1 if has_discount else 0
return data