antifroud_check

This commit is contained in:
2024-12-17 21:39:33 +09:00
parent 66750015e2
commit 0bf2bb8dff
17 changed files with 1298 additions and 524 deletions

View File

@@ -5,7 +5,7 @@ from .models import (
UserHotel,
APIConfiguration,
Reservation,
FraudLog
Room
)
from django.urls import path
from django.shortcuts import redirect
@@ -27,8 +27,9 @@ class HotelForm(forms.ModelForm):
@admin.register(Hotel)
class HotelAdmin(admin.ModelAdmin):
list_display = ['name', 'hotel_id', 'pms', 'timezone', 'description']
list_display = ['name', 'hotel_id','room_count', 'pms', 'timezone', 'description']
list_filter = ['name', 'pms', 'timezone']
list_sorting = ['name', 'pms', 'room_count', 'timezone']
def sync_button(self, obj):
return format_html(
'<a class="button" href="{}">Синхронизировать</a>',
@@ -41,8 +42,36 @@ class HotelAdmin(admin.ModelAdmin):
path('sync/<int:hotel_id>/', self.sync_hotel_data),
]
return custom_urls + urls
def room_count(self, obj):
"""
Подсчитывает количество комнат, связанных с отелем.
"""
return Room.objects.filter(hotel=obj).count()
room_count.short_description = "Количество комнат"
def sync_button(self, obj):
"""
Кнопка синхронизации данных.
"""
return format_html(
'<a class="button" href="{}">Синхронизировать</a>',
f"/admin/hotels/sync/{obj.id}/"
)
def get_urls(self):
"""
Добавление кастомного URL для синхронизации.
"""
urls = super().get_urls()
custom_urls = [
path('sync/<int:hotel_id>/', self.sync_hotel_data),
]
return custom_urls + urls
def sync_hotel_data(self, request, hotel_id):
"""
Метод синхронизации данных отеля.
"""
try:
hotel = Hotel.objects.get(id=hotel_id)
client = APIClient(hotel.pms)
@@ -66,4 +95,9 @@ class ReservationAdmin(admin.ModelAdmin):
list_filter = ('hotel', 'room_number', 'room_type', 'check_in', 'check_out', 'status', 'price', 'discount')
ordering = ('-check_in',)
@admin.register(Room)
class RoomAdmin(admin.ModelAdmin):
list_display = ('hotel', 'number', 'external_id', 'description', 'created_at', 'updated_at')
search_fields = ('hotel', 'number', 'external_id', 'description')
list_filter = ('hotel', 'number', 'external_id','description', 'created_at', 'updated_at')
ordering = ('-hotel', '-number')