说明书

models.py 5.2KB

    # -*- 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