docs(products): обновить описание синхронизации флагов

Уточнена инструкция в модалке: акцент на выборе флагов для
синхронизации, а не на изменении значений.
Удалены временные скрипты отладки API.
This commit is contained in:
2026-01-13 22:55:12 +03:00
parent 06a9cc05ca
commit 7fd361aaf8
4 changed files with 2 additions and 1 deletions

View File

@@ -0,0 +1,128 @@
"""
Тестовый скрипт для отладки поля count (Наличие) в Recommerce API
Без Django - напрямую через requests
"""
import requests
# === НАСТРОЙКИ - ЗАПОЛНИ ===
STORE_URL = "https://mixflowers.by" # Замени на свой URL
API_TOKEN = "baac4380c190c4c3fed7a89977fd6155b846c7e8" # Замени на свой токен
# ===========================
SKU = "re-3560"
def get_headers():
return {
'x-auth-token': API_TOKEN,
'Accept': 'application/json',
}
def get_product():
"""Получить товар и показать текущее наличие"""
print(f"\n=== GET товар {SKU} ===")
url = f"{STORE_URL}/api/v1/catalog/products/{SKU}"
try:
resp = requests.get(url, headers=get_headers(), timeout=15)
print(f"Status: {resp.status_code}")
if resp.status_code == 200:
result = resp.json()
# Показываем наличие
print(f" count: {result.get('count')}")
print(f" availability: {result.get('availability')}")
print(f" waiting_time: {result.get('waiting_time')}")
print(f"\nПолный ответ: {result}")
return result
else:
print(f"Ошибка: {resp.text}")
except Exception as e:
print(f"Ошибка: {e}")
return None
def update_product(data):
"""Обновить товар"""
url = f"{STORE_URL}/api/v1/catalog/products/{SKU}"
print(f"POST {url}")
print(f"Data: {data}")
try:
resp = requests.post(url, headers=get_headers(), data=data, timeout=15)
print(f"Status: {resp.status_code}")
print(f"Response: {resp.text[:500] if resp.text else 'empty'}")
return resp
except Exception as e:
print(f"Ошибка: {e}")
return None
def test_count_10():
"""Тест: count=10 (конкретное количество)"""
print(f"\n=== TEST: count=10 (конкретное количество) ===")
update_product({'count': 10})
def test_count_inf():
"""Тест: count=999999 (есть в наличии, без количества)"""
print(f"\n=== TEST: count=999999 (есть в наличии = 'inf') ===")
# Recommerce использует 999999 вместо inf
update_product({'count': 999999})
def test_count_0():
"""Тест: count=0 (нет в наличии)"""
print(f"\n=== TEST: count=0 (нет в наличии) ===")
update_product({'count': 0})
def test_count_custom():
"""Тест: произвольное количество или 'inf'"""
print(f"\n=== TEST: произвольное количество ===")
val = input("Введите количество (число или 'inf'): ").strip()
if val.lower() == 'inf':
update_product({'count': 999999})
else:
try:
update_product({'count': int(val)})
except ValueError:
print("Ошибка: введите число или 'inf'")
if __name__ == "__main__":
if "your-store" in STORE_URL or "your-api" in API_TOKEN:
print("=" * 50)
print("ОШИБКА: Заполни STORE_URL и API_TOKEN в скрипте!")
print("Открой test_count.py и замени значения")
print("=" * 50)
exit(1)
print("=" * 50)
print("Тестирование поля count (Наличие) для Recommerce API")
print(f"Store: {STORE_URL}")
print(f"SKU: {SKU}")
print("=" * 50)
# Сначала смотрим текущее состояние
get_product()
print("\n" + "=" * 50)
print("Выберите тест:")
print("1 - GET (показать текущее состояние)")
print("2 - count=10 (конкретное количество)")
print("3 - count=inf (есть в наличии)")
print("4 - count=0 (нет в наличии)")
print("5 - произвольное (число или 'inf')")
print("0 - Выход")
print("=" * 50)
while True:
choice = input("\nВведите номер теста: ").strip()
if choice == "0":
break
elif choice == "1":
get_product()
elif choice == "2":
test_count_10()
elif choice == "3":
test_count_inf()
elif choice == "4":
test_count_0()
elif choice == "5":
test_count_custom()
else:
print("Неверный выбор")

View File

@@ -0,0 +1,124 @@
"""
Тестовый скрипт для отладки флага new (Новинки) в Recommerce API
Без Django - напрямую через requests
"""
import requests
# === НАСТРОЙКИ - ЗАПОЛНИ ===
STORE_URL = "https://mixflowers.by" # Замени на свой URL
API_TOKEN = "baac4380c190c4c3fed7a89977fd6155b846c7e8" # Замени на свой токен
# ===========================
SKU = "re-3560"
def get_headers():
return {
'x-auth-token': API_TOKEN,
'Accept': 'application/json',
}
def get_product():
"""Получить товар и показать текущие флаги"""
print(f"\n=== GET товар {SKU} ===")
url = f"{STORE_URL}/api/v1/catalog/products/{SKU}"
try:
resp = requests.get(url, headers=get_headers(), timeout=15)
print(f"Status: {resp.status_code}")
if resp.status_code == 200:
result = resp.json()
# Показываем интересующие поля
if 'new' in result:
print(f" new: {result['new']}")
if 'popular' in result:
print(f" popular: {result['popular']}")
if 'special' in result:
print(f" special: {result['special']}")
if 'marks' in result:
print(f" marks: {result['marks']}")
print(f"\nПолный ответ: {result}")
return result
else:
print(f"Ошибка: {resp.text}")
except Exception as e:
print(f"Ошибка: {e}")
return None
def update_product(data):
"""Обновить товар"""
url = f"{STORE_URL}/api/v1/catalog/products/{SKU}"
print(f"POST {url}")
print(f"Data: {data}")
try:
resp = requests.post(url, headers=get_headers(), data=data, timeout=15)
print(f"Status: {resp.status_code}")
print(f"Response: {resp.text[:500] if resp.text else 'empty'}")
return resp
except Exception as e:
print(f"Ошибка: {e}")
return None
def test_new_1():
"""Тест: new=1 (установить флаг Новинки)"""
print(f"\n=== TEST: new=1 (установить флаг Новинки) ===")
update_product({'new': 1})
def test_new_0():
"""Тест: new=0 (сбросить флаг Новинки)"""
print(f"\n=== TEST: new=0 (сбросить флаг Новинки) ===")
update_product({'new': 0})
def test_popular_1():
"""Тест: popular=1 (установить флаг Популярные)"""
print(f"\n=== TEST: popular=1 (установить флаг Популярные) ===")
update_product({'popular': 1})
def test_popular_0():
"""Тест: popular=0 (сбросить флаг Популярные)"""
print(f"\n=== TEST: popular=0 (сбросить флаг Популярные) ===")
update_product({'popular': 0})
if __name__ == "__main__":
if "your-store" in STORE_URL or "your-api" in API_TOKEN:
print("=" * 50)
print("ОШИБКА: Заполни STORE_URL и API_TOKEN в скрипте!")
print("Открой test_is_new.py и замени значения")
print("=" * 50)
exit(1)
print("=" * 50)
print("Тестирование флага new (Новинки) для Recommerce API")
print(f"Store: {STORE_URL}")
print(f"SKU: {SKU}")
print("=" * 50)
# Сначала смотрим текущее состояние
get_product()
print("\n" + "=" * 50)
print("Выберите тест:")
print("1 - GET (показать текущее состояние)")
print("2 - new=1 (установить флаг Новинки)")
print("3 - new=0 (сбросить флаг Новинки)")
print("4 - popular=1 (установить флаг Популярные)")
print("5 - popular=0 (сбросить флаг Популярные)")
print("0 - Выход")
print("=" * 50)
while True:
choice = input("\nВведите номер теста: ").strip()
if choice == "0":
break
elif choice == "1":
get_product()
elif choice == "2":
test_new_1()
elif choice == "3":
test_new_0()
elif choice == "4":
test_popular_1()
elif choice == "5":
test_popular_0()
else:
print("Неверный выбор")

View File

@@ -0,0 +1,148 @@
"""
Тестовый скрипт для отладки флага is_special в Recommerce API
Без Django - напрямую через requests
"""
import requests
# === НАСТРОЙКИ - ЗАПОЛНИ ===
STORE_URL = "https://mixflowers.by" # Замени на свой URL
API_TOKEN = "baac4380c190c4c3fed7a89977fd6155b846c7e8" # Замени на свой токен
# ===========================
SKU = "re-3560"
def get_headers():
return {
'x-auth-token': API_TOKEN,
'Accept': 'application/json',
}
def get_product():
"""Получить товар и показать текущие флаги"""
print(f"\n=== GET товар {SKU} ===")
url = f"{STORE_URL}/api/v1/catalog/products/{SKU}"
try:
resp = requests.get(url, headers=get_headers(), timeout=15)
print(f"Status: {resp.status_code}")
if resp.status_code == 200:
result = resp.json()
# Показываем интересующие поля
if 'marks' in result:
print(f" marks: {result['marks']}")
if 'is_special' in result:
print(f" is_special: {result['is_special']}")
if 'price' in result:
print(f" price: {result['price']}")
if 'price_old' in result:
print(f" price_old: {result['price_old']}")
print(f"\nПолный ответ: {result}")
return result
else:
print(f"Ошибка: {resp.text}")
except Exception as e:
print(f"Ошибка: {e}")
return None
def update_product(data):
"""Обновить товар"""
url = f"{STORE_URL}/api/v1/catalog/products/{SKU}"
print(f"POST {url}")
print(f"Data: {data}")
try:
resp = requests.post(url, headers=get_headers(), data=data, timeout=15)
print(f"Status: {resp.status_code}")
print(f"Response: {resp.text[:500] if resp.text else 'empty'}")
return resp
except Exception as e:
print(f"Ошибка: {e}")
return None
def test_is_special_string():
"""Тест: is_special как строка 'true'"""
print(f"\n=== TEST: is_special='true' (строка) ===")
update_product({'is_special': 'true'})
def test_is_special_bool():
"""Тест: is_special как boolean True"""
print(f"\n=== TEST: is_special=True (будет отправлено как 'True') ===")
update_product({'is_special': True})
def test_is_special_int():
"""Тест: is_special как int 1"""
print(f"\n=== TEST: is_special=1 (int) ===")
update_product({'is_special': 1})
def test_marks_special():
"""Тест: marks[special] вместо is_special"""
print(f"\n=== TEST: marks[special]='true' ===")
update_product({'marks[special]': 'true'})
def test_reset_special():
"""Сброс is_special в false"""
print(f"\n=== RESET: is_special='false' ===")
update_product({'is_special': 'false'})
def test_special_1():
"""Тест: special=1 (как в админке!)"""
print(f"\n=== TEST: special=1 (формат админки) ===")
update_product({'special': 1})
def test_special_0():
"""Сброс: special=0"""
print(f"\n=== RESET: special=0 ===")
update_product({'special': 0})
if __name__ == "__main__":
if "your-store" in STORE_URL or "your-api" in API_TOKEN:
print("=" * 50)
print("ОШИБКА: Заполни STORE_URL и API_TOKEN в скрипте!")
print("Открой test_is_special.py и замени значения")
print("=" * 50)
exit(1)
print("=" * 50)
print("Тестирование флага is_special для Recommerce API")
print(f"Store: {STORE_URL}")
print(f"SKU: {SKU}")
print("=" * 50)
# Сначала смотрим текущее состояние
get_product()
print("\n" + "=" * 50)
print("Выберите тест:")
print("1 - GET (показать текущее состояние)")
print("2 - is_special='true' (строка)")
print("3 - is_special=True (bool)")
print("4 - is_special=1 (int)")
print("5 - marks[special]='true'")
print("6 - Сброс is_special='false'")
print("7 - special=1 (ФОРМАТ АДМИНКИ!)")
print("8 - special=0 (сброс)")
print("0 - Выход")
print("=" * 50)
while True:
choice = input("\nВведите номер теста: ").strip()
if choice == "0":
break
elif choice == "1":
get_product()
elif choice == "2":
test_is_special_string()
elif choice == "3":
test_is_special_bool()
elif choice == "4":
test_is_special_int()
elif choice == "5":
test_marks_special()
elif choice == "6":
test_reset_special()
elif choice == "7":
test_special_1()
elif choice == "8":
test_special_0()
else:
print("Неверный выбор")