captcha.py
1.3 KB
from opensipkd.tools.captcha 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']
if not os.path.exists(captcha_files):
os.makedirs(captcha_files)
file_name = get_random_string(16) + '.png'
from pyramid.path import AssetResolver
a = AssetResolver('tangsel.base')
static_path = a.resolve('static').abspath()
captcha_path = os.path.abspath(os.path.join(captcha_files, file_name))
font_path = os.path.abspath(os.path.join(static_path, 'fonts/arial.ttf'))
log.debug(f"Font path: {font_path}")
log.debug(f"Captcha path: {captcha_path}")
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, file_name