From 3038844d6e398e73ed37918a1b326472679f45d9 Mon Sep 17 00:00:00 2001 From: liangliang Date: Sun, 26 Aug 2018 16:21:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=90=8E=E5=8F=B0=20close=20?= =?UTF-8?q?#153?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/admin.py | 15 +++++++++++++-- comments/admin.py | 20 +++++++++++++++++++- oauth/admin.py | 35 ++++++++++++++++++++++++++++++++++- 3 files changed, 66 insertions(+), 4 deletions(-) diff --git a/blog/admin.py b/blog/admin.py index b44c06b..a3197de 100644 --- a/blog/admin.py +++ b/blog/admin.py @@ -5,6 +5,8 @@ from pagedown.widgets import AdminPagedownWidget from django import forms from django.contrib.auth import get_user_model from django.utils.translation import ugettext_lazy as _ +from django.urls import reverse +from django.utils.html import format_html class ArticleListFilter(admin.SimpleListFilter): @@ -55,9 +57,11 @@ open_article_commentstatus.short_description = '打开文章评论' class ArticlelAdmin(admin.ModelAdmin): - search_fields = ('body',) + list_per_page = 20 + search_fields = ('body','title') form = ArticleForm - list_display = ('id', 'title', 'author', 'created_time', 'views', 'status', 'type', 'article_order') + list_display = ( + 'id', 'title', 'author', 'link_to_category', 'created_time', 'views', 'status', 'type', 'article_order') list_display_links = ('id', 'title') list_filter = (ArticleListFilter, 'status', 'type', 'category', 'tags') filter_horizontal = ('tags',) @@ -65,6 +69,13 @@ class ArticlelAdmin(admin.ModelAdmin): view_on_site = True actions = [makr_article_publish, draft_article, close_article_commentstatus, open_article_commentstatus] + def link_to_category(self, obj): + info = (obj.category._meta.app_label, obj.category._meta.model_name) + link = reverse('admin:%s_%s_change' % info, args=(obj.category.id,)) + return format_html(u'%s' % (link, obj.category.name)) + + link_to_category.short_description = '分类目录' + # def get_form(self, request, obj=None, **kwargs): # form = super(ArticlelAdmin, self).get_form(request, obj, **kwargs) # form.base_fields['author'].queryset = get_user_model().objects.filter(is_superuser=True) diff --git a/comments/admin.py b/comments/admin.py index e6834bf..b0cf3f4 100644 --- a/comments/admin.py +++ b/comments/admin.py @@ -1,6 +1,8 @@ from django.contrib import admin # Register your models here. from .models import Comment +from django.urls import reverse +from django.utils.html import format_html def disable_commentstatus(modeladmin, request, queryset): @@ -16,8 +18,24 @@ enable_commentstatus.short_description = '启用评论' class CommentAdmin(admin.ModelAdmin): - list_display = ('id', 'body', 'author', 'is_enable', 'article', 'last_mod_time') + list_per_page = 20 + list_display = ('id', 'body', 'link_to_userinfo', 'link_to_article', 'is_enable', 'created_time') list_display_links = ('id', 'body') list_filter = ('author', 'article', 'is_enable') exclude = ('created_time', 'last_mod_time') actions = [disable_commentstatus, enable_commentstatus] + + def link_to_userinfo(self, obj): + info = (obj.author._meta.app_label, obj.author._meta.model_name) + link = reverse('admin:%s_%s_change' % info, args=(obj.author.id,)) + return format_html( + u'%s' % (link, obj.author.nickname if obj.author.nickname else obj.author.email)) + + def link_to_article(self, obj): + info = (obj.author._meta.app_label, obj.author._meta.model_name) + link = reverse('admin:%s_%s_change' % info, args=(obj.article.id,)) + return format_html( + u'%s' % (link, obj.article.title)) + + link_to_userinfo.short_description = '用户' + link_to_article.short_description = '文章' diff --git a/oauth/admin.py b/oauth/admin.py index f86365e..ddeff0c 100644 --- a/oauth/admin.py +++ b/oauth/admin.py @@ -1,12 +1,45 @@ from django.contrib import admin # Register your models here. from .models import OAuthUser, OAuthConfig +from django.urls import reverse +from django.utils.html import format_html +import logging + +logger = logging.getLogger(__name__) class OAuthUserAdmin(admin.ModelAdmin): - list_display = ('id', 'author', 'nikename', 'type', 'picture', 'email',) + search_fields = ('nikename', 'email') + list_per_page = 20 + list_display = ('id', 'nikename', 'link_to_usermodel', 'show_user_image', 'type', 'email',) list_display_links = ('id', 'nikename') list_filter = ('author', 'type',) + readonly_fields = [] + + def get_readonly_fields(self, request, obj=None): + return list(self.readonly_fields) + \ + [field.name for field in obj._meta.fields] + \ + [field.name for field in obj._meta.many_to_many] + + def has_add_permission(self, request): + return False + + def has_delete_permission(self, request, obj=None): + return False + + def link_to_usermodel(self, obj): + if obj.author: + info = (obj.author._meta.app_label, obj.author._meta.model_name) + link = reverse('admin:%s_%s_change' % info, args=(obj.author.id,)) + return format_html( + u'%s' % (link, obj.author.nickname if obj.author.nickname else obj.author.email)) + + def show_user_image(self, obj): + img = obj.picture + return format_html(u'' % (img)) + + link_to_usermodel.short_description = '用户' + show_user_image.short_description = '用户头像' class OAuthConfigAdmin(admin.ModelAdmin):