migrations
This commit is contained in:
@@ -0,0 +1,58 @@
|
|||||||
|
# Generated by Django 5.1.4 on 2024-12-06 04:26
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hotels', '0002_initial'),
|
||||||
|
('users', '0004_alter_user_options_alter_userconfirmation_options_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name='hotel',
|
||||||
|
options={'verbose_name': 'Отель', 'verbose_name_plural': 'Отели'},
|
||||||
|
),
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name='userhotel',
|
||||||
|
options={'verbose_name': 'Пользователь отеля', 'verbose_name_plural': 'Пользователи отелей'},
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='hotel',
|
||||||
|
name='api_key',
|
||||||
|
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='API ключ'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='hotel',
|
||||||
|
name='created_at',
|
||||||
|
field=models.DateTimeField(auto_now_add=True, verbose_name='Создан'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='hotel',
|
||||||
|
name='name',
|
||||||
|
field=models.CharField(max_length=255, verbose_name='Название отеля'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='hotel',
|
||||||
|
name='pms_type',
|
||||||
|
field=models.CharField(choices=[('bnovo', 'Bnovo'), ('travelline', 'Travel Line')], max_length=50, verbose_name='PMS система'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='hotel',
|
||||||
|
name='public_key',
|
||||||
|
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Публичный ключ'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='userhotel',
|
||||||
|
name='hotel',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='hotels.hotel', verbose_name='Отель'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='userhotel',
|
||||||
|
name='user',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.user', verbose_name='Пользователь'),
|
||||||
|
),
|
||||||
|
]
|
||||||
50
users/management/commands/import_user_activity_log.py
Normal file
50
users/management/commands/import_user_activity_log.py
Normal 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)}"))
|
||||||
@@ -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',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -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='Пользователь'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -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 пользователя'),
|
||||||
|
),
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user