49 lines
2.3 KiB
Python
49 lines
2.3 KiB
Python
from django.db import models
|
|
|
|
# Create your models here.
|
|
|
|
class ShopConfiguration(models.Model):
|
|
name = models.CharField(max_length=100, default="Shop name", unique=True)
|
|
|
|
logo = models.ImageField(upload_to='shop_logos/', blank=True, null=True)
|
|
favicon = models.ImageField(upload_to='shop_favicons/', blank=True, null=True)
|
|
|
|
contact_email = models.EmailField(max_length=254, blank=True, null=True)
|
|
contact_phone = models.CharField(max_length=20, blank=True, null=True)
|
|
contact_address = models.TextField(blank=True, null=True)
|
|
opening_hours = models.JSONField(blank=True, null=True) #FIXME: vytvoř JSON tvar pro otvírací dobu, přes validátory
|
|
|
|
#Social
|
|
facebook_url = models.URLField(max_length=200, blank=True, null=True)
|
|
instagram_url = models.URLField(max_length=200, blank=True, null=True)
|
|
youtube_url = models.URLField(max_length=200, blank=True, null=True)
|
|
tiktok_url = models.URLField(max_length=200, blank=True, null=True)
|
|
whatsapp_number = models.CharField(max_length=20, blank=True, null=True)
|
|
|
|
#zasilkovna settings
|
|
zasilkovna_shipping_price = models.DecimalField(max_digits=10, decimal_places=2, default=50)
|
|
zasilkovna_address_id = models.CharField(max_length=100, blank=True, null=True, help_text="ID výdejního místa Zásilkovny pro odesílání zásilek")
|
|
free_shipping_over = models.DecimalField(max_digits=10, decimal_places=2, default=2000)
|
|
|
|
#coupon settings
|
|
multiplying_coupons = models.BooleanField(default=True, help_text="Násobení kupónů v objednávce (ano/ne), pokud ne tak se použije pouze nejvyšší slevový kupón")
|
|
addition_of_coupons_amount = models.BooleanField(default=False, help_text="Sčítání slevových kupónů v objednávce (ano/ne), pokud ne tak se použije pouze nejvyšší slevový kupón")
|
|
|
|
class CURRENCY(models.TextChoices):
|
|
CZK = "CZK", "cz#Czech Koruna"
|
|
EUR = "EUR", "cz#Euro"
|
|
currency = models.CharField(max_length=10, default=CURRENCY.CZK, choices=CURRENCY.choices)
|
|
|
|
class Meta:
|
|
verbose_name = "Shop Configuration"
|
|
verbose_name_plural = "Shop Configuration"
|
|
|
|
def save(self, *args, **kwargs):
|
|
# zajištění singletonu
|
|
self.pk = 1
|
|
super().save(*args, **kwargs)
|
|
|
|
@classmethod
|
|
def get_solo(cls):
|
|
obj, _ = cls.objects.get_or_create(pk=1)
|
|
return obj |