123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- from django.conf import settings
- from django_response import response
- from pywe_storage import RedisStorage
- from pywe_wxa_qrcode import get_wxa_code_unlimit
- from miniapp.models import SceneInfo
- from utils.qiniucdn import qiniu_file_url, upload
- from utils.redis.connect import r
- from utils.redis.rwxacode import get_wxa_code_qiniu_url, get_wxa_code_scene_, set_wxa_code_info
- WECHAT = settings.WECHAT
- def __get_wxa_code(scene, page):
- qiniu_url = get_wxa_code_qiniu_url(scene, page)
- if qiniu_url:
- return qiniu_url
- si, created = SceneInfo.objects.get_or_create(scene=scene, page=page, status=True)
- qiniu_url = si.qiniu_url
- if not qiniu_url:
- wxcfg = WECHAT.get('MINIAPP', {})
- appid = wxcfg.get('appID')
- secret = wxcfg.get('appsecret')
- res = get_wxa_code_unlimit(si.sid, page, res_to_base64=False, appid=appid, secret=secret, storage=RedisStorage(r))
- if res.headers and res.headers.get('Content-disposition'):
- qiniu_url = qiniu_file_url(upload(res.content))
- else:
- qiniu_url = ''
- si.qiniu_url = qiniu_url
- si.save()
- set_wxa_code_info(scene, page, qiniu_url, si.sid)
- return qiniu_url
- def get_wxa_code(request):
- scene = request.POST.get('scene', '')
- page = request.POST.get('page', '')
- qiniu_url = __get_wxa_code(scene, page)
- if not settings.QINIU_FILE_URL_HTTPS:
- qiniu_url = qiniu_url.replace(settings.QINIU_FILE_URL_BEFORE, settings.QINIU_FILE_URL_AFTER).replace(settings.QINIU_FILE_URL_BEFORE2, settings.QINIU_FILE_URL_AFTER)
- return response(data={
- 'qiniu_url': qiniu_url,
- })
- def get_wxa_code_scene(request):
- sid = request.POST.get('sid', '')
- scene = get_wxa_code_scene_(sid)
- if scene:
- return response(data={
- 'scene': scene,
- })
- try:
- scene = SceneInfo.objects.get(sid=sid, status=True)
- except SceneInfo.DoesNotExist:
- return response()
- return response(data={
- 'scene': scene.scene,
- })
|