示例#1
0
class House(db.Model):
    __tablename__ = 'House'

    id = db.Column(db.Integer, primary_key=True)
    adress = db.Column(db.String(200, 'utf8_bin'), nullable=False)
    photo = db.Column(db.String(200, 'utf8_bin'))
    name = db.Column(db.String(200, 'utf8_bin'), nullable=False)
    descr = db.Column(db.Text(collation='utf8_bin'), nullable=False)
示例#2
0
class Complaint(db.Model):
    __tablename__ = 'Complaint'

    id = db.Column(db.Integer, primary_key=True)
    comment = db.Column(db.Text(collation='utf8_bin'), nullable=False)
    flat_id = db.Column(db.ForeignKey('Flat.id', onupdate='CASCADE'), nullable=False, index=True)
    comp_type_id = db.Column(db.ForeignKey('TypeComplaint.id', onupdate='CASCADE'), nullable=False, index=True)
    date = db.Column(db.Date, nullable=False)

    comp_type = db.relationship('TypeComplaint', primaryjoin='Complaint.comp_type_id == TypeComplaint.id', backref='complaints')
    flat = db.relationship('Flat', primaryjoin='Complaint.flat_id == Flat.id', backref='complaints')
示例#3
0
class PurchasedBook(db.Model):
    """已购买书籍信息"""
    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}

    id = db.Column(db.Integer(), primary_key=True)  # ID
    user_id = db.Column(db.Integer(), index=True)  # 用户id
    book_id = db.Column(db.Integer(), index=True)  # 书籍ID
    buy_info = db.Column(db.Text(), default='{}')  # 已购买章节 {'卷id':[章节id,...]}
    auto_buy = db.Column(db.Boolean, default=False)  # 是否自动购买下一章
    created = db.Column(db.DateTime, server_default=func.now())  # 创建时间

    db.UniqueConstraint('user_id', 'book_id')
示例#4
0
class Request(db.Model):
    __tablename__ = 'Request'

    id = db.Column(db.Integer, primary_key=True)
    spec_id = db.Column(db.ForeignKey('Specialist.id', onupdate='CASCADE'), nullable=False, index=True)
    flat_id = db.Column(db.ForeignKey('Flat.id', onupdate='CASCADE'), nullable=False, index=True)
    date = db.Column(db.Date, nullable=False)
    comment = db.Column(db.Text(collation='utf8_bin'), nullable=False)

    flat = db.relationship('Flat', primaryjoin='Request.flat_id == Flat.id', backref='requests')
    spec = db.relationship('Specialist', primaryjoin='Request.spec_id == Specialist.id', backref='requests')

    def __init__(self, s, f, d, c):
        self.spec_id = s
        self.flat_id = f
        self.date = d
        self.comment = c
示例#5
0
class Article(db.Model):
    __tablename__ = "core_article"
    __bind_key__ = 'article'
    # (remove, draft, published) = xrange(3)
    # ARTICLE_STATUS_CHOICES = [
    #     (published, _("published")),
    #     (draft, _("draft")),
    #     (remove, _("remove")),
    # ]
    # ARTICLE_STATUS_CHOICES = ("remove", "draft","published")

    id = db.Column(db.Integer(), primary_key=True)
    creator_id = db.Column(db.Integer())
    title = db.Column(db.VARCHAR(255))
    # identity_code       = db.Column(db.VARCHAR(255))
    cover = db.Column(db.VARCHAR(255))
    # publish             = db.Column(db.Enum, ARTICLE_STATUS_CHOICES)
    content = db.Column(db.Text())
    created_datetime = db.Column(db.DateTime())
    updated_datetime = db.Column(db.DateTime())
    showcover = db.Column(db.Boolean(), default=False)
    read_count = db.Column(db.Integer(), default=0)
    feed_read_count = db.Column(db.Integer(), default=0)

    def __repr__(self):
        return "<Article %r>" % self.title

    @property
    def strip_content(self):
        html_string = self.content.strip()
        html_string = html_string.strip('\n')
        res = []
        parser = HTMLParser()
        parser.handle_data = res.append
        parser.feed(html_string)
        parser.close()
        content_string = ''.join(res)
        return content_string.encode('utf-8')
示例#6
0
class Publication(FullText, db.Model):
    __tablename__ = 'publication'
    __fulltext_columns__ = (
        'pub_title',
        'pub_authors',
        'pub_abstract',
    )

    __table_args__ = (db.UniqueConstraint('pub_doi',
                                          'pub_pmid',
                                          'pub_pmc',
                                          'pub_arxiv',
                                          'pub_biorxiv',
                                          name='_pub_unique'), )

    # Publication information
    id = db.Column(db.Integer, primary_key=True)
    pub_title = db.Column(db.String(300))
    pub_authors = db.Column(db.String(1000))
    pub_abstract = db.Column(db.Text())
    pub_doi = db.Column(db.String(250))
    pub_pmid = db.Column(db.Integer())
    pub_pmc = db.Column(db.Integer())
    pub_arxiv = db.Column(db.String(25))
    pub_biorxiv = db.Column(db.String(250))
    pub_biorxiv_url = db.Column(db.String(250))
    pub_url = db.Column(db.String(250))
    pub_pdf_url = db.Column(db.String(250))
    pub_journal = db.Column(db.String(100))
    pub_date = db.Column(db.DateTime)
    pub_created_on = db.Column(db.DateTime, default=now)

    pub_thumbnail = db.Column(db.String(THREAD.MAX_LINK), default=None)

    threads = db.relationship('Thread', back_populates='publication')
    downloads = db.relationship('Publication_Download',
                                back_populates='publication')

    @property
    def download_count(self):
        return db.session.query(Publication_Download) \
                         .filter(Publication_Download.publication_id == self.id) \
                         .count()

    @property
    def pub_id(self):
        if self.pub_pmid:
            return self.pub_pmid
        elif self.pub_pmc:
            return f"PMC{self.pub_pmc}"
        elif self.pub_arxiv:
            return f"arxiv-{self.pub_arxiv}"
        elif self.pub_biorxiv:
            return f"biorxiv-{self.pub_biorxiv}"
        else:
            return self.pub_doi

    @validates('pub_title', 'pub_authors', 'pub_abstract', 'pub_journal')
    def truncate(self, key, value):
        max_len = getattr(self.__class__, key).prop.columns[0].type.length
        if value and max_len:
            if len(value) > max_len:
                return value[:max_len]
        return value

    def fetch_abstract(self):
        """
            Used to process text within an abstract
        """
        if self.pub_abstract:
            return linkify(self.pub_abstract)

    def fetch_github_links(self):
        if self.pub_abstract:
            return find_github_links(self.pub_abstract)

    def mark_downloaded(self, user_id):
        """
            Marks a publication as having been downloaded.
        """
        td = Publication_Download(user_id=user_id, publication_id=self.id)
        td, exists = get_or_create(Publication_Download,
                                   user_id=user_id,
                                   publication_id=self.id)

    def has_downloaded(self, user_id):
        """
            Has the user downloaded the PDF?
        """
        rs = Publication_Download.query.filter(
            db.and_(Publication_Download.user_id == user_id,
                    Publication_Download.publication_id == self.id))
        return True if rs.first() else False

    def __repr__(self):
        return '<Publication %r>' % (self.pub_title)