From ebcdb08f809b98f523d51b454cc3241596774140 Mon Sep 17 00:00:00 2001 From: liangliang Date: Sat, 23 Dec 2017 01:12:02 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=90=8E=E5=8F=B0=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BF=AE=E6=94=B9=20=F0=9F=91=AE=E2=80=8D=E2=99=82?= =?UTF-8?q?=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DjangoBlog/settings.py | 2 +- DjangoBlog/tests.py | 7 ++++-- blog/admin.py | 34 ++++++++++++++++++++++++++ blog/models.py | 2 +- blog/templatetags/blog_tags.py | 2 +- comments/admin.py | 17 +++++++++++-- comments/models.py | 1 + comments/templatetags/comments_tags.py | 2 +- 8 files changed, 59 insertions(+), 8 deletions(-) diff --git a/DjangoBlog/settings.py b/DjangoBlog/settings.py index ffe9a82..1bbbcbf 100644 --- a/DjangoBlog/settings.py +++ b/DjangoBlog/settings.py @@ -163,7 +163,7 @@ DATE_TIME_FORMAT = '%Y-%m-%d' SITE_NAME = '且听风吟' SITE_URL = 'http://www.lylinux.net' SITE_DESCRIPTION = '大巧无工,重剑无锋.' -SITE_SEO_DESCRIPTION = '小站主要用来分享和记录学习经验,教程,记录个人生活的点滴以及一些随笔.欢迎大家访问小站' +SITE_SEO_DESCRIPTION = '小站主要用来分享和记录学习经验,教程,记录个人生活的点滴以及一些随笔.' SITE_SEO_KEYWORDS = 'linux,apache,mysql,服务器,ubuntu,shell,web,csharp,.net,asp,mac,swift,python,django' ARTICLE_SUB_LENGTH = 300 SHOW_GOOGLE_ADSENSE = False diff --git a/DjangoBlog/tests.py b/DjangoBlog/tests.py index a9d63c6..d95b8bf 100644 --- a/DjangoBlog/tests.py +++ b/DjangoBlog/tests.py @@ -49,5 +49,8 @@ class DjangoBlogTest(TestCase): } data = parse_dict_to_url(d) self.assertIsNotNone(data) - - + render = BlogMarkDownRenderer() + s = render.autolink('http://www.baidu.com') + self.assertTrue(s.find('nofollow') > 0) + s = render.link('http://www.baidu.com', 'test', 'test') + self.assertTrue(s.find('nofollow') > 0) diff --git a/blog/admin.py b/blog/admin.py index 41d421f..32f5616 100644 --- a/blog/admin.py +++ b/blog/admin.py @@ -33,13 +33,38 @@ class ArticleForm(forms.ModelForm): fields = '__all__' +def makr_article_publish(modeladmin, request, queryset): + queryset.update(status='p') + + +def draft_article(modeladmin, request, queryset): + queryset.update(status='d') + + +def close_article_commentstatus(modeladmin, request, queryset): + queryset.update(comment_status='c') + + +def open_article_commentstatus(modeladmin, request, queryset): + queryset.update(comment_status='o') + + +makr_article_publish.short_description = '发布选中文章' +draft_article.short_description = '选中文章设置为草稿' +close_article_commentstatus.short_description = '关闭文章评论' +open_article_commentstatus.short_description = '打开文章评论' + + class ArticlelAdmin(admin.ModelAdmin): + search_fields = ('body',) form = ArticleForm list_display = ('id', 'title', 'author', 'created_time', 'views', 'status', 'type') list_display_links = ('id', 'title') list_filter = (ArticleListFilter, 'status', 'type', 'category', 'tags') filter_horizontal = ('tags',) exclude = ('slug', 'created_time', 'last_mod_time') + view_on_site = True + actions = [makr_article_publish, draft_article, close_article_commentstatus, open_article_commentstatus] def get_form(self, request, obj=None, **kwargs): form = super(ArticlelAdmin, self).get_form(request, obj, **kwargs) @@ -51,6 +76,15 @@ class ArticlelAdmin(admin.ModelAdmin): from DjangoBlog.utils import cache cache.clear() + def get_view_on_site_url(self, obj=None): + if obj: + url = obj.get_full_url() + return url + else: + from django.contrib.sites.models import Site + site = Site.objects.get_current().domain + return site + class TagAdmin(admin.ModelAdmin): exclude = ('slug', 'last_mod_time', 'created_time') diff --git a/blog/models.py b/blog/models.py index 1dadbac..ead1e76 100644 --- a/blog/models.py +++ b/blog/models.py @@ -102,7 +102,7 @@ class Article(BaseModel): logger.info('get article comments:{id}'.format(id=self.id)) return value else: - comments = self.comment_set.all() + comments = self.comment_set.filter(is_enable=True) cache.set(cache_key, comments) logger.info('set article comments:{id}'.format(id=self.id)) return comments diff --git a/blog/templatetags/blog_tags.py b/blog/templatetags/blog_tags.py index 0c831f0..1e71c23 100644 --- a/blog/templatetags/blog_tags.py +++ b/blog/templatetags/blog_tags.py @@ -129,7 +129,7 @@ def load_sidebar(user): most_read_articles = Article.objects.filter(status='p').order_by('-views')[:settings.SIDEBAR_ARTICLE_COUNT] dates = Article.objects.datetimes('created_time', 'month', order='DESC') links = Links.objects.all() - commment_list = Comment.objects.order_by('-id')[:settings.SIDEBAR_COMMENT_COUNT] + commment_list = Comment.objects.filter(is_enable=True).order_by('-id')[:settings.SIDEBAR_COMMENT_COUNT] show_adsense = settings.SHOW_GOOGLE_ADSENSE # 标签云 计算字体大小 # 根据总数计算出平均值 大小为 (数目/平均值)*步长 diff --git a/comments/admin.py b/comments/admin.py index c466a29..b8f3471 100644 --- a/comments/admin.py +++ b/comments/admin.py @@ -4,11 +4,24 @@ from django.contrib import admin from .models import Comment +def disable_commentstatus(modeladmin, request, queryset): + queryset.update(is_enable=False) + + +def enable_commentstatus(modeladmin, request, queryset): + queryset.update(is_enable=True) + + +disable_commentstatus.short_description = '禁用评论' +enable_commentstatus.short_description = '启用评论' + + class CommentAdmin(admin.ModelAdmin): - list_display = ('id', 'body', 'author', 'article', 'last_mod_time') + list_display = ('id', 'body', 'author', 'is_enable', 'article', 'last_mod_time') list_display_links = ('id', 'body') - list_filter = ('author', 'article',) + list_filter = ('author', 'article', 'is_enable') exclude = ('created_time', 'last_mod_time') + actions = [disable_commentstatus, enable_commentstatus] admin.site.register(Comment, CommentAdmin) diff --git a/comments/models.py b/comments/models.py index 708a099..0f55201 100644 --- a/comments/models.py +++ b/comments/models.py @@ -14,6 +14,7 @@ class Comment(models.Model): author = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='作者', on_delete=models.CASCADE) article = models.ForeignKey(Article, verbose_name='文章', on_delete=models.CASCADE) parent_comment = models.ForeignKey('self', verbose_name="上级评论", blank=True, null=True) + is_enable = models.BooleanField('是否显示', default=True, blank=False, null=False) class Meta: ordering = ['created_time'] diff --git a/comments/templatetags/comments_tags.py b/comments/templatetags/comments_tags.py index 148d9cf..b831e7d 100644 --- a/comments/templatetags/comments_tags.py +++ b/comments/templatetags/comments_tags.py @@ -30,7 +30,7 @@ def parse_commenttree(commentlist, comment): datas = [] def parse(c): - childs = commentlist.filter(parent_comment=c) + childs = commentlist.filter(parent_comment=c, is_enable=True) for child in childs: datas.append(child) parse(child)