some icons added
This commit is contained in:
@@ -151,55 +151,55 @@ class UserActivityLogAdmin(admin.ModelAdmin):
|
|||||||
get_hotel_name.short_description = "Отель"
|
get_hotel_name.short_description = "Отель"
|
||||||
get_room_number.short_description = "Комната"
|
get_room_number.short_description = "Комната"
|
||||||
|
|
||||||
from .views import import_selected_hotels
|
# from .views import import_selected_hotels
|
||||||
# Регистрируем admin класс для ImportedHotel
|
# # Регистрируем admin класс для ImportedHotel
|
||||||
@admin.register(ImportedHotel)
|
# @admin.register(ImportedHotel)
|
||||||
class ImportedHotelAdmin(admin.ModelAdmin):
|
# class ImportedHotelAdmin(admin.ModelAdmin):
|
||||||
change_list_template = "antifroud/admin/import_hotels.html"
|
# change_list_template = "antifroud/admin/import_hotels.html"
|
||||||
list_display = ("external_id", "display_name", "name", "created", "updated", "imported")
|
# list_display = ("external_id", "display_name", "name", "created", "updated", "imported")
|
||||||
search_fields = ("name", "display_name", "external_id")
|
# search_fields = ("name", "display_name", "external_id")
|
||||||
list_filter = ("name", "display_name", "external_id")
|
# list_filter = ("name", "display_name", "external_id")
|
||||||
actions = ['mark_as_imported', 'delete_selected_hotels_action']
|
# actions = ['mark_as_imported', 'delete_selected_hotels_action']
|
||||||
|
|
||||||
def get_urls(self):
|
# def get_urls(self):
|
||||||
# Получаем стандартные URL-адреса и добавляем наши
|
# # Получаем стандартные URL-адреса и добавляем наши
|
||||||
urls = super().get_urls()
|
# urls = super().get_urls()
|
||||||
custom_urls = [
|
# custom_urls = [
|
||||||
path('import_selected_hotels/', import_selected_hotels, name='antifroud_importedhotels_import_selected_hotels'),
|
# path('import_selected_hotels/', import_selected_hotels, name='antifroud_importedhotels_import_selected_hotels'),
|
||||||
path('delete_selected_hotels/', self.delete_selected_hotels, name='delete_selected_hotels'),
|
# path('delete_selected_hotels/', self.delete_selected_hotels, name='delete_selected_hotels'),
|
||||||
path('delete_hotel/<int:hotel_id>/', self.delete_hotel, name='delete_hotel'), # Изменили на URL параметр
|
# path('delete_hotel/<int:hotel_id>/', self.delete_hotel, name='delete_hotel'), # Изменили на URL параметр
|
||||||
]
|
# ]
|
||||||
return custom_urls + urls
|
# return custom_urls + urls
|
||||||
|
|
||||||
@transaction.atomic
|
# @transaction.atomic
|
||||||
def delete_selected_hotels(self, request):
|
# def delete_selected_hotels(self, request):
|
||||||
if request.method == 'POST':
|
# if request.method == 'POST':
|
||||||
selected = request.POST.get('selected', '')
|
# selected = request.POST.get('selected', '')
|
||||||
if selected:
|
# if selected:
|
||||||
external_ids = selected.split(',')
|
# external_ids = selected.split(',')
|
||||||
deleted_count, _ = ImportedHotel.objects.filter(external_id__in=external_ids).delete()
|
# deleted_count, _ = ImportedHotel.objects.filter(external_id__in=external_ids).delete()
|
||||||
messages.success(request, f"Удалено отелей: {deleted_count}")
|
# messages.success(request, f"Удалено отелей: {deleted_count}")
|
||||||
else:
|
# else:
|
||||||
messages.warning(request, "Не выбрано ни одного отеля для удаления.")
|
# messages.warning(request, "Не выбрано ни одного отеля для удаления.")
|
||||||
return redirect('admin:antifroud_importedhotel_changelist')
|
# return redirect('admin:antifroud_importedhotel_changelist')
|
||||||
|
|
||||||
def delete_selected_hotels(self, request, queryset):
|
# def delete_selected_hotels(self, request, queryset):
|
||||||
deleted_count, _ = queryset.delete()
|
# deleted_count, _ = queryset.delete()
|
||||||
self.message_user(request, f'{deleted_count} отелей было удалено.')
|
# self.message_user(request, f'{deleted_count} отелей было удалено.')
|
||||||
delete_selected_hotels.short_description = "Удалить выбранные отели"
|
# delete_selected_hotels.short_description = "Удалить выбранные отели"
|
||||||
|
|
||||||
def mark_as_imported(self, request, queryset):
|
# def mark_as_imported(self, request, queryset):
|
||||||
updated = queryset.update(imported=True)
|
# updated = queryset.update(imported=True)
|
||||||
self.message_user(request, f"Отмечено как импортированное: {updated}", messages.SUCCESS)
|
# self.message_user(request, f"Отмечено как импортированное: {updated}", messages.SUCCESS)
|
||||||
mark_as_imported.short_description = "Отметить выбранные как импортированные"
|
# mark_as_imported.short_description = "Отметить выбранные как импортированные"
|
||||||
|
|
||||||
# Метод для удаления одного отеля
|
# # Метод для удаления одного отеля
|
||||||
@transaction.atomic
|
# @transaction.atomic
|
||||||
def delete_hotel(self, request, hotel_id):
|
# def delete_hotel(self, request, hotel_id):
|
||||||
imported_hotel = get_object_or_404(ImportedHotel, id=hotel_id)
|
# imported_hotel = get_object_or_404(ImportedHotel, id=hotel_id)
|
||||||
imported_hotel.delete()
|
# imported_hotel.delete()
|
||||||
messages.success(request, f"Отель {imported_hotel.name} успешно удалён.")
|
# messages.success(request, f"Отель {imported_hotel.name} успешно удалён.")
|
||||||
return redirect('admin:antifroud_importedhotel_changelist')
|
# return redirect('admin:antifroud_importedhotel_changelist')
|
||||||
|
|
||||||
|
|
||||||
@admin.register(SyncLog)
|
@admin.register(SyncLog)
|
||||||
@@ -222,4 +222,15 @@ class ViolationLogAdmin(admin.ModelAdmin):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ViolationLog
|
model = ViolationLog
|
||||||
fields = ['hotel', 'room_number', 'created_at', 'violation_type', 'violation_details', 'detected_at']
|
fields = ['hotel', 'room_number', 'created_at', 'violation_type', 'violation_details', 'detected_at']
|
||||||
|
|
||||||
|
@admin.register(RoomDiscrepancy)
|
||||||
|
class RoomDiscrepancyAdmin(admin.ModelAdmin):
|
||||||
|
list_display = ['hotel', 'room_number', 'booking_id','created_at', 'check_in_date_expected','check_in_date_actual','discrepancy_type']
|
||||||
|
search_fields = ['hotel', 'room_number', 'booking_id','created_at', 'check_in_date_expected','check_in_date_actual','discrepancy_type']
|
||||||
|
list_filter = ['hotel', 'room_number', 'booking_id','created_at', 'check_in_date_expected','check_in_date_actual','discrepancy_type']
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = RoomDiscrepancy
|
||||||
|
fields = ['hotel', 'room_number', 'booking_id','created_at', 'check_in_date_expected','check_in_date_actual','discrepancy_type']
|
||||||
|
|
||||||
@@ -202,26 +202,54 @@ JAZZMIN_SETTINGS = {
|
|||||||
"welcome_sign": "Welcome to Touchh Admin", # Приветствие на странице входа
|
"welcome_sign": "Welcome to Touchh Admin", # Приветствие на странице входа
|
||||||
"copyright": "Touchh", # Кастомный текст в футере
|
"copyright": "Touchh", # Кастомный текст в футере
|
||||||
"icons": {
|
"icons": {
|
||||||
"auth": "fas fa-users-cog",
|
# Приложения
|
||||||
"users": "fas fa-user-circle",
|
|
||||||
"hotels": "fas fa-hotel",
|
"hotels": "fas fa-hotel",
|
||||||
"hotels.hotel": "fas fa-hotel",
|
|
||||||
"hotels.room":"fas fa-bed",
|
|
||||||
"hotels.reservation":"fas fa-calendar-week",
|
|
||||||
"hotels.userhotel":"fas fa-user-shield",
|
|
||||||
"app_settings": "fas fa-wrench",
|
|
||||||
"app_settings.telegramsettings":"fab fa-telegram",
|
|
||||||
"app_settings.emailsettings":"fab fa-at",
|
|
||||||
"app_settings.localdatabase":"fas fa-database",
|
|
||||||
"app_settings.globalhotelsettings":"fas fa-hammer",
|
|
||||||
"app_settings.globalsystemsettings":"fas fa-cogs",
|
|
||||||
"scheduler": "fas fa-clock",
|
"scheduler": "fas fa-clock",
|
||||||
"pms_integration": "fas fa-sync",
|
"pms_integration": "fas fa-sync",
|
||||||
"antifroud": "fas fa-shield-alt",
|
"antifraud": "fas fa-shield-alt",
|
||||||
"antifroud.externaldbsettings": "fas fa-database",
|
"app_settings": "fas fa-wrench",
|
||||||
|
|
||||||
|
# Модели
|
||||||
|
"hotels.reservation": "fas fa-calendar-check", # Бронирования
|
||||||
|
"hotels.userhotel": "fas fa-user-shield", # Пользователи отеля
|
||||||
|
"app_settings.telegramsettings": "fab fa-telegram", # Настройки Telegram
|
||||||
|
"app_settings.emailsettings": "fas fa-envelope", # Настройки Email
|
||||||
|
"app_settings.localdatabase": "fas fa-database", # Локальная база данных
|
||||||
|
"app_settings.globalhotelsettings": "fas fa-tools", # Глобальные настройки отеля
|
||||||
|
"app_settings.globalsystemsettings": "fas fa-cogs", # Глобальные системные настройки
|
||||||
|
"antifraud.externaldbsettings": "fas fa-server", # Подключение к внешним базам данных
|
||||||
|
"antifraud.roomdiscrepancy": "fas fa-exclamation-circle", # Несоответствия в комнатах
|
||||||
|
"scheduler.scheduledtask": "fas fa-tasks", # Запланированные задачи
|
||||||
|
"antifraud.violationlog": "fas fa-ban", # Журнал нарушений
|
||||||
|
"hotels.importedhotel": "fas fa-download", # Импортированные отели
|
||||||
|
"hotels.synclog": "fas fa-sync-alt", # Журнал синхронизации
|
||||||
|
|
||||||
|
"auth": "fas fa-users-cog",
|
||||||
|
"users": "fas fa-user-circle",
|
||||||
|
"hotels": "fas fa-hotel",
|
||||||
|
"hotels.hotel": "fas fa-hotel",
|
||||||
|
"hotels.room":"fas fa-bed",
|
||||||
|
"hotels.reservation":"fas fa-calendar-week",
|
||||||
|
"hotels.userhotel":"fas fa-user-shield",
|
||||||
|
"app_settings": "fas fa-wrench",
|
||||||
|
"app_settings.telegramsettings":"fab fa-telegram",
|
||||||
|
"app_settings.emailsettings":"fab fa-at",
|
||||||
|
"app_settings.localdatabase":"fas fa-database",
|
||||||
|
"app_settings.globalhotelsettings":"fas fa-hammer",
|
||||||
|
"app_settings.globalsystemsettings":"fas fa-cogs",
|
||||||
|
"scheduler": "fas fa-clock",
|
||||||
|
"pms_integration": "fas fa-sync",
|
||||||
|
"antifroud": "fas fa-shield-alt",
|
||||||
|
"antifroud.externaldbsettings": "fas fa-database",
|
||||||
|
"antifroud.roomdiscrepancy": "fas fa-user-secret",
|
||||||
|
"antifroud.violationlog": "fas fa-ban",
|
||||||
|
"antifroud.importedhotel": "fas fa-download",
|
||||||
|
"antifroud.synclog": "fas fa-sync-alt",
|
||||||
|
"antifroud.useractivitylog": "fas fa-qrcode",
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
},
|
|
||||||
"theme": "sandstone",
|
"theme": "sandstone",
|
||||||
"dark_mode_theme": "darkly",
|
"dark_mode_theme": "darkly",
|
||||||
"footer": {
|
"footer": {
|
||||||
@@ -234,10 +262,10 @@ JAZZMIN_SETTINGS = {
|
|||||||
],
|
],
|
||||||
|
|
||||||
|
|
||||||
"show_ui_builder": True,
|
"show_ui_builder": False,
|
||||||
"show_ui_builder_breadcrumbs": True,
|
"show_ui_builder_breadcrumbs": False,
|
||||||
"show_ui_builder_tabs": True,
|
"show_ui_builder_tabs": False,
|
||||||
"show_ui_builder_tabs_breadcrumbs": True,
|
"show_ui_builder_tabs_breadcrumbs": False,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user