39500-vm/core/models.py
2026-04-06 09:15:29 +00:00

82 lines
2.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from decimal import Decimal
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=120, unique=True)
slug = models.SlugField(unique=True)
description = models.TextField(blank=True)
sort_order = models.PositiveIntegerField(default=0)
class Meta:
ordering = ["sort_order", "name"]
def __str__(self):
return self.name
class Product(models.Model):
category = models.ForeignKey(Category, on_delete=models.PROTECT, related_name="products")
name = models.CharField(max_length=160)
slug = models.SlugField(unique=True)
short_description = models.CharField(max_length=220)
description = models.TextField()
material = models.CharField(max_length=120, blank=True)
price_from = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True)
collection_note = models.CharField(max_length=180, blank=True)
is_featured = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
ordering = ["name"]
def __str__(self):
return self.name
@property
def price_label(self):
if self.price_from is None:
return "Preis auf Anfrage"
quantized = self.price_from.quantize(Decimal("1.00"))
return f"ab {quantized:,.2f}".replace(",", "X").replace(".", ",").replace("X", ".")
class ContactInquiry(models.Model):
class PreferredContactMethod(models.TextChoices):
PHONE = "phone", "Telefon"
EMAIL = "email", "E-Mail"
class Status(models.TextChoices):
NEW = "new", "Neu"
CONTACTED = "contacted", "Kontaktiert"
CLOSED = "closed", "Abgeschlossen"
product = models.ForeignKey(
Product,
on_delete=models.SET_NULL,
related_name="inquiries",
blank=True,
null=True,
)
name = models.CharField(max_length=120)
email = models.EmailField()
phone = models.CharField(max_length=40, blank=True)
subject = models.CharField(max_length=160, blank=True)
message = models.TextField()
preferred_contact_method = models.CharField(
max_length=10,
choices=PreferredContactMethod.choices,
default=PreferredContactMethod.PHONE,
)
status = models.CharField(max_length=20, choices=Status.choices, default=Status.NEW)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ["-created_at"]
def __str__(self):
return f"{self.name} {self.subject or 'Allgemeine Anfrage'}"