migrations

This commit is contained in:
2024-12-06 15:09:12 +09:00
parent 02c1d79169
commit 1d99c6b57c
5 changed files with 274 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
from django.core.management.base import BaseCommand
from users.models import UserActivityLog
from asgiref.sync import sync_to_async
from django.db import connections
class Command(BaseCommand):
help = "Импорт данных из таблицы wpts_user_activity_log в локальную базу"
def handle(self, *args, **kwargs):
self.stdout.write("Начало импорта данных...")
try:
# Подключение к основной базе данных (wordpress)
with connections['wordpress'].cursor() as cursor:
cursor.execute("SELECT * FROM wpts_user_activity_log")
rows = cursor.fetchall()
# Сохранение данных в локальной базе
for row in rows:
UserActivityLog.objects.update_or_create(
id=row[0], # Используем поле id как уникальный ключ
defaults={
'user_id': row[1],
'ip': row[2],
'created': row[3],
'timestamp': row[4],
'date_time': row[5],
'referred': row[6],
'agent': row[7],
'platform': row[8],
'version': row[9],
'model': row[10],
'device': row[11],
'UAString': row[12],
'location': row[13],
'page_id': row[14],
'url_parameters': row[15],
'page_title': row[16],
'type': row[17],
'last_counter': row[18],
'hits': row[19],
'honeypot': row[20],
'reply': row[21],
'page_url': row[22],
}
)
self.stdout.write(self.style.SUCCESS("Импорт завершён успешно!"))
except Exception as e:
self.stderr.write(self.style.ERROR(f"Ошибка импорта: {str(e)}"))

View File

@@ -0,0 +1,56 @@
# Generated by Django 5.1.4 on 2024-12-06 03:59
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='LocalUserActivityLog',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('user_id', models.IntegerField()),
('activity_type', models.CharField(max_length=255)),
('timestamp', models.DateTimeField()),
('additional_data', models.JSONField(blank=True, null=True)),
],
),
migrations.CreateModel(
name='UserActivityLog',
fields=[
('id', models.BigAutoField(primary_key=True, serialize=False)),
('user_id', models.BigIntegerField()),
('ip', models.CharField(blank=True, max_length=100, null=True)),
('created', models.DateTimeField(auto_now_add=True)),
('timestamp', models.IntegerField()),
('date_time', models.DateTimeField()),
('referred', models.CharField(blank=True, max_length=255, null=True)),
('agent', models.CharField(blank=True, max_length=255, null=True)),
('platform', models.CharField(blank=True, max_length=255, null=True)),
('version', models.CharField(blank=True, max_length=50, null=True)),
('model', models.CharField(blank=True, max_length=255, null=True)),
('device', models.CharField(blank=True, max_length=50, null=True)),
('UAString', models.TextField(blank=True, null=True)),
('location', models.CharField(blank=True, max_length=255, null=True)),
('page_id', models.BigIntegerField(blank=True, null=True)),
('url_parameters', models.TextField(blank=True, null=True)),
('page_title', models.CharField(blank=True, max_length=255, null=True)),
('type', models.CharField(blank=True, max_length=50, null=True)),
('last_counter', models.IntegerField(blank=True, null=True)),
('hits', models.IntegerField(blank=True, null=True)),
('honeypot', models.BooleanField(blank=True, null=True)),
('reply', models.BooleanField(blank=True, null=True)),
('page_url', models.CharField(blank=True, max_length=255, null=True)),
],
options={
'verbose_name': 'User Activity Log',
'verbose_name_plural': 'User Activity Logs',
'db_table': 'user_activity_log',
},
),
]

View File

@@ -0,0 +1,44 @@
# Generated by Django 5.1.4 on 2024-12-06 04:14
import django.db.models.deletion
import uuid
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0002_localuseractivitylog_useractivitylog'),
]
operations = [
migrations.AlterModelOptions(
name='useractivitylog',
options={'verbose_name': 'Журнал активности', 'verbose_name_plural': 'Журналы активности'},
),
migrations.AlterField(
model_name='user',
name='confirmed',
field=models.BooleanField(default=False, verbose_name='Подтвержден'),
),
migrations.AlterField(
model_name='user',
name='role',
field=models.CharField(choices=[('admin', 'Администратор системы'), ('hotel_user', 'Сотрудник отеля')], default='hotel_user', max_length=20, verbose_name='Роль'),
),
migrations.AlterField(
model_name='userconfirmation',
name='confirmation_code',
field=models.UUIDField(default=uuid.uuid4, verbose_name='Код подтверждения'),
),
migrations.AlterField(
model_name='userconfirmation',
name='created_at',
field=models.DateTimeField(auto_now_add=True, verbose_name='Создан: '),
),
migrations.AlterField(
model_name='userconfirmation',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.user', verbose_name='Пользователь'),
),
]

View File

@@ -0,0 +1,66 @@
# Generated by Django 5.1.4 on 2024-12-06 04:26
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0003_alter_useractivitylog_options_alter_user_confirmed_and_more'),
]
operations = [
migrations.AlterModelOptions(
name='user',
options={'verbose_name': 'Пользователь', 'verbose_name_plural': 'Пользователи'},
),
migrations.AlterModelOptions(
name='userconfirmation',
options={'verbose_name': 'Подтверждение пользователя', 'verbose_name_plural': 'Подтверждения пользователей'},
),
migrations.AlterField(
model_name='user',
name='chat_id',
field=models.BigIntegerField(blank=True, null=True, unique=True, verbose_name='ID чата в телеграм'),
),
migrations.AlterField(
model_name='user',
name='telegram_id',
field=models.BigIntegerField(blank=True, null=True, unique=True, verbose_name='ID Телеграм'),
),
migrations.AlterField(
model_name='useractivitylog',
name='agent',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Браузер'),
),
migrations.AlterField(
model_name='useractivitylog',
name='created',
field=models.DateTimeField(auto_now_add=True, verbose_name='Создан'),
),
migrations.AlterField(
model_name='useractivitylog',
name='date_time',
field=models.DateTimeField(verbose_name='Дата'),
),
migrations.AlterField(
model_name='useractivitylog',
name='id',
field=models.BigAutoField(primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='useractivitylog',
name='ip',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='IP адрес'),
),
migrations.AlterField(
model_name='useractivitylog',
name='timestamp',
field=models.IntegerField(verbose_name='Время'),
),
migrations.AlterField(
model_name='useractivitylog',
name='user_id',
field=models.BigIntegerField(verbose_name='ID пользователя'),
),
]