from datetime import datetime from app import db from werkzeug.security import generate_password_hash, check_password_hash class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), unique=True, nullable=False) password_hash = db.Column(db.String(256)) created_at = db.Column(db.DateTime, default=datetime.utcnow) def set_password(self, password): self.password_hash = generate_password_hash(password) def check_password(self, password): return check_password_hash(self.password_hash, password) class Carousel(db.Model): id = db.Column(db.Integer, primary_key=True) image_url = db.Column(db.String(256), nullable=False) link = db.Column(db.String(256)) location = db.Column(db.String(20), nullable=False) # 'home', 'education', 'service' sort_order = db.Column(db.Integer, default=0) created_at = db.Column(db.DateTime, default=datetime.utcnow) class StrategicCooperation(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(128), nullable=False) description = db.Column(db.Text) image_url = db.Column(db.String(256)) link = db.Column(db.String(256)) created_at = db.Column(db.DateTime, default=datetime.utcnow) class Partner(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(128), nullable=False) image_url = db.Column(db.String(256)) link = db.Column(db.String(256)) created_at = db.Column(db.DateTime, default=datetime.utcnow) class CaseCategory(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), nullable=False) section = db.Column(db.String(20), nullable=False) # 'education', 'service' created_at = db.Column(db.DateTime, default=datetime.utcnow) cases = db.relationship('CooperationCase', backref='category', lazy='dynamic') class CooperationCase(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(128), nullable=False) image_url = db.Column(db.String(256)) description = db.Column(db.Text) section = db.Column(db.String(20), nullable=False) # 'education', 'service' category_id = db.Column(db.Integer, db.ForeignKey('case_category.id')) created_at = db.Column(db.DateTime, default=datetime.utcnow) class News(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(128), nullable=False) content = db.Column(db.Text) # Rich text image_url = db.Column(db.String(256)) author = db.Column(db.String(64)) publish_time = db.Column(db.DateTime, default=datetime.utcnow) created_at = db.Column(db.DateTime, default=datetime.utcnow) class DevelopmentHistory(db.Model): id = db.Column(db.Integer, primary_key=True) year = db.Column(db.String(10), nullable=False) title = db.Column(db.String(128), nullable=False) description = db.Column(db.Text) created_at = db.Column(db.DateTime, default=datetime.utcnow) class Honor(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(128), nullable=False) image_url = db.Column(db.String(256)) created_at = db.Column(db.DateTime, default=datetime.utcnow) class CompanyInfo(db.Model): id = db.Column(db.Integer, primary_key=True) intro_content = db.Column(db.Text) intro_image_url = db.Column(db.String(256)) vision = db.Column(db.String(256)) mission = db.Column(db.String(256)) values = db.Column(db.String(256)) phone = db.Column(db.String(64)) email = db.Column(db.String(128)) qrcode_url = db.Column(db.String(256)) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)