diff --git a/mysql-apt-config_0.8.24-1_all.deb b/mysql-apt-config_0.8.24-1_all.deb new file mode 100644 index 00000000..631b140b Binary files /dev/null and b/mysql-apt-config_0.8.24-1_all.deb differ diff --git a/touchh/settings.py b/touchh/settings.py index a0c9dc57..850945c5 100644 --- a/touchh/settings.py +++ b/touchh/settings.py @@ -83,10 +83,16 @@ DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', - } + }, + 'wordpress': { + 'ENGINE': 'django.db.backends.mysql', + 'NAME': 'u1510415_wp832', + 'USER': 'root', + 'PASSWORD': 'R0sebud', + 'HOST': '0.0.0.0', + 'PORT': '3306', + }, } - - # Password validation # https://docs.djangoproject.com/en/5.1/ref/settings/#auth-password-validators diff --git a/users/management/commands/sync_activity_log.py b/users/management/commands/sync_activity_log.py new file mode 100644 index 00000000..97cc8235 --- /dev/null +++ b/users/management/commands/sync_activity_log.py @@ -0,0 +1,29 @@ +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)}")) diff --git a/users/models.py b/users/models.py index 4760f274..dd32d1fd 100644 --- a/users/models.py +++ b/users/models.py @@ -48,4 +48,26 @@ class UserConfirmation(models.Model): created_at = models.DateTimeField(auto_now_add=True, verbose_name="Created At") def __str__(self): - return f"Confirmation for {self.user.username} - {self.confirmation_code}" \ No newline at end of file + return f"Confirmation for {self.user.username} - {self.confirmation_code}" + +class WordPressUserActivityLog(models.Model): + id = models.AutoField(primary_key=True) + user_id = models.IntegerField() + activity_type = models.CharField(max_length=255) + timestamp = models.DateTimeField() + additional_data = models.JSONField(null=True, blank=True) + + class Meta: + db_table = 'wpts_user_activity_log' # Название таблицы в базе данных WordPress + managed = False # Django не будет управлять этой таблицей + app_label = 'Users' # Замените на имя вашего приложения + +class LocalUserActivityLog(models.Model): + id = models.AutoField(primary_key=True) + user_id = models.IntegerField() + activity_type = models.CharField(max_length=255) + timestamp = models.DateTimeField() + additional_data = models.JSONField(null=True, blank=True) + + def __str__(self): + return f"User {self.user_id} - {self.activity_type}" \ No newline at end of file