uncloud/uncloud_auth/models.py

29 lines
1 KiB
Python
Raw Normal View History

from django.contrib.auth.models import AbstractUser
from django.db import models
from django.core.validators import MinValueValidator
from uncloud_pay import AMOUNT_DECIMALS, AMOUNT_MAX_DIGITS
from uncloud_pay.models import get_balance_for_user
class User(AbstractUser):
"""
2020-03-18 14:19:06 +00:00
We use the standard user and add a maximum credit that is allowed
to be accumulated. After that we need to have warnings, cancellation, etc.
"""
maximum_credit = models.DecimalField(
default=0.0,
max_digits=AMOUNT_MAX_DIGITS,
decimal_places=AMOUNT_DECIMALS,
validators=[MinValueValidator(0)])
# Need to use the string here to prevent a circular import
primary_billing_address = models.ForeignKey('uncloud_pay.BillingAddress',
on_delete=models.PROTECT,
blank=True,
null=True)
@property
def balance(self):
return get_balance_for_user(self)