2020-02-29 08:08:30 +00:00
|
|
|
import logging
|
|
|
|
|
2020-02-28 07:59:32 +00:00
|
|
|
from django.core.management.base import BaseCommand
|
|
|
|
from uncloud_auth.models import User
|
|
|
|
from uncloud_pay.models import Order, Bill
|
2020-02-28 08:58:01 +00:00
|
|
|
from django.core.exceptions import ObjectDoesNotExist
|
2020-02-28 07:59:32 +00:00
|
|
|
|
2020-02-29 08:08:30 +00:00
|
|
|
from datetime import timedelta, date
|
2020-02-28 07:59:32 +00:00
|
|
|
from django.utils import timezone
|
2020-03-04 08:39:18 +00:00
|
|
|
from uncloud_pay.models import Bill
|
2020-02-28 07:59:32 +00:00
|
|
|
|
2020-02-28 08:58:01 +00:00
|
|
|
BILL_PAYMENT_DELAY=timedelta(days=10)
|
|
|
|
|
2020-02-29 08:08:30 +00:00
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
2020-02-28 07:59:32 +00:00
|
|
|
class Command(BaseCommand):
|
|
|
|
help = 'Generate bills and charge customers if necessary.'
|
|
|
|
|
|
|
|
def add_arguments(self, parser):
|
|
|
|
pass
|
|
|
|
|
2020-02-29 08:08:30 +00:00
|
|
|
# TODO: use logger.*
|
2020-02-28 07:59:32 +00:00
|
|
|
def handle(self, *args, **options):
|
2020-02-29 08:08:30 +00:00
|
|
|
# Iterate over all 'active' users.
|
|
|
|
# TODO: filter out inactive users.
|
2020-02-28 08:58:01 +00:00
|
|
|
users = User.objects.all()
|
|
|
|
print("Processing {} users.".format(users.count()))
|
|
|
|
|
|
|
|
for user in users:
|
2020-02-29 08:08:30 +00:00
|
|
|
now = timezone.now()
|
2020-03-04 08:39:18 +00:00
|
|
|
Bill.generate_for(
|
2020-02-29 08:08:30 +00:00
|
|
|
year=now.year,
|
|
|
|
month=now.month,
|
|
|
|
user=user,
|
|
|
|
allowed_delay=BILL_PAYMENT_DELAY)
|
2020-02-28 07:59:32 +00:00
|
|
|
|
2020-02-28 08:58:01 +00:00
|
|
|
# We're done for this round :-)
|
2020-02-28 07:59:32 +00:00
|
|
|
print("=> Done.")
|