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})"
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})"