""" Тестовый скрипт для отладки флага 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("Неверный выбор")