229 lines
11 KiB
Python
229 lines
11 KiB
Python
from django.contrib.auth.models import User
|
||
from django.core.validators import MinValueValidator, MaxValueValidator
|
||
from django.db import models
|
||
from phonenumber_field.modelfields import PhoneNumberField
|
||
|
||
|
||
class Store(models.Model):
|
||
name = models.CharField(max_length=128)
|
||
address = models.CharField(max_length=128)
|
||
telephone = PhoneNumberField()
|
||
|
||
def __str__(self):
|
||
return f'{self.name}-{self.address}'
|
||
|
||
|
||
class Product(models.Model):
|
||
name = models.CharField(max_length=128)
|
||
|
||
# photo
|
||
|
||
def __str__(self):
|
||
return f'{self.name}'
|
||
|
||
|
||
class Customer(models.Model):
|
||
name = models.CharField(max_length=128)
|
||
address = models.CharField(max_length=128, blank=True)
|
||
telephone = PhoneNumberField(blank=True)
|
||
email = models.CharField(max_length=128, blank=True)
|
||
social_media = models.CharField(max_length=128, blank=True)
|
||
|
||
def __str__(self):
|
||
return f'{self.name}:{self.telephone}'
|
||
|
||
|
||
class Order(models.Model):
|
||
STATUS_OPTIONS = (
|
||
('ΝΕΑ', 'ΝΕΑ'),
|
||
('ΕΠΕ', 'ΥΠΟ ΕΠΕΞΕΡΓΑΣΙΑ'),
|
||
('ΕΤΜ', 'ΕΤΟΙΜΗ'),
|
||
)
|
||
DELIVERY_OPTIONS = (
|
||
('ΠΑΡΑΛΑΒΗ ΑΠΟ ΚΑΤΑΣΤΗΜΑ', 'ΠΑΡΑΛΑΒΗ ΑΠΟ ΚΑΤΑΣΤΗΜΑ'),
|
||
('ΑΠΟΣΤΟΛΗ', 'ΑΠΟΣΤΟΛΗ'),
|
||
)
|
||
order_status = models.CharField(max_length=3, choices=STATUS_OPTIONS, default="ΝΕΑ")
|
||
|
||
customer_name = models.CharField(max_length=128)
|
||
customer_address = models.CharField(max_length=128, blank=True)
|
||
customer_telephone = models.CharField(max_length=128)
|
||
customer_email = models.CharField(max_length=128, blank=True)
|
||
customer_social_media = models.CharField(max_length=128, blank=True)
|
||
|
||
#customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
|
||
|
||
order_date = models.DateTimeField(auto_now_add=True)
|
||
delivery_date = models.DateField()
|
||
delivery = models.CharField(max_length=45, choices=DELIVERY_OPTIONS, default="ΠΑΡΑΛΑΒΗ ΑΠΟ ΚΑΤΑΣΤΗΜΑ")
|
||
store = models.ForeignKey(Store, on_delete=models.CASCADE)
|
||
order_products = models.ManyToManyField('Product', through='OrderProduct', related_name='+', blank=True)
|
||
order_info = models.CharField(max_length=512, blank=True)
|
||
|
||
def __str__(self):
|
||
return f'{self.id}:{self.customer_name, self.customer_telephone}, {self.store}, {self.order_date.strftime("%d/%m/%Y %H:%M")}, {self.delivery_date.strftime("%d/%m/%Y")}'
|
||
|
||
|
||
class OrderProduct(models.Model):
|
||
CAKE_TYPES = (
|
||
('KARDASIS', 'KARDASIS'),
|
||
('PAN DÉCOR', 'PAN DÉCOR'),
|
||
('ΦΩΤΟΓΡΑΦΙΑ', 'ΦΩΤΟΓΡΑΦΙΑ'),
|
||
)
|
||
|
||
COLOR_OPTIONS = (
|
||
('ΛΕΥΚΟ', 'ΛΕΥΚΟ'),
|
||
('ΡΟΖ', 'ΡΟΖ'),
|
||
('ΣΙΕΛ', 'ΣΙΕΛ'),
|
||
('ΚΙΤΡΙΝΟ', 'ΚΙΤΡΙΝΟ'),
|
||
('ΠΡΑΣΙΝΟ', 'ΠΡΑΣΙΝΟ'),
|
||
('ΚΟΚΚΙΝΟ', 'ΚΟΚΚΙΝΟ'),
|
||
('ΜΠΛΕ', 'ΜΠΛΕ'),
|
||
('ΜΑΥΡΟ', 'ΜΑΥΡΟ'),
|
||
('ΣΕΡΑΝΟ', 'ΣΕΡΑΝΟ'),
|
||
('ΚΑΦΕ', 'ΚΑΦΕ'),
|
||
('ΒΕΡΑΜΑΝ', 'ΒΕΡΑΜΑΝ'),
|
||
('ΛΙΛΑ', 'ΛΙΛΑ'),
|
||
('ΦΟΥΞ', 'ΦΟΥΞ'),
|
||
('ΔΙΑΦΑΝΟ', 'ΔΙΑΦΑΝΟ'),
|
||
('ΆΛΛΟ', 'ΆΛΛΟ'),
|
||
)
|
||
|
||
CAKE_FLAVORS = (
|
||
('Ανάμεικτη', 'Ανάμεικτη '),
|
||
('Αγριοκέρασο', 'Αγριοκέρασο'),
|
||
('Ανάμεικτη Αγριοκέρασο', 'Ανάμεικτη Αγριοκέρασο'),
|
||
('Μπισκότο', 'Μπισκότο'),
|
||
('Oreo', 'Oreo'),
|
||
('Kinder', 'Kinder'),
|
||
('Σοκολάτα Φράουλα', 'Σοκολάτα Φράουλα'),
|
||
('Ferrero', 'Ferrero'),
|
||
('Nutella', 'Nutella'),
|
||
('Σοκολάτα Μπισκότο', 'Σοκολάτα Μπισκότο'),
|
||
('Λεμονί', 'Λεμονί'),
|
||
('Μπανάνα', 'Μπανάνα '),
|
||
('Σοκολατίνα', 'Σοκολατίνα'),
|
||
('Τιραμισού', 'Τιραμισού'),
|
||
('Φράουλα Κρέμα', 'Φράουλα Κρέμα'),
|
||
('Δούκισσα μπισκότο', 'Δούκισσα μπισκότο'),
|
||
('Καραμέλα', 'Καραμέλα'),
|
||
('Ανάμεικτη Σαμπάνια', 'Ανάμεικτη Σαμπάνια'),
|
||
('Γιαούρτι Ανανάς', 'Γιαούρτι Ανανάς '),
|
||
)
|
||
|
||
CUP_FLAVORS = (
|
||
('Προφιτερόλ', 'Προφιτερόλ'),
|
||
('Εκμέκ', 'Εκμέκ'),
|
||
('Banoffee', 'Banoffee'),
|
||
('Τιραμισού Brownies', 'Τιραμισού Brownies'),
|
||
('Τσιζκεικ', 'Τσιζκεικ'),
|
||
('Lemon pie', 'Lemon pie'),
|
||
('Φερρέρο Brownies', 'Φερρέρο Brownies'),
|
||
('Μους Brownies', 'Μους Brownies'),
|
||
('Lila Pause', 'Lila Pause'),
|
||
)
|
||
|
||
CUP_TYPES = (
|
||
('ΚΥΠΕΛΛΟ', 'ΚΥΠΕΛΛΟ'),
|
||
('ΤΕΤΡΑΓΩΝΟ ', 'ΤΕΤΡΑΓΩΝΟ '),
|
||
('ΣΤΡΟΓΓΥΛΟ', 'ΣΤΡΟΓΓΥΛΟ'),
|
||
('ΣΦΗΝΑΚΙ', 'ΣΦΗΝΑΚΙ'),
|
||
)
|
||
|
||
|
||
CANDY_BAR_TYPE = (
|
||
('Cup cake με επικάλυψη και διακοσμητικά ζαχαρόπαστας', 'Cup cake με επικάλυψη και διακοσμητικά ζαχαρόπαστας'),
|
||
('Cup cakes με ζαχαρόπαστα και εκτύπωση', 'Cup cakes με ζαχαρόπαστα και εκτύπωση'),
|
||
('Cup cakes με χρωματιστή βουτυρόκρεμα', 'Cup cakes με χρωματιστή βουτυρόκρεμα'),
|
||
('Donuts με χρωματιστό γλάσσο', 'Donuts με χρωματιστό γλάσσο'),
|
||
('Pop cakes ', 'Pop cakes '),
|
||
('Μπισκότα με επικάλυψη ζαχαρόπαστας ', 'Μπισκότα με επικάλυψη ζαχαρόπαστας '),
|
||
('Μπισκότα με επικάλυψη και διακοσμητικά ζαχαρόπαστας', 'Μπισκότα με επικάλυψη και διακοσμητικά ζαχαρόπαστας'),
|
||
('Μπισκότα με επικάλυψη χρωματιστής σοκολάτας', 'Μπισκότα με επικάλυψη χρωματιστής σοκολάτας'),
|
||
('Μπισκότα σε σχήμα', 'Μπισκότα σε σχήμα'),
|
||
('Στρόγγυλα μπισκότα με επικάλυψη ζαχαρόπαστας και εκτύπωση ', 'Στρόγγυλα μπισκότα με επικάλυψη ζαχαρόπαστας και εκτύπωση '),
|
||
('Χωνάκι παγωτού με πολύχρωμα ζαχαρωτά τυλιγμένα σε ζελατίνα', 'Χωνάκι παγωτού με πολύχρωμα ζαχαρωτά τυλιγμένα σε ζελατίνα'),
|
||
('Μπεζεδάκια πολύχρωμα γεμιστά με κρέμα ', 'Μπεζεδάκια πολύχρωμα γεμιστά με κρέμα '),
|
||
('Μπολ με πολύχρωμα Marshmallows', 'Μπολ με πολύχρωμα Marshmallows'),
|
||
('Μπολ με κουφέτα ', 'Μπολ με κουφέτα '),
|
||
('Μπολ με μίνι σοκολάτες (Twix, Bueno, Derby, Lacta, Σοκοφρέτα)', 'Μπολ με μίνι σοκολάτες (Twix, Bueno, Derby, Lacta, Σοκοφρέτα)'),
|
||
('Μπολ με πολύχρωμους μπεζέδες', 'Μπολ με πολύχρωμους μπεζέδες'),
|
||
('Γλειφιτζούρια spiral (ροζ, γαλάζια)', 'Γλειφιτζούρια spiral (ροζ, γαλάζια)'),
|
||
)
|
||
|
||
CANDY_BAR_DECOR = (
|
||
('ΔΙΑΚΟΣΜΗΣΗ', 'ΔΙΑΚΟΣΜΗΣΗ'),
|
||
('ΠΟΛΥΧΡΩΜΗ ΤΡΟΥΦΑ', 'ΠΟΛΥΧΡΩΜΗ ΤΡΟΥΦΑ'),
|
||
('ΧΡΩΜΑΤΙΣΤΗ ΤΡΟΥΦΑ', 'ΧΡΩΜΑΤΙΣΤΗ ΤΡΟΥΦΑ'),
|
||
('ΓΡΑΜΜΕΣ ΣΟΚΟΛΑΤΑΣ', 'ΓΡΑΜΜΕΣ ΣΟΚΟΛΑΤΑΣ'),
|
||
('ΆΛΛΟ', 'ΆΛΛΟ'),
|
||
)
|
||
|
||
CANDY_BAR_WRAP = (
|
||
('ΤΥΛΙΓΜΕΝΑ', 'ΤΥΛΙΓΜΕΝΑ'),
|
||
('ΑΤΥΛΙΧΤΑ', 'ΑΤΥΛΙΧΤΑ'),
|
||
)
|
||
|
||
CREAM_3D = (
|
||
('ΝΑΙ', 'ΝΑΙ'),
|
||
('ΟΧΙ', 'ΟΧΙ'),
|
||
)
|
||
|
||
ENGAMENT_TYPE = (
|
||
('ΑΡΡΑΒΩΝΑΣ', 'ΑΡΡΑΒΩΝΑΣ'),
|
||
('ΓΑΜΟΣ', 'ΓΑΜΟΣ'),
|
||
)
|
||
|
||
ENGAMENT_CAKE_PIECES = (
|
||
('ΑΤΟΜΙΚΑ', 'ΑΤΟΜΙΚΑ'),
|
||
('ΚΥΠΕΛΛΟ', 'ΚΥΠΕΛΛΟ'),
|
||
('ΣΦΗΝΑΚΙ', 'ΣΦΗΝΑΚΙ'),
|
||
('ΆΛΛΟ', 'ΆΛΛΟ'),
|
||
)
|
||
|
||
ENGAMENT_CAKE_GLAZE = (
|
||
('ΓΛΑΣΣΟ', 'ΓΛΑΣΣΟ'),
|
||
('ΣΑΝΤΙΓΥ', 'ΣΑΝΤΙΓΥ'),
|
||
)
|
||
|
||
order = models.ForeignKey(Order, on_delete=models.CASCADE)
|
||
product = models.ForeignKey(Product, on_delete=models.CASCADE)
|
||
amount = models.FloatField(validators=[MinValueValidator(0.01), MaxValueValidator(999)])
|
||
|
||
#az = 'ΚΙΛΑ ΓΕΥΣΗ KARDASIS Νο ΧΡΩΜΑ ΦΥΤΙΛΑΚΙ ΠΑΡΑΤΗΡΗΣΕΙΣ'
|
||
cake_type = models.CharField(max_length=45, choices=CAKE_TYPES, blank=True, null=True)
|
||
cake_type_num = models.FloatField(max_length=128, default="0", blank=True, null=True)
|
||
cake_color = models.CharField(max_length=45, choices=COLOR_OPTIONS, blank=True, null=True)
|
||
cake_color_other = models.CharField(max_length=128, blank=True, null=True)
|
||
fyt_color = models.CharField(max_length=45, choices=COLOR_OPTIONS, blank=True, null=True)
|
||
fyt_color_other = models.CharField(max_length=128, blank=True, null=True)
|
||
cake_flavor = models.CharField(max_length=45, choices=CAKE_FLAVORS, blank=True, null=True)
|
||
cake_img = models.ImageField(blank=True, null=True)
|
||
#az = 'ΜΕΓΕΘΟΣ ΥΨΟΣ ΓΕΥΣΗ ΠΑΡΑΤΗΡΗΣΕΙΣ'
|
||
cream_cake_3d = models.CharField(max_length=45, choices=CREAM_3D, default="ΟΧΙ", blank=True)
|
||
cream_cake_height = models.FloatField(max_length=128, default="0", blank=True, null=True)
|
||
cream_cake_img = models.ImageField(blank=True, null=True)
|
||
|
||
#az = 'ΓΑΜΟΣ ΒΑΣΗ ΤΕΜΑΧΙΑ ΓΕΥΣΗ ΠΑΡΑΤΗΡΗΣΕΙΣ'
|
||
engagement_cake_type = models.CharField(max_length=45, choices=ENGAMENT_TYPE, blank=True, null=True)
|
||
engagement_cake_base = models.CharField(max_length=128, blank=True, null=True)
|
||
engagement_cake_pcs = models.CharField(max_length=45, choices=ENGAMENT_CAKE_PIECES, blank=True, null=True)
|
||
engagement_cake_pcs_other = models.CharField(max_length=128, blank=True, null=True)
|
||
engagement_cake_glaze = models.CharField(max_length=45, choices=ENGAMENT_CAKE_GLAZE, blank=True, null=True)
|
||
|
||
#az = 'ΤΕΜΑΧΙΑ ΓΕΥΣΗ ΚΥΠΕΛΛΟ ΧΡΩΜΑ ΤΕΜΑΧΙΑ ΧΡΩΜΑ ΔΙΑΚΟΣΜΗΣΗ ΤΥΛΙΓΜΕΝΑ ΠΑΡΑΤΗΡΗΣΕΙΣ'
|
||
cup_flavor = models.CharField(max_length=45, choices=CUP_FLAVORS, blank=True, null=True)
|
||
cup_color = models.CharField(max_length=45, choices=COLOR_OPTIONS, blank=True, null=True)
|
||
cup_color_other = models.CharField(max_length=128, blank=True, null=True)
|
||
cup_type = models.CharField(max_length=45, choices=CUP_TYPES, blank=True, null=True)
|
||
|
||
candy_bar_type = models.CharField(max_length=61, choices=CANDY_BAR_TYPE, blank=True, null=True)
|
||
candy_bar_decor = models.CharField(max_length=45, choices=CANDY_BAR_DECOR, blank=True, null=True)
|
||
candy_bar_decor_other = models.CharField(max_length=128, blank=True, null=True)
|
||
candy_bar_wrap = models.CharField(max_length=45, choices=CANDY_BAR_WRAP, blank=True, null=True)
|
||
|
||
info = models.CharField(max_length=512, blank=True, null=True)
|
||
|
||
def __str__(self):
|
||
return f'{self.product}'
|