release: v2.0 - 完整功能管理系统
主要功能: - 完整的Flask-Admin后台管理系统 - 网站/标签/新闻管理功能 - 用户登录认证系统 - 科技感/未来风UI设计 - 标签分类系统(取代传统分类) - 详情页面展示 - 数据库迁移脚本 - 书签导入解析工具 技术栈: - Flask + SQLAlchemy - Flask-Admin管理界面 - Bootstrap 4响应式设计 - 用户认证与权限管理 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
38
models.py
38
models.py
@@ -16,9 +16,10 @@ class Site(db.Model):
|
||||
__tablename__ = 'sites'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
code = db.Column(db.String(8), unique=True, nullable=False, comment='8位数字编码')
|
||||
name = db.Column(db.String(100), nullable=False, comment='网站名称')
|
||||
url = db.Column(db.String(500), nullable=False, comment='网站URL')
|
||||
slug = db.Column(db.String(100), unique=True, nullable=False, comment='URL别名')
|
||||
slug = db.Column(db.String(100), unique=True, nullable=True, comment='URL别名(SEO用)')
|
||||
logo = db.Column(db.String(500), comment='Logo图片路径')
|
||||
short_desc = db.Column(db.String(200), comment='简短描述')
|
||||
description = db.Column(db.Text, comment='详细介绍')
|
||||
@@ -40,6 +41,7 @@ class Site(db.Model):
|
||||
"""转换为字典"""
|
||||
return {
|
||||
'id': self.id,
|
||||
'code': self.code,
|
||||
'name': self.name,
|
||||
'url': self.url,
|
||||
'slug': self.slug,
|
||||
@@ -78,6 +80,40 @@ class Tag(db.Model):
|
||||
'icon': self.icon
|
||||
}
|
||||
|
||||
class News(db.Model):
|
||||
"""新闻模型"""
|
||||
__tablename__ = 'news'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
site_id = db.Column(db.Integer, db.ForeignKey('sites.id'), nullable=False, comment='关联网站ID')
|
||||
title = db.Column(db.String(200), nullable=False, comment='新闻标题')
|
||||
content = db.Column(db.Text, comment='新闻内容')
|
||||
news_type = db.Column(db.String(50), default='Industry News', comment='新闻类型')
|
||||
url = db.Column(db.String(500), comment='新闻链接')
|
||||
published_at = db.Column(db.DateTime, default=datetime.now, comment='发布时间')
|
||||
is_active = db.Column(db.Boolean, default=True, comment='是否启用')
|
||||
created_at = db.Column(db.DateTime, default=datetime.now, comment='创建时间')
|
||||
updated_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
|
||||
|
||||
# 关联网站
|
||||
site = db.relationship('Site', backref=db.backref('news', lazy='dynamic', order_by='News.published_at.desc()'))
|
||||
|
||||
def __repr__(self):
|
||||
return f'<News {self.title}>'
|
||||
|
||||
def to_dict(self):
|
||||
"""转换为字典"""
|
||||
return {
|
||||
'id': self.id,
|
||||
'site_id': self.site_id,
|
||||
'title': self.title,
|
||||
'content': self.content,
|
||||
'news_type': self.news_type,
|
||||
'url': self.url,
|
||||
'published_at': self.published_at.strftime('%Y-%m-%d') if self.published_at else None,
|
||||
'created_at': self.created_at.strftime('%Y-%m-%d %H:%M:%S') if self.created_at else None
|
||||
}
|
||||
|
||||
class Admin(UserMixin, db.Model):
|
||||
"""管理员模型"""
|
||||
__tablename__ = 'admins'
|
||||
|
||||
Reference in New Issue
Block a user