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.

116 lines
3.0 KiB

import os
from django.contrib import admin
from django.contrib.admin import AdminSite
from django.contrib.admin.sites import NotRegistered
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from service.models import AO
from service.models import PlacementPoint
from service.models import Rayon
from service.models import Post_and_pvz, Post_and_pvzCategory, Post_and_pvzGroup, OtherObjects, OtherObjectsGroup, \
OtherObjectsCategory
from service.models import PlacementPointPVZDistance, TaskStatus
from postamates.settings import DEBUG
from django.core.cache import cache
from service.utils import run_psql_command
class MyAdminSite(AdminSite):
def index(self, request, extra_context=None):
if extra_context is None:
extra_context = {}
extra_context['is_superadmin'] = request.user.is_superuser
return super(MyAdminSite, self).index(request, extra_context)
my_admin_site = MyAdminSite(name='POSTNET')
if DEBUG:
my_admin_site.register(AO)
my_admin_site.register(Rayon)
my_admin_site.register(PlacementPointPVZDistance)
class Post_and_PVZAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
obj.save()
my_admin_site.register(Post_and_pvz, Post_and_PVZAdmin)
my_admin_site.register(OtherObjects)
class TaskStatusAdmin(admin.ModelAdmin):
list_display = ('task_name', 'status')
class CategoryAdmin(admin.ModelAdmin):
list_display = ('name', 'visible')
def save_model(self, request, obj, form, change):
obj.save()
cache.clear()
def delete_model(self, request, obj):
obj.delete()
cache.clear()
class PostPvzCategoryAdmin(CategoryAdmin):
def delete_model(self, request, obj):
if obj.id in (1, 2):
pass
else:
super().delete_model(request, obj)
class GroupAdmin(admin.ModelAdmin):
list_display = ('name', 'category', 'visible')
def save_model(self, request, obj, form, change):
obj.save()
cache.clear()
def delete_model(self, request, obj):
obj.delete()
cache.clear()
class PostPvzGroupAdmin(GroupAdmin):
def save_model(self, request, obj, form, change):
if not obj.pk:
run_psql_command()
super().save_model(request, obj, form, change)
class PlacementPointAdmin(admin.ModelAdmin):
pass
my_admin_site.register(TaskStatus, TaskStatusAdmin)
my_admin_site.register(Post_and_pvzGroup, PostPvzGroupAdmin)
my_admin_site.register(OtherObjectsGroup, GroupAdmin)
my_admin_site.register(Post_and_pvzCategory, PostPvzCategoryAdmin)
my_admin_site.register(OtherObjectsCategory, CategoryAdmin)
my_admin_site.register(PlacementPoint, PlacementPointAdmin)
class UserAdmin(UserAdmin):
add_fieldsets = (
(
None, {
'classes': ('wide',),
'fields': ('username', 'password1', 'password2', 'email'),
},
),
)
try:
my_admin_site.unregister(User)
except NotRegistered:
pass
my_admin_site.register(User, UserAdmin)