captcha.py
1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import random
import string
from wheezy.captcha.image import captcha, background, noise, smooth, text, offset
from ..tools import *
def img_captcha(request, length=5, chars=string.ascii_uppercase + string.digits):
kode_captcha = randomcaptcha(length, chars)
_here = os.path.dirname(__file__)
# captcha_path = os.path.abspath('/static/img/captcha.png'))
# font_path = os.path.abspath(os.path.join('/static/v3/fonts/arial.ttf'))
settings = get_settings()
captcha_files = settings['captcha_files']
from pyramid.path import AssetResolver
a = AssetResolver('opensipkd.base')
static_path = a.resolve('static').abspath()
captcha_path = os.path.abspath(os.path.join(captcha_files, kode_captcha + '.png'))
font_path = os.path.abspath(os.path.join(static_path, 'v3/fonts/arial.ttf'))
captcha_image = captcha(drawings=[
background(color='#fff'),
text(fonts=[font_path],
drawings=[
offset(0.8)
]),
noise(),
smooth()
], width=300)
image = captcha_image(' ' + kode_captcha + ' ')
image.save(captcha_path, 'PNG', quality=75)
kode_captcha = kode_captcha
request.session['captcha'] = kode_captcha
return kode_captcha
def randomcaptcha(length, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for i in range(length))
def get_captcha(request):
kode_captcha = img_captcha(request)
request.session['captcha'] = kode_captcha
return kode_captcha