# -*- coding: utf-8 -*-

from __future__ import division

from django.conf import settings
from django_response import response
from pywe_component_authorizer_token import authorizer_access_token
from pywe_qrcode import qrcode_limit_str_scene, qrcode_url
from pywe_storage import RedisStorage

from utils.error.errno_utils import ParamStatusCode
from utils.redis.connect import r


CFG = settings.WECHAT.get('COMPONENT', {})


def get_limit_scene_qrcode_url(request):
    appid = request.GET.get('appid', '')
    scene = request.GET.get('scene', '')

    if not appid or not scene:
        return response(ParamStatusCode.PARAM_NOT_FOUND)

    try:
        token = authorizer_access_token(
            component_appid=CFG['appID'],
            component_secret=CFG['appsecret'],
            authorizer_appid=appid,
            storage=RedisStorage(r)
        )
        qrinfo = qrcode_limit_str_scene(
            scene_str=scene,
            appid=appid,
            secret=None,
            token=token,
            storage=RedisStorage(r)
        )
        qrurl = qrcode_url(qrinfo.get('ticket'))
    except Exception:
        qrurl = ''

    return response(data={
        'qrurl': qrurl,
    })