from django.db import models from django.contrib.auth import get_user_model from django.contrib.postgres.fields import HStoreField from django.utils.translation import ugettext_lazy as _ from autoslug import AutoSlugField # Create your models here. from core.models import AbstractStatusModel from products.models import Product OFFER_STATUS_ACTIVE = 25 OFFER_STATUS_INACTIVE = 50 OFFER_STATUS_CHOICES = ( (OFFER_STATUS_ACTIVE, _('Активный')), (OFFER_STATUS_INACTIVE, _('Неактивный')) ) OFFER_DEFAULT_CHOICE = OFFER_STATUS_INACTIVE class Offer(AbstractStatusModel): name = models.CharField(max_length=64, blank=True, null=True, default=None) slug = AutoSlugField(populate_from='name') price = models.DecimalField(max_digits=8, decimal_places=2, null=True, default=0.00) product = models.ForeignKey(Product, on_delete=models.CASCADE, blank=True, null=True, default=None, related_name='variants') attributes = HStoreField(blank=True, null=True, default={}) status = models.SmallIntegerField(_('статус'), default=OFFER_DEFAULT_CHOICE, choices=OFFER_STATUS_CHOICES) def __str__(self): return self.name class Meta: verbose_name = _('Позиция') verbose_name_plural = _('Позиции') # ------------------------------------------ Buying status --------------------------------------------------- # BUYING_STATUS_IN_CART = 25 BUYING_STATUS_PENDING = 50 BUYING_STATUS_BOUGHT = 75 BUYING_STATUS_CHOICES = ( (BUYING_STATUS_IN_CART, _('В корзине')), (BUYING_STATUS_PENDING,_('Обрабатываеться')), (BUYING_STATUS_BOUGHT, _('Куплен')) ) BUYING_DEFAULT_CHOICE = BUYING_STATUS_IN_CART class Buying(AbstractStatusModel): user = models.ForeignKey(get_user_model(),verbose_name=_('пользователь'), on_delete=models.CASCADE) offer = models.ForeignKey(Offer, verbose_name=_('позиция'), on_delete=models.CASCADE) status = models.SmallIntegerField(_('статус'), default=BUYING_DEFAULT_CHOICE, choices=BUYING_STATUS_CHOICES) class Meta: verbose_name = _('Покупка') verbose_name_plural = _('Покупки')