some icons added
This commit is contained in:
@@ -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']
|
||||
|
||||
@@ -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,
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user