feat: добавлена интеграция синхронизации с Recommerce

This commit is contained in:
2026-01-12 21:45:31 +03:00
parent a5ab216934
commit 707b45b16d
13 changed files with 475 additions and 104 deletions

View File

@@ -26,12 +26,22 @@ class EncryptedCharField(models.CharField):
description = "Encrypted CharField using Fernet"
def __init__(self, *args, **kwargs):
# Сохраняем оригинальный max_length для deconstruct()
self._original_max_length = kwargs.get('max_length')
# Зашифрованные данные длиннее исходных, увеличиваем max_length
if 'max_length' in kwargs:
# Fernet добавляет ~100 байт overhead
kwargs['max_length'] = max(kwargs['max_length'] * 2, 500)
super().__init__(*args, **kwargs)
def deconstruct(self):
"""Возвращаем оригинальные параметры для миграций"""
name, path, args, kwargs = super().deconstruct()
# Восстанавливаем оригинальный max_length
if self._original_max_length is not None:
kwargs['max_length'] = self._original_max_length
return name, path, args, kwargs
def _get_fernet(self):
"""Получить инстанс Fernet с ключом из settings"""
key = getattr(settings, 'ENCRYPTION_KEY', None)