Shelter PMS fully functional
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# Generated by Django 5.1.4 on 2024-12-05 23:39
|
||||
# Generated by Django 5.1.4 on 2024-12-09 04:50
|
||||
|
||||
import django.contrib.auth.models
|
||||
import django.contrib.auth.validators
|
||||
@@ -17,6 +17,49 @@ class Migration(migrations.Migration):
|
||||
]
|
||||
|
||||
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, verbose_name='ID')),
|
||||
('user_id', models.BigIntegerField(verbose_name='ID пользователя')),
|
||||
('ip', models.CharField(blank=True, max_length=100, null=True, verbose_name='IP адрес')),
|
||||
('created', models.DateTimeField(auto_now_add=True, verbose_name='Создан')),
|
||||
('timestamp', models.IntegerField(verbose_name='Время')),
|
||||
('date_time', models.DateTimeField(verbose_name='Дата')),
|
||||
('referred', models.CharField(blank=True, max_length=255, null=True)),
|
||||
('agent', models.CharField(blank=True, max_length=255, null=True, verbose_name='Браузер')),
|
||||
('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': 'Журнал активности',
|
||||
'verbose_name_plural': 'Журналы активности',
|
||||
'db_table': 'user_activity_log',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='User',
|
||||
fields=[
|
||||
@@ -31,29 +74,47 @@ class Migration(migrations.Migration):
|
||||
('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
|
||||
('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
|
||||
('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
|
||||
('telegram_id', models.BigIntegerField(blank=True, null=True, unique=True, verbose_name='Telegram ID')),
|
||||
('chat_id', models.BigIntegerField(blank=True, null=True, unique=True, verbose_name='Chat ID')),
|
||||
('role', models.CharField(choices=[('admin', 'Administrator'), ('hotel_user', 'Hotel User')], default='hotel_user', max_length=20, verbose_name='Role')),
|
||||
('confirmed', models.BooleanField(default=False, verbose_name='Confirmed')),
|
||||
('telegram_id', models.BigIntegerField(blank=True, null=True, unique=True, verbose_name='ID Телеграм')),
|
||||
('chat_id', models.BigIntegerField(blank=True, null=True, unique=True, verbose_name='ID чата в телеграм')),
|
||||
('role', models.CharField(choices=[('admin', 'Администратор системы'), ('hotel_user', 'Сотрудник отеля')], default='hotel_user', max_length=20, verbose_name='Роль')),
|
||||
('confirmed', models.BooleanField(default=False, verbose_name='Подтвержден')),
|
||||
('groups', models.ManyToManyField(blank=True, related_name='custom_user_set', to='auth.group')),
|
||||
('user_permissions', models.ManyToManyField(blank=True, related_name='custom_user_set', to='auth.permission')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'user',
|
||||
'verbose_name_plural': 'users',
|
||||
'abstract': False,
|
||||
'verbose_name': 'Пользователь',
|
||||
'verbose_name_plural': 'Пользователи',
|
||||
},
|
||||
managers=[
|
||||
('objects', django.contrib.auth.models.UserManager()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='NotificationSettings',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('telegram_enabled', models.BooleanField(default=True, verbose_name='Уведомления в Telegram')),
|
||||
('email_enabled', models.BooleanField(default=False, verbose_name='Уведомления по Email')),
|
||||
('email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='Email для уведомлений')),
|
||||
('notification_time', models.TimeField(default='09:00', verbose_name='Время отправки уведомлений')),
|
||||
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='users.user', verbose_name='Пользователь')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Способ оповещения',
|
||||
'verbose_name_plural': 'Способы оповещений',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UserConfirmation',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('confirmation_code', models.UUIDField(default=uuid.uuid4, verbose_name='Confirmation Code')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.user', verbose_name='User')),
|
||||
('confirmation_code', models.UUIDField(default=uuid.uuid4, verbose_name='Код подтверждения')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Создан: ')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.user', verbose_name='Пользователь')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Подтверждение пользователя',
|
||||
'verbose_name_plural': 'Подтверждения пользователей',
|
||||
},
|
||||
),
|
||||
]
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
# 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',
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -1,44 +0,0 @@
|
||||
# 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='Пользователь'),
|
||||
),
|
||||
]
|
||||
@@ -1,66 +0,0 @@
|
||||
# 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 пользователя'),
|
||||
),
|
||||
]
|
||||
@@ -1,29 +0,0 @@
|
||||
# Generated by Django 5.1.4 on 2024-12-06 12:01
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('users', '0004_alter_user_options_alter_userconfirmation_options_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='NotificationSettings',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('telegram_enabled', models.BooleanField(default=True, verbose_name='Уведомления в Telegram')),
|
||||
('email_enabled', models.BooleanField(default=False, verbose_name='Уведомления по Email')),
|
||||
('email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='Email для уведомлений')),
|
||||
('notification_time', models.TimeField(default='09:00', verbose_name='Время отправки уведомлений')),
|
||||
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='users.user', verbose_name='Пользователь')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Способ оповещения',
|
||||
'verbose_name_plural': 'Способы оповещений',
|
||||
},
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user