35 lines
		
	
	
	
		
			1,000 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			1,000 B
		
	
	
	
		
			Python
		
	
	
	
	
	
import logging
 | 
						|
 | 
						|
from django.core.management.base import BaseCommand
 | 
						|
from uncloud_auth.models import User
 | 
						|
from uncloud_pay.models import Order, Bill
 | 
						|
from django.core.exceptions import ObjectDoesNotExist
 | 
						|
 | 
						|
from datetime import timedelta, date
 | 
						|
from django.utils import timezone
 | 
						|
from uncloud_pay.models import Bill
 | 
						|
 | 
						|
logger = logging.getLogger(__name__)
 | 
						|
 | 
						|
class Command(BaseCommand):
 | 
						|
    help = 'Generate bills and charge customers if necessary.'
 | 
						|
 | 
						|
    def add_arguments(self, parser):
 | 
						|
        pass
 | 
						|
 | 
						|
    # TODO: use logger.*
 | 
						|
    def handle(self, *args, **options):
 | 
						|
        # Iterate over all 'active' users.
 | 
						|
        # TODO: filter out inactive users.
 | 
						|
        users = User.objects.all()
 | 
						|
        print("Processing {} users.".format(users.count()))
 | 
						|
 | 
						|
        for user in users:
 | 
						|
            now = timezone.now()
 | 
						|
            Bill.generate_for(
 | 
						|
                    year=now.year,
 | 
						|
                    month=now.month,
 | 
						|
                    user=user)
 | 
						|
 | 
						|
        # We're done for this round :-)
 | 
						|
        print("=> Done.")
 |