Fix migrations

This commit is contained in:
zorn
2025-02-01 19:49:46 +10:00
parent 6b98cda299
commit aca071f450
5 changed files with 40 additions and 6 deletions

View File

@@ -2,6 +2,7 @@ from datetime import timedelta
from urllib.parse import parse_qs from urllib.parse import parse_qs
from django.utils import timezone from django.utils import timezone
from django.db.models import Q from django.db.models import Q
from django.db import connection
from hotels.models import Reservation, Hotel from hotels.models import Reservation, Hotel
from .models import UserActivityLog, ViolationLog, RoomDiscrepancy from .models import UserActivityLog, ViolationLog, RoomDiscrepancy
from touchh.utils.log import CustomLogger from touchh.utils.log import CustomLogger
@@ -35,7 +36,7 @@ class ReservationChecker:
def fetch_user_logs(self): def fetch_user_logs(self):
try: try:
self.log_info("Начинается извлечение логов активности пользователей.") self.log_info("Начинается извлечение логов активности пользователей.")
user_logs = UserActivityLog.objects.filter(created__range=(self.start_time, self.end_time)) user_logs = UserActivityLog.objects.filter(fraud_checked=False)
self.log_info(f"Найдено {user_logs.count()} логов активности для анализа.") self.log_info(f"Найдено {user_logs.count()} логов активности для анализа.")
return user_logs return user_logs
except Exception as e: except Exception as e:
@@ -45,9 +46,7 @@ class ReservationChecker:
def fetch_reservations(self): def fetch_reservations(self):
try: try:
self.log_info("Начинается извлечение бронирований.") self.log_info("Начинается извлечение бронирований.")
reservations = Reservation.objects.filter( reservations = Reservation.objects.filter(fraud_checked=False)
Q(check_in__lte=self.end_time) & Q(check_out__gte=self.start_time)
)
self.log_info(f"Найдено {reservations.count()} бронирований для анализа.") self.log_info(f"Найдено {reservations.count()} бронирований для анализа.")
return reservations return reservations
except Exception as e: except Exception as e:
@@ -127,7 +126,7 @@ class ReservationChecker:
self.log_info(f"Запуск проверки с {self.start_time} по {self.end_time}.") self.log_info(f"Запуск проверки с {self.start_time} по {self.end_time}.")
try: try:
self.find_violations() self.find_violations()
self.save_violations() #self.save_violations()
except Exception as e: except Exception as e:
self.log_error(f"Ошибка при выполнении проверки: {e}") self.log_error(f"Ошибка при выполнении проверки: {e}")
self.log_info("Проверка завершена.") self.log_info("Проверка завершена.")

View File

@@ -0,0 +1,17 @@
# Generated by Django 5.1.4 on 2025-02-01 09:48
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('antifroud', '0006_alter_roomdiscrepancy_fraud_checked_and_more'),
]
operations = [
migrations.RemoveField(
model_name='roomdiscrepancy',
name='fraud_checked',
),
]

View File

@@ -115,7 +115,6 @@ class RoomDiscrepancy(models.Model):
verbose_name="Тип несоответствия" verbose_name="Тип несоответствия"
) )
created_at = models.DateTimeField(auto_now_add=True, verbose_name="Дата создания") created_at = models.DateTimeField(auto_now_add=True, verbose_name="Дата создания")
fraud_checked = models.BooleanField(default=False, verbose_name="Проверено на несоответствия", db_index=True)
def __str__(self): def __str__(self):
return f"{self.hotel.name} - Room {self.room_number}: {self.discrepancy_type}" return f"{self.hotel.name} - Room {self.room_number}: {self.discrepancy_type}"

View File

@@ -0,0 +1,18 @@
# Generated by Django 5.1.4 on 2025-02-01 09:48
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('hotels', '0003_rename_external_id_hotel_external_id_pms_and_more'),
]
operations = [
migrations.AddField(
model_name='reservation',
name='fraud_checked',
field=models.BooleanField(db_index=True, default=False, verbose_name='Проверено на несоответствия'),
),
]

View File

@@ -116,6 +116,7 @@ class Reservation(models.Model):
status = models.CharField(max_length=50, verbose_name="Статус") status = models.CharField(max_length=50, verbose_name="Статус")
price = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True, verbose_name="Цена") price = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True, verbose_name="Цена")
discount = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True, verbose_name="Скидка") discount = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True, verbose_name="Скидка")
fraud_checked = models.BooleanField(default=False, verbose_name="Проверено на несоответствия", db_index=True)
def clean(self): def clean(self):
if self.check_out and self.check_in and self.check_out <= self.check_in: if self.check_out and self.check_in and self.check_out <= self.check_in: