article.py 4.29 KB

from django.db import models
from django.utils import timezone

from gm_upload import ImgUrlField, IMG_TYPE
from gm_types.gaia import SUB_ARTICLE_PLATFORM
from talos.libs.datetime_utils import get_timestamp_or_none


class SubCategory(models.Model):
    """文章类目。"""

    class Meta:
        verbose_name = '文章类目'
        db_table = 'api_sub_category'
        app_label = 'talos'

    name = models.CharField(verbose_name=u'类名', default="", max_length=100)
    icon = ImgUrlField(img_type=IMG_TYPE.TOPICIMAGE, verbose_name=u'图标', default="", max_length=100)

    is_online = models.BooleanField(verbose_name=u"是否在线", default=True)
    ordering = models.IntegerField(verbose_name=u"类型ID", default=99999)

    create_time = models.DateTimeField(verbose_name=u'创建时间', default=timezone.now)
    update_time = models.DateTimeField(verbose_name=u'更新时间', auto_now=True)

    def to_dict(self):

        return {
            "id": self.id,
            "name": self.name,
            "icon": self.icon,
            "ordering": self.ordering,
            "is_online": self.is_online,
            "create_time": get_timestamp_or_none(self.create_time),
            "update_time": get_timestamp_or_none(self.update_time),
        }


class SubscriptArticle(models.Model):
    """公众号文章配置。"""

    class Meta:
        verbose_name = '公众号文章配置'
        db_table = 'api_sub_article'
        app_label = 'talos'

    name = models.CharField(verbose_name=u'名称', default="", max_length=200)
    title = models.CharField(verbose_name=u'标题', default="", max_length=200)

    url = models.CharField(verbose_name=u'文章地址', default="", max_length=200)
    image_url = ImgUrlField(img_type=IMG_TYPE.TOPICIMAGE, max_length=300, verbose_name=u'图片地址')

    share_img = models.CharField(verbose_name=u'分享图片地址', default="", max_length=200)
    share_content = models.CharField(verbose_name=u'分享文案', default="", max_length=200)

    is_online = models.BooleanField(verbose_name=u"是否在线", default=True)
    is_header_article = models.BooleanField(verbose_name=u"是否是头条文章", default=False)

    platform = models.IntegerField(verbose_name=u"数据来源(爬取/后台创建)", max_length=12, choices=SUB_ARTICLE_PLATFORM)
    ordering = models.IntegerField(verbose_name=u"类型ID", default=99999)

    create_time = models.DateTimeField(verbose_name=u'创建时间', default=timezone.now)
    update_time = models.DateTimeField(verbose_name=u'更新时间', auto_now=True)

    def to_dict(self):

        return {
            "id": self.id,
            "name": self.name,
            "title": self.title,
            "url": self.url,
            "image_url": self.image_url,

            "share_img": self.share_img,
            "share_content": self.share_content,

            "is_online": self.is_online,
            "is_header_article": self.is_header_article,

            "ordering": self.ordering,
            "platform": self.platform,

            "create_time": get_timestamp_or_none(self.create_time),
            "update_time": get_timestamp_or_none(self.update_time),
        }



class SubscriptArticleCategory(models.Model):
    """文章配类型。"""

    class Meta:
        verbose_name = '公众号文章配置'
        db_table = 'api_sub_article_category'
        app_label = 'talos'

    is_online = models.BooleanField(verbose_name=u"是否在线", default=True)

    article_id = models.IntegerField(verbose_name=u"文章ID")
    category_id = models.IntegerField(verbose_name=u"类型ID")

    create_time = models.DateTimeField(verbose_name=u'创建时间', default=timezone.now)
    update_time = models.DateTimeField(verbose_name=u'更新时间', auto_now=True)


class SubscriptArticleTag(models.Model):
    """文章标签"""

    class Meta:
        verbose_name = '公众号文章配置'
        db_table = 'api_sub_article_tag'
        app_label = 'talos'

    is_online = models.BooleanField(verbose_name=u"是否在线", default=True)

    article_id = models.IntegerField(verbose_name=u"文章ID")
    tag_id = models.IntegerField(verbose_name=u"标签ID")

    create_time = models.DateTimeField(verbose_name=u'创建时间', default=timezone.now)
    update_time = models.DateTimeField(verbose_name=u'更新时间', auto_now=True)