|
# -*- coding: utf-8 -*-
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django_models_ext import BaseModelMixin, upload_file_path, upload_file_url, upload_path
from jsonfield import JSONField
from shortuuidfield import ShortUUIDField
from TimeConvert import TimeConvert as tc
from account.models import UserInfo
from simditor.fields import RichTextField
class GoodsInfo(BaseModelMixin):
good_id = ShortUUIDField(_('good_id'), max_length=32, blank=True, null=True, help_text='商品唯一标识', db_index=True, unique=True)
title = models.CharField(_('title'), max_length=32, blank=True, null=True, help_text='商品名称')
image = models.ImageField(_('image'), upload_to=upload_path, blank=True, null=True, help_text='商品图片')
intro = models.TextField(_('intro'), blank=True, null=True, help_text='商品简介')
price = models.IntegerField(_('price'), default=0, help_text='商品价格(分)')
class Meta:
verbose_name = _('商品信息')
verbose_name_plural = _('商品信息')
def __unicode__(self):
return self.pk
@property
def image_path(self):
return upload_file_path(self.image)
@property
def image_url(self):
return upload_file_url(self.image)
@property
def data(self):
return {
'good_id': self.good_id,
'title': self.title,
'image_url': self.image_url,
'intro': self.intro,
'price': self.price,
}
class PackInfo(BaseModelMixin):
pack_id = ShortUUIDField(_('pack_id'), max_length=32, blank=True, null=True, help_text='包唯一标识', db_index=True, unique=True)
title = models.CharField(_('title'), max_length=32, blank=True, null=True, help_text='标题', db_index=True)
expired_at = models.DateTimeField(_(u'expired_at'), blank=True, null=True, help_text=_(u'过期时间'))
pack_detail = RichTextField(_(u'pack_detail'), blank=True, null=True, help_text=u'包详情')
kol_id = models.CharField(_('kol_id'), max_length=32, blank=True, null=True, help_text='KOL 唯一标识', db_index=True)
class Meta:
verbose_name = _('包信息')
verbose_name_plural = _('包信息')
def __unicode__(self):
return self.pk
@property
def data(self):
return {
'title': self.title,
'expired_at': tc.local_string(utc_dt=self.expired_at, format='%Y-%m-%d %H:%M'),
'pack_detail': self.pack_detail,
}
class PackGoodsInfo(BaseModelMixin):
pack_id = models.CharField(_('pack_id'), max_length=32, blank=True, null=True, help_text='包唯一标识', db_index=True)
good_id = models.CharField(_('good_id'), max_length=32, blank=True, null=True, help_text='商品唯一标识', db_index=True)
class Meta:
verbose_name = _('包-商品信息')
verbose_name_plural = _('包-商品信息')
def __unicode__(self):
return self.pk
@property
def good_info(self):
try:
good = GoodsInfo.objects.get(good_id=self.good_id)
except GoodsInfo.DoesNotExist:
good = {}
return good.data
class PackGoodsSaleInfo(BaseModelMixin):
pack_id = models.CharField(_('pack_id'), max_length=32, blank=True, null=True, help_text='包唯一标识', db_index=True)
user_id = models.CharField(_('user_id'), max_length=32, blank=True, null=True, help_text='用户唯一标识', db_index=True)
# 商品名称,数量,单价
# [{'title': '', 'amount': 1, 'price': 1}]
saleinfo = JSONField(_('saleinfo'), default=[], blank=True, null=True, help_text='商品销售信息')
class Meta:
verbose_name = _('包-商品-销售信息')
verbose_name_plural = _('包-商品-销售信息')
def __unicode__(self):
return self.pk
@property
def data(self):
try:
user = UserInfo.objects.get(user_id=self.user_id)
except UserInfo.DoesNotExist:
user = None
return {
'userinfo': user.userinfo if user else {},
'saleinfo': self.saleinfo,
'created_at': tc.local_string(utc_dt=self.created_at),
}
|