def bitcoinIPN(request):
    # logger.info('----- bitcoinIPN ------')
    value = Decimal(request.GET["value"]) * Decimal('1e-8')
    destination_address = request.GET["destination_address"]
    transaction_hash = request.GET["transaction_hash"]
    confirmations = int(request.GET["confirmations"])
    logger.info("bitcoin IPN confirmation: host = %s(%s), value = %s, destination_address=%s, transaction_hash = %s, confirmations = %s" %
                (dictOrEmpty(request.META,'REMOTE_HOST'),
                 dictOrEmpty(request.META,'REMOTE_ADDR'),
                 value,
                 destination_address,
                 transaction_hash,
                 confirmations))
    if value > 0:
        bitcoin_frespo_services.bitcoin_ipn_received(value, destination_address, transaction_hash, confirmations)
    elif value < 0:
        bitcoin_frespo_services.bitcoin_ipn_sent(value, destination_address, transaction_hash, confirmations)
    else :
        raise BaseException('Received 0 - value IPN confirmation')
    # logger.info("value: %s" % dictOrEmpty(request.GET, "value"))
    # logger.info("input_address: %s" % dictOrEmpty(request.GET, "input_address"))
    # logger.info("confirmations: %s" % dictOrEmpty(request.GET, "confirmations"))
    # logger.info("transaction_hash: %s" % dictOrEmpty(request.GET, "transaction_hash"))
    # logger.info("destination_address: %s" % dictOrEmpty(request.GET, "destination_address"))
    # logger.info("input_transaction_hash: %s" % dictOrEmpty(request.GET, "input_transaction_hash"))
    # logger.info("GET params: %s" % request.GET)
    # logger.info('----- bitcoinIPN end ------')
    return HttpResponse("*ok*")
def viewOffer(request, offer_id):
    offer = Offer.objects.get(pk=offer_id)
    payment = None
    myoffer = None
    mysolution = None
    show_alert = None

    if (request.user.is_authenticated()):
        mysolution = get_or_none(Solution,
                                 issue=offer.issue,
                                 programmer=request.user)
        myoffer = get_or_none(Offer, issue=offer.issue, sponsor=request.user)

    alert = dictOrEmpty(request.GET, 'alert')
    if (alert == 'SPONSOR' and offer.issue.project):
        show_alert = 'core/popup/popup_just_sponsored.html'
    alert_reputation_revoking = mysolution and mysolution.status == Solution.IN_PROGRESS and mysolution.get_received_payments(
    ).count() > 0
    invoke_parent_callback = (dictOrEmpty(request.GET, 'c') == 's')

    is_watching = request.user.is_authenticated(
    ) and watch_services.is_watching_offer(request.user, offer.id)

    return render_to_response('core/offer.html', {
        'offer': offer,
        'is_watching': is_watching,
        'issue': offer.issue,
        'show_alert': show_alert,
        'myoffer': myoffer,
        'mysolution': mysolution,
        'alert_reputation_revoking': alert_reputation_revoking,
        'invoke_parent_callback': invoke_parent_callback
    },
                              context_instance=RequestContext(request))
def viewIssue(request, issue_id):
    issue = Issue.objects.get(pk=issue_id)
    myoffer = None
    mysolution = None
    show_alert = None

    if(request.user.is_authenticated()):
        myoffer = get_or_none(Offer, issue=issue,sponsor=request.user)
        mysolution = get_or_none(Solution, issue=issue,programmer=request.user)

    show_sponsor_popup = (dictOrEmpty(request.GET, 'show_sponsor') == 'true')
    alert = dictOrEmpty(request.GET, 'alert')
    if(alert == 'KICKSTART'):
        show_alert = 'core/popup_just_kickstarted.html'
    invoke_parent_callback = (dictOrEmpty(request.GET, 'c') == 's')

    is_watching = request.user.is_authenticated() and watch_services.is_watching_issue(request.user, issue.id)

    return render_to_response('core/issue.html',
        {'issue':issue,
        'is_watching':is_watching,
        'myoffer':myoffer,
        'mysolution':mysolution,
        'invoke_parent_callback' : invoke_parent_callback,
        'show_sponsor_popup' : show_sponsor_popup,
        'show_alert' : show_alert},

        context_instance = RequestContext(request))
def viewOffer(request, offer_id):
    offer = Offer.objects.get(pk=offer_id)
    payment = None
    myoffer = None
    mysolution = None
    show_alert = None

    if request.user.is_authenticated():
        mysolution = get_or_none(Solution, issue=offer.issue, programmer=request.user)
        myoffer = get_or_none(Offer, issue=offer.issue, sponsor=request.user)

    alert = dictOrEmpty(request.GET, "alert")
    if alert == "SPONSOR" and offer.issue.project:
        show_alert = "core/popup_just_sponsored.html"
    alert_reputation_revoking = (
        mysolution and mysolution.status == Solution.IN_PROGRESS and mysolution.get_received_payments().count() > 0
    )
    invoke_parent_callback = dictOrEmpty(request.GET, "c") == "s"

    is_watching = request.user.is_authenticated() and watch_services.is_watching_offer(request.user, offer.id)

    return render_to_response(
        "core/offer.html",
        {
            "offer": offer,
            "is_watching": is_watching,
            "issue": offer.issue,
            "show_alert": show_alert,
            "myoffer": myoffer,
            "mysolution": mysolution,
            "alert_reputation_revoking": alert_reputation_revoking,
            "invoke_parent_callback": invoke_parent_callback,
        },
        context_instance=RequestContext(request),
    )
def viewOffer(request, offer_id):
    offer = Offer.objects.get(pk=offer_id)
    payment = None
    myoffer = None
    mysolution = None
    show_alert = None

    if(request.user.is_authenticated()):
        mysolution = get_or_none(Solution, issue=offer.issue,programmer=request.user)
        myoffer = get_or_none(Offer, issue=offer.issue,sponsor=request.user)

    alert = dictOrEmpty(request.GET, 'alert')
    if(alert == 'SPONSOR' and offer.issue.project):
        show_alert = 'core/popup_just_sponsored.html'
    invoke_parent_callback = (dictOrEmpty(request.GET, 'c') == 's')

    is_watching = request.user.is_authenticated() and watch_services.is_watching_offer(request.user, offer.id)

    return render_to_response('core/offer.html',
        {'offer':offer,
        'is_watching':is_watching,
        'issue':offer.issue,
        'show_alert':show_alert,
        'myoffer':myoffer,
        'mysolution':mysolution,
        'invoke_parent_callback' : invoke_parent_callback},
        context_instance = RequestContext(request))
def get_offers(request):
    trackerURL = dictOrEmpty(request.GET, 'trackerURL')
    if(not trackerURL):
        return HttpResponse(_("Error: need trackerURL parameter."), status=404)
    sponsor_id = dictOrEmpty(request.GET, 'sponsor_id')
    offers = Offer.objects.filter(issue__trackerURL__iexact=trackerURL)
    if(sponsor_id):
        offers = offers.filter(sponsor__id=int(sponsor_id))
    return HttpResponse(json.dumps(_convert_offers_to_dict(offers)))
def get_offers(request):
    trackerURL = dictOrEmpty(request.GET, 'trackerURL')
    if (not trackerURL):
        return HttpResponse(_("Error: need trackerURL parameter."), status=404)
    sponsor_id = dictOrEmpty(request.GET, 'sponsor_id')
    offers = Offer.objects.filter(issue__trackerURL__iexact=trackerURL)
    if (sponsor_id):
        offers = offers.filter(sponsor__id=int(sponsor_id))
    return HttpResponse(json.dumps(_convert_offers_to_dict(offers)))
def addIssueForm(request):
    trackerURL = dictOrEmpty(request.GET, 'trackerURL')
    operation = dictOrEmpty(request.GET, 'operation')
    if(trackerURL):
        issues = Issue.objects.filter(trackerURL__iexact=trackerURL)
        issue_already_exists = issues.count() >= 1
        if(issues.count() > 1):
            logger.warning("Database inconsistency: more than one issue found with url = %s"%trackerURL)
        if(issue_already_exists):
            return redirect(issues[0].get_view_link()+'?show_sponsor=true&c=s')

    return render_to_response('core/add_issue.html',
        {'trackerURL' : trackerURL,
        'operation' : operation},
        context_instance = RequestContext(request))
def addIssueForm(request):
    trackerURL = dictOrEmpty(request.GET, "trackerURL")
    operation = dictOrEmpty(request.GET, "operation")
    if trackerURL:
        issues = Issue.objects.filter(trackerURL__iexact=trackerURL)
        issue_already_exists = issues.count() >= 1
        if issues.count() > 1:
            logger.warning("Database inconsistency: more than one issue found with url = %s" % trackerURL)
        if issue_already_exists:
            return redirect(issues[0].get_view_link() + "?show_sponsor=true&c=s")

    return render_to_response(
        "core/add_issue.html",
        {"trackerURL": trackerURL, "operation": operation},
        context_instance=RequestContext(request),
    )
def edit_existing_user(user, dict):
    userinfo = user.getUserInfo()
    userinfo.screenName = dict['screenName']
    userinfo.website = dict['website']
    userinfo.about = dict['about']
    userinfo.realName = dict['realName']
    userinfo.receiveEmail_issue_comments = dict.has_key('receiveEmail_issue_comments')
    userinfo.receiveEmail_issue_work = dict.has_key('receiveEmail_issue_work')
    userinfo.receiveEmail_issue_offer = dict.has_key('receiveEmail_issue_offer')
    userinfo.receiveEmail_issue_payment = dict.has_key('receiveEmail_issue_payment')
    userinfo.receiveEmail_announcements = dict.has_key('receiveEmail_announcements')
    userinfo.brazilianPaypal = dict.has_key('brazilianPaypal')
    userinfo.hide_from_userlist = dict.has_key('hide_from_userlist')
    userinfo.preferred_language_code = dict['preferred_language_code']
    if(settings.BITCOIN_ENABLED):
        userinfo.bitcoin_receive_address = dict['bitcoin_receive_address']
    newEmail = dict['primaryEmail']
    newPaypalEmail = dictOrEmpty(dict, 'paypalEmail')
    if(not newPaypalEmail):
        newPaypalEmail = newEmail
    changedPaypalEmail = newPaypalEmail != userinfo.paypalEmail
    primaryActivation = _changePrimaryEmailIfNeeded(userinfo, newEmail)
    paypalActivation = _changePaypalEmailIfNeeded(userinfo, newPaypalEmail)
    if changedPaypalEmail:
        userinfo.paypal_verified = False
    userinfo.save()
    paypal_services.accepts_paypal_payments(user)
    return paypalActivation, primaryActivation
Esempio n. 11
0
def editUserForm(request):
    userinfo = request.user.getUserInfo()
    available_languages = [
        {
            'code': 'en',
            'label': _('English')
        },
        {
            'code': 'pt-br',
            'label': _('Brazilian Portuguese')
        },
        {
            'code': 'es',
            'label': _('Spanish')
        },
    ]
    if (not userinfo):
        userinfo = UserInfo.newUserInfo(request.user)
        userinfo.save()
        mail_services.welcome(request.user)
        _notify_admin_new_user(request.user)
    return render_to_response('core/useredit.html', {
        'userinfo': userinfo,
        'available_languages': available_languages,
        'next': dictOrEmpty(request.GET, 'next')
    },
                              context_instance=RequestContext(request))
Esempio n. 12
0
def edit_existing_user(user, dict):
    userinfo = user.getUserInfo()
    userinfo.screenName = dict['screenName']
    userinfo.website = dict['website']
    userinfo.about = dict['about']
    userinfo.realName = dict['realName']
    userinfo.receiveEmail_issue_comments = dict.has_key(
        'receiveEmail_issue_comments')
    userinfo.receiveEmail_issue_work = dict.has_key('receiveEmail_issue_work')
    userinfo.receiveEmail_issue_offer = dict.has_key(
        'receiveEmail_issue_offer')
    userinfo.receiveEmail_issue_payment = dict.has_key(
        'receiveEmail_issue_payment')
    userinfo.receiveEmail_announcements = dict.has_key(
        'receiveEmail_announcements')
    userinfo.brazilianPaypal = dict.has_key('brazilianPaypal')
    userinfo.hide_from_userlist = dict.has_key('hide_from_userlist')
    userinfo.preferred_language_code = dict['preferred_language_code']
    if (settings.BITCOIN_ENABLED):
        userinfo.bitcoin_receive_address = dict['bitcoin_receive_address']
    newEmail = dict['primaryEmail']
    newPaypalEmail = dictOrEmpty(dict, 'paypalEmail')
    if (not newPaypalEmail):
        newPaypalEmail = newEmail
    changedPaypalEmail = newPaypalEmail != userinfo.paypalEmail
    primaryActivation = _changePrimaryEmailIfNeeded(userinfo, newEmail)
    paypalActivation = _changePaypalEmailIfNeeded(userinfo, newPaypalEmail)
    if changedPaypalEmail:
        userinfo.paypal_verified = False
    userinfo.save()
    paypal_services.accepts_paypal_payments(user)
    return paypalActivation, primaryActivation
def viewUser(request, user_id):
    user = User.objects.get(pk=user_id)
    unconnectedSocialAccounts = None
    changedEmails = None
    if user.id == request.user.id:
        unconnectedSocialAccounts = user_services.getUnconnectedSocialAccounts(user)
    alert_strings = user_services.getAlertsForViewUser(
        request.user,
        user,
        changedPrimaryEmail=dictOrEmpty(request.GET, "prim") == "true",
        changedPaypalEmail=dictOrEmpty(request.GET, "payp") == "true",
        emailVerified=dictOrEmpty(request.GET, "email_verified") == "true",
    )
    for alert in alert_strings:
        messages.info(request, alert)

    context = {"le_user": user, "stats": user.getStats(), "unconnectedSocialAccounts": unconnectedSocialAccounts}
    return render_to_response("core/user.html", context, context_instance=RequestContext(request))
Esempio n. 14
0
def editUserForm(request):
    userinfo = request.user.getUserInfo()
    if(not userinfo):
        userinfo = UserInfo.newUserInfo(request.user)
        userinfo.save()
    return render_to_response('core/useredit.html',
        {'userinfo':userinfo,
        'next':dictOrEmpty(request.GET, 'next')},
        context_instance = RequestContext(request))
Esempio n. 15
0
def _buildIssueFromDictionary(dict, user):
    check_noProject = dict.has_key('noProject')
    issue_trackerURL = dict['trackerURL']
    issue_projectId = dict['project_id']
    issue_projectName = dictOrEmpty(dict, 'project_name')
    check_createProject = dict.has_key('createProject')
    newProject_name = dictOrEmpty(dict, 'newProjectName')
    newProject_homeURL = dictOrEmpty(dict, 'newProjectHomeURL')
    newProject_trackerURL = dictOrEmpty(dict, 'newProjectTrackerURL')
    issue_key = dictOrEmpty(dict, 'key')
    issue_title = dictOrEmpty(dict, 'title')
    issue_description = dictOrEmpty(dict, 'description')
    _throwIfIssueExists(issue_trackerURL, user)
    issue = None
    if (check_noProject):
        if (not issue_title or not issue_description):
            raise BaseException('title and description are required')

        issue = Issue.newIssueOrphan(issue_title, issue_description, user)
    else:
        project = None
        if (check_createProject):
            if (not newProject_name or not newProject_homeURL
                    or not newProject_trackerURL):
                raise BaseException(
                    'all parameters for new project are required')

            projectHomeURLValidationError = validateURL(newProject_homeURL)
            if (projectHomeURLValidationError):
                raise BaseException('invalid project URL (' +
                                    newProject_homeURL + ') - ' +
                                    projectHomeURLValidationError)

            projectTrackerURLValidationError = validateURL(
                newProject_trackerURL)
            if (projectTrackerURLValidationError):
                raise BaseException('invalid project tracker URL (' +
                                    newProject_trackerURL + ') - ' +
                                    projectTrackerURLValidationError)

            project = Project.newProject(newProject_name, user,
                                         newProject_homeURL,
                                         newProject_trackerURL)
        else:
            project = Project.objects.get(pk=int(issue_projectId))
            if (newProject_homeURL != project.homeURL):
                project.homeURL = newProject_homeURL

        if (not issue_key or not issue_title):
            raise BaseException('key and title are required')

        issueURLValidationError = validateIssueURL(issue_trackerURL)
        if (issueURLValidationError):
            raise BaseException('invalid issue URL (' + issue_trackerURL +
                                ') - ' + issueURLValidationError)

        issue = Issue.newIssue(project, issue_key, issue_title, user,
                               issue_trackerURL)
    return issue
Esempio n. 16
0
def addIssue(request):
    try:
        offer = issue_services.add_new_issue_and_offer(request.POST, request.user)
    except BaseException as ex:
        return HttpResponse("ERROR: "+ex.message)
    params = '?a=s'
    if(dictOrEmpty(request.POST, 'invoke_parent_callback') == 'true'):
        params += '&c=s' # c = Callback (iframe javascript callback)

    return redirect(offer.get_view_link()+params)
def addIssueForm(request):
    trackerURL = dictOrEmpty(request.GET, 'trackerURL')
    operation = dictOrEmpty(request.GET, 'operation')
    if (trackerURL):
        issues = Issue.objects.filter(trackerURL__iexact=trackerURL)
        issue_already_exists = issues.count() >= 1
        if (issues.count() > 1):
            logger.warning(
                "Database inconsistency: more than one issue found with url = %s"
                % trackerURL)
        if (issue_already_exists):
            return redirect(issues[0].get_view_link() +
                            '?show_sponsor=true&c=s')

    return render_to_response('core/add_issue.html', {
        'trackerURL': trackerURL,
        'operation': operation,
    },
                              context_instance=RequestContext(request))
Esempio n. 18
0
def editUserForm(request):
    userinfo = request.user.getUserInfo()
    if (not userinfo):
        userinfo = UserInfo.newUserInfo(request.user)
        userinfo.save()
    return render_to_response('core/useredit.html', {
        'userinfo': userinfo,
        'next': dictOrEmpty(request.GET, 'next')
    },
                              context_instance=RequestContext(request))
def viewUser(request, user_id):
    user = User.objects.get(pk=user_id)
    unconnectedSocialAccounts = None
    changedEmails = None
    if(user.id == request.user.id):
        unconnectedSocialAccounts = user_services.getUnconnectedSocialAccounts(user)
    alert_strings = user_services.getAlertsForViewUser(request.user, user,
        changedPrimaryEmail=dictOrEmpty(request.GET, 'prim') == 'true',
        changedPaypalEmail=dictOrEmpty(request.GET, 'payp') == 'true',
        emailVerified=dictOrEmpty(request.GET, 'email_verified') == 'true')
    for alert in alert_strings:
        messages.info(request, alert)

    context = {'le_user':user,
        'stats': user.getStats(),
        'unconnectedSocialAccounts':unconnectedSocialAccounts,
        }
    return render_to_response('core/user.html',
        context,
        context_instance = RequestContext(request))
Esempio n. 20
0
def admail(request):
    if(request.user.is_superuser):
        mail_to = dictOrEmpty(request.POST, 'mail_to')
        if(mail_to):
            subject = dictOrEmpty(request.POST, 'subject')
            body = dictOrEmpty(request.POST, 'body')
            if(mail_to == 'some'):
                emails = dictOrEmpty(request.POST, 'emails').split(',')
                count = 0
                for email in emails:
                    plain_send_mail(email.strip(), subject, body)
                    count += 1
            elif(mail_to == 'all'):
                count = send_mail_to_all_users(subject, body)
            messages.info(request, 'mail sent to %s users'%count)
    else:
        messages.info(request, 'nice try :-). If you do find a hole, please have the finesse to let us know though.')
    return render_to_response('core/admail.html',
        {},
        context_instance = RequestContext(request))
def addIssue(request):
    try:
        offer = issue_services.sponsor_new_issue(request.POST, request.user)
        watch_services.watch_issue(request.user, offer.issue.id, IssueWatch.SPONSORED)
    except BaseException as ex:
        return HttpResponse(_("ERROR: ")+ex.message)
    params = '?alert=SPONSOR'
    if(dictOrEmpty(request.POST, 'invoke_parent_callback') == 'true'):
        params += '&c=s' # c = Callback (iframe javascript callback)

    return redirect(offer.get_view_link()+params)
Esempio n. 22
0
def viewIssue(request, issue_id):
    issue = Issue.objects.get(pk=issue_id)
    myoffer = None
    mysolution = None

    if(request.user.is_authenticated()):
        myoffer = get_or_none(Offer, issue=issue,sponsor=request.user)
        mysolution = get_or_none(Solution, issue=issue,programmer=request.user)

    show_sponsor_popup = (dictOrEmpty(request.GET, 'show_sponsor') == 'true')
    invoke_parent_callback = (dictOrEmpty(request.GET, 'c') == 's')

    return render_to_response('core/issue.html',
        {'issue':issue,
        'myoffer':myoffer,
        'mysolution':mysolution,
        'invoke_parent_callback' : invoke_parent_callback,
        'show_sponsor_popup' : show_sponsor_popup},

        context_instance = RequestContext(request))
Esempio n. 23
0
def sponsorIssue(request):
    issue_id = int(request.POST['issue_id'])

    offer = issue_services.sponsor_existing_issue(issue_id, request.POST, request.user)

    invoke_parent_callback = dictOrEmpty(request.POST, 'invoke_parent_callback')
    if(invoke_parent_callback == 'true'):
        params = '?c=s' # c = Callback (iframe javascript callback)
    else:
        params = '?a=s' # a = Alert
    return redirect(offer.get_view_link()+params)
def bitcoinIPN(request):
    # logger.info('----- bitcoinIPN ------')
    value = Decimal(request.GET["value"]) * Decimal('1e-8')
    destination_address = request.GET["destination_address"]
    transaction_hash = request.GET["transaction_hash"]
    confirmations = int(request.GET["confirmations"])
    logger.info("bitcoin IPN confirmation: host = %s(%s), value = %s, destination_address=%s, transaction_hash = %s, confirmations = %s" %
                (dictOrEmpty(request.META,'REMOTE_HOST'),
                 dictOrEmpty(request.META,'REMOTE_ADDR'),
                 value,
                 destination_address,
                 transaction_hash,
                 confirmations))
    if value > 0:
        bitcoin_frespo_services.bitcoin_ipn_received(value, destination_address, transaction_hash, confirmations)
    elif value < 0:
        bitcoin_frespo_services.bitcoin_ipn_sent(-value, destination_address, transaction_hash, confirmations)
    else :
        raise BaseException('Received 0 - value IPN confirmation')
    return HttpResponse("*ok*")
def _listIssues(request):
    project_id = request.GET.get('project_id')
    project_name = request.GET.get('project_name')
    search_terms = request.GET.get('s')
    operation = dictOrEmpty(request.GET, 'operation')
    is_public_suggestion = None
    if(operation == 'SPONSOR'):
        is_public_suggestion = False
    elif(operation == 'KICKSTART'):
        is_public_suggestion = True
    issues = issue_services.search_issues(project_id, project_name, search_terms, is_public_suggestion)
    return issues
def sponsorIssue(request):
    issue_id = int(request.POST['issue_id'])

    offer = issue_services.sponsor_existing_issue(issue_id, request.POST, request.user)
    watch_services.watch_issue(request.user, issue_id, IssueWatch.SPONSORED)

    invoke_parent_callback = dictOrEmpty(request.POST, 'invoke_parent_callback')
    if(invoke_parent_callback == 'true'):
        params = '?c=s' # c = Callback (iframe javascript callback)
    else:
        params = '?alert=SPONSOR' # a = Alert
    return redirect(offer.get_view_link()+params)
def listIssues(request):
    project_id = request.GET.get('project_id')
    project_name = request.GET.get('project_name')
    search_terms = request.GET.get('s')
    operation = dictOrEmpty(request.GET, 'operation')
    return render_to_response('core/issue_list.html', {
        'issues': _listIssues(request),
        's': search_terms,
        'project_id': project_id,
        'project_name': project_name,
        'operation': operation,
    },
                              context_instance=RequestContext(request))
def _listIssues(request):
    project_id = request.GET.get('project_id')
    project_name = request.GET.get('project_name')
    search_terms = request.GET.get('s')
    operation = dictOrEmpty(request.GET, 'operation')
    is_public_suggestion = None
    if (operation == 'SPONSOR'):
        is_public_suggestion = False
    elif (operation == 'KICKSTART'):
        is_public_suggestion = True
    issues = issue_services.search_issues(project_id, project_name,
                                          search_terms, is_public_suggestion)
    return issues
def addIssue(request):
    try:
        offer = issue_services.sponsor_new_issue(request.POST, request.user)
        watch_services.watch_issue(request.user, offer.issue.id,
                                   IssueWatch.SPONSORED)
    except BaseException as ex:
        traceback.print_exc()
        return HttpResponse(_("ERROR: ") + ex.message)
    params = '?alert=SPONSOR'
    if (dictOrEmpty(request.POST, 'invoke_parent_callback') == 'true'):
        params += '&c=s'  # c = Callback (iframe javascript callback)

    return redirect(offer.get_view_link() + params)
def listIssues(request):
    project_id = request.GET.get('project_id')
    project_name = request.GET.get('project_name')
    search_terms = request.GET.get('s')
    operation = dictOrEmpty(request.GET, 'operation')
    return render_to_response('core/issue_list.html',
        {'issues':_listIssues(request),
         's':search_terms,
         'project_id':project_id,
         'project_name':project_name,
         'operation':operation,
        },
        context_instance = RequestContext(request))
Esempio n. 31
0
def viewOffer(request, offer_id):
    offer = Offer.objects.get(pk=offer_id)
    myoffer = None
    mysolution = None
    show_alert = None

    if(request.user.is_authenticated()):
        mysolution = get_or_none(Solution, issue=offer.issue,programmer=request.user)
        myoffer = get_or_none(Offer, issue=offer.issue,sponsor=request.user)

    a = dictOrEmpty(request.GET, 'a')
    if(a == 's' and offer.issue.project):
        show_alert = 'core/popup_just_sponsored.html'
    invoke_parent_callback = (dictOrEmpty(request.GET, 'c') == 's')

    return render_to_response('core/offer.html',
        {'offer':offer,
        'issue':offer.issue,
        'show_alert':show_alert,
        'myoffer':myoffer,
        'mysolution':mysolution,
        'invoke_parent_callback' : invoke_parent_callback},
        context_instance = RequestContext(request))
def paypalReturn(request):
    current_payment_id = dictOrEmpty(request.session, 'current_payment_id')
    if(current_payment_id):
        curr_payment, msg = payment_services.payment_confirmed_web(current_payment_id)
        del request.session['current_payment_id']
        logger.info('CONFIRM_WEB successful for payment %s'%curr_payment.id)
    else :
        msg = 'Session expired'
        curr_payment = None
        logger.warn('CONFIRM_WEB received while no payment in session. user = %s'%request.user.id)
    return render_to_response('core/paypal_confirmed.html',
        {'msg':msg,
        'payment':curr_payment},
        context_instance = RequestContext(request))
def sponsorIssue(request):
    issue_id = int(request.POST['issue_id'])

    issue = Issue.objects.get(pk = issue_id)
    offer = issue_services.sponsor_existing_issue(issue_id, request.POST, request.user)
    watch_services.watch_issue(request.user, issue_id, IssueWatch.SPONSORED)

    invoke_parent_callback = dictOrEmpty(request.POST, 'invoke_parent_callback')
    if(invoke_parent_callback == 'true'):
        params = '?c=s' # c = Callback (iframe javascript callback)
    else:
        params = '?alert=SPONSOR' # a = Alert
    if (issue.getSolutionsAcceptingPayments().count() > 0):
        messages.info(request, 'This issue is open for payments. You are free to choose: you can pay now, or you can wait until after the issue is finished. No pressure :-)')
    return redirect(offer.get_view_link()+params)
def viewIssue(request, issue_id):
    issue = Issue.objects.get(pk=issue_id)
    myoffer = None
    mysolution = None
    show_alert = None

    if (request.user.is_authenticated()):
        myoffer = get_or_none(Offer, issue=issue, sponsor=request.user)
        mysolution = get_or_none(Solution,
                                 issue=issue,
                                 programmer=request.user)

    show_sponsor_popup = (dictOrEmpty(request.GET, 'show_sponsor') == 'true')
    alert = dictOrEmpty(request.GET, 'alert')
    if (alert == 'KICKSTART'):
        show_alert = 'core/popup/popup_just_kickstarted.html'
    alert_reputation_revoking = mysolution and mysolution.status == Solution.IN_PROGRESS and mysolution.get_received_payments(
    ).count() > 0

    invoke_parent_callback = (dictOrEmpty(request.GET, 'c') == 's')

    is_watching = request.user.is_authenticated(
    ) and watch_services.is_watching_issue(request.user, issue.id)

    return render_to_response(
        'core/issue.html', {
            'issue': issue,
            'is_watching': is_watching,
            'myoffer': myoffer,
            'mysolution': mysolution,
            'invoke_parent_callback': invoke_parent_callback,
            'show_sponsor_popup': show_sponsor_popup,
            'show_alert': show_alert,
            'alert_reputation_revoking': alert_reputation_revoking
        },
        context_instance=RequestContext(request))
def viewIssue(request, issue_id):
    issue = Issue.objects.get(pk=issue_id)
    myoffer = None
    mysolution = None
    show_alert = None

    if request.user.is_authenticated():
        myoffer = get_or_none(Offer, issue=issue, sponsor=request.user)
        mysolution = get_or_none(Solution, issue=issue, programmer=request.user)

    show_sponsor_popup = dictOrEmpty(request.GET, "show_sponsor") == "true"
    alert = dictOrEmpty(request.GET, "alert")
    if alert == "KICKSTART":
        show_alert = "core/popup_just_kickstarted.html"
    alert_reputation_revoking = (
        mysolution and mysolution.status == Solution.IN_PROGRESS and mysolution.get_received_payments().count() > 0
    )

    invoke_parent_callback = dictOrEmpty(request.GET, "c") == "s"

    is_watching = request.user.is_authenticated() and watch_services.is_watching_issue(request.user, issue.id)

    return render_to_response(
        "core/issue.html",
        {
            "issue": issue,
            "is_watching": is_watching,
            "myoffer": myoffer,
            "mysolution": mysolution,
            "invoke_parent_callback": invoke_parent_callback,
            "show_sponsor_popup": show_sponsor_popup,
            "show_alert": show_alert,
            "alert_reputation_revoking": alert_reputation_revoking,
        },
        context_instance=RequestContext(request),
    )
Esempio n. 36
0
def viewUser(request, user_id):
    user = User.objects.get(pk=user_id)
    unconnectedSocialAccounts = None
    changedEmails = None
    if (user.id == request.user.id):
        unconnectedSocialAccounts = user_services.getUnconnectedSocialAccounts(
            user)
    alert_strings = user_services.getAlertsForViewUser(
        request.user,
        user,
        changedPrimaryEmail=dictOrEmpty(request.GET, 'prim') == 'true',
        changedPaypalEmail=dictOrEmpty(request.GET, 'payp') == 'true',
        emailVerified=dictOrEmpty(request.GET, 'email_verified') == 'true')
    for alert in alert_strings:
        messages.info(request, alert)

    context = {
        'le_user': user,
        'stats': user.getStats(),
        'unconnectedSocialAccounts': unconnectedSocialAccounts,
    }
    return render_to_response('core/user.html',
                              context,
                              context_instance=RequestContext(request))
def _buildOfferFromDictionary(dict, user):
    check_noProject = dict.has_key('noProject')
    issue_trackerURL = dict['trackerURL']
    issue_projectId = dict['project_id']
    issue_projectName = dictOrEmpty(dict, 'project_name')
    check_createProject = dict.has_key('createProject')
    newProject_name = dictOrEmpty(dict, 'newProjectName')
    newProject_homeURL = dictOrEmpty(dict, 'newProjectHomeURL')
    newProject_trackerURL = dictOrEmpty(dict, 'newProjectTrackerURL')
    issue_key = dictOrEmpty(dict, 'key');
    issue_title = dictOrEmpty(dict, 'title');
    issue_description = dictOrEmpty(dict, 'description');

    _throwIfIssueExists(issue_trackerURL, user)

    issue = None
    if(check_noProject):
        if(not issue_title or not issue_description):
            raise BaseException('title and description are required')

        issue = Issue.newIssueOrphan(issue_title, issue_description, user)
    else:
        project = None
        if(check_createProject):
            if(not newProject_name or not newProject_homeURL or not newProject_trackerURL):
                raise BaseException('all parameters for new project are required')

            projectHomeURLValidationError = validateURL(newProject_homeURL)
            if(projectHomeURLValidationError):
                raise BaseException('invalid project URL ('+newProject_homeURL+') - '+projectHomeURLValidationError)

            projectTrackerURLValidationError = validateURL(newProject_trackerURL)
            if(projectTrackerURLValidationError):
                raise BaseException('invalid project tracker URL ('+newProject_trackerURL+') - '+projectTrackerURLValidationError)

            project = Project.newProject(newProject_name, user, newProject_homeURL, newProject_trackerURL)
        else:
            project = Project.objects.get(pk=int(issue_projectId))
            if(newProject_homeURL != project.homeURL):
                project.homeURL = newProject_homeURL

        if(not issue_key or not issue_title):
            raise BaseException('key and title are required')

        issueURLValidationError = validateIssueURL(issue_trackerURL)
        if(issueURLValidationError):
            raise BaseException('invalid issue URL ('+issue_trackerURL+') - '+issueURLValidationError)

        issue = Issue.newIssue(project, issue_key, issue_title, user, issue_trackerURL)

    return _buildOfferFromDictionary_and_issue(dict, user, issue);
def editUser(request):
    paypalActivation, primaryActivation = user_services.edit_existing_user(request.user, request.POST)

    next = dictOrEmpty(request.POST, 'next')
    if(next):
        return redirect(next)
    else:
        params = []
        if(primaryActivation):
            params.append("prim=true")
        if(paypalActivation):
            params.append("payp=true")
        params = '&'.join(params)
        if(params):
            params = '?'+params
        return redirect(request.user.get_view_link()+params)
def paypalReturn(request):
    current_payment_id = dictOrEmpty(request.session, 'current_payment_id')
    if(current_payment_id):
        curr_payment, msg = paypal_services.payment_confirmed_web(current_payment_id)
        del request.session['current_payment_id']
        logger.info('CONFIRM_WEB successful for payment %s'%curr_payment.id)
    else :
        msg = _('Session expired')
        curr_payment = None
        logger.warn('CONFIRM_WEB received while no payment in session. user = %s'%request.user.id)
    messages.warning(request, "Your payment is being processed. You'll receive an email when your payment is confirmed.")
    # return render_to_response('core/paypal_confirmed.html',
    #     {'msg':msg,
    #     'payment':curr_payment},
    #     context_instance = RequestContext(request))
    return redirect(curr_payment.offer.issue.get_view_link())
Esempio n. 40
0
def edit_existing_user(user, dict):
    userinfo = user.getUserInfo()
    userinfo.screenName = dict['screenName']
    userinfo.website = dict['website']
    userinfo.about = dict['about']
    userinfo.realName = dict['realName']
    userinfo.receiveAllEmail = dict.has_key('receiveAllEmail')
    userinfo.brazilianPaypal = dict.has_key('brazilianPaypal')
    newEmail = dict['primaryEmail']
    newPaypalEmail = dictOrEmpty(dict, 'paypalEmail')
    if (not newPaypalEmail):
        newPaypalEmail = newEmail
    primaryActivation = _changePrimaryEmailIfNeeded(userinfo, newEmail)
    paypalActivation = _changePaypalEmailIfNeeded(userinfo, newPaypalEmail)
    userinfo.save()
    return paypalActivation, primaryActivation
def editUser(request):
    paypalActivation, primaryActivation = user_services.edit_existing_user(request.user, request.POST)

    next = dictOrEmpty(request.POST, _("next"))
    if next:
        return redirect(next)
    else:
        params = []
        if primaryActivation:
            params.append("prim=true")
        if paypalActivation:
            params.append("payp=true")
        params = "&".join(params)
        if params:
            params = "?" + params
        return redirect(request.user.get_view_link() + params)
def edit_existing_user(user, dict):
    userinfo = user.getUserInfo()
    userinfo.screenName = dict['screenName']
    userinfo.website = dict['website']
    userinfo.about = dict['about']
    userinfo.realName = dict['realName']
    userinfo.receiveAllEmail = dict.has_key('receiveAllEmail')
    userinfo.brazilianPaypal = dict.has_key('brazilianPaypal')
    newEmail = dict['primaryEmail']
    newPaypalEmail = dictOrEmpty(dict, 'paypalEmail')
    if(not newPaypalEmail):
        newPaypalEmail = newEmail
    primaryActivation = _changePrimaryEmailIfNeeded(userinfo, newEmail)
    paypalActivation = _changePaypalEmailIfNeeded(userinfo, newPaypalEmail)
    userinfo.save()
    return paypalActivation, primaryActivation
def editUserForm(request):
    userinfo = request.user.getUserInfo()
    available_languages = [
        {'code':'en', 'label':_('English')},
        {'code':'pt-br', 'label':_('Brazilian Portuguese')},
        {'code':'es', 'label':_('Spanish')},
    ]
    if(not userinfo):
        userinfo = UserInfo.newUserInfo(request.user)
        userinfo.save()
        mail_services.welcome(request.user)
        _notify_admin_new_user(request.user)
    return render_to_response('core/useredit.html',
        {'userinfo':userinfo,
         'available_languages' : available_languages,
        'next':dictOrEmpty(request.GET, 'next')},
        context_instance = RequestContext(request))
def edit_existing_user(user, dict):
    userinfo = user.getUserInfo()
    userinfo.screenName = dict["screenName"]
    userinfo.website = dict["website"]
    userinfo.about = dict["about"]
    userinfo.realName = dict["realName"]
    userinfo.receiveAllEmail = dict.has_key("receiveAllEmail")
    userinfo.brazilianPaypal = dict.has_key("brazilianPaypal")
    userinfo.hide_from_userlist = dict.has_key("hide_from_userlist")
    newEmail = dict["primaryEmail"]
    newPaypalEmail = dictOrEmpty(dict, "paypalEmail")
    if not newPaypalEmail:
        newPaypalEmail = newEmail
    primaryActivation = _changePrimaryEmailIfNeeded(userinfo, newEmail)
    paypalActivation = _changePaypalEmailIfNeeded(userinfo, newPaypalEmail)
    userinfo.save()
    return paypalActivation, primaryActivation
Esempio n. 45
0
def editUser(request):
    paypalActivation, primaryActivation = user_services.edit_existing_user(
        request.user, request.POST)

    next = dictOrEmpty(request.POST, _('next'))
    if (next):
        return redirect(next)
    else:
        params = []
        if (primaryActivation):
            params.append("prim=true")
        if (paypalActivation):
            params.append("payp=true")
        params = '&'.join(params)
        if (params):
            params = '?' + params
        return redirect(request.user.get_view_link() + params)
def editUserForm(request):
    userinfo = request.user.getUserInfo()
    available_languages = [
        {"code": "en", "label": _("English")},
        {"code": "pt-br", "label": _("Brazilian Portuguese")},
        {"code": "es", "label": _("Spanish")},
    ]
    if not userinfo:
        userinfo = UserInfo.newUserInfo(request.user)
        userinfo.save()
        mail_services.welcome(request.user)
        _notify_admin_new_user(request.user)
    return render_to_response(
        "core/useredit.html",
        {"userinfo": userinfo, "available_languages": available_languages, "next": dictOrEmpty(request.GET, "next")},
        context_instance=RequestContext(request),
    )
def payOffer(request, offer, payment):
    current_payment_id = dictOrEmpty(request.session, 'current_payment_id')
    if(current_payment_id):
        paypal_services.forget_payment(int(current_payment_id))

    paypal_adapter.generate_paypal_payment(payment)
    payment.save()

    request.session['current_payment_id'] = payment.id

    if(settings.PAYPAL_USE_SANDBOX):
        # form_action = 'https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay'
        redirect_url = 'https://www.sandbox.paypal.com/webscr?cmd=_ap-payment&paykey=%s' % payment.paykey
    else:
        # form_action = 'https://www.paypal.com/webapps/adaptivepayment/flow/pay'
        redirect_url = 'https://www.paypal.com/webscr?cmd=_ap-payment&paykey=%s' % payment.paykey
    return redirect(redirect_url)
def paypalReturn(request):
    current_payment_id = dictOrEmpty(request.session, 'current_payment_id')
    if (current_payment_id):
        curr_payment, msg = payment_services.payment_confirmed_web(
            current_payment_id)
        del request.session['current_payment_id']
        logger.info('CONFIRM_WEB successful for payment %s' % curr_payment.id)
    else:
        msg = 'Session expired'
        curr_payment = None
        logger.warn(
            'CONFIRM_WEB received while no payment in session. user = %s' %
            request.user.id)
    return render_to_response('core/paypal_confirmed.html', {
        'msg': msg,
        'payment': curr_payment
    },
                              context_instance=RequestContext(request))
def listIssues(request):
    project_id = request.GET.get('project_id')
    project_name = request.GET.get('project_name')
    search_terms = request.GET.get('s')
    operation = dictOrEmpty(request.GET, 'operation')
    is_public_suggestion = None
    if(operation == 'SPONSOR'):
        is_public_suggestion = False
    elif(operation == 'KICKSTART'):
        is_public_suggestion = True
    issues = issue_services.search_issues(project_id, project_name, search_terms, is_public_suggestion)
    return render_to_response('core/issue_list.html',
        {'issues':issues,
         's':search_terms,
         'project_id':project_id,
         'project_name':project_name,
         'operation':operation,
        },
        context_instance = RequestContext(request))
def edit_existing_user(user, dict):
    userinfo = user.getUserInfo()
    userinfo.screenName = dict['screenName']
    userinfo.website = dict['website']
    userinfo.about = dict['about']
    userinfo.realName = dict['realName']
    userinfo.receiveAllEmail = dict.has_key('receiveAllEmail')
    userinfo.brazilianPaypal = dict.has_key('brazilianPaypal')
    userinfo.hide_from_userlist = dict.has_key('hide_from_userlist')
    userinfo.preferred_language_code = dict['preferred_language_code']
    if(settings.BITCOIN_ENABLED):
        userinfo.bitcoin_receive_address = dict['bitcoin_receive_address']
    newEmail = dict['primaryEmail']
    newPaypalEmail = dictOrEmpty(dict, 'paypalEmail')
    if(not newPaypalEmail):
        newPaypalEmail = newEmail
    primaryActivation = _changePrimaryEmailIfNeeded(userinfo, newEmail)
    paypalActivation = _changePaypalEmailIfNeeded(userinfo, newPaypalEmail)
    userinfo.save()
    return paypalActivation, primaryActivation
def sponsorIssue(request):
    issue_id = int(request.POST['issue_id'])

    issue = Issue.objects.get(pk=issue_id)
    offer = issue_services.sponsor_existing_issue(issue_id, request.POST,
                                                  request.user)
    watch_services.watch_issue(request.user, issue_id, IssueWatch.SPONSORED)

    invoke_parent_callback = dictOrEmpty(request.POST,
                                         'invoke_parent_callback')
    if (invoke_parent_callback == 'true'):
        params = '?c=s'  # c = Callback (iframe javascript callback)
    else:
        params = '?alert=SPONSOR'  # a = Alert
    if (issue.getSolutionsAcceptingPayments().count() > 0):
        messages.info(
            request,
            'This issue is open for payments. You are free to choose: you can pay now, or you can wait until after the issue is finished. No pressure :-)'
        )
    return redirect(offer.get_view_link() + params)
Esempio n. 52
0
def paypalReturn(request):
    current_payment_id = dictOrEmpty(request.session, 'current_payment_id')
    if (current_payment_id):
        curr_payment, msg = paypal_services.payment_confirmed_web(
            current_payment_id)
        del request.session['current_payment_id']
        logger.info('CONFIRM_WEB successful for payment %s' % curr_payment.id)
    else:
        msg = _('Session expired')
        curr_payment = None
        logger.warn(
            'CONFIRM_WEB received while no payment in session. user = %s' %
            request.user.id)
    messages.warning(
        request,
        "Your payment is being processed. You'll receive an email when your payment is confirmed."
    )
    # return render_to_response('core/paypal_confirmed.html',
    #     {'msg':msg,
    #     'payment':curr_payment},
    #     context_instance = RequestContext(request))
    return redirect(curr_payment.offer.issue.get_view_link())
def payOffer(request):
    offer_id = int(request.POST['offer_id'])
    count = int(request.POST['count'])
    current_payment_id = dictOrEmpty(request.session, 'current_payment_id')
    if (current_payment_id):
        payment_services.forget_payment(int(current_payment_id))

    offer, payment = payment_services.generate_payment(offer_id, count,
                                                       request.POST,
                                                       request.user)

    request.session['current_payment_id'] = payment.id

    if (settings.PAYPAL_USE_SANDBOX):
        form_action = 'https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay'
    else:
        form_action = 'https://www.paypal.com/webapps/adaptivepayment/flow/pay'

    return render_to_response('core/waitPayment.html', {
        'offer': offer,
        'paykey': payment.paykey,
        'form_action': form_action
    },
                              context_instance=RequestContext(request))
Esempio n. 54
0
def payOffer(request, offer, payment):
    current_payment_id = dictOrEmpty(request.session, 'current_payment_id')
    if (current_payment_id):
        paypal_services.forget_payment(int(current_payment_id))

    try:
        paypal_adapter.generate_paypal_payment(payment)
    except BaseException as e:
        traceback.print_exc()
        messages.error(request, 'Error communicating with Paypal: %s' % e)
        mail_services.notify_admin('Error generating paypal payment',
                                   traceback.format_exc())
        return redirect(offer.get_view_link())
    payment.save()

    request.session['current_payment_id'] = payment.id

    if (settings.PAYPAL_USE_SANDBOX):
        # form_action = 'https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay'
        redirect_url = 'https://www.sandbox.paypal.com/webscr?cmd=_ap-payment&paykey=%s' % payment.paykey
    else:
        # form_action = 'https://www.paypal.com/webapps/adaptivepayment/flow/pay'
        redirect_url = 'https://www.paypal.com/webscr?cmd=_ap-payment&paykey=%s' % payment.paykey
    return redirect(redirect_url)