from datetime import timedelta, datetime from django.contrib.auth.models import User, Group from django.http import HttpResponseRedirect from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME from django.utils.safestring import mark_safe from django_admin_listfilter_dropdown.filters import DropdownFilter from .models import Orders, Users from django.contrib import admin, messages from django.urls import reverse from rangefilter.filters import DateRangeFilter class OrdersAdmin(admin.ModelAdmin): list_display = ( 'orderName', 'orderCreateDateTime', 'orderDesc', 'orderAddress', 'catID', 'userName', 'orderStatus', 'show_photo', 'show_photopay', ) actions = ['send_message'] exclude = ['orderAccess', 'userID', 'orderPhoto', 'orderPhotoPay'] search_fields = ['orderName__regex', 'orderCreateDateTime__regex', 'orderDesc__regex', 'orderAddress__regex', 'catID__regex', 'orderStatus__regex' ] list_filter = [ ('orderName', DropdownFilter), ('orderAddress', DropdownFilter), ('orderDesc', DropdownFilter), ('catID', DropdownFilter), ('orderCreateDateTime', DateRangeFilter) ] def userName(self, obj): user = Users.objects.get(user_id=obj.userID) return user.userName def changeform_view(self, request, object_id=None, form_url='', extra_context=None): extra_context = extra_context or {} extra_context['show_delete'] = False extra_context['show_save'] = False extra_context['show_save_and_continue'] = False return super().changeform_view(request, object_id, form_url, extra_context) def has_add_permission(self, request): return False def show_photo(self, obj): html = obj.get_photo_html() return mark_safe(html) show_photo.short_description = 'Фото' def show_photopay(self, obj): html = obj.get_photopay_html() return mark_safe(html) show_photopay.short_description = 'Чек' def send_message(orders, request, queryset): selected_objects = request.POST.getlist(ACTION_CHECKBOX_NAME) if len(selected_objects) != 1: messages.error(request, "Выберите только один объект") return selected_user_id = int(selected_objects[0]) obj = queryset.get(orderID=selected_user_id) user_id = obj.userID url = reverse('send_telegram_message', kwargs={'chat_id': user_id}) return HttpResponseRedirect(url) send_message.short_description = 'Отправка сообщения' class CustomUserAdmin(admin.ModelAdmin): # Переопределение метода, чтобы запретить добавление пользователей def has_add_permission(self, request): return False def has_delete_permission(self, request, obj=None): return False def has_view_or_change_permission(self, request, obj=None): return False class CustomGroupAdmin(admin.ModelAdmin): #Переопределение метода, чтобы запретить добавление групп def has_add_permission(self, request): return False admin.site.unregister(User) # Снятие регистрации стандартного класса администратора пользователей admin.site.unregister(Group) # Снятие регистрации стандартного класса администратора групп admin.site.register(User, CustomUserAdmin) # Регистрация настроенного класса администратора пользователей admin.site.register(Group, CustomGroupAdmin) # Регистрация настроенного класса администратора групп admin.site.register(Orders, OrdersAdmin)