Skip to content

Commit

Permalink
Merge pull request #5 from liangliangyy/dev
Browse files Browse the repository at this point in the history
分类目录页面优化,部分代码格式调整
  • Loading branch information
liangliangyy committed Mar 26, 2017
2 parents af9ea12 + d727447 commit 27ac073
Show file tree
Hide file tree
Showing 22 changed files with 108 additions and 188 deletions.
4 changes: 2 additions & 2 deletions DjangoBlog/feeds.py
Expand Up @@ -17,7 +17,7 @@
from blog.models import Article
from django.conf import settings
from django.utils.feedgenerator import Rss201rev2Feed
from DjangoBlog.utils import common_markdown
from DjangoBlog.utils import CommonMarkdown
from django.contrib.auth import get_user_model
from django.contrib.auth.models import User
from django.contrib.sites.models import Site
Expand All @@ -44,7 +44,7 @@ def item_title(self, item):
return item.title

def item_description(self, item):
return common_markdown.get_markdown(item.body)
return CommonMarkdown.get_markdown(item.body)

def feed_copyright(self):
# print(Site.objects.get_current().name)
Expand Down
1 change: 1 addition & 0 deletions DjangoBlog/sitemap.py
Expand Up @@ -19,6 +19,7 @@
from django.contrib.sitemaps import GenericSitemap
from django.core.urlresolvers import reverse


class StaticViewSitemap(Sitemap):
priority = 0.5
changefreq = 'daily'
Expand Down
6 changes: 3 additions & 3 deletions DjangoBlog/spider_notify.py
Expand Up @@ -18,7 +18,7 @@
from django.conf import settings


class spider_notify():
class SpiderNotify():
@staticmethod
def baidu_notify(urls):
try:
Expand All @@ -38,5 +38,5 @@ def __google_notify():
@staticmethod
def notify(self, url):

spider_notify.baidu_notify(url)
spider_notify.__google_notify()
SpiderNotify.baidu_notify(url)
SpiderNotify.__google_notify()
2 changes: 1 addition & 1 deletion DjangoBlog/utils.py
Expand Up @@ -111,7 +111,7 @@ def block_code(self, text, lang):
return block_code(text, lang, inlinestyles, linenos)


class common_markdown():
class CommonMarkdown():
@staticmethod
def get_markdown(value):
renderer = BlogMarkDownRenderer(inlinestyles=False)
Expand Down
9 changes: 6 additions & 3 deletions accounts/forms.py
Expand Up @@ -22,7 +22,8 @@ class LoginForm(AuthenticationForm):
def __init__(self, *args, **kwargs):
super(LoginForm, self).__init__(*args, **kwargs)
self.fields['username'].widget = widgets.TextInput(attrs={'placeholder': "username", "class": "form-control"})
self.fields['password'].widget = widgets.PasswordInput(attrs={'placeholder': "password", "class": "form-control"})
self.fields['password'].widget = widgets.PasswordInput(
attrs={'placeholder': "password", "class": "form-control"})


class RegisterForm(UserCreationForm):
Expand All @@ -31,8 +32,10 @@ def __init__(self, *args, **kwargs):

self.fields['username'].widget = widgets.TextInput(attrs={'placeholder': "username", "class": "form-control"})
self.fields['email'].widget = widgets.EmailInput(attrs={'placeholder': "email", "class": "form-control"})
self.fields['password1'].widget = widgets.PasswordInput(attrs={'placeholder': "password", "class": "form-control"})
self.fields['password2'].widget = widgets.PasswordInput(attrs={'placeholder': "repeat password", "class": "form-control"})
self.fields['password1'].widget = widgets.PasswordInput(
attrs={'placeholder': "password", "class": "form-control"})
self.fields['password2'].widget = widgets.PasswordInput(
attrs={'placeholder': "repeat password", "class": "form-control"})

class Meta:
model = get_user_model()
Expand Down
13 changes: 1 addition & 12 deletions accounts/models.py
Expand Up @@ -3,19 +3,8 @@
from django.core.urlresolvers import reverse
from django.contrib.sites.models import Site

# Create your models here.

"""
class BlogUserManager(BaseUserManager):
def create_user(self, email, username, password=None):
user = self.model(
username=username, email=email, nickname=username
)
user.set_password(password)
user.save(using=self._db)
return user
"""

# Create your models here.

class BlogUser(AbstractUser):
nickname = models.CharField('昵称', max_length=50, blank=True)
Expand Down
2 changes: 1 addition & 1 deletion accounts/views.py
Expand Up @@ -63,7 +63,7 @@ def form_valid(self, form):

if form.is_valid():
from DjangoBlog.utils import cache
if cache != None:
if cache and cache is not None:
cache.clear()
auth.login(self.request, form.get_user())

Expand Down
4 changes: 2 additions & 2 deletions blog/management/commands/ping_baidu.py
Expand Up @@ -15,7 +15,7 @@

from django.core.management.base import BaseCommand, CommandError
from blog.models import Article, Tag, Category
from DjangoBlog.spider_notify import spider_notify
from DjangoBlog.spider_notify import SpiderNotify
from django.contrib.sites.models import Site

site = Site.objects.get_current().domain
Expand Down Expand Up @@ -50,5 +50,5 @@ def handle(self, *args, **options):
urls.append(self.get_full_url(url))

self.stdout.write(self.style.SUCCESS('start notify %d urls' % len(urls)))
spider_notify.baidu_notify(urls)
SpiderNotify.baidu_notify(urls)
self.stdout.write(self.style.SUCCESS('finish notify'))
53 changes: 42 additions & 11 deletions blog/models.py
Expand Up @@ -2,7 +2,7 @@
from django.core.urlresolvers import reverse
from django.conf import settings
from uuslug import slugify
from DjangoBlog.spider_notify import spider_notify
from DjangoBlog.spider_notify import SpiderNotify
from django.contrib.sites.models import Site
from DjangoBlog.utils import cache_decorator, logger, cache
from django.utils.functional import cached_property
Expand All @@ -22,7 +22,7 @@ def save(self, *args, **kwargs):
return
try:
notify_url = self.get_full_url()
spider_notify.baidu_notify([notify_url])
SpiderNotify.baidu_notify([notify_url])
except Exception as ex:
logger.error("notify sipder", ex)
print(ex)
Expand Down Expand Up @@ -75,8 +75,7 @@ class Meta:

def get_absolute_url(self):

return reverse('blog:detail', kwargs=
{
return reverse('blog:detail', kwargs={
'article_id': self.id,
'year': self.created_time.year,
'month': self.created_time.month,
Expand All @@ -86,14 +85,9 @@ def get_absolute_url(self):

@cache_decorator(60 * 60 * 10)
def get_category_tree(self):
names = []
tree = self.category.get_category_tree()
names = list(map(lambda c: (c.name, c.get_absolute_url()), tree))

def parse(category):
names.append((category.name, category.get_absolute_url()))
if category.parent_category:
parse(category.parent_category)

parse(self.category)
return names

def save(self, *args, **kwargs):
Expand Down Expand Up @@ -159,6 +153,43 @@ def get_absolute_url(self):
def __str__(self):
return self.name

@cache_decorator(60 * 60 * 10)
def get_category_tree(self):
"""
递归获得分类目录的父级
:return:
"""
categorys = []

def parse(category):
categorys.append(category)
if category.parent_category:
parse(category.parent_category)

parse(self)
return categorys

@cache_decorator(60 * 60 * 10)
def get_sub_categorys(self):
"""
获得当前分类目录所有子集
:return:
"""
categorys = []
all_categorys = Category.objects.all()

def parse(category):
if category not in categorys:
categorys.append(category)
childs = all_categorys.filter(parent_category=category)
for child in childs:
if category not in categorys:
categorys.append(child)
parse(child)

parse(self)
return categorys


class Tag(BaseModel):
"""文章标签"""
Expand Down
1 change: 0 additions & 1 deletion blog/search_indexes.py
Expand Up @@ -21,7 +21,6 @@ class ArticleIndex(indexes.SearchIndex, indexes.Indexable):
# title = indexes.CharField(document=True, use_template=True)
text = indexes.CharField(document=True, use_template=True)


def get_model(self):
return Article

Expand Down
41 changes: 3 additions & 38 deletions blog/templatetags/blog_tags.py
Expand Up @@ -51,8 +51,8 @@ def datetimeformat(data):
@register.filter(is_safe=True)
@stringfilter
def custom_markdown(content):
from DjangoBlog.utils import common_markdown
return mark_safe(common_markdown.get_markdown(content))
from DjangoBlog.utils import CommonMarkdown
return mark_safe(CommonMarkdown.get_markdown(content))


@register.filter(is_safe=True)
Expand Down Expand Up @@ -228,7 +228,7 @@ def gravatar_url(email, size=40):
"""获得gravatar头像"""
email = email.encode('utf-8')

default = "https://avatar.duoshuo.com/avatar-50/928/120117.jpg".encode('utf-8')
default = "https://resource.lylinux.net/image/2017/03/26/120117.jpg".encode('utf-8')

return "https://www.gravatar.com/avatar/%s?%s" % (
hashlib.md5(email.lower()).hexdigest(), urllib.parse.urlencode({'d': default, 's': str(size)}))
Expand All @@ -253,38 +253,3 @@ def query(qs, **kwargs):
"""
return qs.filter(**kwargs)


"""
article = Article.objects.get(pk=4)
comments = Comment.objects.filter(article=article)
for c in comments.filter(parent_comment=None):
datas = parse_commenttree(comments, c)
print(datas)
"""
"""
@register.tag
def parseCategoryName(parser,token):
tag_name, category = token.split_contents()
print(category)
print(tag_name)
return CategoryNametag(category)
class CategoryNametag(template.Node):
def __init__(self,category):
self.category=category
self.names=[]
def parseCategory(self,category):
self.names.append(category.name)
if category.parent_category:
self.parseCategory(category.parent_category)
def render(self, context):
self.parseCategory(self.category)
print(self.names)
return " > ".join(self.names)
#if self.category.parent_category:
"""
2 changes: 1 addition & 1 deletion blog/tests.py
Expand Up @@ -42,4 +42,4 @@ def test_validate_article(self):
article.status = 'p'
article.save()
response = self.client.get(article.get_absolute_url())
self.assertEqual(response.status_code, 200)
self.assertEqual(response.status_code, 200)
31 changes: 9 additions & 22 deletions blog/views.py
Expand Up @@ -123,7 +123,7 @@ def get_context_data(self, **kwargs):

kwargs['form'] = comment_form
kwargs['article_comments'] = article_comments
kwargs['comment_count'] = len(article_comments) if article_comments else 0;
kwargs['comment_count'] = len(article_comments) if article_comments else 0

kwargs['next_article'] = self.object.next_article
kwargs['prev_article'] = self.object.prev_article
Expand All @@ -137,9 +137,13 @@ class CategoryDetailView(ArticleListView):
def get_queryset_data(self):
slug = self.kwargs['category_name']
category = get_object_or_404(Category, slug=slug)

categoryname = category.name
self.categoryname = categoryname
article_list = Article.objects.filter(category__name=categoryname, status='p')
categorynames = list(map(lambda c: c.name, category.get_sub_categorys()))
print(categorynames)
# article_list = Article.objects.filter(category__name=categoryname, status='p')
article_list = Article.objects.filter(category__name__in=categorynames, status='p')
return article_list

def get_queryset_cache_key(self):
Expand Down Expand Up @@ -247,28 +251,11 @@ def refresh_memcache(request):

if request.user.is_superuser:
from DjangoBlog.utils import cache
if cache != None: cache.clear()
if cache and cache is not None:
cache.clear()
return HttpResponse("ok")
else:
from django.http import HttpResponseForbidden
return HttpResponseForbidden()
except Exception as e:
return HttpResponse(e);


"""
class SeoProcessor():
__metaclass__ = ABCMeta
@abstractmethod
def get_title(self):
pass
@abstractmethod
def get_keywords(self):
pass
@abstractmethod
def get_description(self):
pass
"""
return HttpResponse(e)
2 changes: 1 addition & 1 deletion comments/models.py
@@ -1,10 +1,10 @@
from django.db import models
from django.conf import settings
from django.core.mail import send_mail
from blog.models import Article
from django.core.mail import EmailMultiAlternatives
from django.contrib.sites.models import Site
import _thread
from blog.models import Article
from DjangoBlog.utils import cache


Expand Down
26 changes: 1 addition & 25 deletions comments/templatetags/comments_tags.py
Expand Up @@ -30,7 +30,6 @@ def parse_commenttree(commentlist, comment):
datas = []

def parse(c):

childs = commentlist.filter(parent_comment=c)
for child in childs:
datas.append(child)
Expand All @@ -43,31 +42,8 @@ def parse(c):
@register.inclusion_tag('comments/tags/comment_item.html')
def show_comment_item(comment, ischild):
"""评论"""
depth = 1 if ischild else 2;
depth = 1 if ischild else 2
return {
'comment_item': comment,
'depth': depth
}


"""
@register.simple_tag(name='get_comment_count')
def GetCommentCount(parser, token):
commentcount = Comment.objects.filter(article__author_id=token).count()
return "0" if commentcount == 0 else str(commentcount) + " comments"
@register.inclusion_tag('comments/tags/post_comment.html')
def load_post_comment(article, lastform=None):
if not lastform:
form = CommentForm()
form.article_id = article.id
form.parent_comment_id = ''
else:
form = lastform
return {
'article': article,
'form': form
}
"""
2 changes: 1 addition & 1 deletion comments/tests.py
@@ -1,3 +1,3 @@
from django.test import TestCase

# Create your tests here.
# Create your tests here.

0 comments on commit 27ac073

Please sign in to comment.