|
# -*- coding: utf-8 -*-
import os
from django.db import models
from django.utils.translation import ugettext_lazy as _
from TimeConvert import TimeConvert as tc
from manual.basemodels import CreateUpdateMixin
from utils.url_utils import upload_file_url
def upload_path(instance, old_filename):
return 'file/{ym}/{stamp}{ext}'.format(
ym=tc.local_string(format='%Y%m'),
stamp=tc.local_timestamp(ms=True),
ext=os.path.splitext(old_filename)[1].lower(),
)
class IntroCategoryInfo(CreateUpdateMixin):
category = models.CharField(_(u'category'), max_length=255, blank=True, null=True, help_text=u'分类', unique=True)
position = models.IntegerField(_(u'position'), default=1, help_text=u'排序')
class Meta:
verbose_name = _(u'说明书分类')
verbose_name_plural = _(u'说明书分类')
def __unicode__(self):
return unicode(self.category)
@property
def data(self):
names = IntroNameInfo.objects.filter(category=self.pk, status=True).order_by('position')
names = [name.data for name in names]
return {
'pk': self.pk,
'category': self.category,
'names': names,
}
@property
def data2(self):
return {
'pk': self.pk,
'category': self.category,
}
class IntroNameInfo(CreateUpdateMixin):
name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'名称', unique=True)
category = models.ForeignKey(IntroCategoryInfo, verbose_name=_(u'category'), blank=True, null=True, help_text=u'分类')
position = models.IntegerField(_(u'position'), default=1, help_text=u'排序')
class Meta:
verbose_name = _(u'说明书名称')
verbose_name_plural = _(u'说明书名称')
def __unicode__(self):
return unicode(self.name)
@property
def data(self):
catalogs = IntroCatalogInfo.objects.filter(name=self.pk, status=True).order_by('position')
catalogs = [catalog.data for catalog in catalogs]
return {
'pk': self.pk,
'name': self.name,
'catalogs': catalogs,
}
@property
def data2(self):
return {
'pk': self.pk,
'name': self.name,
'category': self.category.data2,
}
class IntroCatalogInfo(CreateUpdateMixin):
catalog = models.CharField(_(u'catalog'), max_length=255, blank=True, null=True, help_text=u'目录')
name = models.ForeignKey(IntroNameInfo, verbose_name=_(u'name'), blank=True, null=True, help_text=u'名称')
position = models.IntegerField(_(u'position'), default=1, help_text=u'排序')
class Meta:
verbose_name = _(u'说明书目录')
verbose_name_plural = _(u'说明书目录')
def __unicode__(self):
return unicode(self.catalog)
@property
def data(self):
contents = IntroContentInfo.objects.filter(catalog=self.pk, status=True).order_by('position')
contents = [content.data for content in contents]
return {
'pk': self.pk,
'catalog': self.catalog,
'contents': contents,
}
@property
def data2(self):
return {
'pk': self.pk,
'catalog': self.catalog,
'name': self.name.data2,
}
class IntroContentInfo(CreateUpdateMixin):
title = models.CharField(_(u'title'), max_length=255, blank=True, null=True, help_text=u'标题')
content = models.CharField(_(u'content'), max_length=255, blank=True, null=True, help_text=u'内容')
pdf = models.FileField(_(u'pdf'), upload_to=upload_path, blank=True, null=True, help_text=u'PDF 文件')
catalog = models.ForeignKey(IntroCatalogInfo, verbose_name=_(u'catalog'), blank=True, null=True, help_text=u'目录')
position = models.IntegerField(_(u'position'), default=1, help_text=u'排序')
class Meta:
verbose_name = _(u'说明书内容')
verbose_name_plural = _(u'说明书内容')
def __unicode__(self):
return unicode(self.title)
@property
def pdf_url(self):
return upload_file_url(self.pdf)
@property
def data(self):
return {
'pk': self.pk,
'title': self.title,
'content': self.content,
'pdf_url': self.pdf_url,
}
@property
def data2(self):
return {
'pk': self.pk,
'title': self.title,
'content': self.content,
'pdf_url': self.pdf_url,
'catalog': self.catalog.data2,
}
class IntroFavoriteInfo(CreateUpdateMixin):
user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识', db_index=True)
content = models.IntegerField(_(u'content'), default=0, help_text=u'内容')
class Meta:
verbose_name = _(u'introfavoriteinfo')
verbose_name_plural = _(u'introfavoriteinfo')
unique_together = (
('user_id', 'content'),
)
def __unicode__(self):
return unicode(self.pk)
@property
def data(self):
try:
icon = IntroContentInfo.objects.get(pk=self.content)
except IntroContentInfo.DoesNotExist:
icon = None
return icon and icon.data2
|