def add_or_update(user_id, post_id, kind): ''' Create the record if new, else update it. ''' rec = MUsage.query_by_signature(user_id, post_id) cate_rec = MInfor2Catalog.get_first_category(post_id) if cate_rec: cat_id = cate_rec.tag_id else: return False if rec.count() > 0: logger.info('Usage update: {uid}'.format(uid=post_id)) rec = rec.get() query = TabUsage.update(kind=kind).where(TabUsage.uid == rec.uid) query.execute() MUsage.count_increate(rec.uid, cat_id, rec.count) else: logger.info('Usage create: {uid}'.format(uid=post_id)) TabUsage.create( uid=tools.get_uuid(), post_id=post_id, user_id=user_id, count=1, tag_id=cat_id, timestamp=int(time.time()), kind=kind, )
def delete(uid): ''' Delete by uid :param uid: :return: ''' q_u1 = TabPostHist.delete().where(TabPostHist.post_id == uid) q_u1.execute() q_u2 = TabRel.delete().where(TabRel.post_f_id == uid or TabRel.post_t_id == uid) q_u2.execute() q_u3 = TabCollect.delete().where(TabCollect.post_id == uid) q_u3.execute() q_u4 = TabPost2Tag.delete().where(TabPost2Tag.post_id == uid) q_u4.execute() q_u5 = TabUsage.delete().where(TabUsage.post_id == uid) q_u5.execute() reply_arr = [] for reply in TabUser2Reply.select().where( TabUser2Reply.reply_id == uid): reply_arr.append(reply.reply_id.uid) q_u6 = TabUser2Reply.delete().where(TabUser2Reply.reply_id == uid) q_u6.execute() for replyid in reply_arr: TabReply.delete().where(TabReply.uid == replyid).execute() q_u7 = TabEvaluation.delete().where(TabEvaluation.post_id == uid) q_u7.execute() q_u8 = TabRating.delete().where(TabRating.post_id == uid) q_u8.execute() return MHelper.delete(TabPost, uid)
def query_by_post(postid): ''' Query records by post. ''' return TabUsage.select().where( TabUsage.post_id == postid )
def count_increate(rec, cat_id, num): entry = TabUsage.update( timestamp=int(time.time()), count=num + 1, tag_id=cat_id, ).where(TabUsage.uid == rec) entry.execute()
def query_recent_by_cat(user_id, cat_id, num): return TabUsage.select().where( (TabUsage.tag_id == cat_id) & (TabUsage.user_id == user_id) ).order_by( TabUsage.timestamp.desc() ).limit(num)
def query_most(user_id, kind, num): return TabUsage.select( TabUsage, TabPost.title.alias('post_title')).join( TabPost, on=(TabUsage.post_id == TabPost.uid )).where((TabUsage.user_id == user_id) & (TabUsage.kind == kind)).order_by( TabUsage.count.desc()).limit(num)
def query_recent(user_id, kind, num=10): return TabUsage.select( TabUsage, TabPost.title.alias('post_title')).join( TabPost, on=(TabUsage.post_id == TabPost.uid )).where((TabUsage.user_id == user_id) & (TabUsage.kind == kind) & (TabPost.valid == 1)).order_by( TabUsage.timestamp.desc()).limit(num)
def query_by_signature(user_id, sig): return TabUsage.select().where( (TabUsage.post_id == sig) & (TabUsage.user_id == user_id) )
def query_random(limit=6): return TabUsage.select().order_by(peewee.fn.Random()).limit(limit)
def get_all(): return TabUsage.select().order_by('count')
def update_field(uid, post_id=None): if post_id: entry = TabUsage.update( post_id=post_id ).where(TabUsage.uid == uid) entry.execute()