Merge pull request #65 from liangliangyy/dev

修改侧边栏功能,增加分页测试。  close #59
车亮亮 8 years ago committed by GitHub
commit a29290aadc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,7 +1,7 @@
from django.contrib import admin
# Register your models here.
from .models import Article, Category, Tag, Links
from .models import Article, Category, Tag, Links, SideBar
from pagedown.widgets import AdminPagedownWidget
from django import forms
from django.contrib.auth import get_user_model
@ -64,8 +64,13 @@ class LinksAdmin(admin.ModelAdmin):
exclude = ('last_mod_time', 'created_time')
class SideBarAdmin(admin.ModelAdmin):
list_display = ('name', 'content', 'is_enable', 'sequence')
exclude = ('last_mod_time', 'created_time')
admin.site.register(Article, ArticlelAdmin)
# admin.site.register(BlogPage, ArticlelAdmin)
admin.site.register(Category, CategoryAdmin)
admin.site.register(Tag, TagAdmin)
admin.site.register(Links, LinksAdmin)
admin.site.register(SideBar, SideBarAdmin)

@ -211,3 +211,21 @@ class Links(models.Model):
def __str__(self):
return self.name
class SideBar(models.Model):
"""侧边栏,可以展示一些html内容"""
name = models.CharField('标题', max_length=100)
content = models.TextField("内容")
sequence = models.IntegerField('排序', unique=True)
is_enable = models.BooleanField('是否启用', default=True)
created_time = models.DateTimeField('创建时间', default=now)
last_mod_time = models.DateTimeField('修改时间', default=now)
class Meta:
ordering = ['sequence']
verbose_name = '侧边栏'
verbose_name_plural = verbose_name
def __str__(self):
return self.name

@ -19,7 +19,7 @@ from django.template.defaultfilters import stringfilter
from django.utils.safestring import mark_safe
import random
from django.core.urlresolvers import reverse
from blog.models import Article, Category, Tag, Links
from blog.models import Article, Category, Tag, Links, SideBar
from django.utils.encoding import force_text
from django.shortcuts import get_object_or_404
import hashlib
@ -125,6 +125,7 @@ def load_sidebar(user):
logger.info('load sidebar')
recent_articles = Article.objects.filter(status='p')[:settings.SIDEBAR_ARTICLE_COUNT]
sidebar_categorys = Category.objects.all()
extra_sidebars = SideBar.objects.filter(is_enable=True).order_by('sequence')
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()
@ -150,7 +151,8 @@ def load_sidebar(user):
'sidebar_comments': commment_list,
'user': user,
'show_adsense': show_adsense,
'sidebar_tags': sidebar_tags
'sidebar_tags': sidebar_tags,
'extra_sidebars': extra_sidebars
}

@ -1,5 +1,5 @@
from django.test import Client, RequestFactory, TestCase
from blog.models import Article, Category, Tag
from blog.models import Article, Category, Tag, SideBar
from django.contrib.auth import get_user_model
from django.contrib.sites.models import Site
from blog.forms import BlogSearchForm
@ -29,6 +29,13 @@ class ArticleTest(TestCase):
response = self.client.get(user.get_absolute_url())
self.assertEqual(response.status_code, 200)
s = SideBar()
s.sequence = 1
s.name = 'test'
s.content = 'test content'
s.is_enable = True
s.save()
category = Category()
category.name = "category"
category.created_time = datetime.datetime.now()
@ -53,6 +60,17 @@ class ArticleTest(TestCase):
article.save()
self.assertEqual(1, article.tags.count())
for i in range(20):
article = Article()
article.title = "nicetitle" + str(i)
article.body = "nicetitle" + str(i)
article.author = user
article.category = category
article.type = 'a'
article.status = 'p'
article.save()
article.tags.add(tag)
article.save()
response = self.client.get(article.get_absolute_url())
self.assertEqual(response.status_code, 200)
from DjangoBlog.spider_notify import SpiderNotify
@ -69,20 +87,16 @@ class ArticleTest(TestCase):
self.assertIsNotNone(s)
p = Paginator(Article.objects.all(), 2)
s = load_pagination_info(p.page(1), '', '')
self.assertIsNotNone(s)
self.__check_pagination__(p, '', '')
p = Paginator(Tag.objects.all(), 2)
s = load_pagination_info(p.page(1), '分类标签归档', tag.slug)
self.assertIsNotNone(s)
p = Paginator(Article.objects.filter(tags=tag), 2)
self.__check_pagination__(p, '分类标签归档', tag.slug)
p = Paginator(BlogUser.objects.all(), 2)
s = load_pagination_info(p.page(1), '作者文章归档', 'liangliangyy')
self.assertIsNotNone(s)
p = Paginator(Article.objects.filter(author__username='liangliangyy'), 2)
self.__check_pagination__(p, '作者文章归档', 'liangliangyy')
p = Paginator(Category.objects.all(), 2)
s = load_pagination_info(p.page(1), '分类目录归档', category.slug)
self.assertIsNotNone(s)
p = Paginator(Article.objects.filter(category=category), 2)
self.__check_pagination__(p, '分类目录归档', category.slug)
f = BlogSearchForm()
f.search()
@ -95,6 +109,21 @@ class ArticleTest(TestCase):
u = gravatar_url('liangliangyy@gmail.com')
u = gravatar('liangliangyy@gmail.com')
def __check_pagination__(self, p, type, value):
s = load_pagination_info(p.page(1), type, value)
self.assertIsNotNone(s)
response = self.client.get(s['previous_url'])
self.assertEqual(response.status_code, 200)
response = self.client.get(s['next_url'])
self.assertEqual(response.status_code, 200)
s = load_pagination_info(p.page(2), type, value)
self.assertIsNotNone(s)
response = self.client.get(s['previous_url'])
self.assertEqual(response.status_code, 200)
response = self.client.get(s['next_url'])
self.assertEqual(response.status_code, 200)
def test_validate_feed(self):
user = BlogUser.objects.get_or_create(email="liangliangyy12@gmail.com", username="liangliangyy")[0]
user.set_password("liangliangyy")
@ -124,6 +153,7 @@ class ArticleTest(TestCase):
self.assertEqual(rsp.status_code, 200)
SimpleUploadedFile()
"""
def test_errorpage(self):
self.client.get('/eee')
self.client.get('/refresh_memcache')

@ -8,6 +8,17 @@
</div>
</form>
</aside>
{% if extra_sidebars %}
{% for sidebar in extra_sidebars %}
<aside class="widget_text widget widget_custom_html"><h3 class="widget-title">
{{ sidebar.name }}</h3>
<div class="textwidget custom-html-widget">
{{ sidebar.content }}
</div>
</aside>
{% endfor %}
{% endif %}
{% if most_read_articles %}
<aside id="views-4" class="widget widget_views"><h3 class="widget-title">Views</h3>

Loading…
Cancel
Save