예제 #1
0
def process_proposals():
    with app.app_context():
        # set expired
        expired = 0
        now = datetime.datetime.now()
        proposals = Proposal.in_status(db.session, Proposal.STATE_AUTHORIZED)
        for proposal in proposals:
            if proposal.date_expiry < now:
                proposal.status = Proposal.STATE_EXPIRED
                expired += 1
                db.session.add(proposal)
        db.session.commit()
        # process authorized
        emails = 0
        sms_messages = 0
        proposals = Proposal.in_status(db.session, Proposal.STATE_AUTHORIZED)
        # pylint: disable=too-many-nested-blocks
        for proposal in proposals:
            for payment in proposal.payments:
                if payment.status == payment.STATE_CREATED:
                    if payment.email:
                        utils.email_payment_claim(logger,
                                                  app.config["ASSET_NAME"],
                                                  payment,
                                                  proposal.HOURS_EXPIRY)
                        payment.status = payment.STATE_SENT_CLAIM_LINK
                        db.session.add(payment)
                        logger.info("Sent payment claim url to %s",
                                    payment.email)
                        emails += 1
                    elif payment.mobile:
                        utils.sms_payment_claim(logger,
                                                app.config["ASSET_NAME"],
                                                payment, proposal.HOURS_EXPIRY)
                        payment.status = payment.STATE_SENT_CLAIM_LINK
                        db.session.add(payment)
                        logger.info("Sent payment claim url to %s",
                                    payment.mobile)
                        sms_messages += 1
                    elif payment.recipient:
                        ##TODO: set status and commit before sending so we cannot send twice
                        raise Exception("not yet implemented")
        db.session.commit()
        #logger.info(f"payment statuses commited")
        return f"done (expired {expired}, emails {emails}, SMS messages {sms_messages})"
예제 #2
0
def process_proposals():
    # set expired
    expired = 0
    now = datetime.datetime.now()
    proposals = Proposal.in_status(db.session, Proposal.STATE_AUTHORIZED)
    for proposal in proposals:
        if proposal.date_expiry < now:
            proposal.status = Proposal.STATE_EXPIRED
            expired += 1
            db.session.add(proposal)
    db.session.commit()
    # process authorized 
    emails = 0
    sms_messages = 0
    proposals = Proposal.in_status(db.session, Proposal.STATE_AUTHORIZED)
    for proposal in proposals:
        for payment in proposal.payments:
            if payment.status == payment.STATE_CREATED:
                if payment.email:
                    utils.email_payment_claim(logger, payment, proposal.HOURS_EXPIRY)
                    payment.status = payment.STATE_SENT_CLAIM_LINK
                    db.session.add(payment)
                    logger.info(f"Sent payment claim url to {payment.email}")
                    emails += 1
                elif payment.mobile:
                    utils.sms_payment_claim(logger, payment, proposal.HOURS_EXPIRY)
                    payment.status = payment.STATE_SENT_CLAIM_LINK
                    db.session.add(payment)
                    logger.info(f"Sent payment claim url to {payment.mobile}")
                    sms_messages += 1
                elif payment.wallet_address:
                    ##TODO: set status and commit before sending so we cannot send twice
                    raise Exception("not yet implemented")
    db.session.commit()
    logger.info(f"payment statuses commited")
    return f"done (expired {expired}, emails {emails}, SMS messages {sms_messages})"