la-chariotte/la_chariotte/order/models.py

40 lines
1.8 KiB
Python

import datetime
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}"