修改侧边栏功能,增加分页测试。 close #59
This commit is contained in:
+7
-2
@@ -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
|
||||
}
|
||||
|
||||
|
||||
|
||||
+42
-12
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user