30 lines
1.4 KiB
Python
30 lines
1.4 KiB
Python
from django.core.management.base import BaseCommand
|
|
from users.models import WordPressUserActivityLog
|
|
from users.models import LocalUserActivityLog
|
|
from asgiref.sync import sync_to_async
|
|
|
|
class Command(BaseCommand):
|
|
help = "Синхронизация данных из WordPress в локальную базу данных"
|
|
|
|
def handle(self, *args, **kwargs):
|
|
self.stdout.write("Начало синхронизации данных...")
|
|
try:
|
|
# Получаем данные из WordPress
|
|
wordpress_logs = WordPressUserActivityLog.objects.using('wordpress').all()
|
|
|
|
for log in wordpress_logs:
|
|
# Сохраняем данные в локальную базу
|
|
LocalUserActivityLog.objects.update_or_create(
|
|
id=log.id, # Используем уникальный идентификатор
|
|
defaults={
|
|
'user_id': log.user_id,
|
|
'activity_type': log.activity_type,
|
|
'timestamp': log.timestamp,
|
|
'additional_data': log.additional_data,
|
|
},
|
|
)
|
|
|
|
self.stdout.write(self.style.SUCCESS("Синхронизация завершена успешно!"))
|
|
except Exception as e:
|
|
self.stderr.write(self.style.ERROR(f"Ошибка синхронизации: {str(e)}"))
|