mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-01 19:32:26 +02:00
56 lines
2 KiB
Python
56 lines
2 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): # pragma: no cover
|
|
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): # pragma: no cover
|
|
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): # pragma: no cover
|
|
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): # pragma: no cover
|
|
return f"{self.nb} {self.item}, dans la commande {self.order.pk}"
|