feat(integrations): архитектура включения/выключения интеграций
- Удалена лишняя модель IntegrationConfig из system_settings - Singleton-паттерн: одна запись на интеграцию с is_active тумблером - Добавлено шифрование токенов (EncryptedCharField с Fernet AES-128) - UI: тумблеры слева, форма настроек справа - API endpoints: toggle, settings, form_data - Модель Recommerce: store_url + api_token (x-auth-token) - Модель WooCommerce: store_url + consumer_key/secret Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -611,5 +611,23 @@ CELERY_BEAT_SCHEDULE = {
|
||||
# ============================================
|
||||
|
||||
# Увеличиваем лимиты для загрузки больших списков (10 000+ клиентов)
|
||||
DATA_UPLOAD_MAX_NUMBER_FIELDS = 50000
|
||||
DATA_UPLOAD_MAX_NUMBER_FIELDS = 50000
|
||||
DATA_UPLOAD_MAX_MEMORY_SIZE = 104857600 # 100MB
|
||||
|
||||
|
||||
# ============================================
|
||||
# ENCRYPTION SETTINGS (for sensitive data like API tokens)
|
||||
# ============================================
|
||||
|
||||
# Ключ шифрования для EncryptedCharField (Fernet AES-128)
|
||||
# ВАЖНО: Сгенерировать один раз и сохранить в .env!
|
||||
# python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
|
||||
ENCRYPTION_KEY = env('ENCRYPTION_KEY', default=None)
|
||||
|
||||
# Проверка наличия ключа в production
|
||||
if not DEBUG and not ENCRYPTION_KEY:
|
||||
import warnings
|
||||
warnings.warn(
|
||||
"ENCRYPTION_KEY not set! Encrypted fields will fail. "
|
||||
"Generate with: python -c \"from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())\""
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user