some icons added

This commit is contained in:
2024-12-24 18:40:10 +09:00
parent d5622f41a2
commit 12e99ca5c2
2 changed files with 104 additions and 65 deletions

View File

@@ -151,55 +151,55 @@ class UserActivityLogAdmin(admin.ModelAdmin):
get_hotel_name.short_description = "Отель"
get_room_number.short_description = "Комната"
from .views import import_selected_hotels
# Регистрируем admin класс для ImportedHotel
@admin.register(ImportedHotel)
class ImportedHotelAdmin(admin.ModelAdmin):
change_list_template = "antifroud/admin/import_hotels.html"
list_display = ("external_id", "display_name", "name", "created", "updated", "imported")
search_fields = ("name", "display_name", "external_id")
list_filter = ("name", "display_name", "external_id")
actions = ['mark_as_imported', 'delete_selected_hotels_action']
# from .views import import_selected_hotels
# # Регистрируем admin класс для ImportedHotel
# @admin.register(ImportedHotel)
# class ImportedHotelAdmin(admin.ModelAdmin):
# change_list_template = "antifroud/admin/import_hotels.html"
# list_display = ("external_id", "display_name", "name", "created", "updated", "imported")
# search_fields = ("name", "display_name", "external_id")
# list_filter = ("name", "display_name", "external_id")
# actions = ['mark_as_imported', 'delete_selected_hotels_action']
def get_urls(self):
# Получаем стандартные URL-адреса и добавляем наши
urls = super().get_urls()
custom_urls = [
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_hotel/<int:hotel_id>/', self.delete_hotel, name='delete_hotel'), # Изменили на URL параметр
]
return custom_urls + urls
# def get_urls(self):
# # Получаем стандартные URL-адреса и добавляем наши
# urls = super().get_urls()
# custom_urls = [
# 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_hotel/<int:hotel_id>/', self.delete_hotel, name='delete_hotel'), # Изменили на URL параметр
# ]
# return custom_urls + urls
@transaction.atomic
def delete_selected_hotels(self, request):
if request.method == 'POST':
selected = request.POST.get('selected', '')
if selected:
external_ids = selected.split(',')
deleted_count, _ = ImportedHotel.objects.filter(external_id__in=external_ids).delete()
messages.success(request, f"Удалено отелей: {deleted_count}")
else:
messages.warning(request, "Не выбрано ни одного отеля для удаления.")
return redirect('admin:antifroud_importedhotel_changelist')
# @transaction.atomic
# def delete_selected_hotels(self, request):
# if request.method == 'POST':
# selected = request.POST.get('selected', '')
# if selected:
# external_ids = selected.split(',')
# deleted_count, _ = ImportedHotel.objects.filter(external_id__in=external_ids).delete()
# messages.success(request, f"Удалено отелей: {deleted_count}")
# else:
# messages.warning(request, "Не выбрано ни одного отеля для удаления.")
# return redirect('admin:antifroud_importedhotel_changelist')
def delete_selected_hotels(self, request, queryset):
deleted_count, _ = queryset.delete()
self.message_user(request, f'{deleted_count} отелей было удалено.')
delete_selected_hotels.short_description = "Удалить выбранные отели"
# def delete_selected_hotels(self, request, queryset):
# deleted_count, _ = queryset.delete()
# self.message_user(request, f'{deleted_count} отелей было удалено.')
# delete_selected_hotels.short_description = "Удалить выбранные отели"
def mark_as_imported(self, request, queryset):
updated = queryset.update(imported=True)
self.message_user(request, f"Отмечено как импортированное: {updated}", messages.SUCCESS)
mark_as_imported.short_description = "Отметить выбранные как импортированные"
# def mark_as_imported(self, request, queryset):
# updated = queryset.update(imported=True)
# self.message_user(request, f"Отмечено как импортированное: {updated}", messages.SUCCESS)
# mark_as_imported.short_description = "Отметить выбранные как импортированные"
# Метод для удаления одного отеля
@transaction.atomic
def delete_hotel(self, request, hotel_id):
imported_hotel = get_object_or_404(ImportedHotel, id=hotel_id)
imported_hotel.delete()
messages.success(request, f"Отель {imported_hotel.name} успешно удалён.")
return redirect('admin:antifroud_importedhotel_changelist')
# # Метод для удаления одного отеля
# @transaction.atomic
# def delete_hotel(self, request, hotel_id):
# imported_hotel = get_object_or_404(ImportedHotel, id=hotel_id)
# imported_hotel.delete()
# messages.success(request, f"Отель {imported_hotel.name} успешно удалён.")
# return redirect('admin:antifroud_importedhotel_changelist')
@admin.register(SyncLog)
@@ -223,3 +223,14 @@ class ViolationLogAdmin(admin.ModelAdmin):
class Meta:
model = ViolationLog
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']

View File

@@ -202,6 +202,28 @@ JAZZMIN_SETTINGS = {
"welcome_sign": "Welcome to Touchh Admin", # Приветствие на странице входа
"copyright": "Touchh", # Кастомный текст в футере
"icons": {
# Приложения
"hotels": "fas fa-hotel",
"scheduler": "fas fa-clock",
"pms_integration": "fas fa-sync",
"antifraud": "fas fa-shield-alt",
"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",
@@ -219,9 +241,15 @@ JAZZMIN_SETTINGS = {
"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",
"dark_mode_theme": "darkly",
"footer": {
@@ -234,10 +262,10 @@ JAZZMIN_SETTINGS = {
],
"show_ui_builder": True,
"show_ui_builder_breadcrumbs": True,
"show_ui_builder_tabs": True,
"show_ui_builder_tabs_breadcrumbs": True,
"show_ui_builder": False,
"show_ui_builder_breadcrumbs": False,
"show_ui_builder_tabs": False,
"show_ui_builder_tabs_breadcrumbs": False,
}