from sqlalchemy import Column, Integer, String, Boolean, DateTime, Text, ForeignKey from sqlalchemy.orm import relationship from datetime import datetime from src.database import Base,db_session from marshmallow import Schema, fields import json import flask #from src.articles import Article class Section(Base): __tablename__ = 'sections' id = Column(Integer, primary_key=True) url = Column(String(250)) crawlurl = Column(Integer) foreign_name = Column(String(250),unique=True) name=Column(String(250)) group = Column(String(250)) articles=relationship("Article", back_populates="section") def __json__(self): return SectionSchema().dump(self)[0] def __init__(self, url=None,fname=None): self.url=url self.foreign_name=fname def title(self): t=self.name if t == None or t.strip()=="": t=self.foreign_name return t @classmethod def find_or_create(cls, fname): s=Section.query.filter(Section.foreign_name==fname).first() if s is None: s=Section(fname) db_session.add(s) db_session.commit() s.foreign_name=fname db_session.add(s) db_session.commit() return s class ArticleCompSchema(Schema): id=fields.Integer() # text=fields.String() title=fields.String() author=fields.String() sourcetype =fields.String() image =fields.String() url =fields.String() published_date=fields.DateTime() date=fields.DateTime() first_fetched=fields.DateTime() section_id=fields.Integer() #from src.articles.model import ArticleCompSchema class SectionSchema(Schema): id=fields.Integer() foreign_name=fields.String() name=fields.String() articles=fields.Nested(ArticleCompSchema,many=True)