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)