def _add_sync_task_and_push_queue(provider, user): task_ids = [x.category for x in SyncTask.gets_by_user(user)] if provider == config.OPENID_DOUBAN: if str(config.CATE_DOUBAN_MINIBLOG) not in task_ids: t = SyncTask.add(config.CATE_DOUBAN_MINIBLOG, user.id) t and TaskQueue.add(t.id, t.kind) if str(config.CATE_DOUBAN_NOTE) not in task_ids: t = SyncTask.add(config.CATE_DOUBAN_NOTE, user.id) t and TaskQueue.add(t.id, t.kind) elif provider == config.OPENID_SINA: if str(config.CATE_SINA_STATUS) not in task_ids: t = SyncTask.add(config.CATE_SINA_STATUS, user.id) t and TaskQueue.add(t.id, t.kind) elif provider == config.OPENID_TWITTER: if str(config.CATE_TWITTER_STATUS) not in task_ids: t = SyncTask.add(config.CATE_TWITTER_STATUS, user.id) t and TaskQueue.add(t.id, t.kind)
def _add_sync_task_and_push_queue(provider, user): task_ids = [x.category for x in SyncTask.gets_by_user(user)] if provider == config.OPENID_DOUBAN: if str(config.CATE_DOUBAN_STATUS) not in task_ids: t = SyncTask.add(config.CATE_DOUBAN_STATUS, user.id) t and TaskQueue.add(t.id, t.kind) elif provider == config.OPENID_SINA: if str(config.CATE_SINA_STATUS) not in task_ids: t = SyncTask.add(config.CATE_SINA_STATUS, user.id) t and TaskQueue.add(t.id, t.kind) elif provider == config.OPENID_TWITTER: if str(config.CATE_TWITTER_STATUS) not in task_ids: t = SyncTask.add(config.CATE_TWITTER_STATUS, user.id) t and TaskQueue.add(t.id, t.kind) elif provider == config.OPENID_QQ: if str(config.CATE_QQWEIBO_STATUS) not in task_ids: t = SyncTask.add(config.CATE_QQWEIBO_STATUS, user.id) t and TaskQueue.add(t.id, t.kind)
def _add_sync_task_and_push_queue(provider, user): task_ids = [x.category for x in SyncTask.gets_by_user(user)] if provider == config.OPENID_DOUBAN: if str(config.CATE_DOUBAN_STATUS) not in task_ids: t = SyncTask.add(config.CATE_DOUBAN_STATUS, user.id) t and TaskQueue.add(t.id, t.kind) elif provider == config.OPENID_SINA: if str(config.CATE_SINA_STATUS) not in task_ids: t = SyncTask.add(config.CATE_SINA_STATUS, user.id) t and TaskQueue.add(t.id, t.kind) elif provider == config.OPENID_TWITTER: if str(config.CATE_TWITTER_STATUS) not in task_ids: t = SyncTask.add(config.CATE_TWITTER_STATUS, user.id) t and TaskQueue.add(t.id, t.kind) elif provider == config.OPENID_QQ: if str(config.CATE_QQWEIBO_STATUS) not in task_ids: t = SyncTask.add(config.CATE_QQWEIBO_STATUS, user.id) t and TaskQueue.add(t.id, t.kind) elif provider == config.OPENID_RENREN: for cate in (config.CATE_RENREN_STATUS, config.CATE_RENREN_BLOG, config.CATE_RENREN_ALBUM, config.CATE_RENREN_PHOTO): if str(cate) not in task_ids: t = SyncTask.add(cate, user.id) t and TaskQueue.add(t.id, t.kind) elif provider == config.OPENID_INSTAGRAM: if str(config.CATE_INSTAGRAM_STATUS) not in task_ids: t = SyncTask.add(config.CATE_INSTAGRAM_STATUS, user.id) t and TaskQueue.add(t.id, t.kind)
def bind(uid, feed_uri): user = User.get(uid) if not user: print 'no user' return ua = UserAlias.bind_to_exists_user(user, config.OPENID_TYPE_DICT[config.OPENID_WORDPRESS], feed_uri) if not ua: print "no user alias" else: ##添加同步任务 t = SyncTask.add(config.CATE_WORDPRESS_POST, user.id) t and TaskQueue.add(t.id, t.kind) ##删除confiration记录 mc.delete("wordpress_bind:%s" %user.id)
def bind(uid, feed_uri): user = User.get(uid) if not user: print 'no user' return ua = UserAlias.bind_to_exists_user( user, config.OPENID_TYPE_DICT[config.OPENID_WORDPRESS], feed_uri) if not ua: print "no user alias" else: ##添加同步任务 t = SyncTask.add(config.CATE_WORDPRESS_POST, user.id) t and TaskQueue.add(t.id, t.kind) ##删除confiration记录 mc.delete("wordpress_bind:%s" % user.id)
import time import commands activate_this = '%s/env/bin/activate_this.py' % os.path.dirname(os.path.abspath(__file__)) execfile(activate_this, dict(__file__=activate_this)) import past import jobs from past.model.status import TaskQueue, SyncTask, Status from past import config if __name__ == "__main__": while True: try: queue_ids = TaskQueue.get_all_ids() print 'queue length:', len(queue_ids) for qid in queue_ids: queue = TaskQueue.get(qid) if queue and queue.task_kind == config.K_SYNCTASK: print 'syncing task id:', queue.task_id sync_task = SyncTask.get(queue.task_id) max_sync_times = 0 min_id = Status.get_min_origin_id(sync_task.category, sync_task.user_id) if sync_task: while True: if max_sync_times >= 3: break r = jobs.sync(sync_task, old=True) new_min_id = Status.get_min_origin_id(sync_task.category, sync_task.user_id) if r == 0 or new_min_id == min_id:
import time import datetime import commands activate_this = '../env/bin/activate_this.py' execfile(activate_this, dict(__file__=activate_this)) import past import jobs from past.model.status import TaskQueue, SyncTask, Status from past import config if __name__ == "__main__": try: queue_ids = TaskQueue.get_all_ids() print '%s queue length: %s' % (datetime.datetime.now(), len(queue_ids)) for qid in queue_ids: queue = TaskQueue.get(qid) if queue and queue.task_kind == config.K_SYNCTASK: print 'syncing task id:', queue.task_id sync_task = SyncTask.get(queue.task_id) if not sync_task: continue ## 现在不同步豆瓣日记 if str(sync_task.category) == str(config.CATE_DOUBAN_NOTE): continue ## 同步wordpress rss if str(sync_task.category) == str(config.CATE_WORDPRESS_POST):
def bind_wordpress(): if not g.user: flash(u"请先使用豆瓣、微博、QQ、Twitter任意一个帐号登录后,再来做绑定blog的操作^^", "tip") return redirect("/home") user = g.user intros = [ g.user.get_thirdparty_profile(x).get("intro") for x in config.OPENID_TYPE_DICT.values() ] intros = filter(None, intros) uas = g.user.get_alias() wordpress_alias_list = [ x for x in uas if x.type == config.OPENID_TYPE_DICT[config.OPENID_WORDPRESS] ] step = "1" random_id = mc.get("wordpress_bind:%s" % g.user.id) c = random_id and Confirmation.get_by_random_id(random_id) if c: _, feed_uri = c.text.split(":", 1) step = "2" else: feed_uri = "" if request.method == "GET": return render_template("v2/bind_wordpress.html", consts=consts, **locals()) elif request.method == "POST": ret = {} ret['ok'] = False if step == '1': feed_uri = request.form.get("feed_uri") if not feed_uri: ret['msg'] = 'feed地址不能为空' elif not (feed_uri.startswith("http://") or feed_uri.startswith("https://")): ret['msg'] = 'feed地址貌似不对' else: ua = UserAlias.get( config.OPENID_TYPE_DICT[config.OPENID_WORDPRESS], feed_uri) if ua: ret['msg'] = '该feed地址已被绑定' else: ##设置一个激活码 code = randbytes(16) val = "%s:%s" % (g.user.id, feed_uri) r = Confirmation.add(code, val) if r: ret['ok'] = True ret['msg'] = '为了验证blog的主人^^,请发一篇blog,内容为 %s,完成该步骤后,请点下一步完成绑定' \ % code mc.set("wordpress_bind:%s" % g.user.id, code) else: ret['msg'] = '抱歉,出错了,请重试, 或者给管理员捎个话:[email protected]' return json_encode(ret) elif step == '2': if not (random_id and c): ret['msg'] = '出错了,激活码不对^^' else: text = c.text user_id, feed_uri = text.split(":", 1) ## 同步一下,看看验证码的文章是否正确 client = Wordpress(feed_uri) rs = client.get_feeds(refresh=True) if not rs: ret['msg'] = '没有发现含有验证码的文章,请检查后再提交验证' else: latest_post = rs[0] if not latest_post: ret['msg'] = "你的feed地址可能无法访问,请检查下" else: content = latest_post.get_content( ) or latest_post.get_summary() if content and content.encode("utf8")[:100].find( str(random_id)) != -1: ua = UserAlias.bind_to_exists_user( g.user, config.OPENID_TYPE_DICT[ config.OPENID_WORDPRESS], feed_uri) if not ua: ret['msg'] = '出错了,麻烦你重试一下吧^^' else: ##添加同步任务 t = SyncTask.add(config.CATE_WORDPRESS_POST, g.user.id) t and TaskQueue.add(t.id, t.kind) ##删除confiration记录 c.delete() mc.delete("wordpress_bind:%s" % g.user.id) ret['ok'] = True ret['msg'] = '恭喜,绑定成功啦' else: ret['msg'] = "没有发现含有验证码的文章,请检查后再提交验证" return json_encode(ret) else: return "method not allowed"
def bind_wordpress(): if not g.user: flash(u"请先使用豆瓣、微博、QQ、Twitter任意一个帐号登录后,再来做绑定blog的操作^^", "tip") return redirect("/home") intros = [g.user.get_thirdparty_profile(x).get("intro") for x in config.OPENID_TYPE_DICT.values()] intros = filter(None, intros) uas = g.user.get_alias() wordpress_alias_list = [x for x in uas if x.type == config.OPENID_TYPE_DICT[config.OPENID_WORDPRESS]] step = "1" random_id = mc.get("wordpress_bind:%s" % g.user.id) c = random_id and Confirmation.get_by_random_id(random_id) if c: _, feed_uri = c.text.split(":", 1) step = "2" else: feed_uri = "" if request.method == "GET": return render_template("bind_wordpress.html", consts=consts, **locals()) elif request.method == "POST": ret = {} ret['ok'] = False if step == '1': feed_uri = request.form.get("feed_uri") if not feed_uri: ret['msg'] = 'feed地址不能为空' elif not (feed_uri.startswith("http://") or feed_uri.startswith("https://")): ret['msg'] = 'feed地址貌似不对' else: ua = UserAlias.get(config.OPENID_TYPE_DICT[config.OPENID_WORDPRESS], feed_uri) if ua: ret['msg'] = '该feed地址已被绑定' else: ##设置一个激活码 code = randbytes(16) val = "%s:%s" % (g.user.id, feed_uri) r = Confirmation.add(code, val) if r: ret['ok'] = True ret['msg'] = '为了验证blog的主人^^,请发一篇blog,内容为 %s,完成该步骤后,请点下一步完成绑定' \ % code mc.set("wordpress_bind:%s" %g.user.id, code) else: ret['msg'] = '抱歉,出错了,请重试, 或者给管理员捎个话:[email protected]' return json_encode(ret) elif step == '2': if not (random_id and c): ret['msg'] = '出错了,激活码不对^^' else: text = c.text user_id, feed_uri = text.split(":", 1) ## 同步一下,看看验证码的文章是否正确 client = Wordpress(feed_uri) rs = client.get_feeds(refresh=True) if not rs: ret['msg'] = '没有发现含有验证码的文章,请检查后再提交验证' else: latest_post = rs[0] if not latest_post: ret['msg'] = "你的feed地址可能无法访问,请检查下" else: content = latest_post.get_content() or latest_post.get_summary() if content and content.encode("utf8")[:100].find(str(random_id)) != -1: ua = UserAlias.bind_to_exists_user(g.user, config.OPENID_TYPE_DICT[config.OPENID_WORDPRESS], feed_uri) if not ua: ret['msg'] = '出错了,麻烦你重试一下吧^^' else: ##添加同步任务 t = SyncTask.add(config.CATE_WORDPRESS_POST, g.user.id) t and TaskQueue.add(t.id, t.kind) ##删除confiration记录 c.delete() mc.delete("wordpress_bind:%s" %g.user.id) ret['ok'] = True ret['msg'] = '恭喜,绑定成功啦' else: ret['msg'] = "没有发现含有验证码的文章,请检查后再提交验证" return json_encode(ret) else: return "method not allowed"