This commit is contained in:
virusdefender
2017-01-23 16:25:14 +08:00
parent 5c5cf7ff98
commit 32c1b89080
35 changed files with 56 additions and 108 deletions

View File

@@ -1,2 +1,2 @@
from .api import *
from ._serializers import *
from .api import * # NOQA
from ._serializers import * # NOQA

View File

@@ -18,4 +18,4 @@ class DateTimeTZField(serializers.DateTimeField):
class IDOnlySerializer(serializers.Serializer):
id = serializers.IntegerField()
id = serializers.IntegerField()

View File

@@ -30,4 +30,4 @@ class APITestCase(TestCase):
self.assertTrue(response.data["error"] is None)
def assertFailed(self, response):
self.assertTrue(response.data["error"] is not None)
self.assertTrue(response.data["error"] is not None)

View File

@@ -1,5 +1,3 @@
# coding:utf-8
"""
Copyright 2013 TY<tianyu0915@gmail.com>
@@ -20,6 +18,7 @@ import os
import time
import random
from io import StringIO
from django.http import HttpResponse
from PIL import Image, ImageDraw, ImageFont
@@ -27,19 +26,19 @@ from PIL import Image, ImageDraw, ImageFont
class Captcha(object):
def __init__(self, request):
"""
"""
初始化,设置各种属性
"""
self.django_request = request
self.session_key = '_django_captcha_key'
self.captcha_expires_time = '_django_captcha_expires_time'
self.session_key = "_django_captcha_key"
self.captcha_expires_time = "_django_captcha_expires_time"
# 验证码图片尺寸
self.img_width = 90
self.img_height = 30
def _get_font_size(self, code):
"""
"""
将图片高度的80%作为字体大小
"""
s1 = int(self.img_height * 0.8)
@@ -47,7 +46,7 @@ class Captcha(object):
return int(min((s1, s2)) + max((s1, s2)) * 0.05)
def _set_answer(self, answer):
"""
"""
设置答案和过期时间
"""
self.django_request.session[self.session_key] = str(answer)
@@ -57,7 +56,7 @@ class Captcha(object):
"""
生成随机数或随机字符串
"""
string = random.sample('abcdefghkmnpqrstuvwxyzABCDEFGHGKMNOPQRSTUVWXYZ23456789', 4)
string = random.sample("abcdefghkmnpqrstuvwxyzABCDEFGHGKMNOPQRSTUVWXYZ23456789", 4)
self._set_answer("".join(string))
return string
@@ -68,9 +67,9 @@ class Captcha(object):
background = (random.randrange(200, 255), random.randrange(200, 255), random.randrange(200, 255))
code_color = (random.randrange(0, 50), random.randrange(0, 50), random.randrange(0, 50), 255)
font_path = os.path.join(os.path.normpath(os.path.dirname(__file__)), 'timesbi.ttf')
font_path = os.path.join(os.path.normpath(os.path.dirname(__file__)), "timesbi.ttf")
image = Image.new('RGB', (self.img_width, self.img_height), background)
image = Image.new("RGB", (self.img_width, self.img_height), background)
code = self._make_code()
font_size = self._get_font_size(code)
draw = ImageDraw.Draw(image)
@@ -82,22 +81,22 @@ class Captcha(object):
# 字符y坐标
y = random.randrange(1, 7)
# 随机字符大小
font = ImageFont.truetype(font_path.replace('\\', '/'), font_size + random.randrange(-3, 7))
font = ImageFont.truetype(font_path.replace("\\", "/"), font_size + random.randrange(-3, 7))
draw.text((x, y), i, font=font, fill=code_color)
# 随机化字符之间的距离 字符粘连可以降低识别率
x += font_size * random.randrange(6, 8) / 10
buf = StringIO.StringIO()
image.save(buf, 'gif')
buf = StringIO()
image.save(buf, "gif")
self.django_request.session[self.session_key] = "".join(code)
return HttpResponse(buf.getvalue(), 'image/gif')
return HttpResponse(buf.getvalue(), "image/gif")
def check(self, code):
"""
检查用户输入的验证码是否正确
"""
_code = self.django_request.session.get(self.session_key) or ''
_code = self.django_request.session.get(self.session_key) or ""
if not _code:
return False
expires_time = self.django_request.session.get(self.captcha_expires_time) or 0

View File

@@ -1,5 +1,3 @@
# coding=utf-8
import json
from django.db import models
from utils.xss_filter import XssHtml
@@ -15,7 +13,3 @@ class RichTextField(models.TextField):
parser.feed(value)
parser.close()
return parser.getHtml()
class JsonField(models.TextField):
pass