mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-03-18 15:34:01 +01:00
75 lines
2.1 KiB
Python
75 lines
2.1 KiB
Python
from django.core.exceptions import ValidationError
|
|
from django.db import models
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from apps.transactions.models import Transaction
|
|
|
|
|
|
class AccountGroup(models.Model):
|
|
name = models.CharField(max_length=255, verbose_name=_("Name"), unique=True)
|
|
|
|
class Meta:
|
|
verbose_name = _("Account Group")
|
|
verbose_name_plural = _("Account Groups")
|
|
db_table = "account_groups"
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
|
|
class Account(models.Model):
|
|
name = models.CharField(max_length=255, verbose_name=_("Name"), unique=True)
|
|
group = models.ForeignKey(
|
|
AccountGroup,
|
|
on_delete=models.SET_NULL,
|
|
verbose_name=_("Account Group"),
|
|
blank=True,
|
|
null=True,
|
|
)
|
|
currency = models.ForeignKey(
|
|
"currencies.Currency",
|
|
verbose_name=_("Currency"),
|
|
on_delete=models.PROTECT,
|
|
related_name="accounts",
|
|
)
|
|
exchange_currency = models.ForeignKey(
|
|
"currencies.Currency",
|
|
verbose_name=_("Exchange Currency"),
|
|
on_delete=models.SET_NULL,
|
|
related_name="exchange_accounts",
|
|
null=True,
|
|
blank=True,
|
|
help_text=_("Default currency for exchange calculations"),
|
|
)
|
|
|
|
is_asset = models.BooleanField(
|
|
default=False,
|
|
verbose_name=_("Asset account"),
|
|
help_text=_(
|
|
"Asset accounts count towards your Net Worth, but not towards your month."
|
|
),
|
|
)
|
|
is_archived = models.BooleanField(
|
|
default=False,
|
|
verbose_name=_("Archived"),
|
|
help_text=_("Archived accounts don't show up nor count towards your net worth"),
|
|
)
|
|
|
|
class Meta:
|
|
verbose_name = _("Account")
|
|
verbose_name_plural = _("Accounts")
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
def clean(self):
|
|
super().clean()
|
|
if self.exchange_currency == self.currency:
|
|
raise ValidationError(
|
|
{
|
|
"exchange_currency": _(
|
|
"Exchange currency cannot be the same as the account's main currency."
|
|
)
|
|
}
|
|
)
|