You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.1 KiB
59 lines
2.1 KiB
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_BOUGHT = 50
|
|
BUYING_STATUS_CHOICES = (
|
|
(BUYING_STATUS_IN_CART, _('В корзине')),
|
|
(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 = _('Покупки')
|
|
|