from django.contrib.auth.models import AbstractUser from django.db import models from django.core.validators import MinValueValidator from uncloud import AMOUNT_DECIMALS, AMOUNT_MAX_DIGITS from uncloud_pay.models import get_balance_for_user class User(AbstractUser): """ 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)]) @property def balance(self): return get_balance_for_user(self)