diff --git a/blog/management/commands/create_testdata.py b/blog/management/commands/create_testdata.py index aa41421..e9f4ade 100644 --- a/blog/management/commands/create_testdata.py +++ b/blog/management/commands/create_testdata.py @@ -33,12 +33,19 @@ class Command(BaseCommand): category = Category.objects.get_or_create(name='category', parent_category=pcategory)[0] category.save() + for i in range(1, 10): article = Article.objects.get_or_create(category=category, title='nice title ' + str(i), body='nice content ' + str(i), author=user - ) + )[0] + tag = Tag() + tag.name = "nicetag" + str(i) + tag.save() + article.tags.add(tag) + article.save() + from DjangoBlog.utils import cache cache.clear() self.stdout.write(self.style.SUCCESS('created test datas \n')) diff --git a/blog/models.py b/blog/models.py index eaa40f2..28d8fc2 100644 --- a/blog/models.py +++ b/blog/models.py @@ -75,7 +75,15 @@ class Article(BaseModel): get_latest_by = 'created_time' def get_absolute_url(self): + return reverse('blog:detailbyid', kwargs={ + 'article_id': self.id, + 'year': self.created_time.year, + 'month': self.created_time.month, + 'day': self.created_time.day + }) + # todo remove + """ return reverse('blog:detail', kwargs={ 'article_id': self.id, 'year': self.created_time.year, @@ -83,6 +91,7 @@ class Article(BaseModel): 'day': self.created_time.day, 'slug': self.slug }) + """ @cache_decorator(60 * 60 * 10) def get_category_tree(self): diff --git a/blog/urls.py b/blog/urls.py index 87471fb..8e12b5f 100644 --- a/blog/urls.py +++ b/blog/urls.py @@ -24,11 +24,17 @@ urlpatterns = [ url(r'^$', views.IndexView.as_view(), name='index'), url(r'^page/(?P\d+)$', views.IndexView.as_view(), name='index_page'), + # 为了兼容之前的错误url,后续去掉 + # todo remove url(r'^article/(?P\d+)/(?P\d+)/(?P\d+)/(?P\d+)-(?P\S+).html$', # cache_page(60 * 60 * 10, key_prefix="blogdetail")(views.ArticleDetailView.as_view()), views.ArticleDetailView.as_view(), name='detail'), + url(r'^article/(?P\d+)/(?P\d+)/(?P\d+)/(?P\d+).html$', + views.ArticleDetailView.as_view(), + name='detailbyid'), + url(r'^blogpage/(?P\d+)/(?P\d+)/(?P\d+)/(?P\d+)-(?P[\w-]+).html$', views.ArticleDetailView.as_view(), name='pagedetail'), diff --git a/blog/views.py b/blog/views.py index bf5ca18..74d96d3 100644 --- a/blog/views.py +++ b/blog/views.py @@ -28,6 +28,7 @@ from django.utils.cache import get_cache_key from django.utils.decorators import classonlymethod from django.utils.decorators import method_decorator from django.shortcuts import get_object_or_404 +from django.http import HttpResponseRedirect class ArticleListView(ListView): @@ -101,10 +102,18 @@ class ArticleDetailView(DetailView): obj = super(ArticleDetailView, self).get_object() obj.viewed() - # obj.body = markdown2.markdown(obj.body) self.object = obj return obj + def dispatch(self, request, *args, **kwargs): + # todo remove + slug = self.kwargs['slug'] if 'slug' in self.kwargs else '' + if slug: + obj = super(ArticleDetailView, self).get_object() + return HttpResponseRedirect(obj.get_absolute_url()) + else: + return super(ArticleDetailView, self).dispatch(request, *args, **kwargs) + def get_context_data(self, **kwargs): articleid = int(self.kwargs[self.pk_url_kwarg]) diff --git a/oauth/models.py b/oauth/models.py index a2ddfff..daa5d42 100644 --- a/oauth/models.py +++ b/oauth/models.py @@ -12,6 +12,7 @@ class OAuthUser(models.Model): picture = models.CharField(max_length=350, blank=True, null=True) type = models.CharField(blank=False, null=False, max_length=50) email = models.CharField(max_length=50, null=True, blank=True) + token = models.CharField(max_length=50, null=True, blank=True) def __str__(self): return self.nikename diff --git a/oauth/oauthmanager.py b/oauth/oauthmanager.py index 45eb773..4edbf0c 100644 --- a/oauth/oauthmanager.py +++ b/oauth/oauthmanager.py @@ -121,6 +121,7 @@ class WBOauthManager(BaseOauthManager): user.nikename = datas['screen_name'] user.openid = datas['id'] user.type = 'weibo' + user.token = self.access_token if 'email' in datas and datas['email']: user.email = datas['email'] return user @@ -187,6 +188,7 @@ class GoogleOauthManager(BaseOauthManager): user.picture = datas['picture'] user.nikename = datas['name'] user.openid = datas['sub'] + user.token = self.access_token user.type = 'google' if datas['email']: user.email = datas['email'] @@ -252,6 +254,7 @@ class GitHubOauthManager(BaseOauthManager): user.nikename = datas['name'] user.openid = datas['id'] user.type = 'github' + user.token = self.access_token if datas['email']: user.email = datas['email'] diff --git a/templates/comments/tags/comment_item.html b/templates/comments/tags/comment_item.html index 5f82d49..6e744bb 100644 --- a/templates/comments/tags/comment_item.html +++ b/templates/comments/tags/comment_item.html @@ -7,7 +7,13 @@ srcset="{{ comment_item.author.email|gravatar_url:150 }}" class="avatar avatar-96 photo" height="96" width="96"> - {{ comment_item.author.username }}