from django.core.management.base import BaseCommand from uncloud_auth.models import User from uncloud_pay.models import Order, Bill, get_balance_for_user import uncloud_pay.stripe as uncloud_stripe from datetime import timedelta from django.utils import timezone class Command(BaseCommand): help = 'Generate bills and charge customers if necessary.' def add_arguments(self, parser): pass def handle(self, *args, **options): users = User.objects.all() print("Processing {} users.".format(users.count())) for user in users: balance = get_balance_for_user(user) if balance < 0: print("User {} has negative balance ({}), charging.".format(user.username, balance)) amount_to_be_charged = abs(balance) result = uncloud_stripe.charge_customer(user, amount_to_be_charged) if result.status != 'succeeded': print("ERR: charging {} with method {} failed" .format(user.username, result) ) print("=> Done.")