Fix migrations
This commit is contained in:
@@ -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("Проверка завершена.")
|
||||||
|
|||||||
@@ -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',
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -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}"
|
||||||
|
|||||||
18
hotels/migrations/0004_reservation_fraud_checked.py
Normal file
18
hotels/migrations/0004_reservation_fraud_checked.py
Normal 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='Проверено на несоответствия'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user