class Message(db.Model): id = db.Column(db.Integer, primary_key=True) sender_id = db.Column(db.Integer, db.ForeignKey('user.id')) recipient_id = db.Column(db.Integer, db.ForeignKey('user.id')) body = db.Column(db.Text) #db.String(140) timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow) def __repr__(self): return '<Message {}>'.format(self.body)
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100)) #nullable=False date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) content = db.Column(db.Text, nullable=False) image = db.Column(db.String(20)) anonymous = db.Column(db.Boolean, default=False, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) likes = db.relationship('PostLike', backref='post', lazy='dynamic') comments = db.relationship("Comment", backref="post", lazy="dynamic", cascade="all, delete-orphan") def __repr__(self): if self.title != None: return f"Post('{self.title}','{self.content}', '{self.date_posted}')" else: return f"Post({self.content}', '{self.date_posted}')" @staticmethod def on_changed_body(target, value, oldvalue, initiator): allowed_tags = [ 'a', 'abbr', 'acronym', 'b', 'blockquote', 'code', 'em', 'i', 'li', 'ol', 'pre', 'strong', 'ul', 'h1', 'h2', 'h3', 'p', 'iframe' ] target.content = bleach.linkify( bleach.clean(markdown(value, output_format='html'), tags=allowed_tags, strip=True))
class Message(db.Model): id = db.Column(db.Integer, primary_key=True) sender_id = db.Column(db.Integer, db.ForeignKey('user.id')) recipient_id = db.Column(db.Integer, db.ForeignKey('user.id')) body = db.Column(db.Text) #db.String(140) timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow) @staticmethod def on_changed_body(target, value, oldvalue, initiator): allowed_tags = ['a', 'abbr', 'acronym', 'b', 'blockquote', 'code', 'em', 'i', 'li', 'ol', 'pre', 'strong', 'ul', 'h1', 'h2', 'h3', 'p', 'iframe'] target.body = bleach.linkify(bleach.clean(markdown(value, output_format='html'), tags=allowed_tags, strip=True)) def __repr__(self): return '<Message {}>'.format(self.body)
class Comment(db.Model): id = db.Column(db.Integer, primary_key=True) body = db.Column(db.Text, nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) post_id = db.Column(db.Integer, db.ForeignKey("post.id"), nullable=False) @staticmethod def on_changed_body(target, value, oldvalue, initiator): allowed_tags = ['a', 'abbr', 'acronym', 'b', 'blockquote', 'code', 'em', 'i', 'li', 'ol', 'pre', 'strong', 'ul', 'h1', 'h2', 'h3', 'p', 'iframe'] target.body = bleach.linkify(bleach.clean(markdown(value, output_format='html'), tags=allowed_tags, strip=True)) def __repr__(self): return f"<Reply (id='{self.id}', body='{self.body}', date_posted='{self.date_posted}')>"
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100)) #nullable=False date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) content = db.Column(db.Text, nullable=False) image = db.Column(db.String(20)) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) likes = db.relationship('PostLike', backref='post', lazy='dynamic') def __repr__(self): if self.title != None: return f"Post('{self.title}','{self.content}', '{self.date_posted}')" else: return f"Post({self.content}', '{self.date_posted}')"
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100)) #nullable=False date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) content = db.Column(db.Text, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) def __repr__(self): if self.title != None: return f"Post('{self.title}','{self.content}', '{self.date_posted}')" else: return f"Post({self.content}', '{self.date_posted}')"
class Product(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100)) #nullable=False date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) description = db.Column(db.Text, nullable=False) location = db.Column(db.String(50)) price = db.Column(db.String(50)) contact = db.Column(db.String(50)) image1 = db.Column(db.String(20), nullable=False) #image2 = db.Column(db.String(20)) #image3 = db.Column(db.String(20)) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) def __repr__(self): return f"Product('{self.title}','{self.description}', '{self.price}','{self.location}','{self.contact}','{self.image1}','{self.date_posted}')"
class PostLike(db.Model): __tablename__ = 'post_like' id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) post_id = db.Column(db.Integer, db.ForeignKey('post.id'))
from datetime import datetime from itsdangerous import TimedJSONWebSignatureSerializer as Serializer from bambiv3 import db, login_manager, app from flask_login import UserMixin @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id)) followers = db.Table( 'followers', db.Column('follower_id', db.Integer, db.ForeignKey('user.id')), db.Column('followed_id', db.Integer, db.ForeignKey('user.id'))) liked = db.relationship('PostLike', foreign_keys='PostLike.user_id', backref='user', lazy='dynamic') class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) image_file = db.Column(db.String(20), nullable=False, default='default.jpg') password = db.Column(db.String(60), nullable=False) last_seen = db.Column(db.DateTime, default=datetime.utcnow)