def decollect(self, uid): from utils.query import get_favorite f = get_favorite(uid, self.id) if not f: return f.delete() _flush_favorite_page(uid)
def collect(self, uid): f = Favorite(uid, self.id) try: db.session.add(f) db.session.commit() except IntegrityError: db.session.rollback() _flush_favorite_page(uid) return f
def delete(self): urs = db.session.query(Favorite.uid).filter_by(aid=self.id).all() db.session.delete(self) db.session.query(Favorite).filter_by(aid=self.id).delete() db.session.query(ArticleContent).filter_by(aid=self.id).delete() db.session.commit() _flush_article_content(self.id) _flush_article_page(self.fid) ## TODO 这个写法是有点奇怪, 但是现在的数据表结构只能这么做=.= ## 如果这个urs很大怎么搞... 是个问题... 要想一下 [_flush_favorite_page(uid) for uid in urs]