Introduce content/cms/accounts modules with DRF routes, and point default DB settings at the official starintldb instance. Co-authored-by: Cursor <cursoragent@cursor.com>
188 lines
7.2 KiB
Python
188 lines
7.2 KiB
Python
from django.db import models
|
|
|
|
from apps.common.models import SoftDeleteModel
|
|
|
|
|
|
class News(SoftDeleteModel):
|
|
"""新闻。"""
|
|
|
|
title = models.CharField(max_length=500, verbose_name="标题")
|
|
content = models.TextField(blank=True, default="", verbose_name="正文")
|
|
publication_time = models.CharField(
|
|
max_length=32, blank=True, default="", verbose_name="发布时间"
|
|
)
|
|
rank = models.IntegerField(null=True, blank=True, verbose_name="排序")
|
|
read_num = models.PositiveIntegerField(default=0, verbose_name="阅读数")
|
|
collect_num = models.PositiveIntegerField(default=0, verbose_name="收藏数")
|
|
like_num = models.PositiveIntegerField(default=0, verbose_name="点赞数")
|
|
share_num = models.PositiveIntegerField(default=0, verbose_name="分享数")
|
|
is_disabled = models.BooleanField(default=False, verbose_name="禁用")
|
|
|
|
class Meta:
|
|
ordering = ["rank", "-id"]
|
|
verbose_name = "新闻"
|
|
verbose_name_plural = verbose_name
|
|
|
|
def __str__(self):
|
|
return self.title
|
|
|
|
|
|
class Publication(SoftDeleteModel):
|
|
"""最新发表 / 资源。"""
|
|
|
|
title = models.CharField(max_length=500, verbose_name="标题")
|
|
content = models.TextField(blank=True, default="", verbose_name="正文")
|
|
url = models.URLField(blank=True, default="", verbose_name="链接")
|
|
publication_time = models.CharField(
|
|
max_length=32, blank=True, default="", verbose_name="发布时间"
|
|
)
|
|
rank = models.IntegerField(null=True, blank=True, verbose_name="排序")
|
|
read_num = models.PositiveIntegerField(default=0, verbose_name="阅读数")
|
|
collect_num = models.PositiveIntegerField(default=0, verbose_name="收藏数")
|
|
like_num = models.PositiveIntegerField(default=0, verbose_name="点赞数")
|
|
share_num = models.PositiveIntegerField(default=0, verbose_name="分享数")
|
|
is_disabled = models.BooleanField(default=False, verbose_name="禁用")
|
|
|
|
class Meta:
|
|
ordering = ["rank", "-id"]
|
|
verbose_name = "发表资源"
|
|
verbose_name_plural = verbose_name
|
|
|
|
def __str__(self):
|
|
return self.title
|
|
|
|
|
|
class Report(SoftDeleteModel):
|
|
"""年度报告。"""
|
|
|
|
name = models.CharField(max_length=200, verbose_name="名称")
|
|
year = models.IntegerField(verbose_name="年份")
|
|
logo = models.URLField(blank=True, default="", verbose_name="封面")
|
|
file_path = models.URLField(blank=True, default="", verbose_name="文件地址")
|
|
is_disabled = models.BooleanField(default=False, verbose_name="禁用")
|
|
|
|
class Meta:
|
|
ordering = ["-year", "id"]
|
|
verbose_name = "年度报告"
|
|
verbose_name_plural = verbose_name
|
|
|
|
def __str__(self):
|
|
return f"{self.name} ({self.year})"
|
|
|
|
|
|
class AboutInfo(SoftDeleteModel):
|
|
"""关于我们(单例式配置,可多条取最新)。"""
|
|
|
|
introduction = models.TextField(blank=True, default="", verbose_name="简介")
|
|
work_group = models.JSONField(default=list, blank=True, verbose_name="工作组")
|
|
product = models.JSONField(default=list, blank=True, verbose_name="产品")
|
|
growing_path = models.TextField(blank=True, default="", verbose_name="成长路径")
|
|
img_path = models.URLField(blank=True, default="", verbose_name="图片")
|
|
rating_method = models.TextField(blank=True, default="", verbose_name="评价方法")
|
|
|
|
class Meta:
|
|
ordering = ["-id"]
|
|
verbose_name = "关于我们"
|
|
verbose_name_plural = verbose_name
|
|
|
|
def __str__(self):
|
|
return f"About#{self.pk}"
|
|
|
|
|
|
class CopyrightInfo(SoftDeleteModel):
|
|
"""版权声明。"""
|
|
|
|
copyright = models.TextField(blank=True, default="", verbose_name="版权")
|
|
responsibility = models.TextField(blank=True, default="", verbose_name="免责")
|
|
email = models.EmailField(blank=True, default="", verbose_name="邮箱")
|
|
remark = models.TextField(blank=True, default="", verbose_name="备注")
|
|
|
|
class Meta:
|
|
ordering = ["-id"]
|
|
verbose_name = "版权声明"
|
|
verbose_name_plural = verbose_name
|
|
|
|
def __str__(self):
|
|
return f"Copyright#{self.pk}"
|
|
|
|
|
|
class ContactUs(SoftDeleteModel):
|
|
"""联系我们。"""
|
|
|
|
serve_icon = models.URLField(blank=True, default="", verbose_name="服务图标")
|
|
serve_desc = models.TextField(blank=True, default="", verbose_name="服务说明")
|
|
serve_phone = models.CharField(max_length=100, blank=True, default="", verbose_name="服务电话")
|
|
serve_email = models.EmailField(blank=True, default="", verbose_name="服务邮箱")
|
|
serve_address = models.CharField(max_length=500, blank=True, default="", verbose_name="服务地址")
|
|
|
|
media_icon = models.URLField(blank=True, default="", verbose_name="媒体图标")
|
|
media_desc = models.TextField(blank=True, default="", verbose_name="媒体说明")
|
|
media_phone = models.CharField(max_length=100, blank=True, default="", verbose_name="媒体电话")
|
|
media_email = models.EmailField(blank=True, default="", verbose_name="媒体邮箱")
|
|
media_address = models.CharField(max_length=500, blank=True, default="", verbose_name="媒体地址")
|
|
|
|
star_icon = models.URLField(blank=True, default="", verbose_name="STAR 图标")
|
|
star_desc = models.TextField(blank=True, default="", verbose_name="STAR 说明")
|
|
star_phone = models.CharField(max_length=100, blank=True, default="", verbose_name="STAR 电话")
|
|
star_email = models.EmailField(blank=True, default="", verbose_name="STAR 邮箱")
|
|
star_address = models.CharField(max_length=500, blank=True, default="", verbose_name="STAR 地址")
|
|
|
|
class Meta:
|
|
ordering = ["-id"]
|
|
verbose_name = "联系我们"
|
|
verbose_name_plural = verbose_name
|
|
|
|
def __str__(self):
|
|
return f"Contact#{self.pk}"
|
|
|
|
|
|
class ExtendLink(SoftDeleteModel):
|
|
"""外部链接。"""
|
|
|
|
name = models.CharField(max_length=200, verbose_name="名称")
|
|
link_url = models.URLField(verbose_name="链接")
|
|
sort = models.IntegerField(default=0, verbose_name="排序")
|
|
is_disabled = models.BooleanField(default=False, verbose_name="禁用")
|
|
|
|
class Meta:
|
|
ordering = ["sort", "id"]
|
|
verbose_name = "外链"
|
|
verbose_name_plural = verbose_name
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
|
|
class HomeBanner(SoftDeleteModel):
|
|
"""首页轮播 / 图片位。"""
|
|
|
|
title = models.CharField(max_length=200, blank=True, default="", verbose_name="标题")
|
|
image_url = models.CharField(max_length=500, verbose_name="图片地址")
|
|
link_url = models.CharField(max_length=500, blank=True, default="", verbose_name="跳转链接")
|
|
sort = models.IntegerField(default=0, verbose_name="排序")
|
|
is_disabled = models.BooleanField(default=False, verbose_name="禁用")
|
|
|
|
class Meta:
|
|
ordering = ["sort", "id"]
|
|
verbose_name = "首页轮播"
|
|
verbose_name_plural = verbose_name
|
|
|
|
def __str__(self):
|
|
return self.title or self.image_url
|
|
|
|
|
|
class Keyword(SoftDeleteModel):
|
|
"""热搜词。"""
|
|
|
|
name = models.CharField(max_length=200, verbose_name="关键词")
|
|
search_hot = models.PositiveIntegerField(default=0, verbose_name="热度")
|
|
is_show = models.BooleanField(default=True, verbose_name="展示")
|
|
|
|
class Meta:
|
|
ordering = ["-search_hot", "id"]
|
|
verbose_name = "热搜词"
|
|
verbose_name_plural = verbose_name
|
|
|
|
def __str__(self):
|
|
return self.name
|