la-chariotte/la_chariotte/order/models.py
2023-04-18 16:01:26 +02:00

57 lines
1.9 KiB
Python

from django.db import models
from django.utils import timezone
class Grouped_order(models.Model):
name = models.CharField(max_length=100, null=True) # optionnal
orga = models.CharField(max_length=100) # a changer, utiliser ForeignKey de user
delivery_date = models.DateField("Date de livraison")
deadline = models.DateTimeField("Date limite de commande")
def is_ongoing(self):
"""Returns True if the grouped order is open for new Orders - False if it's too late"""
return self.deadline >= timezone.now()
def __str__(self):
return (
self.name
if self.name
else f"Commande groupée {self.pk} du {self.date} organisée par {self.orga}"
)
class Order(models.Model):
grouped_order = models.ForeignKey(
Grouped_order, on_delete=models.CASCADE, related_name="order_set"
)
author = models.CharField(
max_length=100, verbose_name="Personne qui passe la commande"
) # a changer, utiliser ForeignKey de user
def __str__(self):
return f"Commande de {self.author} pour la commande groupée {self.grouped_order.pk}"
class Item(models.Model):
name = models.CharField(max_length=100)
grouped_order = models.ForeignKey(
Grouped_order, on_delete=models.CASCADE
) # à transformer en manytomany quand il y aura un catalogue
ordered_nb = models.IntegerField(default=0)
def __str__(self):
return f"{self.name} dans la commande groupée {self.grouped_order.pk}"
class OrderedItem(models.Model):
"""Item in one specific Order, and its number"""
nb = models.PositiveSmallIntegerField(default=0) # works up to 32767
order = models.ForeignKey(
Order, on_delete=models.CASCADE, related_name="ordered_items"
)
item = models.ForeignKey(Item, on_delete=models.CASCADE, related_name="orders")
def __str__(self):
return f"{self.nb} {self.item}, dans la commande {self.order.pk}"