diff --git a/.dockerignore b/.dockerignore index da9aa07..48ff43b 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,7 +4,7 @@ venv/ migrations/ !migrations/__init__.py collectedstatic/ -DjangoBlog/whoosh_index/ +djangoblog/whoosh_index/ uploads/ settings_production.py *.md diff --git a/.gitignore b/.gitignore index 42272c4..d17ee1e 100644 --- a/.gitignore +++ b/.gitignore @@ -69,7 +69,7 @@ venv/ migrations/ !migrations/__init__.py collectedstatic/ -DjangoBlog/whoosh_index/ +djangoblog/whoosh_index/ google93fd32dbd906620a.html baidu_verify_FlHL7cUyC9.html BingSiteAuth.xml diff --git a/DjangoBlog/urls.py b/DjangoBlog/urls.py deleted file mode 100644 index 0bedda9..0000000 --- a/DjangoBlog/urls.py +++ /dev/null @@ -1,56 +0,0 @@ -"""DjangoBlog URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/1.10/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.conf.urls import url, include - 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) -""" -from django.conf.urls import url, include -from django.contrib import admin -from django.contrib.sitemaps.views import sitemap -from DjangoBlog.sitemap import StaticViewSitemap, ArticleSiteMap, CategorySiteMap, TagSiteMap, UserSiteMap -from DjangoBlog.feeds import DjangoBlogFeed -from django.views.decorators.cache import cache_page -from django.conf import settings -from django.conf.urls.static import static -from DjangoBlog.admin_site import admin_site -from django.urls import include, path - -sitemaps = { - - 'blog': ArticleSiteMap, - 'Category': CategorySiteMap, - 'Tag': TagSiteMap, - 'User': UserSiteMap, - 'static': StaticViewSitemap -} - -handler404 = 'blog.views.page_not_found_view' -handler500 = 'blog.views.server_error_view' -handle403 = 'blog.views.permission_denied_view' -urlpatterns = [ - url(r'^admin/', admin_site.urls), - url(r'', include('blog.urls', namespace='blog')), - url(r'mdeditor/', include('mdeditor.urls')), - url(r'', include('comments.urls', namespace='comment')), - url(r'', include('accounts.urls', namespace='account')), - url(r'', include('oauth.urls', namespace='oauth')), - url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, - name='django.contrib.sitemaps.views.sitemap'), - url(r'^feed/$', DjangoBlogFeed()), - url(r'^rss/$', DjangoBlogFeed()), - url(r'^search', include('haystack.urls'), name='search'), - url(r'', include('servermanager.urls', namespace='servermanager')), - url(r'', include('owntracks.urls', namespace='owntracks')) -] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) -if settings.DEBUG: - urlpatterns += static(settings.MEDIA_URL, - document_root=settings.MEDIA_ROOT) diff --git a/Dockerfile b/Dockerfile index 7bec6eb..f8a86f2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM python:3 ENV PYTHONUNBUFFERED 1 -WORKDIR /code/DjangoBlog/ +WORKDIR /code/djangoblog/ RUN apt-get install default-libmysqlclient-dev -y && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ADD requirements.txt requirements.txt @@ -10,5 +10,5 @@ RUN pip install --upgrade pip && \ pip cache purge ADD . . -RUN chmod +x /code/DjangoBlog/bin/docker_start.sh -ENTRYPOINT ["/code/DjangoBlog/bin/docker_start.sh"] +RUN chmod +x /code/djangoblog/bin/docker_start.sh +ENTRYPOINT ["/code/djangoblog/bin/docker_start.sh"] diff --git a/accounts/admin.py b/accounts/admin.py index 45ab895..c3fbf35 100644 --- a/accounts/admin.py +++ b/accounts/admin.py @@ -1,12 +1,12 @@ from django import forms -from django.contrib import admin from django.contrib.auth.admin import UserAdmin -from django.contrib.auth.forms import UserCreationForm, UserChangeForm from django.contrib.auth.forms import ReadOnlyPasswordHashField +from django.contrib.auth.forms import UserChangeForm +from django.contrib.auth.forms import UsernameField +from django.utils.translation import gettext_lazy as _ + # Register your models here. from .models import BlogUser -from django.utils.translation import gettext, gettext_lazy as _ -from django.contrib.auth.forms import UsernameField class BlogUserCreationForm(forms.ModelForm): diff --git a/accounts/forms.py b/accounts/forms.py index 8e8049d..70c492b 100644 --- a/accounts/forms.py +++ b/accounts/forms.py @@ -1,17 +1,3 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: forms.py -@time: 2016/11/20 下午3:16 -""" from django import forms from django.contrib.auth import get_user_model, password_validation from django.contrib.auth.forms import AuthenticationForm, UserCreationForm @@ -108,7 +94,7 @@ class ForgetPasswordForm(forms.Form): def clean_email(self): user_email = self.cleaned_data.get("email") if not BlogUser.objects.filter( - email=user_email + email=user_email ).exists(): # todo 这里的报错提示可以判断一个邮箱是不是注册过,如果不想暴露可以修改 raise ValidationError("未找到邮箱对应的用户") diff --git a/accounts/models.py b/accounts/models.py index ff6241e..9f7454c 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -1,9 +1,10 @@ +from django.contrib.auth.models import AbstractUser from django.db import models -from django.contrib.auth.models import AbstractUser, BaseUserManager from django.urls import reverse -from DjangoBlog.utils import get_current_site from django.utils.timezone import now +from djangoblog.utils import get_current_site + # Create your models here. diff --git a/accounts/templatetags/__init__.py b/accounts/templatetags/__init__.py index 8875802..e69de29 100644 --- a/accounts/templatetags/__init__.py +++ b/accounts/templatetags/__init__.py @@ -1,14 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: __init__.py -@time: 2016/11/2 下午9:15 -""" \ No newline at end of file diff --git a/accounts/tests.py b/accounts/tests.py index f0e7b12..ae3ae69 100644 --- a/accounts/tests.py +++ b/accounts/tests.py @@ -3,7 +3,7 @@ from django.test import Client, RequestFactory, TestCase from django.urls import reverse from django.utils import timezone -from DjangoBlog.utils import * +from djangoblog.utils import * from accounts.models import BlogUser from blog.models import Article, Category from . import utils @@ -83,7 +83,7 @@ class AccountTest(TestCase): user.is_superuser = True user.is_staff = True user.save() - delete_sidebar_cache(user.username) + delete_sidebar_cache() category = Category() category.name = "categoryaaa" category.created_time = timezone.now() diff --git a/accounts/urls.py b/accounts/urls.py index e84123b..0dcdc73 100644 --- a/accounts/urls.py +++ b/accounts/urls.py @@ -1,23 +1,8 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: urls.py -@time: 2016/11/20 下午3:52 -""" - from django.conf.urls import url from django.urls import path -from .forms import LoginForm from . import views +from .forms import LoginForm app_name = "accounts" diff --git a/accounts/user_login_backend.py b/accounts/user_login_backend.py index d26ad09..73cdca1 100644 --- a/accounts/user_login_backend.py +++ b/accounts/user_login_backend.py @@ -1,18 +1,3 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: user_login_backend.py -@time: 2017/2/17 下午8:45 -""" -from django.conf import settings from django.contrib.auth import get_user_model from django.contrib.auth.backends import ModelBackend diff --git a/accounts/utils.py b/accounts/utils.py index cd5c360..6688667 100644 --- a/accounts/utils.py +++ b/accounts/utils.py @@ -3,7 +3,7 @@ from datetime import timedelta from django.core.cache import cache -from DjangoBlog.utils import send_email +from djangoblog.utils import send_email _code_ttl = timedelta(minutes=5) diff --git a/accounts/views.py b/accounts/views.py index 438337b..627aa2d 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -21,7 +21,7 @@ from django.views.decorators.csrf import csrf_protect from django.views.decorators.debug import sensitive_post_parameters from django.views.generic import FormView, RedirectView -from DjangoBlog.utils import send_email, get_sha256, get_current_site, generate_code +from djangoblog.utils import send_email, get_sha256, get_current_site, generate_code, delete_sidebar_cache from . import utils from .forms import RegisterForm, LoginForm, ForgetPasswordForm, ForgetPasswordCodeForm from .models import BlogUser @@ -84,9 +84,8 @@ class LogoutView(RedirectView): return super(LogoutView, self).dispatch(request, *args, **kwargs) def get(self, request, *args, **kwargs): - from DjangoBlog.utils import cache - cache.clear() logout(request) + delete_sidebar_cache() return super(LogoutView, self).get(request, *args, **kwargs) @@ -116,9 +115,7 @@ class LoginView(FormView): form = AuthenticationForm(data=self.request.POST, request=self.request) if form.is_valid(): - from DjangoBlog.utils import cache - if cache and cache is not None: - cache.clear() + delete_sidebar_cache() logger.info(self.redirect_field_name) auth.login(self.request, form.get_user()) diff --git a/bin/django_start.sh b/bin/django_start.sh deleted file mode 100755 index a27eb2e..0000000 --- a/bin/django_start.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -NAME="djangoblog" # Name of the application -DJANGODIR=/var/www/DjangoBlog # Django project directory -SOCKFILE=/var/www/DjangoBlog/run/gunicorn.sock # we will communicte using this unix socket -USER=root # the user to run as -GROUP=root # the group to run as -NUM_WORKERS=3 # how many worker processes should Gunicorn spawn -DJANGO_SETTINGS_MODULE=DjangoBlog.settings # which settings file should Django use -DJANGO_WSGI_MODULE=DjangoBlog.wsgi # WSGI module name - -echo "Starting $NAME as `whoami`" - -# Activate the virtual environment -cd $DJANGODIR -source /var/www/dev/python3/bin/activate -export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE -export PYTHONPATH=$DJANGODIR:$PYTHONPATH - -# Create the run directory if it doesn't exist -RUNDIR=$(dirname $SOCKFILE) -test -d $RUNDIR || mkdir -p $RUNDIR - -# Start your Django Unicorn -# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon) -exec /var/www/dev/python3/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \ ---name $NAME \ ---workers $NUM_WORKERS \ ---user=$USER --group=$GROUP \ ---bind=unix:$SOCKFILE \ ---log-level=debug \ ---log-file=- diff --git a/bin/docker_start.sh b/bin/docker_start.sh index ddada3a..b5b2eb2 100644 --- a/bin/docker_start.sh +++ b/bin/docker_start.sh @@ -4,8 +4,8 @@ DJANGODIR=/code/DjangoBlog # Django project directory USER=root # the user to run as GROUP=root # the group to run as NUM_WORKERS=1 # how many worker processes should Gunicorn spawn -#DJANGO_SETTINGS_MODULE=DjangoBlog.settings # which settings file should Django use -DJANGO_WSGI_MODULE=DjangoBlog.wsgi # WSGI module name +#DJANGO_SETTINGS_MODULE=djangoblog.settings # which settings file should Django use +DJANGO_WSGI_MODULE=djangoblog.wsgi # WSGI module name echo "Starting $NAME as `whoami`" diff --git a/blog/admin.py b/blog/admin.py index 4b6968b..f812dc6 100644 --- a/blog/admin.py +++ b/blog/admin.py @@ -1,11 +1,12 @@ -from django.contrib import admin -# Register your models here. -from .models import Article, Category, Tag, Links, SideBar, BlogSettings from django import forms +from django.contrib import admin from django.contrib.auth import get_user_model -from django.utils.translation import ugettext_lazy as _ from django.urls import reverse from django.utils.html import format_html +from django.utils.translation import ugettext_lazy as _ + +# Register your models here. +from .models import Article class ArticleListFilter(admin.SimpleListFilter): @@ -101,7 +102,7 @@ class ArticlelAdmin(admin.ModelAdmin): url = obj.get_full_url() return url else: - from DjangoBlog.utils import get_current_site + from djangoblog.utils import get_current_site site = get_current_site().domain return site diff --git a/blog/context_processors.py b/blog/context_processors.py index 2fb2ad7..3b2862d 100644 --- a/blog/context_processors.py +++ b/blog/context_processors.py @@ -1,22 +1,8 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: context_processors.py -@time: 2016/11/6 下午4:23 -""" -from .models import Category, Article, Tag, BlogSettings -from DjangoBlog.utils import cache, get_blog_setting - -from datetime import datetime import logging +from datetime import datetime + +from djangoblog.utils import cache, get_blog_setting +from .models import Category, Article logger = logging.getLogger(__name__) diff --git a/blog/documents.py b/blog/documents.py index 16e9eb4..4554775 100644 --- a/blog/documents.py +++ b/blog/documents.py @@ -1,22 +1,11 @@ -#!/usr/bin/env python -# encoding: utf-8 -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: documents.py -@time: 2019-04-05 13:05 -""" -import elasticsearch.client -from elasticsearch_dsl.connections import connections import time -from blog.models import Article -from elasticsearch_dsl import Document, InnerDoc, Date, Integer, Long, Text, Object, GeoPoint, Keyword, Boolean +import elasticsearch.client from django.conf import settings +from elasticsearch_dsl import Document, InnerDoc, Date, Integer, Long, Text, Object, GeoPoint, Keyword, Boolean +from elasticsearch_dsl.connections import connections + +from blog.models import Article ELASTICSEARCH_ENABLED = hasattr(settings, 'ELASTICSEARCH_DSL') diff --git a/blog/forms.py b/blog/forms.py index 5cb1086..715be76 100644 --- a/blog/forms.py +++ b/blog/forms.py @@ -1,21 +1,7 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: forms.py -@time: 2017/1/7 上午12:36 -""" +import logging -from haystack.forms import SearchForm from django import forms -import logging +from haystack.forms import SearchForm logger = logging.getLogger(__name__) diff --git a/blog/management/commands/build_index.py b/blog/management/commands/build_index.py index 0391cc3..3c4acd7 100644 --- a/blog/management/commands/build_index.py +++ b/blog/management/commands/build_index.py @@ -1,21 +1,8 @@ -#!/usr/bin/env python -# encoding: utf-8 -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: build_index.py -@time: 2019-04-20 20:39 -""" +from django.core.management.base import BaseCommand from blog.documents import ElapsedTimeDocument, ArticleDocumentManager, ElaspedTimeDocumentManager, \ ELASTICSEARCH_ENABLED -from django.core.management.base import BaseCommand - # TODO 参数化 class Command(BaseCommand): diff --git a/blog/management/commands/build_search_words.py b/blog/management/commands/build_search_words.py index f955ffe..cfe7e0d 100644 --- a/blog/management/commands/build_search_words.py +++ b/blog/management/commands/build_search_words.py @@ -1,18 +1,6 @@ -#!/usr/bin/env python -# encoding: utf-8 -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: build_search_words.py -@time: 2019/9/23 6:58 下午 -""" - from django.core.management.base import BaseCommand -from blog.models import Article, Tag, Category + +from blog.models import Tag, Category # TODO 参数化 diff --git a/blog/management/commands/clear_cache.py b/blog/management/commands/clear_cache.py index 0cddbf8..0d66172 100644 --- a/blog/management/commands/clear_cache.py +++ b/blog/management/commands/clear_cache.py @@ -1,20 +1,7 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: clear_cache.py -@time: 2017/2/17 下午10:30 -""" -from DjangoBlog.utils import cache from django.core.management.base import BaseCommand +from djangoblog.utils import cache + class Command(BaseCommand): help = 'clear the whole cache' diff --git a/blog/management/commands/create_testdata.py b/blog/management/commands/create_testdata.py index e979711..675d2ba 100644 --- a/blog/management/commands/create_testdata.py +++ b/blog/management/commands/create_testdata.py @@ -1,22 +1,8 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: create_testdata.py -@time: 2017/3/11 上午1:58 -""" - -from django.core.management.base import BaseCommand -from blog.models import Article, Tag, Category from django.contrib.auth import get_user_model from django.contrib.auth.hashers import make_password +from django.core.management.base import BaseCommand + +from blog.models import Article, Tag, Category class Command(BaseCommand): @@ -49,6 +35,6 @@ class Command(BaseCommand): article.tags.add(basetag) article.save() - from DjangoBlog.utils import cache + from djangoblog.utils import cache cache.clear() self.stdout.write(self.style.SUCCESS('created test datas \n')) diff --git a/blog/management/commands/ping_baidu.py b/blog/management/commands/ping_baidu.py index 14235a0..2c7fbdd 100644 --- a/blog/management/commands/ping_baidu.py +++ b/blog/management/commands/ping_baidu.py @@ -1,22 +1,8 @@ -#!/usr/bin/env python -# encoding: utf-8 +from django.core.management.base import BaseCommand - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: ping_baidu.py -@time: 2017/1/17 下午15:29 -""" - -from django.core.management.base import BaseCommand, CommandError +from djangoblog.spider_notify import SpiderNotify +from djangoblog.utils import get_current_site from blog.models import Article, Tag, Category -from DjangoBlog.spider_notify import SpiderNotify -from DjangoBlog.utils import get_current_site site = get_current_site().domain diff --git a/blog/management/commands/sync_user_avatar.py b/blog/management/commands/sync_user_avatar.py index 0fe86cc..263734c 100644 --- a/blog/management/commands/sync_user_avatar.py +++ b/blog/management/commands/sync_user_avatar.py @@ -1,21 +1,7 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: sync_user_avatar.py -@time: 2018/7/18 下午10:21 -""" - from django.core.management.base import BaseCommand + +from djangoblog.utils import save_user_avatar from oauth.models import OAuthUser -from DjangoBlog.utils import save_user_avatar class Command(BaseCommand): diff --git a/blog/middleware.py b/blog/middleware.py index d8824c9..94dd70c 100644 --- a/blog/middleware.py +++ b/blog/middleware.py @@ -1,22 +1,9 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: middleware.py -@time: 2017/1/19 上午12:36 -""" - -import time import logging +import time + from ipware import get_client_ip from user_agents import parse + from blog.documents import ELASTICSEARCH_ENABLED, ElaspedTimeDocumentManager logger = logging.getLogger(__name__) diff --git a/blog/models.py b/blog/models.py index c04a4cd..60a89c0 100644 --- a/blog/models.py +++ b/blog/models.py @@ -10,8 +10,8 @@ from django.utils.translation import gettext_lazy as _ from mdeditor.fields import MDTextField from uuslug import slugify -from DjangoBlog.utils import cache_decorator, cache -from DjangoBlog.utils import get_current_site +from djangoblog.utils import cache_decorator, cache +from djangoblog.utils import get_current_site logger = logging.getLogger(__name__) @@ -361,5 +361,5 @@ class BlogSettings(models.Model): def save(self, *args, **kwargs): super().save(*args, **kwargs) - from DjangoBlog.utils import cache + from djangoblog.utils import cache cache.clear() diff --git a/blog/search_indexes.py b/blog/search_indexes.py index e14349e..7f1dfac 100644 --- a/blog/search_indexes.py +++ b/blog/search_indexes.py @@ -1,20 +1,6 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: search_indexes.py -@time: 2017/1/7 上午12:44 -""" from haystack import indexes -from django.conf import settings -from blog.models import Article, Category, Tag + +from blog.models import Article class ArticleIndex(indexes.SearchIndex, indexes.Indexable): diff --git a/blog/templatetags/__init__.py b/blog/templatetags/__init__.py index 8875802..e69de29 100644 --- a/blog/templatetags/__init__.py +++ b/blog/templatetags/__init__.py @@ -1,14 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: __init__.py -@time: 2016/11/2 下午9:15 -""" \ No newline at end of file diff --git a/blog/templatetags/blog_tags.py b/blog/templatetags/blog_tags.py index c899099..137f7ca 100644 --- a/blog/templatetags/blog_tags.py +++ b/blog/templatetags/blog_tags.py @@ -1,18 +1,3 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: blog_tags.py -@time: 2016/11/2 下午11:10 -""" - import hashlib import logging import random @@ -26,8 +11,8 @@ from django.template.defaultfilters import stringfilter from django.urls import reverse from django.utils.safestring import mark_safe -from DjangoBlog.utils import cache -from DjangoBlog.utils import get_current_site +from djangoblog.utils import cache +from djangoblog.utils import get_current_site from blog.models import Article, Category, Tag, Links, SideBar, LinkShowType from comments.models import Comment from oauth.models import OAuthUser @@ -60,13 +45,13 @@ def datetimeformat(data): @register.filter(is_safe=True) @stringfilter def custom_markdown(content): - from DjangoBlog.utils import CommonMarkdown + from djangoblog.utils import CommonMarkdown return mark_safe(CommonMarkdown.get_markdown(content)) @register.simple_tag def get_markdown_toc(content): - from DjangoBlog.utils import CommonMarkdown + from djangoblog.utils import CommonMarkdown body, toc = CommonMarkdown.get_markdown_with_toc(content) return mark_safe(toc), mark_safe(body) @@ -80,7 +65,7 @@ def truncatechars_content(content): :return: """ from django.template.defaultfilters import truncatechars_html - from DjangoBlog.utils import get_blog_setting + from djangoblog.utils import get_blog_setting blogsetting = get_blog_setting() return truncatechars_html(content, blogsetting.article_sub_length) @@ -101,7 +86,7 @@ def load_breadcrumb(article): :return: """ names = article.get_category_tree() - from DjangoBlog.utils import get_blog_setting + from djangoblog.utils import get_blog_setting blogsetting = get_blog_setting() site = get_current_site().domain names.append((blogsetting.sitename, '/')) @@ -141,7 +126,7 @@ def load_sidebar(user, linktype): :return: """ logger.info('load sidebar') - from DjangoBlog.utils import get_blog_setting + from djangoblog.utils import get_blog_setting blogsetting = get_blog_setting() recent_articles = Article.objects.filter( status='p')[:blogsetting.sidebar_article_count] @@ -286,7 +271,7 @@ def load_article_detail(article, isindex, user): :param isindex:是否列表页,若是列表页只显示摘要 :return: """ - from DjangoBlog.utils import get_blog_setting + from djangoblog.utils import get_blog_setting blogsetting = get_blog_setting() return { @@ -340,3 +325,9 @@ def query(qs, **kwargs): {% endfor %} """ return qs.filter(**kwargs) + + +@register.filter +def addstr(arg1, arg2): + """concatenate arg1 & arg2""" + return str(arg1) + str(arg2) diff --git a/blog/tests.py b/blog/tests.py index acf6ad8..4391f17 100644 --- a/blog/tests.py +++ b/blog/tests.py @@ -8,7 +8,7 @@ from django.test import Client, RequestFactory, TestCase from django.urls import reverse from django.utils import timezone -from DjangoBlog.utils import get_current_site, get_sha256 +from djangoblog.utils import get_current_site, get_sha256 from accounts.models import BlogUser from blog.forms import BlogSearchForm from blog.models import Article, Category, Tag, SideBar, Links @@ -85,7 +85,7 @@ class ArticleTest(TestCase): response = self.client.get(article.get_absolute_url()) self.assertEqual(response.status_code, 200) - from DjangoBlog.spider_notify import SpiderNotify + from djangoblog.spider_notify import SpiderNotify SpiderNotify.notify(article.get_absolute_url()) response = self.client.get(tag.get_absolute_url()) self.assertEqual(response.status_code, 200) @@ -125,7 +125,7 @@ class ArticleTest(TestCase): f = BlogSearchForm() f.search() # self.client.login(username='liangliangyy', password='liangliangyy') - from DjangoBlog.spider_notify import SpiderNotify + from djangoblog.spider_notify import SpiderNotify SpiderNotify.baidu_notify([article.get_full_url()]) from blog.templatetags.blog_tags import gravatar_url, gravatar @@ -186,7 +186,7 @@ class ArticleTest(TestCase): '/upload?sign=' + sign, form_data, follow=True) self.assertEqual(rsp.status_code, 200) os.remove(imagepath) - from DjangoBlog.utils import save_user_avatar, send_email + from djangoblog.utils import save_user_avatar, send_email send_email(['qq@qq.com'], 'testTitle', 'testContent') save_user_avatar( 'https://www.python.org/static/img/python-logo@2x.png') diff --git a/blog/urls.py b/blog/urls.py index 883847c..f04b126 100644 --- a/blog/urls.py +++ b/blog/urls.py @@ -1,24 +1,7 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: urls.py -@time: 2016/11/2 下午7:15 -""" - from django.urls import path from django.views.decorators.cache import cache_page + from . import views -from haystack.forms import ModelSearchForm -from haystack.query import SearchQuerySet -from haystack.views import SearchView app_name = "blog" urlpatterns = [ diff --git a/blog/views.py b/blog/views.py index 4b62f78..38e7327 100644 --- a/blog/views.py +++ b/blog/views.py @@ -1,22 +1,22 @@ -import uuid - -from django.shortcuts import render - +import datetime +import logging # Create your views here. import os -import datetime -from django.views.generic.list import ListView -from django.views.generic.detail import DetailView -from django.conf import settings +import uuid + from django import forms -from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden -from django.views.decorators.csrf import csrf_exempt +from django.conf import settings from django.contrib.auth.decorators import login_required -from DjangoBlog.utils import cache, get_sha256, get_blog_setting +from django.http import HttpResponse, HttpResponseForbidden from django.shortcuts import get_object_or_404 +from django.shortcuts import render +from django.views.decorators.csrf import csrf_exempt +from django.views.generic.detail import DetailView +from django.views.generic.list import ListView + +from djangoblog.utils import cache, get_sha256, get_blog_setting from blog.models import Article, Category, Tag, Links, LinkShowType from comments.forms import CommentForm -import logging logger = logging.getLogger(__name__) @@ -316,7 +316,7 @@ def refresh_memcache(request): try: if request.user.is_superuser: - from DjangoBlog.utils import cache + from djangoblog.utils import cache if cache and cache is not None: cache.clear() return HttpResponse("ok") diff --git a/comments/admin.py b/comments/admin.py index 79f024d..6897e44 100644 --- a/comments/admin.py +++ b/comments/admin.py @@ -1,6 +1,5 @@ from django.contrib import admin # Register your models here. -from .models import Comment from django.urls import reverse from django.utils.html import format_html diff --git a/comments/forms.py b/comments/forms.py index ef8249e..8f4a480 100644 --- a/comments/forms.py +++ b/comments/forms.py @@ -1,22 +1,7 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: forms.py -@time: 2016/11/12 下午2:45 -""" -from .models import Comment from django import forms from django.forms import ModelForm -from django.contrib.auth.models import User -from django.contrib.auth import get_user_model + +from .models import Comment class CommentForm(ModelForm): diff --git a/comments/models.py b/comments/models.py index 4ffb3c9..67df624 100644 --- a/comments/models.py +++ b/comments/models.py @@ -1,8 +1,9 @@ -from django.db import models from django.conf import settings -from blog.models import Article +from django.db import models from django.utils.timezone import now +from blog.models import Article + # Create your models here. diff --git a/comments/templatetags/__init__.py b/comments/templatetags/__init__.py index 8875802..e69de29 100644 --- a/comments/templatetags/__init__.py +++ b/comments/templatetags/__init__.py @@ -1,14 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: __init__.py -@time: 2016/11/2 下午9:15 -""" \ No newline at end of file diff --git a/comments/templatetags/comments_tags.py b/comments/templatetags/comments_tags.py index e0fb2c2..fde02b4 100644 --- a/comments/templatetags/comments_tags.py +++ b/comments/templatetags/comments_tags.py @@ -1,23 +1,4 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: comments_tags.py -@time: 2016/11/2 下午9:17 -""" - from django import template -from django.template.loader import render_to_string -from ..models import Comment -from blog.models import Article -from comments.forms import CommentForm register = template.Library() diff --git a/comments/tests.py b/comments/tests.py index 49d4424..3b95550 100644 --- a/comments/tests.py +++ b/comments/tests.py @@ -1,12 +1,13 @@ from django.test import Client, RequestFactory, TestCase -from blog.models import Article, Category, Tag -from django.contrib.auth import get_user_model -from DjangoBlog.utils import get_current_site from django.urls import reverse from django.utils import timezone + from accounts.models import BlogUser +from blog.models import Category, Article +from comments.models import Comment from comments.templatetags.comments_tags import * -from DjangoBlog.utils import get_max_articleid_commentid +from djangoblog.utils import get_current_site +from djangoblog.utils import get_max_articleid_commentid # Create your tests here. diff --git a/comments/urls.py b/comments/urls.py index 79b9c83..bc22017 100644 --- a/comments/urls.py +++ b/comments/urls.py @@ -1,19 +1,5 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: urls.py -@time: 2016/11/12 下午3:03 -""" - from django.urls import path + from . import views app_name = "comments" diff --git a/comments/utils.py b/comments/utils.py index 353f372..0380f08 100644 --- a/comments/utils.py +++ b/comments/utils.py @@ -1,22 +1,8 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: utils.py -@time: 2018/10/8 10:24 PM -""" - -from DjangoBlog.utils import send_email -from DjangoBlog.utils import get_current_site import logging +from djangoblog.utils import get_current_site +from djangoblog.utils import send_email + logger = logging.getLogger(__name__) diff --git a/comments/views.py b/comments/views.py index 1295175..4484f5b 100644 --- a/comments/views.py +++ b/comments/views.py @@ -1,13 +1,12 @@ -from django.shortcuts import render - # Create your views here. -from .models import Comment +from django import forms +from django.contrib.auth import get_user_model +from django.http import HttpResponseRedirect +from django.views.generic.edit import FormView + from blog.models import Article from .forms import CommentForm -from django.views.generic.edit import FormView -from django.http import HttpResponseRedirect -from django.contrib.auth import get_user_model -from django import forms +from .models import Comment class CommentPostView(FormView): diff --git a/DjangoBlog/__init__.py b/djangoblog/__init__.py similarity index 100% rename from DjangoBlog/__init__.py rename to djangoblog/__init__.py diff --git a/DjangoBlog/admin_site.py b/djangoblog/admin_site.py similarity index 79% rename from DjangoBlog/admin_site.py rename to djangoblog/admin_site.py index d90ec5e..f120405 100644 --- a/DjangoBlog/admin_site.py +++ b/djangoblog/admin_site.py @@ -1,34 +1,25 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: admin_site.py -@time: 2018/1/7 上午2:21 -""" from django.contrib.admin import AdminSite -from DjangoBlog.utils import get_current_site -from django.contrib.sites.admin import SiteAdmin from django.contrib.admin.models import LogEntry +from django.contrib.sites.admin import SiteAdmin from django.contrib.sites.models import Site -from DjangoBlog.logentryadmin import LogEntryAdmin -from blog.admin import * + from accounts.admin import * -from oauth.admin import * -from servermanager.admin import * +from blog.admin import * +from blog.models import * from comments.admin import * +from comments.models import * +from djangoblog.logentryadmin import LogEntryAdmin +from oauth.admin import * +from oauth.models import * from owntracks.admin import * +from owntracks.models import * +from servermanager.admin import * +from servermanager.models import * class DjangoBlogAdminSite(AdminSite): - site_header = 'DjangoBlog administration' - site_title = 'DjangoBlog site admin' + site_header = 'djangoblog administration' + site_title = 'djangoblog site admin' def __init__(self, name='admin'): super().__init__(name) diff --git a/DjangoBlog/blog_signals.py b/djangoblog/blog_signals.py similarity index 83% rename from DjangoBlog/blog_signals.py rename to djangoblog/blog_signals.py index d0cbedd..525d45d 100644 --- a/DjangoBlog/blog_signals.py +++ b/djangoblog/blog_signals.py @@ -1,34 +1,20 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: blog_signals.py -@time: 2017/8/12 上午10:18 -""" import _thread import logging import django.dispatch -from django.dispatch import receiver from django.conf import settings from django.contrib.admin.models import LogEntry +from django.contrib.auth.signals import user_logged_in, user_logged_out from django.core.mail import EmailMultiAlternatives from django.db.models.signals import post_save -from django.contrib.auth.signals import user_logged_in, user_logged_out +from django.dispatch import receiver -from oauth.models import OAuthUser +from djangoblog.spider_notify import SpiderNotify +from djangoblog.utils import cache, expire_view_cache, delete_sidebar_cache, delete_view_cache +from djangoblog.utils import get_current_site from comments.models import Comment from comments.utils import send_comment_email -from DjangoBlog.utils import get_current_site -from DjangoBlog.utils import cache, expire_view_cache, delete_sidebar_cache, delete_view_cache -from DjangoBlog.spider_notify import SpiderNotify +from oauth.models import OAuthUser logger = logging.getLogger(__name__) @@ -71,13 +57,11 @@ def oauth_user_login_signal_handler(sender, **kwargs): oauthuser = OAuthUser.objects.get(id=id) site = get_current_site().domain if oauthuser.picture and not oauthuser.picture.find(site) >= 0: - from DjangoBlog.utils import save_user_avatar + from djangoblog.utils import save_user_avatar oauthuser.picture = save_user_avatar(oauthuser.picture) oauthuser.save() - delete_sidebar_cache(oauthuser.author.username) - - cache.clear() + delete_sidebar_cache() @receiver(post_save) @@ -102,6 +86,7 @@ def model_post_save_callback( logger.error("notify sipder", ex) if not is_update_views: clearcache = True + if isinstance(instance, Comment): path = instance.article.get_absolute_url() @@ -119,7 +104,7 @@ def model_post_save_callback( comment_cache_key = 'article_comments_{id}'.format( id=instance.article.id) cache.delete(comment_cache_key) - delete_sidebar_cache(instance.author.username) + delete_sidebar_cache() delete_view_cache('article_comments', [str(instance.article.pk)]) _thread.start_new(send_comment_email, (instance,)) @@ -133,5 +118,5 @@ def model_post_save_callback( def user_auth_callback(sender, request, user, **kwargs): if user and user.username: logger.info(user) - delete_sidebar_cache(user.username) - cache.clear() + delete_sidebar_cache() + # cache.clear() diff --git a/DjangoBlog/elasticsearch_backend.py b/djangoblog/elasticsearch_backend.py similarity index 93% rename from DjangoBlog/elasticsearch_backend.py rename to djangoblog/elasticsearch_backend.py index c4ee3e3..9120589 100644 --- a/DjangoBlog/elasticsearch_backend.py +++ b/djangoblog/elasticsearch_backend.py @@ -1,28 +1,11 @@ -#!/usr/bin/env python -# encoding: utf-8 -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: elasticsearch_backend.py -@time: 2019-04-13 11:46 -""" - -import logging -import re from django.utils.encoding import force_text - from elasticsearch_dsl import Q - -from haystack.backends import BaseEngine, BaseSearchBackend, BaseSearchQuery, EmptyResults, log_query +from haystack.backends import BaseEngine, BaseSearchBackend, BaseSearchQuery, log_query from haystack.models import SearchResult from haystack.utils import log as logging -from blog.models import Article from blog.documents import ArticleDocument, ArticleDocumentManager +from blog.models import Article logger = logging.getLogger(__name__) diff --git a/DjangoBlog/feeds.py b/djangoblog/feeds.py similarity index 77% rename from DjangoBlog/feeds.py rename to djangoblog/feeds.py index 1dd5bb4..1c09246 100644 --- a/DjangoBlog/feeds.py +++ b/djangoblog/feeds.py @@ -1,25 +1,11 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: feed.py -@time: 2016/12/22 下午10:16 -""" +from datetime import datetime +from django.contrib.auth import get_user_model from django.contrib.syndication.views import Feed -from blog.models import Article -from django.conf import settings from django.utils.feedgenerator import Rss201rev2Feed -from DjangoBlog.utils import CommonMarkdown -from django.contrib.auth import get_user_model -from datetime import datetime + +from djangoblog.utils import CommonMarkdown +from blog.models import Article class DjangoBlogFeed(Feed): diff --git a/DjangoBlog/logentryadmin.py b/djangoblog/logentryadmin.py similarity index 89% rename from DjangoBlog/logentryadmin.py rename to djangoblog/logentryadmin.py index b8a3931..009ab9d 100644 --- a/DjangoBlog/logentryadmin.py +++ b/djangoblog/logentryadmin.py @@ -1,27 +1,11 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: logentryadmin.py -@time: 2018/5/24 下午10:37 -""" -from django.contrib.contenttypes.models import ContentType -from django.urls import reverse, NoReverseMatch +from django.contrib import admin from django.contrib.admin.models import LogEntry, ADDITION, CHANGE, DELETION -from django.contrib.auth import get_user_model from django.contrib.contenttypes.models import ContentType +from django.urls import reverse, NoReverseMatch from django.utils.encoding import force_text from django.utils.html import escape -from django.utils.translation import pgettext_lazy, ugettext_lazy as _ from django.utils.safestring import mark_safe -from django.contrib import admin +from django.utils.translation import pgettext_lazy, ugettext_lazy as _ action_names = { ADDITION: pgettext_lazy('logentry_admin:action_type', 'Addition'), @@ -83,9 +67,9 @@ class LogEntryAdmin(admin.ModelAdmin): def has_change_permission(self, request, obj=None): return ( - request.user.is_superuser or - request.user.has_perm('admin.change_logentry') - ) and request.method != 'POST' + request.user.is_superuser or + request.user.has_perm('admin.change_logentry') + ) and request.method != 'POST' def has_delete_permission(self, request, obj=None): return False diff --git a/DjangoBlog/settings.py b/djangoblog/settings.py similarity index 97% rename from DjangoBlog/settings.py rename to djangoblog/settings.py index 1344243..1ac8448 100644 --- a/DjangoBlog/settings.py +++ b/djangoblog/settings.py @@ -1,5 +1,5 @@ """ -Django settings for DjangoBlog project. +Django settings for djangoblog project. Generated by 'django-admin startproject' using Django 1.10.2. @@ -9,8 +9,8 @@ https://docs.djangoproject.com/en/1.10/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/1.10/ref/settings/ """ -import sys import os +import sys def env_to_bool(env, default): @@ -74,7 +74,7 @@ MIDDLEWARE = [ 'blog.middleware.OnlineMiddleware' ] -ROOT_URLCONF = 'DjangoBlog.urls' +ROOT_URLCONF = 'djangoblog.urls' TEMPLATES = [ { @@ -93,7 +93,7 @@ TEMPLATES = [ }, ] -WSGI_APPLICATION = 'DjangoBlog.wsgi.application' +WSGI_APPLICATION = 'djangoblog.wsgi.application' # Database # https://docs.djangoproject.com/en/1.10/ref/settings/#databases @@ -149,7 +149,7 @@ USE_TZ = True HAYSTACK_CONNECTIONS = { 'default': { - 'ENGINE': 'DjangoBlog.whoosh_cn_backend.WhooshEngine', + 'ENGINE': 'djangoblog.whoosh_cn_backend.WhooshEngine', 'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index'), }, } @@ -299,6 +299,6 @@ if os.environ.get('DJANGO_ELASTICSEARCH_HOST'): } HAYSTACK_CONNECTIONS = { 'default': { - 'ENGINE': 'DjangoBlog.elasticsearch_backend.ElasticSearchEngine', + 'ENGINE': 'djangoblog.elasticsearch_backend.ElasticSearchEngine', }, } diff --git a/DjangoBlog/sitemap.py b/djangoblog/sitemap.py similarity index 78% rename from DjangoBlog/sitemap.py rename to djangoblog/sitemap.py index e4bcfee..151492e 100644 --- a/DjangoBlog/sitemap.py +++ b/djangoblog/sitemap.py @@ -1,24 +1,8 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: sitemap.py -@time: 2016/12/15 下午10:26 -""" - from django.contrib.sitemaps import Sitemap -from blog.models import Article, Category, Tag -from accounts.models import BlogUser -from django.contrib.sitemaps import GenericSitemap from django.urls import reverse +from blog.models import Article, Category, Tag + class StaticViewSitemap(Sitemap): priority = 0.5 diff --git a/DjangoBlog/spider_notify.py b/djangoblog/spider_notify.py similarity index 74% rename from DjangoBlog/spider_notify.py rename to djangoblog/spider_notify.py index f88db4e..f77c09b 100644 --- a/DjangoBlog/spider_notify.py +++ b/djangoblog/spider_notify.py @@ -1,22 +1,8 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: spider_notify.py -@time: 2017/1/15 下午1:41 -""" +import logging -from django.contrib.sitemaps import ping_google import requests from django.conf import settings -import logging +from django.contrib.sitemaps import ping_google logger = logging.getLogger(__name__) diff --git a/DjangoBlog/tests.py b/djangoblog/tests.py similarity index 68% rename from DjangoBlog/tests.py rename to djangoblog/tests.py index 47fda83..01237d9 100644 --- a/DjangoBlog/tests.py +++ b/djangoblog/tests.py @@ -1,21 +1,6 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: tests.py -@time: 2017/10/25 下午10:16 -""" - from django.test import TestCase -from DjangoBlog.utils import * +from djangoblog.utils import * class DjangoBlogTest(TestCase): diff --git a/djangoblog/urls.py b/djangoblog/urls.py new file mode 100644 index 0000000..c0d96fa --- /dev/null +++ b/djangoblog/urls.py @@ -0,0 +1,55 @@ +"""djangoblog URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/1.10/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.conf.urls import url, include + 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) +""" +from django.conf import settings +from django.conf.urls import url +from django.conf.urls.static import static +from django.contrib.sitemaps.views import sitemap +from django.urls import include + +from djangoblog.admin_site import admin_site +from djangoblog.feeds import DjangoBlogFeed +from djangoblog.sitemap import StaticViewSitemap, ArticleSiteMap, CategorySiteMap, TagSiteMap, UserSiteMap + +sitemaps = { + + 'blog': ArticleSiteMap, + 'Category': CategorySiteMap, + 'Tag': TagSiteMap, + 'User': UserSiteMap, + 'static': StaticViewSitemap +} + +handler404 = 'blog.views.page_not_found_view' +handler500 = 'blog.views.server_error_view' +handle403 = 'blog.views.permission_denied_view' +urlpatterns = [ + url(r'^admin/', admin_site.urls), + url(r'', include('blog.urls', namespace='blog')), + url(r'mdeditor/', include('mdeditor.urls')), + url(r'', include('comments.urls', namespace='comment')), + url(r'', include('accounts.urls', namespace='account')), + url(r'', include('oauth.urls', namespace='oauth')), + url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, + name='django.contrib.sitemaps.views.sitemap'), + url(r'^feed/$', DjangoBlogFeed()), + url(r'^rss/$', DjangoBlogFeed()), + url(r'^search', include('haystack.urls'), name='search'), + url(r'', include('servermanager.urls', namespace='servermanager')), + url(r'', include('owntracks.urls', namespace='owntracks')) + ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) +if settings.DEBUG: + urlpatterns += static(settings.MEDIA_URL, + document_root=settings.MEDIA_ROOT) diff --git a/DjangoBlog/utils.py b/djangoblog/utils.py similarity index 96% rename from DjangoBlog/utils.py rename to djangoblog/utils.py index 8cdbbfa..30d88d8 100644 --- a/DjangoBlog/utils.py +++ b/djangoblog/utils.py @@ -122,7 +122,7 @@ class CommonMarkdown: def send_email(emailto, title, content): - from DjangoBlog.blog_signals import send_email_signal + from djangoblog.blog_signals import send_email_signal send_email_signal.send( send_email.__class__, emailto=emailto, @@ -150,7 +150,7 @@ def get_blog_setting(): from blog.models import BlogSettings if not BlogSettings.objects.count(): setting = BlogSettings() - setting.sitename = 'DjangoBlog' + setting.sitename = 'djangoblog' setting.site_description = '基于Django的博客系统' setting.site_seo_description = '基于Django的博客系统' setting.site_keywords = 'Django,Python' @@ -207,13 +207,12 @@ def save_user_avatar(url): return url -def delete_sidebar_cache(username): +def delete_sidebar_cache(): from django.core.cache.utils import make_template_fragment_key from blog.models import LinkShowType keys = ( make_template_fragment_key( - 'sidebar', [ - username + x]) for x in LinkShowType.values) + 'sidebar', ["sidebar" + x]) for x in LinkShowType.values) for k in keys: logger.info('delete sidebar key:' + k) cache.delete(k) diff --git a/DjangoBlog/whoosh_cn_backend.py b/djangoblog/whoosh_cn_backend.py similarity index 99% rename from DjangoBlog/whoosh_cn_backend.py rename to djangoblog/whoosh_cn_backend.py index 4979e08..f246c81 100644 --- a/DjangoBlog/whoosh_cn_backend.py +++ b/djangoblog/whoosh_cn_backend.py @@ -1,17 +1,7 @@ # encoding: utf-8 from __future__ import absolute_import, division, print_function, unicode_literals -from whoosh.writing import AsyncWriter -from whoosh.searching import ResultsPage -from whoosh.qparser import QueryParser -from whoosh.highlight import ContextFragmenter, HtmlFormatter -from whoosh.highlight import highlight as whoosh_highlight -from whoosh.filedb.filestore import FileStorage, RamStorage -from whoosh.fields import BOOLEAN, DATETIME, IDLIST, KEYWORD, NGRAM, NGRAMWORDS, NUMERIC, Schema, TEXT -from whoosh.fields import ID as WHOOSH_ID -from whoosh.analysis import StemmingAnalyzer -from whoosh import index -from jieba.analyse import ChineseAnalyzer + import json import os import re @@ -19,20 +9,30 @@ import shutil import threading import warnings +import six from django.conf import settings from django.core.exceptions import ImproperlyConfigured -import six from django.utils.datetime_safe import datetime from django.utils.encoding import force_text - from haystack.backends import BaseEngine, BaseSearchBackend, BaseSearchQuery, EmptyResults, log_query from haystack.constants import DJANGO_CT, DJANGO_ID, ID from haystack.exceptions import MissingDependency, SearchBackendError, SkipDocument from haystack.inputs import Clean, Exact, PythonData, Raw from haystack.models import SearchResult -from haystack.utils import log as logging from haystack.utils import get_identifier, get_model_ct +from haystack.utils import log as logging from haystack.utils.app_loading import haystack_get_model +from jieba.analyse import ChineseAnalyzer +from whoosh import index +from whoosh.analysis import StemmingAnalyzer +from whoosh.fields import BOOLEAN, DATETIME, IDLIST, KEYWORD, NGRAM, NGRAMWORDS, NUMERIC, Schema, TEXT +from whoosh.fields import ID as WHOOSH_ID +from whoosh.filedb.filestore import FileStorage, RamStorage +from whoosh.highlight import ContextFragmenter, HtmlFormatter +from whoosh.highlight import highlight as whoosh_highlight +from whoosh.qparser import QueryParser +from whoosh.searching import ResultsPage +from whoosh.writing import AsyncWriter try: import whoosh @@ -853,14 +853,14 @@ class WhooshSearchBackend(BaseSearchBackend): # Try to handle most built-in types. if isinstance( - converted_value, - (list, - tuple, - set, - dict, - six.integer_types, - float, - complex)): + converted_value, + (list, + tuple, + set, + dict, + six.integer_types, + float, + complex)): return converted_value except BaseException: # If it fails (SyntaxError or its ilk) or we don't trust it, @@ -957,7 +957,7 @@ class WhooshSearchQuery(BaseSearchQuery): 'contains', 'startswith', 'endswith', - 'fuzzy']: + 'fuzzy']: if value.input_type_name == 'exact': query_frag = prepared_value else: diff --git a/DjangoBlog/wsgi.py b/djangoblog/wsgi.py similarity index 74% rename from DjangoBlog/wsgi.py rename to djangoblog/wsgi.py index 6968759..2295efd 100644 --- a/DjangoBlog/wsgi.py +++ b/djangoblog/wsgi.py @@ -1,5 +1,5 @@ """ -WSGI config for DjangoBlog project. +WSGI config for djangoblog project. It exposes the WSGI callable as a module-level variable named ``application``. @@ -11,6 +11,6 @@ import os from django.core.wsgi import get_wsgi_application -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoBlog.settings") +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangoblog.settings") application = get_wsgi_application() diff --git a/docker-compose.es.yml b/docker-compose.es.yml index 9ec00e0..12c316e 100644 --- a/docker-compose.es.yml +++ b/docker-compose.es.yml @@ -25,11 +25,11 @@ services: djangoblog: build: . restart: always - command: bash -c 'sh /code/DjangoBlog/bin/docker_start.sh' + command: bash -c 'sh /code/djangoblog/bin/docker_start.sh' ports: - "8000:8000" volumes: - - ./collectedstatic:/code/DjangoBlog/collectedstatic + - ./collectedstatic:/code/djangoblog/collectedstatic environment: - DJANGO_MYSQL_DATABASE=djangoblog - DJANGO_MYSQL_USER=root diff --git a/docker-compose.yml b/docker-compose.yml index 42c75d6..307c66b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -27,11 +27,11 @@ services: djangoblog: build: . restart: always - command: bash -c 'sh /code/DjangoBlog/bin/docker_start.sh' + command: bash -c 'sh /code/djangoblog/bin/docker_start.sh' ports: - "8000:8000" volumes: - - ./collectedstatic:/code/DjangoBlog/collectedstatic + - ./collectedstatic:/code/djangoblog/collectedstatic environment: - DJANGO_MYSQL_DATABASE=djangoblog - DJANGO_MYSQL_USER=root @@ -53,7 +53,7 @@ services: - "443:443" volumes: - ./bin/nginx.conf:/etc/nginx/nginx.conf - - ./collectedstatic:/code/DjangoBlog/collectedstatic + - ./collectedstatic:/code/djangoblog/collectedstatic links: - djangoblog:djangoblog container_name: nginx diff --git a/docs/docker.md b/docs/docker.md index 123e64e..92af9fa 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -55,5 +55,5 @@ docker-compose -f docker-compose.yml -f docker-compose.es.yml up -d 第一次启动之后,使用如下命令来创建超级用户: ```shell -docker exec -it djangoblog python /code/DjangoBlog/manage.py createsuperuser +docker exec -it djangoblog python /code/djangoblog/manage.py createsuperuser ``` diff --git a/docs/es.md b/docs/es.md index 68ce49e..97226c5 100644 --- a/docs/es.md +++ b/docs/es.md @@ -17,7 +17,7 @@ ELASTICSEARCH_DSL = { ```python HAYSTACK_CONNECTIONS = { 'default': { - 'ENGINE': 'DjangoBlog.elasticsearch_backend.ElasticSearchEngine', + 'ENGINE': 'djangoblog.elasticsearch_backend.ElasticSearchEngine', }, } ``` diff --git a/manage.py b/manage.py index 88a745f..919ba74 100755 --- a/manage.py +++ b/manage.py @@ -3,7 +3,7 @@ import os import sys if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoBlog.settings") + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangoblog.settings") try: from django.core.management import execute_from_command_line except ImportError: diff --git a/oauth/admin.py b/oauth/admin.py index 4708962..ec0e3c9 100644 --- a/oauth/admin.py +++ b/oauth/admin.py @@ -1,9 +1,9 @@ +import logging + from django.contrib import admin # Register your models here. -from .models import OAuthUser, OAuthConfig from django.urls import reverse from django.utils.html import format_html -import logging logger = logging.getLogger(__name__) @@ -25,8 +25,8 @@ class OAuthUserAdmin(admin.ModelAdmin): def get_readonly_fields(self, request, obj=None): return list(self.readonly_fields) + \ - [field.name for field in obj._meta.fields] + \ - [field.name for field in obj._meta.many_to_many] + [field.name for field in obj._meta.fields] + \ + [field.name for field in obj._meta.many_to_many] def has_add_permission(self, request): return False diff --git a/oauth/forms.py b/oauth/forms.py index a64f9c8..0e4ede3 100644 --- a/oauth/forms.py +++ b/oauth/forms.py @@ -1,18 +1,3 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: forms.py -@time: 2017/3/7 下午8:58 -""" - from django.contrib.auth.forms import forms from django.forms import widgets diff --git a/oauth/models.py b/oauth/models.py index cbe73ff..08cdd6f 100644 --- a/oauth/models.py +++ b/oauth/models.py @@ -1,9 +1,8 @@ -from django.db import models - # Create your models here. from django.conf import settings -from django.utils.timezone import now from django.core.exceptions import ValidationError +from django.db import models +from django.utils.timezone import now from django.utils.translation import gettext_lazy as _ @@ -57,7 +56,7 @@ class OAuthConfig(models.Model): def clean(self): if OAuthConfig.objects.filter( type=self.type).exclude( - id=self.id).count(): + id=self.id).count(): raise ValidationError(_(self.type + '已经存在')) def __str__(self): diff --git a/oauth/oauthmanager.py b/oauth/oauthmanager.py index 5d897ef..16dc55c 100644 --- a/oauth/oauthmanager.py +++ b/oauth/oauthmanager.py @@ -1,26 +1,12 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: oauthmanager.py -@time: 2016/11/26 下午5:09 -""" - -from abc import ABCMeta, abstractmethod, abstractproperty -from oauth.models import OAuthUser, OAuthConfig -from django.conf import settings -import requests import json import logging import urllib.parse -from DjangoBlog.utils import parse_dict_to_url, cache_decorator +from abc import ABCMeta, abstractmethod + +import requests + +from djangoblog.utils import cache_decorator +from oauth.models import OAuthUser, OAuthConfig logger = logging.getLogger(__name__) diff --git a/oauth/templatetags/__init__.py b/oauth/templatetags/__init__.py index fa0f602..8b13789 100644 --- a/oauth/templatetags/__init__.py +++ b/oauth/templatetags/__init__.py @@ -1,14 +1 @@ -#!/usr/bin/env python -# encoding: utf-8 - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: __init__.py -@time: 2017/3/4 下午3:22 -""" diff --git a/oauth/templatetags/oauth_tags.py b/oauth/templatetags/oauth_tags.py index 54067de..7b687d5 100644 --- a/oauth/templatetags/oauth_tags.py +++ b/oauth/templatetags/oauth_tags.py @@ -1,21 +1,7 @@ -#!/usr/bin/env python -# encoding: utf-8 - +from django import template +from django.urls import reverse -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: oauth_tags.py -@time: 2017/3/4 下午3:22 -""" from oauth.oauthmanager import get_oauth_apps -from django.urls import reverse -from django import template -from django.conf import settings register = template.Library() @@ -27,7 +13,7 @@ def load_oauth_applications(request): baseurl = reverse('oauth:oauthlogin') path = request.get_full_path() - apps = list(map(lambda x: (x.ICON_NAME, '{baseurl}?type={type}&next_url={next}' .format( + apps = list(map(lambda x: (x.ICON_NAME, '{baseurl}?type={type}&next_url={next}'.format( baseurl=baseurl, type=x.ICON_NAME, next=path)), applications)) else: apps = [] diff --git a/oauth/tests.py b/oauth/tests.py index 74568e7..c8fcfc8 100644 --- a/oauth/tests.py +++ b/oauth/tests.py @@ -1,4 +1,5 @@ from django.test import TestCase + from .models import OAuthConfig diff --git a/oauth/urls.py b/oauth/urls.py index 7820f60..c4a12a0 100644 --- a/oauth/urls.py +++ b/oauth/urls.py @@ -1,20 +1,5 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: urls.py -@time: 2016/11/26 下午5:25 -""" - from django.urls import path -from django.views.decorators.cache import cache_page + from . import views app_name = "oauth" diff --git a/oauth/views.py b/oauth/views.py index cde1ff4..fdfb542 100644 --- a/oauth/views.py +++ b/oauth/views.py @@ -1,26 +1,26 @@ -from django.shortcuts import render - +import datetime +import logging # Create your views here. from urllib.parse import urlparse -import datetime + from django.conf import settings -from django.http import HttpResponse, HttpResponseRedirect from django.contrib.auth import get_user_model -from .models import OAuthUser from django.contrib.auth import login -from django.shortcuts import get_object_or_404 -from django.views.generic import FormView, RedirectView -from oauth.forms import RequireEmailForm -from django.urls import reverse -from django.db import transaction -from DjangoBlog.utils import send_email, get_sha256, save_user_avatar -from DjangoBlog.utils import get_current_site from django.core.exceptions import ObjectDoesNotExist +from django.db import transaction from django.http import HttpResponseForbidden -from .oauthmanager import get_manager_by_type, OAuthAccessTokenException -from DjangoBlog.blog_signals import oauth_user_login_signal +from django.http import HttpResponseRedirect +from django.shortcuts import get_object_or_404 +from django.shortcuts import render +from django.urls import reverse +from django.views.generic import FormView -import logging +from djangoblog.blog_signals import oauth_user_login_signal +from djangoblog.utils import get_current_site +from djangoblog.utils import send_email, get_sha256 +from oauth.forms import RequireEmailForm +from .models import OAuthUser +from .oauthmanager import get_manager_by_type, OAuthAccessTokenException logger = logging.getLogger(__name__) diff --git a/owntracks/admin.py b/owntracks/admin.py index 66d16d3..655b535 100644 --- a/owntracks/admin.py +++ b/owntracks/admin.py @@ -1,7 +1,6 @@ from django.contrib import admin # Register your models here. -from .models import OwnTrackLog class OwnTrackLogsAdmin(admin.ModelAdmin): diff --git a/owntracks/tests.py b/owntracks/tests.py index aa2dfbe..1ad14fc 100644 --- a/owntracks/tests.py +++ b/owntracks/tests.py @@ -1,8 +1,9 @@ +import json + from django.test import Client, RequestFactory, TestCase -from .models import OwnTrackLog + from accounts.models import BlogUser -from owntracks.views import convert_to_amap -import json +from .models import OwnTrackLog # Create your tests here. @@ -52,7 +53,7 @@ class OwnTrackLogTest(TestCase): s.lon = 123.234 s.lat = 34.234 s.save() - + rsp = self.client.get('/owntracks/show_dates') self.assertEqual(rsp.status_code, 200) rsp = self.client.get('/owntracks/show_maps') diff --git a/owntracks/urls.py b/owntracks/urls.py index 7225c0a..c19ada8 100644 --- a/owntracks/urls.py +++ b/owntracks/urls.py @@ -1,18 +1,5 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: urls.py -@time: 2018/2/25 下午3:04 -""" from django.urls import path + from . import views app_name = "owntracks" diff --git a/owntracks/views.py b/owntracks/views.py index 76c3053..65bfd3e 100644 --- a/owntracks/views.py +++ b/owntracks/views.py @@ -1,18 +1,18 @@ -from django.shortcuts import render - # Create your views here. -import json import datetime import itertools +import json +import logging from itertools import groupby + +import requests +from django.contrib.auth.decorators import login_required from django.http import HttpResponse -from .models import OwnTrackLog -import logging -from django.shortcuts import render from django.http import JsonResponse -from django.contrib.auth.decorators import login_required +from django.shortcuts import render from django.views.decorators.csrf import csrf_exempt -import requests + +from .models import OwnTrackLog logger = logging.getLogger(__name__) diff --git a/servermanager/MemcacheStorage.py b/servermanager/MemcacheStorage.py index d068814..38a7990 100644 --- a/servermanager/MemcacheStorage.py +++ b/servermanager/MemcacheStorage.py @@ -1,20 +1,7 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: MemcacheStorage.py -@time: 2017/8/27 上午2:42 -""" from werobot.session import SessionStorage from werobot.utils import json_loads, json_dumps -from DjangoBlog.utils import cache + +from djangoblog.utils import cache class MemcacheStorage(SessionStorage): diff --git a/servermanager/admin.py b/servermanager/admin.py index 7897041..361b923 100644 --- a/servermanager/admin.py +++ b/servermanager/admin.py @@ -1,6 +1,5 @@ from django.contrib import admin # Register your models here. -from .models import commands, EmailSendLog class CommandsAdmin(admin.ModelAdmin): diff --git a/servermanager/robot.py b/servermanager/robot.py index 7eaface..86cbb58 100644 --- a/servermanager/robot.py +++ b/servermanager/robot.py @@ -1,33 +1,18 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: robot.py -@time: 2017/8/27 上午1:55 -""" +import os +import re +import jsonpickle from werobot import WeRoBot -import re -from werobot.replies import ArticlesReply, MusicReply, ImageReply, Article -from .MemcacheStorage import MemcacheStorage +from werobot.replies import ArticlesReply, Article +from django.conf import settings +from djangoblog.utils import get_sha256 from servermanager.api.blogapi import BlogApi from servermanager.api.commonapi import TuLing -import os -import json -from DjangoBlog.utils import get_sha256 -from django.conf import settings -import jsonpickle from servermanager.models import commands +from .MemcacheStorage import MemcacheStorage robot = WeRoBot(token=os.environ.get('DJANGO_WEROBOT_TOKEN') - or 'lylinux', enable_session=True) + or 'lylinux', enable_session=True) memstorage = MemcacheStorage() if memstorage.is_available: robot.config['SESSION_STORAGE'] = memstorage @@ -45,9 +30,7 @@ tuling = TuLing() def convert_to_articlereply(articles, message): reply = ArticlesReply(message=message) - from blog.templatetags.blog_tags import custom_markdown, truncatechars_content - from DjangoBlog.utils import CommonMarkdown - from django.utils.safestring import mark_safe + from blog.templatetags.blog_tags import truncatechars_content for post in articles: imgs = re.findall(r'(?:http\:|https\:)?\/\/.*\.(?:png|jpg)', post.body) imgurl = '' diff --git a/servermanager/tests.py b/servermanager/tests.py index 55b4fc8..85a1c14 100644 --- a/servermanager/tests.py +++ b/servermanager/tests.py @@ -1,13 +1,14 @@ from django.test import Client, RequestFactory, TestCase -from DjangoBlog.utils import get_current_site -from .models import commands from django.utils import timezone +from werobot.messages.messages import TextMessage + +from djangoblog.utils import get_current_site from accounts.models import BlogUser from blog.models import Category, Article -from .robot import search, category, recents -from werobot.messages.messages import TextMessage -from .robot import MessageHandler, CommandHandler from servermanager.api.commonapi import TuLing +from .models import commands +from .robot import MessageHandler, CommandHandler +from .robot import search, category, recents # Create your tests here. diff --git a/servermanager/urls.py b/servermanager/urls.py index 8600186..8d134d2 100644 --- a/servermanager/urls.py +++ b/servermanager/urls.py @@ -1,20 +1,6 @@ -#!/usr/bin/env python -# encoding: utf-8 - - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: urls.py -@time: 2017/8/27 上午2:27 -""" - from django.urls import path from werobot.contrib.django import make_view + from .robot import robot app_name = "servermanager" diff --git a/servermanager/views.py b/servermanager/views.py index 91ea44a..60f00ef 100644 --- a/servermanager/views.py +++ b/servermanager/views.py @@ -1,3 +1 @@ -from django.shortcuts import render - # Create your views here. diff --git a/templates/blog/article_detail.html b/templates/blog/article_detail.html index d0bc985..9ec51d3 100755 --- a/templates/blog/article_detail.html +++ b/templates/blog/article_detail.html @@ -72,9 +72,30 @@ {% endblock %} {% block sidebar %} - {% with request.user.username|add:'p' as cachekey %} + {% with "sidear"|addstr:"p" as cachekey %} {% cache 36000 sidebar cachekey %} - {% load_sidebar user 'p' %} + {% load_sidebar user "p" %} {% endcache %} {% endwith %} -{% endblock %} + + +{% endblock %} \ No newline at end of file diff --git a/templates/blog/article_index.html b/templates/blog/article_index.html index f6f96bb..8542733 100644 --- a/templates/blog/article_index.html +++ b/templates/blog/article_index.html @@ -38,9 +38,30 @@ {% endblock %} {% block sidebar %} - {% with request.user.username|add:linktype as cachekey %} + {% with "sidear"|addstr:linktype as cachekey %} {% cache 36000 sidebar cachekey %} {% load_sidebar user linktype %} {% endcache %} {% endwith %} + + {% endblock %} \ No newline at end of file diff --git a/templates/blog/tags/sidebar.html b/templates/blog/tags/sidebar.html index c2de415..05f2da4 100755 --- a/templates/blog/tags/sidebar.html +++ b/templates/blog/tags/sidebar.html @@ -114,22 +114,6 @@ alt="GitHub forks">

-