comet/comet/account/models.py

51 lines
1.5 KiB
Python
Raw Normal View History

2018-12-13 17:48:16 +00:00
from django.db import models
2018-12-14 18:52:18 +00:00
from django.utils import timezone
2019-02-05 18:41:28 +00:00
2018-12-13 23:06:54 +00:00
class Account(models.Model):
"""Account for a member."""
balance = models.DecimalField(
verbose_name="Solde",
max_digits=4,
decimal_places=2,
default=0
)
firstname = models.CharField(max_length=255, verbose_name="Nom")
lastname = models.CharField(max_length=255, verbose_name="Prénom")
email = models.EmailField(verbose_name="Email")
def calc_balance(self):
"""Adjust the ballance according to the sales,
without saving the model."""
self.balance = Sale.objects.filter(account=self)\
2019-02-05 18:43:17 +00:00
.aggregate(models.Sum('price'))['price__sum'] or 0
2019-02-05 18:41:28 +00:00
2018-12-13 23:06:54 +00:00
class Sale(models.Model):
"""Represents a sale"""
price = models.DecimalField(
2018-12-14 17:28:58 +00:00
verbose_name="Prix (€)",
2019-02-05 18:41:28 +00:00
max_digits=5,
decimal_places=3
2018-12-13 23:06:54 +00:00
)
account = models.ForeignKey(Account, on_delete=models.SET_NULL, null=True)
title = models.CharField(max_length=255, verbose_name="Intitulé")
2018-12-14 18:52:18 +00:00
date = models.DateTimeField(verbose_name="Date", default=timezone.now)
2018-12-13 23:06:54 +00:00
2019-02-05 18:41:28 +00:00
2018-12-13 23:06:54 +00:00
class Article(models.Model):
"""An article which can be sold."""
price = models.DecimalField(
verbose_name="Prix unitaire (au €/g)",
max_digits=4,
2019-02-05 18:41:28 +00:00
decimal_places=3
2018-12-13 23:06:54 +00:00
)
name = models.CharField(
max_length=255,
verbose_name="Désignation"
)
def __str__(self):
return ' '.join([self.name, str(self.price), '€/g'])