Merge pull request 'zorn-dev' (#9) from zorn-dev into PMSManager_refactor

Reviewed-on: SmartSolTech/touchh_bot#9
This commit is contained in:
2025-02-01 06:56:02 +00:00
4 changed files with 63 additions and 9 deletions

View File

@@ -0,0 +1,8 @@
from django.core.management.base import BaseCommand
from antifroud.check_fraud import run_reservation_check
class Command(BaseCommand):
help = "Запуск проверки на несоответствия"
def handle(self, *args, **options):
run_reservation_check()

View File

@@ -0,0 +1,28 @@
# Generated by Django 5.1.4 on 2025-02-01 06:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('antifroud', '0002_initial'),
]
operations = [
migrations.AlterField(
model_name='roomdiscrepancy',
name='booking_id',
field=models.CharField(max_length=255, null=True, verbose_name='ID бронирования'),
),
migrations.AlterField(
model_name='roomdiscrepancy',
name='check_in_date_actual',
field=models.DateField(null=True, verbose_name='Фактическая дата заселения'),
),
migrations.AlterField(
model_name='roomdiscrepancy',
name='check_in_date_expected',
field=models.DateField(null=True, verbose_name='Ожидаемая дата заселения'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 5.1.4 on 2025-02-01 06:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('antifroud', '0003_alter_roomdiscrepancy_booking_id_and_more'),
]
operations = [
migrations.AlterField(
model_name='roomdiscrepancy',
name='discrepancy_type',
field=models.CharField(choices=[('early', 'Раннее заселение'), ('late', 'Позднее заселение'), ('missed', 'Неявка'), ('no_booking', 'Без брони')], max_length=50, verbose_name='Тип несоответствия'),
),
]

View File

@@ -42,7 +42,7 @@ class UserActivityLog(models.Model):
return "Нет данных"
# Изменение имени столбца
class Meta:
indexes = [
models.Index(fields=["external_id"], name="idx_external_id"),
@@ -55,7 +55,7 @@ class UserActivityLog(models.Model):
verbose_name_plural = "Логи активности пользователей"
def __str__(self):
return f"UserActivityLog {self.id}: {self.page_title}"
class Meta:
verbose_name = "Регистрация посетителей"
verbose_name_plural = "Регистрации посетителей"
@@ -63,7 +63,7 @@ class UserActivityLog(models.Model):
def get_location(self):
if not self.ip:
return "IP-адрес отсутствует"
try:
db_path = f"{settings.GEOIP_PATH}/GeoLite2-City.mmdb"
geoip_reader = Reader(db_path)
@@ -107,12 +107,12 @@ class ExternalDBSettings(models.Model):
class RoomDiscrepancy(models.Model):
hotel = models.ForeignKey(Hotel, on_delete=models.CASCADE, verbose_name="Отель")
room_number = models.CharField(max_length=50, verbose_name="Номер комнаты")
booking_id = models.CharField(max_length=255, verbose_name="ID бронирования")
check_in_date_expected = models.DateField(verbose_name="Ожидаемая дата заселения")
check_in_date_actual = models.DateField(verbose_name="Фактическая дата заселения")
booking_id = models.CharField(max_length=255, null=True, verbose_name="ID бронирования")
check_in_date_expected = models.DateField(null=True, verbose_name="Ожидаемая дата заселения")
check_in_date_actual = models.DateField(null=True, verbose_name="Фактическая дата заселения")
discrepancy_type = models.CharField(
max_length=50,
choices=[("early", "Раннее заселение"), ("late", "Позднее заселение"), ("missed", "Неявка")],
choices=[("early", "Раннее заселение"), ("late", "Позднее заселение"), ("missed", "Неявка"), ("no_booking", "Без брони")],
verbose_name="Тип несоответствия"
)
created_at = models.DateTimeField(auto_now_add=True, verbose_name="Дата создания")
@@ -216,8 +216,8 @@ class SyncLog(models.Model):
def __str__(self):
return f"Отель: {self.hotel.name} | Получено: {self.recieved_records} | Обработано: {self.processed_records}"
class ViolationLog(models.Model):
hotel = models.ForeignKey(Hotel, on_delete=models.CASCADE, verbose_name="Отель")
room_number = models.CharField(max_length=50, verbose_name="Номер комнаты", null=True, blank=True)