예제 #1
0
def charge_campaign(link, campaign):
    if charged_or_not_needed(campaign):
        return

    user = Account._byID(link.author_id)
    success, reason = authorize.charge_transaction(user, campaign.trans_id,
                                                   campaign._id)

    if not success:
        if reason == authorize.TRANSACTION_NOT_FOUND:
            # authorization hold has expired
            original_trans_id = campaign.trans_id
            campaign.trans_id = NO_TRANSACTION
            campaign._commit()
            text = ('voided expired transaction for %s: (trans_id: %d)' %
                    (campaign, original_trans_id))
            PromotionLog.add(link, text)
        return

    hooks.get_hook('promote.edit_campaign').call(link=link, campaign=campaign)

    if not is_promoted(link):
        update_promote_status(link, PROMOTE_STATUS.pending)

    emailer.queue_promo(link, campaign.bid, campaign.trans_id)
    text = ('auth charge for campaign %s, trans_id: %d' %
            (campaign._id, campaign.trans_id))
    PromotionLog.add(link, text)
예제 #2
0
def charge_campaign(link, campaign):
    if charged_or_not_needed(campaign):
        return

    user = Account._byID(link.author_id)
    success, reason = authorize.charge_transaction(user, campaign.trans_id,
                                                   campaign._id)

    if not success:
        if reason == authorize.TRANSACTION_NOT_FOUND:
            # authorization hold has expired
            original_trans_id = campaign.trans_id
            campaign.trans_id = NO_TRANSACTION
            campaign._commit()
            text = ('voided expired transaction for %s: (trans_id: %d)'
                    % (campaign, original_trans_id))
            PromotionLog.add(link, text)
        return

    hooks.get_hook('promote.edit_campaign').call(link=link, campaign=campaign)

    if not is_promoted(link):
        update_promote_status(link, PROMOTE_STATUS.pending)

    emailer.queue_promo(link, campaign.bid, campaign.trans_id)
    text = ('auth charge for campaign %s, trans_id: %d' %
            (campaign._id, campaign.trans_id))
    PromotionLog.add(link, text)
예제 #3
0
파일: promote.py 프로젝트: AD42/reddit
def charge_pending(offset=1):
    for l, camp, weight in accepted_campaigns(offset=offset):
        user = Account._byID(l.author_id)
        try:
            if charged_or_not_needed(camp):
                continue

            charge_succeeded = authorize.charge_transaction(user, camp.trans_id,
                                                            camp._id)

            if not charge_succeeded:
                continue

            hooks.get_hook('promote.new_charge').call(link=l, campaign=camp)

            if is_promoted(l):
                emailer.queue_promo(l, camp.bid, camp.trans_id)
            else:
                set_promote_status(l, PROMOTE_STATUS.pending)
                emailer.queue_promo(l, camp.bid, camp.trans_id)
            text = ('auth charge for campaign %s, trans_id: %d' %
                    (camp._id, camp.trans_id))
            PromotionLog.add(l, text)
        except:
            print "Error on %s, campaign %s" % (l, camp._id)
예제 #4
0
def charge_pending(offset=1):
    for l, camp, weight in accepted_campaigns(offset=offset):
        user = Account._byID(l.author_id)
        try:
            if authorize.is_charged_transaction(camp.trans_id, camp._id):
                # already charged
                continue

            charge_succeeded = authorize.charge_transaction(user, camp.trans_id,
                                                            camp._id)

            if not charge_succeeded:
                continue

            hooks.get_hook('promote.new_charge').call(link=l, campaign=camp)

            if is_promoted(l):
                emailer.queue_promo(l, camp.bid, camp.trans_id)
            else:
                set_promote_status(l, PROMOTE_STATUS.pending)
                emailer.queue_promo(l, camp.bid, camp.trans_id)
            text = ('auth charge for campaign %s, trans_id: %d' %
                    (camp._id, camp.trans_id))
            PromotionLog.add(l, text)
        except:
            print "Error on %s, campaign %s" % (l, camp._id)
예제 #5
0
파일: promote.py 프로젝트: DanHoerst/reddit
 def _charge(l, camp, indx, weight):
     user = Account._byID(l.author_id)
     sd, ed, bid, sr, trans_id = camp
     try:
         if (not authorize.is_charged_transaction(trans_id, indx) and
             authorize.charge_transaction(user, trans_id, indx)):
             # update the query queue
             if is_promoted(l):
                 emailer.queue_promo(l, bid, trans_id)
             else:
                 set_status(l, STATUS.pending,
                            onchange = lambda: emailer.queue_promo(l, bid, trans_id) )
             promotion_log(l, "auth charge for campaign %s, trans_id: %d" % (indx, trans_id), True)
     except:
         print "Error on %s, campaign %s" % (l, indx)
예제 #6
0
 def _charge(l, camp, indx, weight):
     user = Account._byID(l.author_id)
     sd, ed, bid, sr, trans_id = camp
     try:
         if (not authorize.is_charged_transaction(trans_id, indx) and
             authorize.charge_transaction(user, trans_id, indx)):
             # TODO: probably not absolutely necessary
             promotion_log(l, "status update: pending")
             # update the query queue
             if is_promoted(l):
                 emailer.queue_promo(l, bid, trans_id)
             else:
                 set_status(l, STATUS.pending,
                            onchange = lambda: emailer.queue_promo(l, bid, trans_id) )
     except:
         print "Error on %s, campaign %s" % (l, indx)
예제 #7
0
파일: promote.py 프로젝트: jianbin91/reddit
def charge_pending(offset=1):
    for l, camp, weight in accepted_campaigns(offset=offset):
        user = Account._byID(l.author_id)
        try:
            if authorize.is_charged_transaction(camp.trans_id, camp._id) or not authorize.charge_transaction(
                user, camp.trans_id, camp._id
            ):
                continue

            if is_promoted(l):
                emailer.queue_promo(l, camp.bid, camp.trans_id)
            else:
                set_status(l, STATUS.pending, onchange=lambda: emailer.queue_promo(l, camp.bid, camp.trans_id))
            promotion_log(l, "auth charge for campaign %s, trans_id: %d" % (camp._id, camp.trans_id), commit=True)
        except:
            print "Error on %s, campaign %s" % (l, camp._id)
예제 #8
0
파일: promote.py 프로젝트: kevinrose/diggit
def pending_promo(thing):
    """
    For an accepted promotion within the proper time interval, charge
    the account of the user and set the new status as pending. 
    """
    if thing.promote_status == STATUS.accepted and thing.promote_trans_id:
        user = Account._byID(thing.author_id)
        # TODO: check for charge failures/recharges, etc
        if authorize.charge_transaction(user, thing.promote_trans_id):
            promotion_log(thing, "status update: pending")
            thing.promote_status = STATUS.pending
            thing.promote_paid = thing.promote_bid
            thing._commit()
            emailer.queue_promo(thing)
        else:
            promotion_log(thing, "status update: charge failure")
            thing._commit()
예제 #9
0
파일: promote.py 프로젝트: freekrai/reddit
def charge_pending(offset=1):
    for l, index, camp in accepted_campaigns(offset=offset):
        user = Account._byID(l.author_id)
        sd, ed, bid, sr, trans_id = camp
        try:
            if (authorize.is_charged_transaction(trans_id, index) or not
                authorize.charge_transaction(user, trans_id, index)):
                continue

            if is_promoted(l):
                emailer.queue_promo(l, bid, trans_id)
            else:
                set_status(l, STATUS.pending,
                    onchange=lambda: emailer.queue_promo(l, bid, trans_id))
            promotion_log(l, "auth charge for campaign %s, trans_id: %d" % (index, trans_id), True)
        except:
            print "Error on %s, campaign %s" % (l, index)
예제 #10
0
def charge_pending(offset=1):
    for l, camp, weight in accepted_campaigns(offset=offset):
        user = Account._byID(l.author_id)
        try:
            if (authorize.is_charged_transaction(camp.trans_id, camp._id) or not 
                authorize.charge_transaction(user, camp.trans_id, camp._id)):
                continue

            if is_promoted(l):
                emailer.queue_promo(l, camp.bid, camp.trans_id)
            else:
                set_promote_status(l, PROMOTE_STATUS.pending)
                emailer.queue_promo(l, camp.bid, camp.trans_id)
            text = ('auth charge for campaign %s, trans_id: %d' % 
                    (camp._id, camp.trans_id))
            PromotionLog.add(l, text)
        except:
            print "Error on %s, campaign %s" % (l, camp._id)
예제 #11
0
파일: promote.py 프로젝트: j2p2/reddit
def charge_campaign(link, campaign):
    if charged_or_not_needed(campaign):
        return

    user = Account._byID(link.author_id)
    charge_succeeded = authorize.charge_transaction(user, campaign.trans_id, campaign._id)

    if not charge_succeeded:
        return

    hooks.get_hook("promote.edit_campaign").call(link=link, campaign=campaign)

    if not is_promoted(link):
        update_promote_status(link, PROMOTE_STATUS.pending)

    emailer.queue_promo(link, campaign.bid, campaign.trans_id)
    text = "auth charge for campaign %s, trans_id: %d" % (campaign._id, campaign.trans_id)
    PromotionLog.add(link, text)
예제 #12
0
 def _charge(l, camp, indx, weight):
     user = Account._byID(l.author_id)
     sd, ed, bid, sr, trans_id = camp
     try:
         if (not authorize.is_charged_transaction(trans_id, indx)
                 and authorize.charge_transaction(user, trans_id, indx)):
             # TODO: probably not absolutely necessary
             promotion_log(l, "status update: pending")
             # update the query queue
             if is_promoted(l):
                 emailer.queue_promo(l, bid, trans_id)
             else:
                 set_status(
                     l,
                     STATUS.pending,
                     onchange=lambda: emailer.queue_promo(l, bid, trans_id))
     except:
         print "Error on %s, campaign %s" % (l, indx)
예제 #13
0
def charge_pending(offset=1):
    for l, camp, weight in accepted_campaigns(offset=offset):
        user = Account._byID(l.author_id)
        try:
            if (authorize.is_charged_transaction(camp.trans_id, camp._id) or not
                authorize.charge_transaction(user, camp.trans_id, camp._id)):
                continue

            if is_promoted(l):
                emailer.queue_promo(l, camp.bid, camp.trans_id)
            else:
                set_promote_status(l, PROMOTE_STATUS.pending)
                emailer.queue_promo(l, camp.bid, camp.trans_id)
            text = ('auth charge for campaign %s, trans_id: %d' %
                    (camp._id, camp.trans_id))
            PromotionLog.add(l, text)
        except:
            print "Error on %s, campaign %s" % (l, camp._id)
예제 #14
0
파일: promote.py 프로젝트: DanHoerst/reddit
 def _charge(l, camp, indx, weight):
     user = Account._byID(l.author_id)
     sd, ed, bid, sr, trans_id = camp
     try:
         if (not authorize.is_charged_transaction(trans_id, indx)
                 and authorize.charge_transaction(user, trans_id, indx)):
             # update the query queue
             if is_promoted(l):
                 emailer.queue_promo(l, bid, trans_id)
             else:
                 set_status(
                     l,
                     STATUS.pending,
                     onchange=lambda: emailer.queue_promo(l, bid, trans_id))
             promotion_log(
                 l, "auth charge for campaign %s, trans_id: %d" %
                 (indx, trans_id), True)
     except:
         print "Error on %s, campaign %s" % (l, indx)
예제 #15
0
def charge_campaign(link, campaign):
    if charged_or_not_needed(campaign):
        return

    user = Account._byID(link.author_id)
    charge_succeeded = authorize.charge_transaction(user, campaign.trans_id,
                                                    campaign._id)

    if not charge_succeeded:
        return

    hooks.get_hook('promote.edit_campaign').call(link=link, campaign=campaign)

    if not is_promoted(link):
        update_promote_status(link, PROMOTE_STATUS.pending)

    emailer.queue_promo(link, campaign.bid, campaign.trans_id)
    text = ('auth charge for campaign %s, trans_id: %d' %
            (campaign._id, campaign.trans_id))
    PromotionLog.add(link, text)
예제 #16
0
파일: promote.py 프로젝트: nod3x/reddit
def charge_pending(offset=1):
    for l, camp, weight in accepted_campaigns(offset=offset):
        user = Account._byID(l.author_id)
        try:
            if (authorize.is_charged_transaction(camp.trans_id, camp._id)
                    or not authorize.charge_transaction(
                        user, camp.trans_id, camp._id)):
                continue

            if is_promoted(l):
                emailer.queue_promo(l, camp.bid, camp.trans_id)
            else:
                set_status(l,
                           STATUS.pending,
                           onchange=lambda: emailer.queue_promo(
                               l, camp.bid, camp.trans_id))
            promotion_log(l,
                          "auth charge for campaign %s, trans_id: %d" %
                          (camp._id, camp.trans_id),
                          commit=True)
        except:
            print "Error on %s, campaign %s" % (l, camp._id)