class News(db.Model):

    news_id = db.Column(db.Integer, primary_key=True)
    heading = db.Column(db.String(40), nullable=False)
    description = db.Column(db.String(1000), nullable=False)
    # many to one relation with User model
    user_id = db.Column(db.Integer, db.ForeignKey('user.user_id'))
Esempio n. 2
0
class Timeline(db.Model):
    __tablename__ = 'timeline'

    id = db.Column(db.Integer, primary_key=True)
    headline = db.Column(db.Text, unique=True)
    link = db.Column(db.Text)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def __repr__(self):
        return f"Timeline {self.id}, {self.headline}"
Esempio n. 3
0
class Sentiment(db.Model):
    __tablename__ = 'sentiment'

    id = db.Column(db.Integer, primary_key=True)
    type = db.Column(db.String(32))
    timeline_headline = db.Column(db.Text, db.ForeignKey('timeline.headline'))
    timeline = db.relationship('Timeline',
                               backref='sentiment',
                               cascade='all, delete')

    def __repr__(self):
        return f"Sentiment {self.id}, {self.type}"
class News(db.Model, Serializer):
    __tablename__ = "News"
    url = db.Column(db.String(256), primary_key=True)
    source_id = db.Column(db.Integer, db.ForeignKey('NewsSource.id', ondelete='CASCADE'), primary_key=True)
    source = db.relationship('NewsSource')
    title = db.Column(db.String(512))
    abstract = db.Column(db.String(2048))
    image_url = db.Column(db.String(256))
    date = db.Column(db.Date, index=True)

    def serialize(self):
        d = Serializer.serialize(self)
        d['source'] = self.source.name
        return d
class NewsSource(db.Model, Serializer):
    __tablename__ = "NewsSource"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    url = db.Column(db.String(1024), nullable=False)
    name = db.Column(db.String(1024), nullable=False)
    uw_style = db.Column(db.Boolean, nullable=False)
    category_id = db.Column(db.Integer, db.ForeignKey('NewsCategory.id', ondelete='CASCADE'))
    category = db.relationship('NewsCategory', backref=db.backref('sources'))

    def serialize(self):
        exclude = ['url', 'uw_style', 'category_id', 'category']
        d = Serializer.serialize(self)
        [d.pop(attr, None) for attr in exclude]
        return d
Esempio n. 6
0
class News(db.Model):
    __tablename__ = 'news'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(200), nullable=False)
    category = db.Column(db.String(30))
    relevance = db.Column(db.Integer)
    url = db.Column(db.String(200))
    posted_at = db.Column(db.DateTime(), default=datetime.utcnow)
    company_id = db.Column(db.Integer,
                           db.ForeignKey('company.id'),
                           nullable=False)

    def __repr__(self) -> str:
        return f'News({self.title}, {self.posted_at})'
from werkzeug.security import check_password_hash, generate_password_hash

from news_app import db
from flask_login import UserMixin

# many-to-many relation between category and news model
news_category = db.Table(
    'news_category',
    db.Column('news_id', db.Integer, db.ForeignKey('news.news_id')),
    db.Column('category_name', db.String(29),
              db.ForeignKey('category.category_name')),
)


# News table model
class News(db.Model):

    news_id = db.Column(db.Integer, primary_key=True)
    heading = db.Column(db.String(40), nullable=False)
    description = db.Column(db.String(1000), nullable=False)
    # many to one relation with User model
    user_id = db.Column(db.Integer, db.ForeignKey('user.user_id'))


# category table model
class Category(db.Model):

    category_name = db.Column(db.String(30), primary_key=True)
    news = db.relationship('News', secondary=news_category)