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.
ReviewAndAnalyzeOpenSourceS.../src/DjangoBlog/djangoblog/admin_site.py

118 lines
3.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"""`xjj`
DjangoBlog 管理站点配置
========
该模块定义了 DjangoBlog 项目的自定义管理站点配置。它继承自 Django 的默认 AdminSite
并注册了项目中所有需要在管理后台进行管理的模型。
主要功能:
~~~~~~~~
- 创建自定义管理站点
- 设置管理站点的标题和头部显示文本
- 限制只有超级用户才能访问管理站点
- 注册各个应用中的模型到管理站点
注册的模型包括:
~~~~~~~~
- 博客相关:文章、分类、标签、链接、侧边栏、博客设置
- 用户相关:博客用户
- 评论相关:评论
- OAuth 相关: OAuth 用户、 OAuth 配置
- 其他:命令、邮件发送日志、位置跟踪日志、站点信息、管理日志
使用方式:
~~~~~~~~
通过 admin_site 实例来访问自定义的管理站点。
"""
from django.contrib.admin import AdminSite
from django.contrib.admin.models import LogEntry
from django.contrib.sites.admin import SiteAdmin
from django.contrib.sites.models import Site
from accounts.admin import *
from blog.admin import *
from blog.models import *
from comments.admin import *
from comments.models import *
from djangoblog.logentryadmin import LogEntryAdmin
from oauth.admin import *
from oauth.models import *
from owntracks.admin import *
from owntracks.models import *
from servermanager.admin import *
from servermanager.models import *
class DjangoBlogAdminSite(AdminSite):
"""`xjj`
自定义 Django 管理站点类
继承自 Django 默认的 AdminSite ,用于为 DjangoBlog 项目提供定制化的管理后台
"""
site_header = 'djangoblog administration'
site_title = 'djangoblog site admin'
def __init__(self, name='admin'):
"""`xjj`
初始化管理站点
Args:
name (str): 管理站点的名称,默认为 'admin'
"""
super().__init__(name)
def has_permission(self, request):
"""`xjj`
检查用户是否有访问管理站点的权限
重写了父类的方法,只允许超级用户访问管理站点
Args:
request: HTTP 请求对象
Returns:
bool: 如果用户是超级用户则返回 **True**,否则返回 **False**
"""
return request.user.is_superuser
# def get_urls(self):
# urls = super().get_urls()
# from django.urls import path
# from blog.views import refresh_memcache
#
# my_urls = [
# path('refresh/', self.admin_view(refresh_memcache), name="refresh"),
# ]
# return urls + my_urls
admin_site = DjangoBlogAdminSite(name='admin')
admin_site.register(Article, ArticlelAdmin)
admin_site.register(Category, CategoryAdmin)
admin_site.register(Tag, TagAdmin)
admin_site.register(Links, LinksAdmin)
admin_site.register(SideBar, SideBarAdmin)
admin_site.register(BlogSettings, BlogSettingsAdmin)
admin_site.register(commands, CommandsAdmin)
admin_site.register(EmailSendLog, EmailSendLogAdmin)
admin_site.register(BlogUser, BlogUserAdmin)
admin_site.register(Comment, CommentAdmin)
admin_site.register(OAuthUser, OAuthUserAdmin)
admin_site.register(OAuthConfig, OAuthConfigAdmin)
admin_site.register(OwnTrackLog, OwnTrackLogsAdmin)
admin_site.register(Site, SiteAdmin)
admin_site.register(LogEntry, LogEntryAdmin)