You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.9 KiB
98 lines
3.9 KiB
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), |
|
('orderStatus', 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) |