- Создано приложение integrations с базовой архитектурой - BaseIntegration (абстрактная модель) для всех интеграций - BaseIntegrationService (абстрактный сервисный класс) - IntegrationConfig модель для тумблеров в system_settings - Добавлена вкладка "Интеграции" в системные настройки - Заготовка UI с тумблерами для включения интеграций Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
from django.db import models
|
|
|
|
|
|
class IntegrationConfig(models.Model):
|
|
"""
|
|
Глобальные тумблеры для включения/выключения интеграций.
|
|
Одна запись на доступную интеграцию.
|
|
"""
|
|
|
|
INTEGRATION_CHOICES = [
|
|
('woocommerce', 'WooCommerce'),
|
|
# Здесь добавлять новые интеграции:
|
|
# ('shopify', 'Shopify'),
|
|
# ('telegram', 'Telegram'),
|
|
]
|
|
|
|
integration_id = models.CharField(
|
|
max_length=50,
|
|
choices=INTEGRATION_CHOICES,
|
|
unique=True,
|
|
verbose_name="Интеграция"
|
|
)
|
|
|
|
is_enabled = models.BooleanField(
|
|
default=False,
|
|
verbose_name="Включена",
|
|
help_text="Глобальное включение интеграции для тенанта"
|
|
)
|
|
|
|
last_sync_at = models.DateTimeField(
|
|
null=True,
|
|
blank=True,
|
|
verbose_name="Последняя синхронизация"
|
|
)
|
|
|
|
created_at = models.DateTimeField(
|
|
auto_now_add=True,
|
|
verbose_name="Дата создания"
|
|
)
|
|
|
|
updated_at = models.DateTimeField(
|
|
auto_now=True,
|
|
verbose_name="Дата обновления"
|
|
)
|
|
|
|
class Meta:
|
|
verbose_name = "Настройка интеграции"
|
|
verbose_name_plural = "Настройки интеграций"
|
|
ordering = ['integration_id']
|
|
|
|
def __str__(self):
|
|
status = "вкл" if self.is_enabled else "выкл"
|
|
return f"{self.get_integration_id_display()}: {status}"
|