Exemplo n.º 1
0
def wiki_upload(request, project_id):
    '''Wiki的文章中的图片'''

    # markdown上传文件需要的返回值类型
    result = {
        'success': 0,  # 0代表失败; 1代表成功
        'message': None,
        'url': None,
    }

    # 获取markdown上传的文件对象
    image_object = request.FILES.get('editormd-image-file')
    if not image_object:
        result['message'] = '文件不存在'
        return JsonResponse(result)

    # 创建上传之后的文件名,由于腾讯云上传相同的文件名会覆盖原来文件,所以尽量保持文件名唯一
    ext = image_object.name.rsplit('.')[-1]  # 上传的文件后缀名
    # uid是自定义的生成随机字符串的函数,  key是新的文件名
    key = '{}.{}'.format(uid(request.tracer.user.mobile_phone), ext)

    # 获取项目的桶名称
    bucket_name = request.tracer.project.bucket
    region = request.tracer.project.region

    # 上传到腾讯云cos桶中
    image_url = upload_file(bucket_name, region, image_object, key)

    result['success'] = 1
    result['url'] = image_url
    result['message'] = '上传成功'

    return JsonResponse(result)
Exemplo n.º 2
0
def issues_invite(request, project_id):
    """创建邀请码并返回给前端"""
    form = InviteModelForm(request.POST)
    if form.is_valid():
        # todo 校验用户选中的邀请人数是否在额度范围内

        # 1、只有项目的创建者才能发送邀请链接
        if not request.tracer.project.creator == request.tracer.user:
            form.add_error('period', '无权创建邀请码')
            return JsonResponse({'status': False, 'error': form.errors})

        # 2、设置验证码
        random_invite_code = uid(
            request.tracer.user.mobile_phone)  # 使用用户手机号创建随机码
        form.instance.creator = request.tracer.user
        form.instance.project = request.tracer.project
        form.instance.code = random_invite_code
        form.save()

        # 3、返回邀请码链接给前端,便于前端页面展示
        url = "{scheme}://{host}{path}".format(
            scheme=request.scheme,
            host=request.get_host(),
            path=reverse('web:invite_join',
                         kwargs={'code': random_invite_code}))
        return JsonResponse({'status': True, 'url': url})

    return JsonResponse({'status': False, 'error': form.errors})
Exemplo n.º 3
0
def pay(request):
    conn = get_redis_connection()
    key = 'payment_{}'.format(request.tracer.user.mobile_phone)
    context_string = conn.get(key)
    if not context_string:
        return redirect('price')
    context = json.loads(context_string.decode('utf-8'))

    # 1. 数据库中生成交易记录(待支付)
    #     等支付成功之后,我们需要把订单的状态更新为已支付、开始&结束时间
    order_id = uid(request.tracer.user.mobile_phone)
    total_price = context['total_price']
    models.Transaction.objects.create(status=1,
                                      order=order_id,
                                      user=request.tracer.user,
                                      price_policy_id=context['policy_id'],
                                      count=context['number'],
                                      price=total_price)
    # 生成支付链接

    ali_pay = AliPay(appid=settings.ALI_APPID,
                     app_notify_url=settings.ALI_NOTIFY_URL,
                     return_url=settings.ALI_RETURN_URL,
                     app_private_key_path=settings.ALI_PRI_KEY_PATH,
                     alipay_public_key_path=settings.ALI_PUB_KEY_PATH)
    query_params = ali_pay.direct_pay(
        subject="trace rpayment",  # 商品简单描述
        out_trade_no=order_id,  # 商户订单号
        total_amount=total_price)
    pay_url = "{}?{}".format(settings.ALI_GATEWAY, query_params)
    return redirect(pay_url)
Exemplo n.º 4
0
def invite_url(request, project_id):
    """
    生成邀请码
    :param request:
    :param project_id:
    :return:
    """
    form = InviteModelForm(data=request.POST)
    if form.is_valid():
        """
        1、创建随机的邀请码
        2、验证码保存到数据库
        3、限制:只有创建者才能邀请
        """
        if request.tracer.user != request.tracer.project.creator:  # 当前用户不是项目的创建者不能进行邀请
            form.add_error("period", "无权创建邀请码")  # 有效期下面提示
            return JsonResponse({"status": False, "error": form.errors})
        random_invite_code = uid(request.tracer.user.mobile_phone)
        form.instance.project = request.tracer.project
        form.instance.code = random_invite_code
        form.instance.creator = request.tracer.user
        form.save()

        # 将验证码返回给前段,前段页面上展示出来。
        url = "{scheme}://{host}{path}".format(
            scheme=request.scheme,  # 获取http或者https
            host=request.get_host(),  # 主机IP和端口
            path=reverse("invite_join", kwargs={"code": random_invite_code})
            # 反向生成url格式 /invite/join/asdfadiqr-9asudfapsef/
        )
        return JsonResponse({"status": True, "data": url})

    return JsonResponse({"status": False, "error": form.errors})
Exemplo n.º 5
0
def invite_url(request, project_id):
    """ 生成邀请码 """
    form = InviteModelForm(data=request.POST)
    if form.is_valid():
        """
        1. 创建一个随机的邀请码
        2. 验证码保存到数据库
        3. 只有创建者才能邀请,其他成员无法创建
        """
        if request.tracer.user != request.tracer.project.creator:
            form.add_error('period', '没有权限创建邀请码')
            return JsonResponse({'status': False, 'error': form.errors})
        random_invite_code = uid(request.tracer.user.mobile_phone)
        form.instance.project = request.tracer.project
        form.instance.code = random_invite_code
        form.instance.creator = request.tracer.user
        form.save()

        # 邀请码返回前端,前端展示验证码
        url = '{scheme}://{host}{path}'.format(
            scheme=request.scheme,  # 访问的方法
            host=request.get_host(),  # 返回域名和端口
            path=reverse('invite_join', kwargs={'code': random_invite_code}))
        return JsonResponse({'status': True, 'data': url})
    return JsonResponse({'status': False, 'error': form.errors})
Exemplo n.º 6
0
def wiki_upload(request, project_id):
    """
    markdown插件上传图片
    """
    result = {
        'success': 0,
        'message': None,
        'url': None,
    }

    image_object = request.FILES.get('editormd-image-files')
    if not image_object:
        result['message'] = "文件不存在"
        return JsonResponse(result)

    ext = image_object.name.rsplit('.')[-1]  # 获取文件后缀名
    key = "{}.{}".format(uid(request.tracer.user.mobile_phone), ext)

    # 文件对象上传到当前项目的桶中
    image_url = upload_file(
        bucket=request.tracer.project.bucket,
        region=request.tracer.project.region,
        file_object=image_object,
        key=key,
    )
    print(image_url)

    result = {
        'success': 1,
        'message': None,
        'url': image_url,
    }
    print(result)
    print(JsonResponse(result))
    return JsonResponse(result)
Exemplo n.º 7
0
def wiki_upload(request, project_id):
    """ markdown插件上传图片 """

    # markdown上传文件到我后台,后台上传至对象存储,返回成功信息和图片URL给Markdown
    # markdown给我们展示出来

    result = { # g给markdown返回的信息,success=0表示失败
        'success': 0,
        'message': None,
        'url': None
    }
    # 上传的文件统一的key为editormd-image-file,valuel为文件对象
    image_object = request.FILES.get('editormd-image-file')
    if not image_object:
        result['message'] = "文件不存在"
        return JsonResponse(result)

    # 给图片设置一个不重复的名字
    ext = image_object.name.rsplit('.')[-1] # 获取图片后缀
    key = "{}.{}".format(uid(request.tracer.user.mobile_phone), ext)
    # 上传至对象存储后返回url:image_url
    image_url = upload_file(
        request.tracer.project.bucket,
        request.tracer.project.region,
        image_object,
        key
    )
    result['success'] = 1
    result['url'] = image_url
    # 给markdown返回
    return JsonResponse(result)
Exemplo n.º 8
0
def pay(request):
    conn = get_redis_connection()
    key = 'payment_{}'.format(request.tracer.user.mobile_phone)
    context_string = conn.get(key)
    if not context_string:
        return redirect('price')
    context = json.loads(context_string.decode('utf-8'))

    # 1. 数据库中生成交易记录(待支付)
    #     等支付成功之后,我们需要把订单的状态更新为已支付、开始&结束时间
    order_id = uid(request.tracer.user.mobile_phone)
    total_price = context['total_price']
    Transaction.objects.create(status=1,
                               order=order_id,
                               user=request.tracer.user,
                               price_policy_id=context['policy_id'],
                               count=context['number'],
                               pay_price=total_price)

    # 付款后的回调
    callback_url = 'http://' + settings.WEB_ADDRESS + ':' + settings.WEB_HOST + reverse(
        'web:pay_notify')

    payment = AliPayment(appid=settings.APPID)
    pay_url = payment.get_pay(order_id,
                              total_price,
                              'trace payment',
                              return_url=callback_url,
                              notify_url=callback_url)

    return redirect(pay_url)
Exemplo n.º 9
0
def wiki_upload(request, project_id):
	""" markdown插件上传图片 """
	# markdown需要的返回值 判断上传是否成功
	result = {
		'success': 0,
		'message': None,
		'url': None
	}

	image_object = request.FILES.get('editormd-image-file')
	if not image_object:
		result['message'] = "文件不存在"
		return JsonResponse(result)

	ext = image_object.name.rsplit('.')[-1]
	key = "{}.{}".format(uid(request.tracer.user.phone), ext)
	image_url = upload_file(
		request.tracer.project.bucket,
		request.tracer.project.region,
		image_object,
		key
	)
	result['success'] = 1
	result['url'] = image_url
	return JsonResponse(result)
Exemplo n.º 10
0
def invite_url(request, project_id):
    """ 生成邀请码 """

    form = InviteModelForm(data=request.POST)
    if form.is_valid():
        """
        1. 创建随机的邀请码
        2. 验证码保存到数据库
        3. 限制:只有创建者才能邀请
        """
        if request.tracer.user != request.tracer.project.creator:
            form.add_error('period', "无权创建邀请码")
            return JsonResponse({'status': False, 'error': form.errors})

        random_invite_code = uid(request.tracer.user.mobile_phone)
        form.instance.project = request.tracer.project
        form.instance.code = random_invite_code
        form.instance.creator = request.tracer.user
        form.save()

        # 将验邀请码返回给前端,前端页面上展示出来。
        url = "{scheme}://{host}{path}".format(
            scheme=request.scheme,
            host=request.get_host(),
            path=reverse('invite_join', kwargs={'code': random_invite_code}))

        return JsonResponse({'status': True, 'data': url})

    return JsonResponse({'status': False, 'error': form.errors})
Exemplo n.º 11
0
def pay(request):
    '''封装后'''
    # 拿出数据校验
    conn = get_redis_connection()
    key = 'payment_{}'.format(request.saas.user.phone)
    context_string = conn.get(key)
    if not context_string:
        return redirect('price')
    context = json.loads(context_string.decode('utf-8'))

    # 1.数据库生成交易记录(待支付),
    order_id = uid(request.saas.user.phone)  # 根据手机号生成随机字符串
    total_price = context['total_price']
    Transaction.objects.create(status=1,
                               order=order_id,
                               user=request.saas.user,
                               price_policy_id=context['policy_id'],
                               count=context['number'],
                               price=total_price)
    # 生成支付宝链接
    ali_pay = AliPay(appid=settings.ALI_APPID,
                     app_notify_url=settings.ALI_NOTIFY_URL,
                     return_url=settings.ALI_RETURN_URL,
                     app_private_key_path=settings.ALI_PRI_KEY_PATH,
                     alipay_public_key_path=settings.ALI_PUB_KEY_PATH)
    query_params = ali_pay.direct_pay(
        subject="Saas 系统会员",  # 商品简单描述
        out_trade_no=order_id,  # 商户订单号
        total_amount=total_price)
    pay_url = "{}?{}".format(settings.ALI_GATEWAY, query_params)
    return redirect(pay_url)
Exemplo n.º 12
0
def invite_url(request, project_id):
    """生成邀请码"""

    form = InviteModelForm(data=request.POST)
    if form.is_valid():
        """
        表单验证通过后:
        1、只有创建者才能邀请 的限制
        2、创建随机邀请码
        3、验证码保存到数据库
        """
        if request.lxyker.user != request.lxyker.project.creator:
            form.add_error('period', '没有权限')
            return JsonResponse({'status': False, 'errors': form.errors})
        random_invite_code = uid(request.lxyker.user.mobile_phone)
        form.instance.project = request.lxyker.project
        form.instance.code = random_invite_code
        form.instance.creator = request.lxyker.user
        form.save()  # 邀请码保存到数据库

        # 邀请码返回给前端
        url = '{scheme}://{host}{path}'.format(
            scheme=request.scheme,
            host=request.get_host(),
            path=reverse('invite_join', kwargs={'code': random_invite_code}),
        )

        return JsonResponse({'status': True, 'data': url})
    return JsonResponse({'status': False, 'error': form.errors})
Exemplo n.º 13
0
def wiki_upload(request, project_id):
    """wiki中上传文件"""

    img_obj = request.FILES.get('editormd-image-file')
    img_format = img_obj.name.rsplit('.')[-1]
    img_key = '{}.{}'.format(uid(request.tracer.user.mobile_phone), img_format)
    img_url = upload_file(
        bucket=request.tracer.project.bucket,  # 该项目的储存桶
        region=request.tracer.project.region,
        key=img_key,
        obj=img_obj)
    print('完成上传', img_url)
    result = {'success': 1, 'message': None, 'url': img_url}
    return JsonResponse(result)
Exemplo n.º 14
0
def invite_url(request, project_id):

    form = InviteModelForm(data=request.POST)
    if form.is_valid():
        if request.tracer.user != request.tracer.project.creator:
            form.add_error('period', '无权创建邀请码')
            return JsonResponse({'status': False, 'error': form.errors})
        random_invite_code = uid(request.tracer.user.phone)
        form.instance.project = request.tracer.project
        form.instance.code = random_invite_code
        form.instance.creator = request.tracer.user
        form.save()
        url_path = reverse('web:invite_join', kwargs={'code': random_invite_code})
        url = f'{request.scheme}://{request.get_host()}{url_path}'
        return JsonResponse({'status': True, 'data': url})
    return JsonResponse({'status': False, 'error': form.errors})
Exemplo n.º 15
0
def wiki_upload(request, project_id):
    '''markdown插件上传图片'''
    result = {'success': 0, 'message': None, 'url': None}

    image_object = request.FILES.get('editormd-image-file')
    if not image_object:
        result['message'] = '文件不存在'
        return JsonResponse(result)
    # 将文件对象上传到项目桶中
    ext = image_object.name.split('.')[-1]
    key = '{}.{}'.format(uid(request.saas.user.phone), ext)
    image_url = upload_file(request.saas.project.bucket,
                            request.saas.project.region, image_object, key)

    result['success'] = 1
    result['url'] = image_url
    return JsonResponse(result)
Exemplo n.º 16
0
def wiki_upload(request, project_id):
    result = {'success': 0, 'message': None, 'url': None}
    #print(request.FILES)
    #<MultiValueDict: {'editormd-image-file': [<InMemoryUploadedFile: x战警二.jpeg (image/jpeg)>]}>
    image_obj = request.FILES.get('editormd-image-file')
    if not image_obj:
        result['message'] = "文件不存在"
        return JsonResponse(result)
    # key文件名 ext文件后缀名
    ext = image_obj.name.rsplit('.')[-1]
    key = "{}.{}".format(uid(request.userInfo.user.telephone), ext)
    image_url = upload_file(request.userInfo.project.bucket,
                            request.userInfo.project.region, image_obj, key)
    print(image_url)
    result['success'] = 1
    result['url'] = image_url
    return JsonResponse(result)
Exemplo n.º 17
0
def wiki_upload(request, project_id):
    print('收到图片')
    result = {'success': 0, 'message': None, 'url': None}
    image_object = request.FILES.get('editormd-image-file')
    if not image_object:
        result['message'] = '文件不存在'
        return JsonResponse(result)
    ext = image_object.name.rsplit('.')[-1]
    key = "{}.{}".format(uid(request.blog.user.mobile_phone), ext)
    image_url = upload_file(
        bucket=request.blog.project.bucket,
        region=request.blog.project.region,
        file_object=image_object,
        key=key,
    )
    result['success'] = 1
    result['url'] = image_url
    return JsonResponse(result)
Exemplo n.º 18
0
def wiki_upload(request, project_id):
    """" markdown上传图片 """
    result = {'success': 0, 'message': None, 'url': None}
    # 获取markdown要上传的图片对象
    img_obj = request.FILES.get('editormd-image-file')
    if not img_obj:
        result['message'] = "选择的对象不存在"
        return JsonResponse(result)
    ext = img_obj.name.rsplit('.')[-1]
    key = "{}.{}".format(encrypt.uid(request.tracer.user.mobile_phone), ext)
    # 调用上传图片函数,返回上传成功后cos查看图片的url
    img_url = cos_upload(bucket=request.tracer.project.bucket,
                         region=request.tracer.project.region,
                         file_obj=img_obj,
                         key=key)
    result['success'] = 1
    result['url'] = img_url
    # response.setHeader("X-Frame-Options", "SAMEORIGIN"); // 解决IFrame拒绝的问题
    return JsonResponse(result)
Exemplo n.º 19
0
def wiki_upload(request, project_id):
    """markdown插件上传图片"""
    result = {"success": 0, "message": None, "url": None}
    # 用户上传的图片对象
    image_object = request.FILES.get("editormd-image-file")
    if not image_object:
        result["message"] = "文件不存在"
        return JsonResponse(result)
    # 上传到cos中的文件名不能重复,如果重复最新的会覆盖就文件,所有这里需要生成唯一数的文件名
    ext = image_object.name.rsplit(".")[-1]  # 获取上传文件后缀名
    key = "{0}.{1}".format(uid(request.tracer.user.mobile_phone), ext)
    image_url = upload_file(
        bucket=request.tracer.project.bucket,  # 文件对象上传到当前项目的桶中
        region=request.tracer.project.region,
        file_object=image_object,
        key=key)
    result["success"] = 1
    result["url"] = image_url
    return JsonResponse(result)
Exemplo n.º 20
0
def wiki_upload(request, project_id):
    """MarkDown插件是上传图片"""
    result = {"success": 0, "message": None, "url": None}
    image_obj = request.FILES.get("editormd-image-file")

    if image_obj:
        # 将图片对象,上传到桶中
        bucket = request.tracer.project.bucket
        ext = image_obj.name.rsplit('.')[-1]
        image_name = "{}.{}".format(uid(request.tracer.user.phone), ext)
        image_url = upload_image(TENCENT_COS_REGION, bucket, image_obj,
                                 image_name)

        # 将图片上传到桶之后,返回数据到MarkDown
        result["success"] = 1
        result["url"] = image_url
        return JsonResponse(result)
    result["message"] = "文件不存在!"
    return JsonResponse(result)
Exemplo n.º 21
0
def pay(request):
    """生成订单 并且 实现支付宝支付"""

    conn = get_redis_connection('default')
    key = 'payment_{}'.format(request.tracer.user.mobile_phone)
    context_string = conn.get(key)
    if not context_string:
        return redirect(reverse('web:price'))
    context = json.loads(context_string.decode('utf-8'))

    # 1、数据库中生成交易记录, 应该是未支付状态
    #   支付成功之后,需要把订单的状态更新为以及支付, 设置开始和结束时间
    # 先创建订单编号
    time_str = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))  # 时间戳格式化
    order_id = time_str + uid(request.tracer.user.mobile_phone)
    total_price = context['total_price']
    models.Transaction.objects.create(
        status=1,
        order=order_id,
        user=request.tracer.user,
        price_policy_id=context['policy_id'],
        count=context['number'],
        price=total_price
    )

    # 2、生成支付链接
    # 生成支付链接

    ali_pay = AliPay(
        appid=settings.ALI_APPID,
        app_notify_url=settings.ALI_NOTIFY_URL,
        return_url=settings.ALI_RETURN_URL,
        app_private_key_path=settings.ALI_PRI_KEY_PATH,
        alipay_public_key_path=settings.ALI_PUB_KEY_PATH
    )
    query_params = ali_pay.direct_pay(
        subject="tracer payment",  # 商品简单描述
        out_trade_no=order_id,  # 商户订单号
        total_amount=total_price
    )
    pay_url = "{}?{}".format(settings.ALI_GATEWAY, query_params)
    return redirect(pay_url)
Exemplo n.º 22
0
def wiki_upload(request, project_id):
    """ markdown插件上传图片 """
    result = {"success": 0, "message": None, "url": None}

    image_object = request.FILES.get("editormd-image-file")
    if not image_object:
        result["message"] = "文件不存在"
        return JsonResponse(result)

    ext = image_object.name.rsplit(".")[-1]
    key = "{}.{}".format(uid(request.tracker.user.mobile_phone), ext)
    image_url = upload_file(
        request.tracker.project.bucket,
        request.tracker.project.region,
        image_object,
        key,
    )
    result["success"] = 1
    result["url"] = image_url
    return JsonResponse(result)
Exemplo n.º 23
0
def issues_invite(request, project_id):
    """ 生成邀请码 """
    form = InviteForm(data=request.POST)
    if form.is_valid():
        # 限制:只有创建者才能生成邀请码
        if request.tracer.user != request.tracer.project.creator:
            form.add_error('period', '只有项目创建者才可以生成邀请码')
            return JsonResponse({"status": False, "error": form.errors})
        invite_code = uid(request.tracer.user.mobile_phone)
        form.instance.project = request.tracer.project
        form.instance.code = invite_code
        form.instance.creator = request.tracer.user
        form.save()
        # 将验证码生成的url返回前端  拼接url
        url = "{scheme}://{host}{code}".format(
            scheme=request.scheme,
            host=request.get_host(),
            code=reverse('web:invite_join', kwargs={'code': invite_code}))
        return JsonResponse({"status": True, "data": url})

    return JsonResponse({"status": False, "error": form.errors})
Exemplo n.º 24
0
def wiki_upload(request, project_id):
    result = {
        'success': 0,
        'message': None,
        'url': None
    }
    img_obj = request.FILES.get('editormd-image-file')
    if not img_obj:
        result['message'] = '文件不存在'
        return JsonResponse(result)
    ext = img_obj.name.rsplit('.')[-1]
    key = '{}.{}'.format(uid(request.auth.user.phone_num), ext)
    img_url = upload_file(
        request.auth.project.bucket,
        request.auth.project.region,
        img_obj,
        key
    )
    result['success'] = 1
    result['url'] = img_url
    return JsonResponse(result)
Exemplo n.º 25
0
def pay(request):
    """ 生成订单,支付宝支付页面 """

    conn = get_redis_connection()
    key = 'payment_{}'.format(request.tracer.user.mobile_phone)
    context_string = conn.get(key)
    if not context_string:
        return redirect('price')

    context = json.loads(context_string.decode('utf-8'))

    # 1 数据库中生成交易记录, 支付成功后订单状态更新为已支付,且需要添加开始和结束的时间
    order_id = uid(request.tracer.user.mobile_phone)
    pay_price = context['pay_price']
    models.Transaction.objects.create(
        status=1,
        order=order_id,
        user=request.tracer.user,
        price_policy_id=context['price_id'],
        count=context['number'],
        price=pay_price,
    )

    ali_pay = AliPay(
        appid=settings.ALI_APPID,
        app_notify_url=settings.ALI_NOTIFY_URL,
        app_private_key_path=settings.ALI_PRIVATE_KEY_PATH,
        alipay_public_key_path=settings.ALI_PUBLIC_KEY_PATH,
        return_url=settings.ALI_RETURN_URL,
    )

    query_params = ali_pay.direct_pay(
        subject='tracer payment',
        out_trade_no=order_id,
        total_amount=pay_price,
    )

    pay_url = '{}?{}'.format(settings.ALI_GATEWAY, query_params)
    return redirect(pay_url)
Exemplo n.º 26
0
def upload(request, project_id):
    result = {
        'success': 0,
        'message': None,
        'url': None
    }
    img_obj = request.FILES.get('editormd-image-file')
    if not img_obj:
        result['message'] = '文件不存在'
        return JsonResponse(result)
    # 文件的对象上传到桶
    bucket = request.tracer.project.bucket

    body = img_obj
    ext = img_obj.name.rsplit('.')[-1]
    filename = '%s.%s' % (uid(request.tracer.user.mobile_phone), ext)

    url = upload_file(bucket, body, filename)
    result['success'] = 1
    result['url'] = url

    return JsonResponse(result)
Exemplo n.º 27
0
def pay(request):
    """生成订单+支付宝支付"""
    # 直接从redis中取出要支付的订单信息
    conn = get_redis_connection()
    key = 'payment_{}'.format(request.lxyker.user.mobile_phone)
    context = conn.get(key)
    if not context:
        return redirect('price')
    context = json.loads(context.decode('utf-8'))

    # 1、数据库中生成交易记录(待支付)
    order_id = uid(request.lxyker.user.mobile_phone)
    total_price = context['total_price']
    models.Transaction.objects.create(
        status=1,
        order=order_id,
        user=request.lxyker.user,
        price_policy_id=context['policy_id'],
        count=context['number'],
        price=total_price,
    )

    # 2、跳转到支付宝链接进行支付:

    ali_pay = AliPay(
        appid=settings.ALI_APPID,
        app_notify_url=settings.ALI_NOTIFY_URL,
        return_url=settings.ALI_RETURN_URL,
        app_private_key_path=settings.ALI_PRI_KEY_PATH,
        alipay_public_key_path=settings.ALI_PUB_KEY_PATH,
    )
    query_params = ali_pay.direct_pay(
        subject="lxyker payment",  # 商品简单描述
        out_trade_no=order_id,  # 商户订单号
        total_amount=total_price
    )
    pay_url = "{}?{}".format(settings.ALI_GATEWAY, query_params)

    return redirect(pay_url)
Exemplo n.º 28
0
def upload_file(request, files_object):
    """
        调用腾讯对象存储
    """
    #h获取文件名后缀
    ext = files_object.name.split('.')[-1]
    #根据用户手机号和文件名后缀生成随机的文件名称,防止上传重复文件
    files_name = "{}.{}".format(uid(request.tracer.user.mobile_phone), ext)
    print(files_name)
    logging.basicConfig(level=logging.INFO, stream=sys.stdout)
    config = CosConfig(Region=request.tracer.project.region,
                       SecretId=settings.TENCENT_COS_ID,
                       SecretKey=settings.TENCENT_COS_KEY)
    # 2. 获取客户端对象
    client = CosS3Client(config)

    response, url = client.upload_file_from_buffer(
        Body=files_object,  # 文件对象
        Bucket=request.tracer.project.bucket,  # 数据库中保存得桶名称
        Key=files_name,  # 保存的文件名称
    )

    return url
Exemplo n.º 29
0
def wiki_upload(request, project_id):
    """
    markdown上传图片
    :param request:
    :return:
    """
    result = {
        'success': 0,
        'message': None,
        'url': None,
    }
    image_object = request.FILES.get('editormd-image-file')
    if not image_object:
        result['message'] = '文件不存在'
        return JsonResponse(result)
    ext = image_object.name.rsplit('.')[-1]
    key = '{}.{}'.format(uid(request.tracer.user.mobile_phone), ext)
    image_url = upload_file(request.tracer.project.bucket,
                            request.tracer.project.region, image_object, key)
    # markdown固定格式
    result['success'] = 1
    result['url'] = image_url
    return JsonResponse(result)
Exemplo n.º 30
0
def wiki_upload(request, project_id):
    """
    markdown 本地上传
    :param request:
    :param project_id:
    :return:
    """
    result = {
        'success': 0,
        'message': None,
        'url': None
    }

    print('收到上传的图片了')
    print(request.FILES)

    # 文件对象上传到当前项目的桶中
    image_object = request.FILES.get('editormd-image-file')
    if not image_object:
        result['message'] = "文件不存在"
        return JsonResponse(result)

    ext = image_object.name.rsplit('.')[-1]
    key = "{}.{}".format(uid(request.tracer.user.mobile_phone),ext)
    image_url = upload_file(
        request.tracer.project.bucket,
        request.tracer.project.region,
        image_object,
        key
    )
    print(image_url)

    # return JsonResponse({})
    result['success'] = 1
    result['url'] = image_url
    #
    return JsonResponse(result)