def create_issue_and_bounty(request): languages = [] for lang in Issue.LANGUAGES: languages.append(lang[0]) user = request.user if request.method == 'GET': url = request.GET.get('url') if url: helper = get_issue_helper(request, url) issue_data = helper.get_issue(request, url) if not "title" in issue_data: messages.error(request, 'Please provide an valid issue url') return redirect('/post') form = IssueCreateForm( initial={ 'issueUrl': request.GET.get('url'), 'title': issue_data['title'], 'content': issue_data['content'] or "Added from Github" }) else: form = IssueCreateForm() return render(request, 'post.html', { 'languages': languages, 'form': form, }) if request.method == 'POST': url = request.POST.get('issueUrl', '') if not url: messages.error(request, 'Please provide an issue url') return render(request, 'post.html', {'languages': languages}) try: helper = get_issue_helper(request, url) issue_data = helper.get_issue(request, url) if issue_data and "service" in issue_data: service = Service.objects.get(name=issue_data['service']) instance = Issue(number=issue_data['number'], project=issue_data['project'], user=issue_data['user'], service=service) except: return render( request, 'post.html', { 'languages': languages, 'message': 'Please provide a propper issue url like \ - https://github.com/CoderBounty/coderbounty/issues/83', }) try: form = IssueCreateForm(request.POST, instance=instance) except: helper = get_issue_helper(request, url) issue_data = helper.get_issue(request, url) if issue_data and "service" in issue_data: service = Service.objects.get(name=issue_data['service']) instance = Issue(number=issue_data['number'], project=issue_data['project'], user=issue_data['user'], service=service) bounty_form = BountyCreateForm(request.POST) bounty_form_is_valid = bounty_form.is_valid() if form.is_valid() and bounty_form_is_valid: price = bounty_form.cleaned_data['price'] if int(price) < 5: return render( request, 'post.html', { 'languages': languages, 'message': 'Bounty must be greater than $5', }) try: issue = form.save() except: issue = Issue.objects.get(number=issue_data['number'], project=issue_data['project'], user=issue_data['user'], service=service) bounty_instance = Bounty(user=user, issue=issue, price=price) if int(request.user.userprofile.balance or 0) >= int( request.POST.get('grand_total')): profile = request.user.userprofile profile.balance = int(request.user.userprofile.balance) - int( request.POST.get('grand_total')) profile.save() bounty_instance.save() if not settings.DEBUG: create_comment(issue) return redirect(issue.get_absolute_url()) else: data = serializers.serialize('json', [ bounty_instance, ]) # https://devtools-paypal.com/guide/pay_paypal/python?env=sandbox import paypalrestsdk paypalrestsdk.configure({ 'mode': settings.MODE, 'client_id': settings.CLIENT_ID, 'client_secret': settings.CLIENT_SECRET }) payment = paypalrestsdk.Payment({ "intent": "sale", "payer": { "payment_method": "paypal" }, "redirect_urls": { "return_url": request.build_absolute_uri(issue.get_absolute_url()), "cancel_url": "https://coderbounty.com/post" }, "transactions": [{ "amount": { "total": request.POST.get('grand_total'), "currency": "USD" }, "description": "Coderbounty #" + str(issue.id), "custom": data }] }) if payment.create(): for link in payment.links: if link.method == "REDIRECT": redirect_url = link.href return redirect(redirect_url) else: messages.error(request, payment.error) return render(request, 'post.html', {'languages': languages}) # wepay = WePay(settings.WEPAY_IN_PRODUCTION, settings.WEPAY_ACCESS_TOKEN) # wepay_data = wepay.call('/checkout/create', { # 'account_id': settings.WEPAY_ACCOUNT_ID, # 'amount': request.POST.get('grand_total'), # 'short_description': 'CoderBounty', # 'long_description': data, # 'type': 'service', # 'redirect_uri': request.build_absolute_uri(issue.get_absolute_url()), # 'currency': 'USD' # }) # if "error_code" in wepay_data: # messages.error(request, wepay_data['error_description']) # return render(request, 'post.html', { # 'languages': languages # }) # else: return render( request, 'post.html', { 'languages': languages, 'message': form.errors, 'errors': form.errors, 'form': form, 'bounty_errors': bounty_form.errors, })
def parse_url_ajax(request): url = request.POST.get('url', '') helper = get_issue_helper(request, url) issue = helper.get_issue(request, url) return HttpResponse(json.dumps(issue))
def create_issue_and_bounty(request): languages = [] for lang in Issue.LANGUAGES: languages.append(lang[0]) user = request.user if request.method == 'GET': url = request.GET.get('url') if url: helper = get_issue_helper(request, url) issue_data = helper.get_issue(request, url) if not issue_data: messages.error(request, 'Please provide an valid issue url') return redirect('/post') form = IssueCreateForm( initial={ 'issueUrl': request.GET.get('url'), 'title': issue_data['title'], 'content': issue_data['content'] or "Added from Github" }) else: form = IssueCreateForm() return render(request, 'post.html', { 'languages': languages, 'form': form, }) if request.method == 'POST': url = request.POST.get('issueUrl', '') if not url: messages.error(request, 'Please provide an issue url') return render(request, 'post.html', {'languages': languages}) try: helper = get_issue_helper(request, url) issue_data = helper.get_issue(request, url) if issue_data and "service" in issue_data: service = Service.objects.get(name=issue_data['service']) instance = Issue(number=issue_data['number'], project=issue_data['project'], user=issue_data['user'], service=service) except: return render( request, 'post.html', { 'languages': languages, 'message': 'Please provide a propper issue url like \ - https://github.com/CoderBounty/coderbounty/issues/83', }) form = IssueCreateForm(request.POST, instance=instance) bounty_form = BountyCreateForm(request.POST) bounty_form_is_valid = bounty_form.is_valid() if form.is_valid() and bounty_form_is_valid: price = bounty_form.cleaned_data['price'] if int(price) < 5: return render( request, 'post.html', { 'languages': languages, 'message': 'Bounty must be greater than $5', }) try: issue = form.save() except: issue = Issue.objects.get(number=issue_data['number'], project=issue_data['project'], user=issue_data['user'], service=service) bounty_instance = Bounty(user=user, issue=issue, price=price) if int(request.user.userprofile.balance or 0) >= int( request.POST.get('grand_total')): profile = request.user.userprofile profile.balance = int(request.user.userprofile.balance) - int( request.POST.get('grand_total')) profile.save() bounty_instance.save() if not settings.DEBUG: create_comment(issue) return redirect(issue.get_absolute_url()) else: data = serializers.serialize('xml', [ bounty_instance, ]) wepay = WePay(settings.WEPAY_IN_PRODUCTION, settings.WEPAY_ACCESS_TOKEN) wepay_data = wepay.call( '/checkout/create', { 'account_id': settings.WEPAY_ACCOUNT_ID, 'amount': request.POST.get('grand_total'), 'short_description': 'CoderBounty', 'long_description': data, 'type': 'service', 'redirect_uri': request.build_absolute_uri(issue.get_absolute_url()), 'currency': 'USD' }) if "error_code" in wepay_data: messages.error(request, wepay_data['error_description']) return render(request, 'post.html', {'languages': languages}) return redirect(wepay_data['checkout_uri']) else: return render( request, 'post.html', { 'languages': languages, 'message': form.errors, 'errors': form.errors, 'form': form, 'bounty_errors': bounty_form.errors, })
def create_issue_and_bounty(request): languages = [] for lang in Issue.LANGUAGES: languages.append(lang[0]) user = request.user if request.method == "GET": url = request.GET.get("url") if url: helper = get_issue_helper(request, url) issue_data = helper.get_issue(request, url) if not "title" in issue_data: messages.error(request, "Please provide an valid issue url") return redirect("/post") form = IssueCreateForm( initial={ "issueUrl": request.GET.get("url"), "title": issue_data["title"], "content": issue_data["content"] or "Added from Github", } ) else: form = IssueCreateForm() return render(request, "post.html", {"languages": languages, "form": form}) if request.method == "POST": url = request.POST.get("issueUrl", "") if not url: messages.error(request, "Please provide an issue url") return render(request, "post.html", {"languages": languages}) try: helper = get_issue_helper(request, url) issue_data = helper.get_issue(request, url) if issue_data and "service" in issue_data: service = Service.objects.get(name=issue_data["service"]) instance = Issue( number=issue_data["number"], project=issue_data["project"], user=issue_data["user"], service=service ) except: return render( request, "post.html", { "languages": languages, "message": "Please provide a propper issue url like \ - https://github.com/CoderBounty/coderbounty/issues/83", }, ) try: form = IssueCreateForm(request.POST, instance=instance) except: helper = get_issue_helper(request, url) issue_data = helper.get_issue(request, url) if issue_data and "service" in issue_data: service = Service.objects.get(name=issue_data["service"]) instance = Issue( number=issue_data["number"], project=issue_data["project"], user=issue_data["user"], service=service ) bounty_form = BountyCreateForm(request.POST) bounty_form_is_valid = bounty_form.is_valid() if form.is_valid() and bounty_form_is_valid: price = bounty_form.cleaned_data["price"] if int(price) < 5: return render( request, "post.html", {"languages": languages, "message": "Bounty must be greater than $5"} ) try: issue = form.save() except: issue = Issue.objects.get( number=issue_data["number"], project=issue_data["project"], user=issue_data["user"], service=service ) bounty_instance = Bounty(user=user, issue=issue, price=price) if int(request.user.userprofile.balance or 0) >= int(request.POST.get("grand_total")): profile = request.user.userprofile profile.balance = int(request.user.userprofile.balance) - int(request.POST.get("grand_total")) profile.save() bounty_instance.save() if not settings.DEBUG: create_comment(issue) return redirect(issue.get_absolute_url()) else: data = serializers.serialize("json", [bounty_instance]) # https://devtools-paypal.com/guide/pay_paypal/python?env=sandbox import paypalrestsdk paypalrestsdk.configure( {"mode": settings.MODE, "client_id": settings.CLIENT_ID, "client_secret": settings.CLIENT_SECRET} ) payment = paypalrestsdk.Payment( { "intent": "sale", "payer": {"payment_method": "paypal"}, "redirect_urls": { "return_url": request.build_absolute_uri(issue.get_absolute_url()), "cancel_url": "https://coderbounty.com/post", }, "transactions": [ { "amount": {"total": request.POST.get("grand_total"), "currency": "USD"}, "description": "Coderbounty #" + str(issue.id), "custom": data, } ], } ) if payment.create(): for link in payment.links: if link.method == "REDIRECT": redirect_url = link.href return redirect(redirect_url) else: messages.error(request, payment.error) return render(request, "post.html", {"languages": languages}) else: return render( request, "post.html", { "languages": languages, "message": form.errors, "errors": form.errors, "form": form, "bounty_errors": bounty_form.errors, }, )
def parse_url_ajax(request): url = request.POST.get("url", "") helper = get_issue_helper(request, url) issue = helper.get_issue(request, url) return HttpResponse(json.dumps(issue))
def create_issue_and_bounty(request): languages = [] for lang in Issue.LANGUAGES: languages.append(lang[0]) user = request.user if request.method == 'GET': url = request.GET.get('url') if url: helper = get_issue_helper(request, url) issue_data = helper.get_issue(request, url) if not "title" in issue_data: messages.error(request, 'Please provide an valid issue url') return redirect('/post') form = IssueCreateForm( initial={ 'issueUrl': request.GET.get('url'), 'title': issue_data['title'], 'content': issue_data['content'] or "Added from Github" }) else: form = IssueCreateForm() return render(request, 'post.html', { 'languages': languages, 'form': form, }) if request.method == 'POST': url = request.POST.get('issueUrl', '') if not url: messages.error(request, 'Please provide an issue url') return render(request, 'post.html', { 'languages': languages }) try: helper = get_issue_helper(request, url) issue_data = helper.get_issue(request, url) if issue_data and "service" in issue_data: service = Service.objects.get(name=issue_data['service']) instance = Issue( number=issue_data['number'], project=issue_data['project'], user=issue_data['user'], service=service ) except: return render(request, 'post.html', { 'languages': languages, 'message': 'Please provide a propper issue url like \ - https://github.com/CoderBounty/coderbounty/issues/83', }) form = IssueCreateForm(request.POST, instance=instance) bounty_form = BountyCreateForm(request.POST) bounty_form_is_valid = bounty_form.is_valid() if form.is_valid() and bounty_form_is_valid: price = bounty_form.cleaned_data['price'] if int(price) < 5: return render(request, 'post.html', { 'languages': languages, 'message': 'Bounty must be greater than $5', }) try: issue = form.save() except: issue = Issue.objects.get( number=issue_data['number'], project=issue_data['project'], user=issue_data['user'], service=service) bounty_instance = Bounty(user=user, issue=issue, price=price) if int(request.user.userprofile.balance or 0) >= int(request.POST.get('grand_total')): profile = request.user.userprofile profile.balance = int(request.user.userprofile.balance) - int(request.POST.get('grand_total')) profile.save() bounty_instance.save() if not settings.DEBUG: create_comment(issue) return redirect(issue.get_absolute_url()) else: data = serializers.serialize('json', [bounty_instance, ]) # https://devtools-paypal.com/guide/pay_paypal/python?env=sandbox import paypalrestsdk paypalrestsdk.configure({ 'mode': settings.MODE, 'client_id': settings.CLIENT_ID, 'client_secret': settings.CLIENT_SECRET }) payment = paypalrestsdk.Payment({ "intent": "sale", "payer": { "payment_method": "paypal" }, "redirect_urls": { "return_url": request.build_absolute_uri(issue.get_absolute_url()), "cancel_url": "https://coderbounty.com/post" }, "transactions": [ { "amount": { "total": request.POST.get('grand_total'), "currency": "USD" }, "description": "Coderbounty #" + str(issue.id), "custom": data} ] } ) if payment.create(): for link in payment.links: if link.method == "REDIRECT": redirect_url = link.href return redirect(redirect_url) else: messages.error(request, payment.error) return render(request, 'post.html', { 'languages': languages }) # wepay = WePay(settings.WEPAY_IN_PRODUCTION, settings.WEPAY_ACCESS_TOKEN) # wepay_data = wepay.call('/checkout/create', { # 'account_id': settings.WEPAY_ACCOUNT_ID, # 'amount': request.POST.get('grand_total'), # 'short_description': 'CoderBounty', # 'long_description': data, # 'type': 'service', # 'redirect_uri': request.build_absolute_uri(issue.get_absolute_url()), # 'currency': 'USD' # }) # if "error_code" in wepay_data: # messages.error(request, wepay_data['error_description']) # return render(request, 'post.html', { # 'languages': languages # }) # else: return render(request, 'post.html', { 'languages': languages, 'message': form.errors, 'errors': form.errors, 'form': form, 'bounty_errors': bounty_form.errors, })