Files
octopus/myproject/test_sku_generation.py

171 lines
6.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
Тестовый скрипт для проверки генерации артикулов
"""
import os
import django
# Настройка Django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
django.setup()
from products.models import Product, ProductKit, ProductCategory, ProductVariantGroup, SKUCounter
def test_sku_generation():
print("=" * 80)
print("ТЕСТИРОВАНИЕ СИСТЕМЫ ГЕНЕРАЦИИ АРТИКУЛОВ")
print("=" * 80)
# Проверяем текущее состояние счетчиков
print("\n1. Текущее состояние счетчиков:")
print("-" * 80)
for counter in SKUCounter.objects.all():
print(f" {counter.get_counter_type_display()}: {counter.current_value}")
if not SKUCounter.objects.exists():
print(" Счетчики еще не созданы. Они будут созданы при первом создании товара.")
# Создаем тестовую категорию
print("\n2. Создание тестовой категории:")
print("-" * 80)
category, created = ProductCategory.objects.get_or_create(
name="Розы",
defaults={'slug': 'rozy'}
)
print(f" Категория 'Розы' {'создана' if created else 'уже существует'}")
# Тест 1: Простой товар без группы вариантов
print("\n3. Тест 1: Простой товар без суффикса:")
print("-" * 80)
product1 = Product(
name="Роза красная",
category=category,
cost_price=100,
sale_price=200
)
product1.save()
print(f" Товар: {product1.name}")
print(f" Артикул: {product1.sku}")
print(f" Суффикс варианта: {product1.variant_suffix or 'нет'}")
# Тест 2: Товар с размером в названии
print("\n4. Тест 2: Товар с размером в названии (автопарсинг):")
print("-" * 80)
product2 = Product(
name="Роза Freedom 50см",
category=category,
cost_price=150,
sale_price=300
)
product2.save()
print(f" Товар: {product2.name}")
print(f" Артикул: {product2.sku}")
print(f" Суффикс варианта: {product2.variant_suffix or 'нет'}")
# Тест 3: Товар с другим размером
print("\n5. Тест 3: Товар с другим размером:")
print("-" * 80)
product3 = Product(
name="Роза Freedom 60 см",
category=category,
cost_price=180,
sale_price=350
)
product3.save()
print(f" Товар: {product3.name}")
print(f" Артикул: {product3.sku}")
print(f" Суффикс варианта: {product3.variant_suffix or 'нет'}")
# Тест 4: Товар с буквенным размером
print("\n6. Тест 4: Товар с буквенным размером:")
print("-" * 80)
product4 = Product(
name="Коробка подарочная размер M",
category=category,
cost_price=50,
sale_price=100
)
product4.save()
print(f" Товар: {product4.name}")
print(f" Артикул: {product4.sku}")
print(f" Суффикс варианта: {product4.variant_suffix or 'нет'}")
# Тест 5: Товар с ручным указанием суффикса
print("\n7. Тест 5: Товар с ручным указанием суффикса:")
print("-" * 80)
product5 = Product(
name="Лента атласная красная",
category=category,
cost_price=20,
sale_price=40,
variant_suffix="RED"
)
product5.save()
print(f" Товар: {product5.name}")
print(f" Артикул: {product5.sku}")
print(f" Суффикс варианта: {product5.variant_suffix or 'нет'}")
# Тест 6: Комплект
print("\n8. Тест 6: Комплект (букет):")
print("-" * 80)
kit1 = ProductKit(
name="Букет Романтика",
slug="buket-romantika",
category=category,
pricing_method='fixed',
fixed_price=1500
)
kit1.save()
print(f" Комплект: {kit1.name}")
print(f" Артикул: {kit1.sku}")
# Тест 7: Еще один комплект
print("\n9. Тест 7: Еще один комплект:")
print("-" * 80)
kit2 = ProductKit(
name="Букет Весна",
slug="buket-vesna",
category=category,
pricing_method='fixed',
fixed_price=2000
)
kit2.save()
print(f" Комплект: {kit2.name}")
print(f" Артикул: {kit2.sku}")
# Проверяем финальное состояние счетчиков
print("\n10. Финальное состояние счетчиков:")
print("-" * 80)
for counter in SKUCounter.objects.all():
print(f" {counter.get_counter_type_display()}: {counter.current_value}")
# Показываем все созданные товары
print("\n11. Все созданные тестовые товары:")
print("-" * 80)
print(f" {'Название':<40} {'Артикул':<20} {'Суффикс':<10}")
print(" " + "-" * 70)
for p in Product.objects.filter(name__startswith=('Роза', 'Коробка', 'Лента')):
print(f" {p.name:<40} {p.sku:<20} {p.variant_suffix or '-':<10}")
print("\n12. Все созданные тестовые комплекты:")
print("-" * 80)
print(f" {'Название':<40} {'Артикул':<20}")
print(" " + "-" * 60)
for k in ProductKit.objects.filter(name__startswith='Букет'):
print(f" {k.name:<40} {k.sku:<20}")
print("\n" + "=" * 80)
print("ТЕСТИРОВАНИЕ ЗАВЕРШЕНО!")
print("=" * 80)
# Предложение удалить тестовые данные
print("\nВнимание: Тестовые данные НЕ удалены автоматически.")
print("Чтобы удалить их, выполните:")
print(" python manage.py shell")
print(" from products.models import Product, ProductKit, ProductCategory")
print(" Product.objects.filter(name__startswith=('Роза', 'Коробка', 'Лента')).delete()")
print(" ProductKit.objects.filter(name__startswith='Букет').delete()")
print(" ProductCategory.objects.filter(name='Розы').delete()")
if __name__ == '__main__':
test_sku_generation()