diff --git a/DjangoBlog/utils.py b/DjangoBlog/utils.py index 68f2806..6afd817 100644 --- a/DjangoBlog/utils.py +++ b/DjangoBlog/utils.py @@ -2,28 +2,21 @@ # encoding: utf-8 -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: utils.py -@time: 2017/1/19 上午2:30 -""" -from django.core.cache import cache -from django.contrib.sites.models import Site +import logging +import os +import random +import string +import uuid from hashlib import sha256 + import mistune +import requests +from django.contrib.sites.models import Site +from django.core.cache import cache from mistune import escape, escape_link from pygments import highlight -from pygments.lexers import get_lexer_by_name from pygments.formatters import html -import logging -import requests -import uuid -import os +from pygments.lexers import get_lexer_by_name logger = logging.getLogger(__name__) @@ -187,6 +180,11 @@ def send_email(emailto, title, content): content=content) +def generate_code() -> str: + """生成随机数验证码""" + return ''.join(random.sample(string.digits, 6)) + + def parse_dict_to_url(dict): from urllib.parse import quote url = '&'.join(['{}={}'.format(quote(k, safe='/'), quote(v, safe='/')) diff --git a/accounts/forms.py b/accounts/forms.py index 5808946..8e8049d 100644 --- a/accounts/forms.py +++ b/accounts/forms.py @@ -13,12 +13,12 @@ @time: 2016/11/20 下午3:16 """ from django import forms -from django.forms import widgets -from django.core.exceptions import ValidationError from django.contrib.auth import get_user_model, password_validation from django.contrib.auth.forms import AuthenticationForm, UserCreationForm +from django.core.exceptions import ValidationError +from django.forms import widgets -from . import email +from . import utils from .models import BlogUser @@ -116,7 +116,7 @@ class ForgetPasswordForm(forms.Form): def clean_code(self): code = self.cleaned_data.get("code") - error = email.verify( + error = utils.verify( email=self.cleaned_data.get("email"), code=code, ) diff --git a/accounts/tests.py b/accounts/tests.py index 5fe2ef1..f0e7b12 100644 --- a/accounts/tests.py +++ b/accounts/tests.py @@ -1,12 +1,12 @@ -from django.urls import reverse from django.conf import settings -from django.utils import timezone from django.test import Client, RequestFactory, TestCase +from django.urls import reverse +from django.utils import timezone -from accounts.models import BlogUser from DjangoBlog.utils import * +from accounts.models import BlogUser from blog.models import Article, Category -from . import email +from . import utils # Create your tests here. @@ -120,14 +120,14 @@ class AccountTest(TestCase): def test_verify_email_code(self): to_email = "admin@admin.com" - code = email.generate_code() - email.set_code(to_email, code) - email.send(to_email, code) + code = generate_code() + utils.set_code(to_email, code) + utils.send_verify_email(to_email, code) - err = email.verify("admin@admin.com", code) + err = utils.verify("admin@admin.com", code) self.assertEqual(err, None) - err = email.verify("admin@123.com", code) + err = utils.verify("admin@123.com", code) self.assertEqual(type(err), str) def test_forget_password_email_code_success(self): @@ -153,8 +153,8 @@ class AccountTest(TestCase): self.assertEqual(resp.content.decode("utf-8"), "错误的邮箱") def test_forget_password_email_success(self): - code = email.generate_code() - email.set_code(self.blog_user.email, code) + code = generate_code() + utils.set_code(self.blog_user.email, code) data = dict( new_password1=self.new_test, new_password2=self.new_test, @@ -195,8 +195,8 @@ class AccountTest(TestCase): ) def test_forget_password_email_code_error(self): - code = email.generate_code() - email.set_code(self.blog_user.email, code) + code = generate_code() + utils.set_code(self.blog_user.email, code) data = dict( new_password1=self.new_test, new_password2=self.new_test, diff --git a/accounts/email.py b/accounts/utils.py similarity index 83% rename from accounts/email.py rename to accounts/utils.py index 6b56241..cd5c360 100644 --- a/accounts/email.py +++ b/accounts/utils.py @@ -1,20 +1,14 @@ import typing -import random -import string from datetime import timedelta from django.core.cache import cache + from DjangoBlog.utils import send_email _code_ttl = timedelta(minutes=5) -def generate_code() -> str: - """生成随机数验证码""" - return ''.join(random.sample(string.digits, 6)) - - -def send(to_mail: str, code: str, subject: str = "邮件验证码"): +def send_verify_email(to_mail: str, code: str, subject: str = "邮件验证码"): """发送重设密码验证码 Args: to_mail: 接受邮箱 diff --git a/accounts/views.py b/accounts/views.py index 1314449..438337b 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -1,30 +1,29 @@ import logging -import threading +from django.conf import settings +from django.contrib import auth +from django.contrib.auth import REDIRECT_FIELD_NAME +from django.contrib.auth import get_user_model +from django.contrib.auth import logout +from django.contrib.auth.forms import AuthenticationForm +from django.contrib.auth.hashers import make_password +from django.http import HttpResponseRedirect, HttpResponseForbidden from django.http.request import HttpRequest from django.http.response import HttpResponse -from django.shortcuts import render -from django.contrib.auth import logout -from django.views.generic import FormView, RedirectView -from django.contrib.auth import get_user_model from django.shortcuts import get_object_or_404 -from django.http import HttpResponseRedirect, HttpResponseForbidden +from django.shortcuts import render from django.urls import reverse -from django.contrib.auth.forms import AuthenticationForm -from django.contrib.auth import REDIRECT_FIELD_NAME -from django.views.decorators.csrf import csrf_protect -from django.contrib import auth -from django.views.decorators.cache import never_cache from django.utils.decorators import method_decorator -from django.views.decorators.debug import sensitive_post_parameters from django.utils.http import is_safe_url -from django.conf import settings from django.views import View -from django.contrib.auth.hashers import make_password +from django.views.decorators.cache import never_cache +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 +from DjangoBlog.utils import send_email, get_sha256, get_current_site, generate_code +from . import utils from .forms import RegisterForm, LoginForm, ForgetPasswordForm, ForgetPasswordCodeForm -from . import email from .models import BlogUser logger = logging.getLogger(__name__) @@ -69,7 +68,7 @@ class RegisterView(FormView): content=content) url = reverse('accounts:result') + \ - '?type=register&id=' + str(user.id) + '?type=register&id=' + str(user.id) return HttpResponseRedirect(url) else: return self.render_to_response({ @@ -136,8 +135,8 @@ class LoginView(FormView): redirect_to = self.request.POST.get(self.redirect_field_name) if not is_safe_url( - url=redirect_to, allowed_hosts=[ - self.request.get_host()]): + url=redirect_to, allowed_hosts=[ + self.request.get_host()]): redirect_to = self.success_url return redirect_to @@ -197,11 +196,8 @@ class ForgetPasswordEmailCode(View): return HttpResponse("错误的邮箱") to_email = form.cleaned_data["email"] - code = email.generate_code() - email.set_code(to_email, code) - - # 异步执行 - t = threading.Thread(target=email.send, args=(to_email, code)) - t.start() + code = generate_code() + utils.send_verify_email(to_email, code) + utils.set_code(to_email, code) return HttpResponse("ok") diff --git a/servermanager/api/__init__.py b/servermanager/api/__init__.py index 990c2c0..8b13789 100644 --- a/servermanager/api/__init__.py +++ b/servermanager/api/__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.py -@time: 2017/8/27 上午11:40 -""" diff --git a/servermanager/api/blogapi.py b/servermanager/api/blogapi.py index 24b3fea..9ac252b 100644 --- a/servermanager/api/blogapi.py +++ b/servermanager/api/blogapi.py @@ -1,19 +1,6 @@ -#!/usr/bin/env python -# encoding: utf-8 +from haystack.query import SearchQuerySet - -""" -@version: ?? -@author: liangliangyy -@license: MIT Licence -@contact: liangliangyy@gmail.com -@site: https://www.lylinux.net/ -@software: PyCharm -@file: blogapi.py -@time: 2017/8/27 上午11:40 -""" -from blog.models import Article, Category, Tag -from haystack.query import EmptySearchQuerySet, SearchQuerySet +from blog.models import Article, Category class BlogApi(): diff --git a/servermanager/api/commonapi.py b/servermanager/api/commonapi.py index 7669dde..56892d4 100644 --- a/servermanager/api/commonapi.py +++ b/servermanager/api/commonapi.py @@ -1,30 +1,17 @@ -#!/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: commonapi.py -@time: 2017/9/2 上午1:43 -""" -import requests import json import logging +import requests + logger = logging.getLogger(__name__) -class TuLing(): +class TuLing: def __init__(self): self.__key__ = '2f1446eb0321804291b0a1e217c25bb5' self.__appid__ = 137762 - def __build_req_url(self, content): + def _build_req_url(self, content): return 'http://www.tuling123.com/openapi/api?key=%s&info=%s&userid=%s' % ( self.__key__, content, self.__appid__) @@ -34,7 +21,7 @@ class TuLing(): def getdata(self, content): try: - requrl = self.__build_req_url(content) + requrl = self._build_req_url(content) res = self.UserAgent(requrl).decode('utf-8') jsons = json.loads(res, encoding='utf-8')