def po_event_feedback_list(event_id): ids = rank_po_id_list(event_id, CID_EVENT_FEEDBACK, 'confidence') li = Po.mc_get_list(ids) Zsite.mc_bind(li, 'user', 'user_id') return li
def event_joiner_list(event_id, limit, offset): id_list = event_joiner_id_list(event_id, limit, offset) li = EventJoiner.mc_get_list(id_list) split_before_id = event_joiner_split_before_id(li) Zsite.mc_bind(li, 'user', 'user_id') user_list = [i.user for i in li] namecard_bind(user_list) career_bind(user_list) pic_url_bind_with_default(user_list, '96') return li, split_before_id
def notice_question_mail(notice): from_id = notice.from_id to_id = notice.to_id rid = notice.rid mail = mail_by_user_id(to_id) name = Zsite.mc_get(to_id).name from_name = Zsite.mc_get(from_id).name question = Po.mc_get(rid) rendermail('/mail/notice/notice_question.txt', mail, name, entry=question, from_name=from_name, notice=notice, )
def pay_notice(pay_id): from notice import notice_new trade = Trade.get(pay_id) notice_new(trade.from_id, trade.to_id, CID_NOTICE_PAY, pay_id) t_log = (trade_log.get(pay_id)) if t_log: message = loads(t_log) if 'txt' in message: if 'secret' in message: state = STATE_SECRET else: state = STATE_ACTIVE to_user = Zsite.mc_get(trade.to_id) from_user = Zsite.mc_get(trade.from_id) to_user.reply_new(from_user, message['txt'], state)
def event_end_mail(event): event_id = event.id owner_id = event.zsite_id owner = event.zsite po = Po.mc_get(event_id) rendermail('/mail/event/event_end_owner.txt', mail_by_user_id(owner_id), owner.name, title=po.name, link=po.link, user_link=owner.link, price=event.price, feedback_link='/event/feedback/%s' % event_id) sleep(0.1) for user_id in event_joiner_user_id_list(event_id): if user_id != owner_id: user = Zsite.mc_get(user_id) rendermail('/mail/event/event_end_joiner.txt', mail_by_user_id(user_id), user.name, title=po.name, link=po.link, user_link=user.link, feedback_link='/event/feedback/%s' % event_id) sleep(0.1)
def render_zsite_feed_list(user_id, id_list): fav_dict = fav_cid_dict(user_id, id_list) r = [] rf = feed_tuple_list(id_list) zsite_id_set = set(i[0] for i in rf) z_dict = Zsite.mc_get_dict(zsite_id_set) c_dict = career_dict(id for id, i in z_dict.iteritems() if i.cid == CID_USER) z_dict = dict((i.id, (i.name, i.link)) for i in z_dict.itervalues()) for id, i in zip(id_list, rf): zsite_id = i[0] cid = i[1] result = [ zsite_id, id, fav_dict[id], ] if cid not in (CID_WORD, CID_EVENT): result.extend(i[1:9]) result.extend(zsite_tag_id_tag_name_by_po_id(zsite_id, id)) if len(i) > 9: result.extend(i[9:]) else: result.extend(i[1:]) r.append(result) return r, z_dict, c_dict
def render_feed_list(id_list, zsite_id, rt_dict): fav_dict = fav_cid_dict(zsite_id, id_list) r = [] for id, i in zip(id_list, feed_tuple_list(id_list)): out = [] if id in rt_dict: for v in rt_dict[id]: entry = [] if v[2] > 0: zsite = Zsite.mc_get(v[2]) _name = zsite.name _link = zsite.link _user_id = v[2] else: _name = '1' _link = '1' _user_id = v[2] entry.extend([_name, _link, _user_id, v]) out.append(entry) result = [ i[0], id, out, fav_dict[id], ] result.extend(i[1:]) r.append(result) return r
def buzz_po_bind_user(po_list ,po_user_id_list, user_id=0): from model.po_pos import po_pos_get_last_reply_id user_dict = Zsite.mc_get_dict(chain(*po_user_id_list)) result = [] for i, user_id_list in zip(po_list, po_user_id_list): id = i.id new_reply_show = [] for uid in user_id_list: if uid not in new_reply_show and user_id != uid: new_reply_show.append(uid) if len(new_reply_show) == SHOW_LIMT: break new_reply_show = [ (z.id, z.name) for z in map(user_dict.get, new_reply_show) ] new_reply_count = max( (len(set(user_id_list)) - SHOW_LIMT, 0) ) t = ( id, i.name, new_reply_count, new_reply_show, po_pos_get_last_reply_id(user_id,id) ) result.append(t) return result
def follow_list_show_by_from_id(from_id, limit): from operator import itemgetter from zkit.algorithm.wrandom import wsample_k2 following_tuple = following_id_rank_tuple(from_id) f = wsample_k2(following_tuple, limit, key=itemgetter(1)) id_list = [i[0] for i in f()] return Zsite.mc_get_list(id_list)
def spammer_reset(user_id): from model.po import Po, po_rm, reply_rm_if_can from zsite_tag import zsite_tag_rm_by_po for i in Po.where(user_id=user_id): po_rm(user_id, i.id) zsite_tag_rm_by_po(i) from model.reply import Reply for i in Reply.where(user_id=user_id): reply_rm_if_can(user_id, i.id) from model.wall import Wall from model.zsite import Zsite z = Zsite.mc_get(user_id) total = z.reply_count if total: reply_list = z.reply_list_reversed(total, 0) for reply in reply_list: wall = Wall.mc_get(reply.rid) if wall: wall.reply_rm(reply) spammer_new(user_id)
def render_zsite_feed_list(user_id, id_list): fav_dict = fav_cid_dict(user_id, id_list) r = [] rf = feed_tuple_list(id_list) zsite_id_set = set( i[0] for i in rf ) z_dict = Zsite.mc_get_dict(zsite_id_set) c_dict = career_dict(id for id, i in z_dict.iteritems() if i.cid == CID_USER) z_dict = dict( (i.id, (i.name, i.link)) for i in z_dict.itervalues() ) for id, i in zip(id_list, rf): zsite_id = i[0] cid = i[1] result = [ zsite_id, id, fav_dict[id], ] if cid not in (CID_WORD, CID_EVENT): result.extend(i[1:9]) result.extend(zsite_tag_id_tag_name_by_po_id(zsite_id, id)) if len(i) > 9: result.extend(i[9:]) else: result.extend(i[1:]) r.append(result) return r, z_dict, c_dict
def render_feed_list(id_list, zsite_id, rt_dict) : fav_dict = fav_cid_dict(zsite_id, id_list) r = [] for id, i in zip(id_list, feed_tuple_list(id_list)): out = [] if id in rt_dict: for v in rt_dict[id]: entry = [] if v[2]>0: zsite = Zsite.mc_get(v[2]) _name = zsite.name _link = zsite.link _user_id = v[2] else: _name = '1' _link = '1' _user_id = v[2] entry.extend([_name,_link, _user_id,v]) out.append(entry) result = [ i[0], id, out, fav_dict[id], ] result.extend(i[1:]) r.append(result) return r
def event_review_join_apply(event_id): event = Event.mc_get(event_id) if event: event_new_joiner_id_list = EventJoiner.where( 'event_id=%s and state=%s', event_id, EVENT_JOIN_STATE_NEW ).col_list(col='user_id') if event_new_joiner_id_list: event_joiner_list = [ user.name for user in Zsite.mc_get_list(event_new_joiner_id_list) ] rendermail( '/mail/event/event_review_join_apply.txt', mail_by_user_id(event.zsite_id), event.zsite.name, event_link='http:%s/event/check/%s' % ( event.zsite.link, event_id ), title=event.po.name, event_join_apply_list=' , '.join(event_joiner_list) ) sleep(0.1)
def event_end_mail(event): event_id = event.id owner_id = event.zsite_id owner = event.zsite po = Po.mc_get(event_id) rendermail( '/mail/event/event_end_owner.txt', mail_by_user_id(owner_id), owner.name, title=po.name, link=po.link, user_link=owner.link, price=event.price, feedback_link='/event/feedback/%s' % event_id ) sleep(0.1) for user_id in event_joiner_user_id_list(event_id): if user_id != owner_id: user = Zsite.mc_get(user_id) rendermail( '/mail/event/event_end_joiner.txt', mail_by_user_id(user_id), user.name, title=po.name, link=po.link, user_link=user.link, feedback_link='/event/feedback/%s' % event_id ) sleep(0.1)
def user_dict(user_id): user = Zsite.mc_get(user_id) unit, title = user.career d = dict(id=user_id, name=user.name, unit=unit, title=title) ico_url = user._ico96 if ico_url: d['ico_url'] = ico_url return d
def po_show_zsite_channel(): return tuple(zip( PO_SHOW_ZSITE_CHANNEL, [ i.name for i in Zsite.mc_get_list(PO_SHOW_ZSITE_CHANNEL) ] ))
def zsite_by_domain(domain): from zsite import Zsite if domain.endswith(SITE_DOMAIN_SUFFIX): domain = domain[:-len(SITE_DOMAIN_SUFFIX)] if domain.isdigit(): zsite_id = domain else: zsite_id = id_by_url(domain.lower()) return Zsite.mc_get(zsite_id)
def follow_rm(from_id, to_id): id = follow_get(from_id, to_id) if not id: return follow_cursor.execute( 'delete from follow where id=%s', id ) to = Zsite.mc_get(to_id) mc_flush(from_id, to_id, to.cid) return True
def notice_mail_day(to_id, li): from user_mail import mail_by_user_id to_user = Zsite.mc_get(to_id) name = to_user.name mail = mail_by_user_id(to_id) count = len(li) li_wall = [] _li_wall_reply = defaultdict(list) for from_id, cid, rid in li: from_user = Zsite.mc_get(from_id) if cid == CID_NOTICE_WALL: li_wall.append(from_user) elif cid == CID_NOTICE_WALL_REPLY: o = Wall.mc_get(rid) _li_wall_reply[rid].append(from_user) li_wall_reply = {} for rid, from_list in _li_wall_reply.iteritems(): o = Wall.mc_get(rid) li_wall_reply[o] = from_list if li_wall or li_wall_reply: subject = render_template( '/mail/notice/day_total.txt', count=count, li_wall=li_wall, li_wall_reply=li_wall_reply, ) rendermail( '/mail/notice/day_total.htm', mail, name, to_user=to_user, li_wall=li_wall, li_wall_reply=li_wall_reply, format='html', subject=subject, )
def notice_event_kill_mail(user_id, title, link, txt, notice_link): name = Zsite.mc_get(user_id).name mail = mail_by_user_id(user_id) rendermail('/mail/event/event_notice.txt', mail, name, title=title, link=link, txt=txt, notice_link=notice_link, )
def name_dict_url_dict_by_zsite_id_list(zsite_id_list): url_dict = {} name_dict = defaultdict(list) zsite_list = Zsite.mc_get_list(zsite_id_list) for i in zsite_list: name_dict[i.name].append(i.id) url_dict = url_dict_by_zsite_id_list(zsite_id_list) return name_dict , url_dict
def pay_account_name_get(user_id, cid): a = PayAccount.get(user_id=user_id, cid=cid) account = None name = None if a: account = a.account name = a.name if not account: account = mail_by_user_id(user_id) if not name: name = Zsite.mc_get(user_id).name return account, name
def po_answer_list(question_id, zsite_id=0, user_id=0): ids = rank_po_id_list(question_id, CID_QUESTION, 'confidence') if zsite_id == user_id: zsite_id = 0 user_ids = filter(bool, (zsite_id, user_id)) if user_ids: _ids = [] for i in user_ids: user_answer_id = answer_id_get(i, question_id) if user_answer_id: _ids.append(user_answer_id) if user_answer_id in ids: ids.remove(user_answer_id) if _ids: _ids.extend(ids) ids = _ids li = Po.mc_get_list(ids) Zsite.mc_bind(li, 'user', 'user_id') return li
def notice_event_join_yes(from_id, to_id, event_id): n = notice_new(from_id, to_id, CID_NOTICE_EVENT_JOIN_YES, event_id) mail = mail_by_user_id(to_id) zsite = Zsite.mc_get(to_id) po = Po.mc_get(event_id) title = po.name link = po.link mq_rendermail('/mail/event/event_join_yes.txt', mail, zsite.name, link=link, title=title ) return n
def notice_event_join_no(from_id, to_id, event_id, txt): cid = CID_NOTICE_EVENT_JOIN_NO n = notice_new(from_id, to_id, cid, event_id, txt=txt) mc_notice_last_id_by_zsite_id_cid.set('%s_%s' % (from_id, cid), n.id) mail = mail_by_user_id(to_id) zsite = Zsite.mc_get(to_id) po = Po.mc_get(event_id) title = po.name link = po.link mq_rendermail('/mail/event/event_join_no.txt', mail, zsite.name, link=link, title=title, reason=txt ) return n
def tag_new(name): found = Zsite.get(name=name, cid=CID_TAG) if not found: found = zsite_new(name, CID_TAG) id = found.id #1. 更新autocompelete from model.autocomplete import autocomplete_tag autocomplete_tag.append(name, id) #2. 更新别名库 if '/' in name: for i in map(utf8_ftoj, map(str.strip, name.split('/'))): _tag_alias_new(id, i) else: _tag_alias_new(id, name) return id
def event_ready(event): join_count = event.join_count po = event.po link = 'http:%s' % po.link title = po.name begin_time = date_time_by_minute(event.begin_time) user_id_list = event_joiner_user_id_list(event.id) user_id_list.append(event.zsite_id) for user_id in user_id_list: rendermail( '/mail/event/event_ready.txt', mail_by_user_id(user_id), Zsite.mc_get(user_id).name, link=link, title=title, begin_time=begin_time, join_count=join_count, ) sleep(0.1)
def notice_event_notice(from_id, event_id, po_id): from event import event_joiner_user_id_list po = Po.mc_get(event_id) title = po.name link = po.link notice_po = Po.mc_get(po_id) txt = notice_po.name notice_link = notice_po.link for user_id in event_joiner_user_id_list(event_id): notice_new(from_id, user_id, CID_NOTICE_EVENT_NOTICE, po_id) name = Zsite.mc_get(user_id).name mail = mail_by_user_id(user_id) rendermail('/mail/event/event_notice.txt', mail, name, title=title, link=link, txt=txt, notice_link=notice_link, )
def event_review_join_apply(event_id): event = Event.mc_get(event_id) if event: event_new_joiner_id_list = EventJoiner.where( 'event_id=%s and state=%s', event_id, EVENT_JOIN_STATE_NEW).col_list(col='user_id') if event_new_joiner_id_list: event_joiner_list = [ user.name for user in Zsite.mc_get_list(event_new_joiner_id_list) ] rendermail('/mail/event/event_review_join_apply.txt', mail_by_user_id(event.zsite_id), event.zsite.name, event_link='http:%s/event/check/%s' % (event.zsite.link, event_id), title=event.po.name, event_join_apply_list=' , '.join(event_joiner_list)) sleep(0.1)
def name_htm(self): q = self.target cid = self.cid if cid in (CID_EVENT_NOTICE, CID_REVIEW): return txt_withlink(self.name_) if q: u = q.user link = '<a href="%s">%s</a>' % (q.link, escape(q.name)) if cid == CID_EVENT_FEEDBACK: if q.user_id == self.user_id: name = '总结 : %s' else: name = '评价 : %s' return name%link elif cid == CID_REC: pre_po_zsite = Zsite.mc_get(q.user_id) if pre_po_zsite: if q.cid != CID_WORD: name = '推荐 <a href="%s" >%s</a> ~ <a href="%s">%s</a>' % (q.link, escape(q.name), pre_po_zsite.link, escape(pre_po_zsite.name), ) else: name = '推荐 <a href="%s" class="fcmname c0 TPH" >%s</a> : %s <a class="zsite_reply" href="%s" target="_blank"></a>'%( pre_po_zsite.link, escape(pre_po_zsite.name), escape(q.name), q.link ) else: name = '推荐 <a href="%s" >%s</a>' % (q.link, escape(q.name)) return name else: if q.user_id == self.user_id: return '自问自答 : %s' % link else: return '答 <a href="%s">%s</a> 问 : %s' % ( u.link, escape(u.name), link ) if cid == CID_WORD: return txt_withlink(self.name) return escape(self.name)
def buzz_po_bind_user(po_list, po_user_id_list, user_id=0): from model.po_pos import po_pos_get_last_reply_id user_dict = Zsite.mc_get_dict(chain(*po_user_id_list)) result = [] for i, user_id_list in zip(po_list, po_user_id_list): id = i.id new_reply_show = [] for uid in user_id_list: if uid not in new_reply_show and user_id != uid: new_reply_show.append(uid) if len(new_reply_show) == SHOW_LIMT: break new_reply_show = [(z.id, z.name) for z in map(user_dict.get, new_reply_show)] new_reply_count = max((len(set(user_id_list)) - SHOW_LIMT, 0)) t = (id, i.name, new_reply_count, new_reply_show, po_pos_get_last_reply_id(user_id, id)) result.append(t) return result
def _follow_new(from_id, to_id): if follow_get(from_id, to_id): return True if from_id == to_id: return to = Zsite.mc_get(to_id) if not to: return if follow_get(from_id, to_id): return cid = to.cid id = gid() follow_cursor.execute( 'insert into follow (id, from_id, to_id, cid) values (%s,%s,%s,%s)', (id, from_id, to_id, cid) ) follow_cursor.connection.commit() mc_flush(from_id, to_id, cid) if cid == CID_USER: from model.autocomplete_user import autocomplete_user autocomplete_user.rank_update( to_id, follow_count_by_to_id(to_id) ) return True
if __name__ == '__main__': from zsite import Zsite from zsite_com import ZsiteCom from cid import CID_COM from zsite_show import zsite_show_list from zsite_member import zsite_member_admin_list from user_mail import mail_by_user_id #job_type_set(25, [2,3225]) com0, com1, com2, com3 = set(), set(), set(), set() for i in ComJob.where(): com0.add(i.com_id) com3 = set([i.id for i in zsite_show_list(CID_COM)]) #print com3 for i in Zsite.where(cid=CID_COM): com1.add(i.id) for i in ZsiteCom.where('video_id != %s', 0): com2.add(i.id) for i in com1 - com3: c = ZsiteCom.mc_get(i) z = Zsite.mc_get(i) print '---------' print '公司名:', z.name, print 'http:%s' % z.link print '公司愿望:', c.hope print '公司钱:', c.money, print '公司文化:', c.culture, print '公司团队:', c.team, print '公司视频:', c.video_id, print '公司电话:', c.phone
def user(self): if self.user_id: return Zsite.mc_get(self.user_id)
def namecard_dict(id_list): return mc_func_get_dict( mc_namecard_id, namecard_get_id, id_list, ) def namecard_bind(li, key='id'): d = set() for i in li: k = getattr(i, key) d.add(k) r = namecard_dict(d) id_list = r.values() e = Namecard.mc_get_dict(id_list) for i in li: i.namecard = e.get(r.get(getattr(i, key))) if __name__ == '__main__': from zsite import Zsite li = Zsite.mc_get_list([10000212, 10000000]) namecard_bind(li, 'id') for i in li: print vars(i) o = i.namecard print o.id, vars(o)
def po_show_list(limit, offset): ids = feed_rt_list(0, limit, offset) li = Po.mc_get_list(ids) li = Po.mc_get_list(i.rid for i in li) Zsite.mc_bind(li, 'user', 'user_id') return li
def user_new_by_mail(mail, password=None, name=None): if not name: name = mail.split('@', 1)[0].split('+', 1)[0] if name.isdigit(): name = '' if password: state = ZSITE_STATE_APPLY else: state = ZSITE_STATE_NO_PASSWORD zsite = zsite_new_user(name, state) user_id = zsite.id user_mail_new(user_id, mail) if password: user_password_new(user_id, password) from buzz_sys import buzz_sys_new_user buzz_sys_new_user(user_id) return zsite def newbie_redirect(user): if user.state == ZSITE_STATE_NO_PASSWORD: return '/i/guide' if __name__ == '__main__': z = Zsite.mc_get(10001299) print z.sex, '!' print user_password_sha256(1)
def fav_user_list_by_po_id(po_id, limit, offset=0): id_list = fav_user_id_list_by_po_id(po_id, limit, offset) return Zsite.mc_get_list(id_list)
return c def namecard_dict(id_list): return mc_func_get_dict( mc_namecard_id, namecard_get_id, id_list, ) def namecard_bind(li, key='id'): d = set() for i in li: k = getattr(i, key) d.add(k) r = namecard_dict(d) id_list = r.values() e = Namecard.mc_get_dict(id_list) for i in li: i.namecard = e.get(r.get(getattr(i, key))) if __name__ == '__main__': from zsite import Zsite li = Zsite.mc_get_list([10000212, 10000000]) namecard_bind(li, 'id') for i in li: print vars(i) o = i.namecard print o.id, vars(o)
def zsite_list_by_admin_id(id, limit=None, offset=0): id_list = zsite_id_list_by_admin_id(id) if id_list and (offset or limit is not None): id_list = id_list[offset:offset + limit] return Zsite.mc_get_list(id_list)
return link_list, link_cid if __name__ == '__main__': from cid import CID_USER from user_mail import mail_by_user_id from zsite import Zsite link = [] sites = {} for zs in ZsiteLink.where(cid=0): link.extend([zs.zsite_id]) sites[zs.link.rstrip('/')] = zs.zsite_id print len(link) link = filter(lambda x: Zsite.mc_get(x).cid == CID_USER, link) print len(link) s = """ http://zerolabrary.appspot.com http://www.dongwm.com http://stonelee.info http://blog.chen-yuan.me http://www.cnxct.com http://blog.sina.com.cn/ggsddunet http://www.91python.com http://blog.linjunhalida.com http://bss.appspot.com http://www.imchao.net http://blog.timger.info http://heroicyang.com http://www.felizin.com
def tag_list_by_po_id(po_id): zsite_id_list = tag_id_list_by_po_id(po_id) return Zsite.mc_get_list(zsite_id_list)
def zsite_author_list(zsite_id): return Zsite.mc_get_list(zsite_id_list(zsite_id, CID_TAG))