def POST(self, post_id): if session.user_id is None: raise web.SeeOther('/login') post = post_model().get_one({'id': post_id}) if post is not None: if not self.form.validates(): raise web.SeeOther('/post/' + post_id) else: user_model().update_session(session.user_id) length, cost = money_model().cal_comment(self.form.d.content) if session.money < cost: self.crumb.append('财富不够') return render.no_money('财富不够', '你的财富值不够,不能创建改主题 :(', self.crumb.output()) content = html2db(self.form.d.content) create_time = time.time() comment_id = comment_model().insert({ 'user_id': session.user_id, 'post_id': post_id, 'content': content, 'time': create_time }) money_type_id = money_type_model().get_one({'name': 'comment'})['id'] money_model().insert({ 'user_id': session.user_id, 'money_type_id': money_type_id, 'amount': -cost, 'length': length, 'balance': user_model().update_money(session.user_id, -cost), 'foreign_id': comment_id }) if session.user_id != post.user_id: money_model().insert({ 'user_id': post.user_id, 'money_type_id': money_type_id, 'amount': cost, 'length': length, 'foreign_id': comment_id, 'balance': user_model().update_money(post.user_id, cost) }) user_model().update_session(session.user_id) post_model().update({'id': post_id}, {'last_update': create_time}) post_model().count_comment(post_id) raise web.SeeOther('/post/' + post_id) else: raise web.SeeOther('/post/' + post_id)
def GET(self, post_id): if session.user_id is None: raise web.SeeOther('/login?next=/post/unfav/'+post_id) user_meta_model().delete({'user_id':session.user_id, 'meta_key':'post_fav','meta_value':post_id}) user_model().update({'id':session.user_id}, {'post_favs':user_meta_model().count_meta({'user_id':session.user_id, 'meta_key':'post_fav'})}) user_model().update_session(session.user_id) raise web.SeeOther('/post/'+post_id)
def GET(self, node_name): node = node_model().get_one({'name': node_name}) if node is None: self.crumb.append('节点未找到') return render.node_nf('节点未找到', self.crumb.output()) if session.user_id is None: raise web.SeeOther('/login?next=/node/'+node_name) user_meta_model().delete({'user_id':session.user_id, 'meta_key':'node_fav', 'meta_value':node.id}) user_model().update({'id':session.user_id}, {'node_favs':user_meta_model().count_meta({'user_id':session.user_id, 'meta_key':'node_fav'})}) user_model().update_session(session.user_id) raise web.SeeOther('/node/'+node_name)
def GET(self, post_id): post = post_model().get_one({'id':post_id}) if post is None: self.crumb.append('主题未找到') return render.post_nf('主题未找到', self.crumb.output()) if session.user_id is None: raise web.SeeOther('/login?next=/post/fav/'+post_id) user_meta_model().unique_insert({'user_id':session.user_id, 'meta_key':'post_fav', 'meta_value':post_id}) user_model().update({'id':session.user_id}, {'post_favs':user_meta_model().count_meta({'user_id':session.user_id, 'meta_key':'post_fav'})}) user_model().update_session(session.user_id) raise web.SeeOther('/post/' + post_id)
def POST(self): ret, msg = self._post() if ret: try: if data['next'] is not None: raise web.SeeOther(data['next']) else: raise web.SeeOther('/') except KeyError: raise web.SeeOther('/') else: return render.login(self.form, msg, self.crumb.output())
def GET(self, name): user = user_model().get_one({'name':name}) if user is None: crumb = Crumb() crumb.append('会员未找到') return render.user_nf('会员未找到', crumb.output()) else: if session.user_id is None: raise web.SeeOther('/login?next=/profile/'+name) user_meta_model().delete({'user_id':session.user_id, 'meta_key':'follow', 'meta_value':user.id}) user_model().update({'id':session.user_id}, {'user_favs':user_meta_model().count_meta({'user_id':session.user_id, 'meta_key':'follow'})}) user_model().update_session(session.user_id) raise web.SeeOther('/profile/'+name)
def POST(self, cat_name): cat = cat_model().get_one({'name':cat_name}) if cat is None: self.crumb.append('分类不存在') return admin_render.cat_nf('分类不存在', self.crumb.output()) else: if self.form.validates(): cat_model().update({'name':cat.name}, {'display_name':self.form.d.display_name, 'description':self.form.d.description}) self.crumb.clear() web.SeeOther('/admin/cat/'+cat.name) else: self.form.name.set_value(cat.name) self.form.display_name.set_value(cat.display_name) self.form.description.set_value(cat.description) self.crumb.clear() web.SeeOther('/admin/cat/'+cat.name)
def POST(self): self.crumb.append('设置', '/settings') self.crumb.append('修改密码') user = user_model().get_one({'id': session.user_id}) if self.form.validates(): password = hashlib.md5( hashlib.md5(self.form.d.origin_password).hexdigest() + user.auth).hexdigest() if user.password == password: auth = string.join( random.sample([ 'z', 'y', 'x', 'w', 'v', 'u', 't', 's', 'r', 'q', 'p', 'o', 'n', 'm', 'l', 'k', 'j', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a' ], 5)).replace(' ', '') new_password = hashlib.md5( hashlib.md5(self.form.d.new_password).hexdigest() + auth).hexdigest() user_model().update({'id': user.id}, { 'password': new_password, 'auth': auth }) raise web.SeeOther('/settings') else: return render.password('原密码不正确', self.crumb.output(), self.form) else: return render.password('修改密码', self.crumb.output(), self.form)
def request_init(): """Initialize web.ctx with request-specific timers and state used by our REST API layer.""" web.ctx.ermrest_request_guid = random_name() web.ctx.ermrest_start_time = datetime.datetime.now(pytz.timezone('UTC')) web.ctx.ermrest_request_content_range = '-/-' web.ctx.ermrest_content_type = 'unknown' web.ctx.webauthn2_manager = webauthn2_manager web.ctx.webauthn2_context = webauthn2.Context( ) # set empty context for sanity web.ctx.ermrest_request_trace = request_trace web.ctx.ermrest_registry = registry web.ctx.ermrest_catalog_factory = catalog_factory web.ctx.ermrest_config = global_env web.ctx.ermrest_catalog_pc = None try: # get client authentication context web.ctx.webauthn2_context = webauthn2_manager.get_request_context() except (ValueError, IndexError): content_type = negotiated_content_type(['text/html', '*'], '*') if content_type == 'text/html': # bounce browsers through a login form and back refer = web.ctx.env['REQUEST_URI'] # leave off /ermrest/ prefix due to web.SeeOther behavior raise web.SeeOther('/authn/session?referrer=%s' % urlquote(refer)) else: raise rest.Unauthorized('service access') except (webauthn2.exc.AuthnFailed): raise rest.Forbidden('Authentication failed')
def get(self): """Complete a sign-in by requesting a token.""" form = web.form("state", "code") response = authorize_sign_in(form.state, form.code, "profile") tx.user.session["uid"] = [response["me"]] tx.user.session["name"] = [response["profile"]["name"]] raise web.SeeOther(tx.user.session["return_to"])
def GET(self, post_id): if session.user_id is None: raise web.SeeOther('/login?next=/edit/post/' + post_id) conditions = {'id': int(post_id)} post = post_model().get_one(conditions) if session.user_id != post.user_id: raise web.SeeOther('/login?next=/edit/post/' + post_id) self.crumb.append(post["title"], '/post/' + post_id) self.crumb.append('编辑主题') if post is None: self.crumb.claer() return render.not_found('节点未找到', '节点未找到') title = '编辑主题' self.form.title.value = post.title self.form.content.value = post.content return render.edit_post(self.form, title, self.crumb.output())
def POST(self, node_name): node = node_model().get_one({'name':node_name}) if node is None: return admin_render.node_nf('节点不存在', self.crumb.output()) if self.form.validates(): node_model().update({'name':node.name}, {'display_name':self.form.d.display_name, 'description':self.form.d.description}) raise web.SeeOther('/admin/node/'+node.name)
def GET(self): if session.login is not True: raise web.SeeOther('/cookielogin') pcs = dill.loads(session.pcs) assert isinstance(pcs, PCS) return pcs.list_files('/').content
def __init__(self): if session.user_id: raise web.SeeOther('/') self.title = '登录' self.crumb = Crumb() self.crumb.append('登录') self.form = user_model().login_form
def POST(self): def update(d, i): for c in column_names(): # input names are not decoded u = c.encode('utf8') if i.has_key(u): d[c] = i.get(u) d['_tags'] = get_tags(d) i = web.input() a = i.get('__action', None) if a == 'add': d = {} update(d, i) o = objs.save(d) o = list(objs.find(d)) return render.index(conf.title, columns(), o, 'add') elif a == 'update': if i.get('_id', None): d = objs.find_one(ObjectId(i['_id'])) if d: update(d, i) oid = objs.save(d) o = [objs.find_one(oid)] return render.index(conf.title, columns(), o, 'update') elif a == 'delete': if i.get('_id', None): objs.remove(ObjectId(i['_id'])) raise web.SeeOther('/') raise web.BadRequest()
def POST(self, request): if self.ignoreQueryString is False: request += web.ctx.query url = self.origin + request if self.forwardPost is False: raise web.SeeOther(url, absolute=True) response = forward.forwardRequest(url, method=web.ctx.method) forward.forwardResponse(response)
def POST(self, path): rec = config.getRecord(path) outPath = self.interpolateOutputPath(rec) body = self.fetchResource(rec['getUrl']) self.writeOutput(outPath, body) raise web.SeeOther("file://%s" % outPath)
def get(self): """Initiate a sign-in.""" form = web.form("me", return_to="/") tx.user.session["return_to"] = form.return_to raise web.SeeOther( initiate_sign_in(tx.origin, "guests/authorize", form.me, scopes=("profile", "email")))
def POST(self): i = web.input(cookie=None) if not i.cookie: raise web.SeeOther('/cookielogin') cookie_list = i.cookie.split(';') pcs = PCS('0', '0') pcs.session.cookies.clear() for c in cookie_list: if not c: continue k, v = c.split('=', 1) pcs.session.cookies[k] = v pcs.user['BDUSS'] = pcs.session.cookies['BDUSS'] session.pcs = dill.dumps(pcs) session.login = True raise web.SeeOther('/profile')
def GET(self, request, _beforeWriteCache=None): if self.ignoreQueryString is False: request += web.ctx.query try: cache = self.readCache(request) if cache is None: cache = self.writeCache(request, _beforeWriteCache=_beforeWriteCache) except runtime.DeadlineExceededError: raise web.SeeOther(self.origin + request, absolute=True) except CacheExpired, cache: cache = self.writeCache(request, cache=cache(), _beforeWriteCache=_beforeWriteCache)
def POST(self): webinput = web.input() weibo_id = webinput[u'weibo_id'] ac = activities.find_one({u'weibo_id': weibo_id}) hostname = ac[u'peoplePay'][0] hostuid = ac[u'uid'] ifpay = True for people in ac[u'peopleInvited']: if people in ac[u'peopleIn']: ifpay = True else: ifpay = False break cookies = web.cookies() acc = cookies[u'access_token'] exp = cookies[u'expires_in'] uid = cookies[u'uid'] client = getClient(acc, exp) myname = getClientName(client, int(uid)) if myname in ac['peoplePay']: ifpay = False if ifpay: paymoney = float(ac[u'money']) / len(ac[u'peopleIn']) hostacount = bank.find_one({u'name': hostname}) hostmoney = hostacount[u'money'] hostmoney += paymoney bank.update({u"name": hostname}, {"$set": {u"money": hostmoney}}) cookies = web.cookies() acc = cookies[u'access_token'] exp = cookies[u'expires_in'] uid = cookies[u'uid'] client = getClient(acc, exp) myname = getClientName(client, int(uid)) myacount = bank.find_one({u'name': myname}) mymoney = myacount[u'money'] mymoney -= paymoney bank.update({u"name": myname}, {"$set": {u"money": mymoney}}) peoplePay = ac[u'peoplePay'] peoplePay.append(myname) activities.update({u"weibo_id": weibo_id}, {"$set": { u"peoplePay": peoplePay }}) string = myname + u"\u652f\u4ed8\u4e86\u6d3b\u52d5" + u":" + ac[ u'name'] user = users.find_one({u'uid': hostuid}) informations = refreshInformations(user[u'informations'], string) users.update({u'uid': hostuid}, {"$set": { u'informations': informations }}) web.SeeOther("/currentActivity")
def POST(self, cat_name): cat = cat_model().get_one({'name':cat_name}) if cat is None: self.crumb.append('分类不存在') return admin_render.cat_nf('分类不存在', self.crumb.output()) if self.form.validates(): if node_model().unique_insert({'name':self.form.d.name, 'category_id':cat.id, 'display_name':self.form.d.display_name, 'description':self.form.d.description}): web.SeeOther('/admin/node/'+self.form.d.name) else: return admin_render.create_cat('节点名已存在', self.crumb.output(), self.form) else: return admin_render.create_node('添加新节点', self.crumb.output(), cat, self.form)
def GET(self, node_name): if session.user_id is None: raise web.SeeOther('/login?next=/post/create/' + node_name) conditions = {'name': node_name} node = node_model().get_one(conditions) self.crumb.append(node.display_name, '/node/' + node.name) self.crumb.append('创建新主题') if node is None: self.crumb.claer() return render.not_found('节点未找到', '节点未找到') title = '创建主题' return render.create_post(self.form, title, self.crumb.output())
def POST(self): if self.form.validates(): if cat_model().unique_insert({'name':self.form.d.name}): # 为了保证不插入空的display_name的分类,故此 try: cat_model().update({'name':self.form.d.name}, {'display_name':self.form.d.display_name, 'description':self.form.d.description}) except: cat_model().delete({'name':self.form.d.name}) self.crumb.clear() web.SeeOther('/admin/cat/'+self.form.d.name) else: return admin_render.create_cat('分类名已存在', self.crumb.output(), self.form)
def POST(self): if self.form.validates(): site_model().update({'key':'title'}, {'value':self.form.d.title}) site_model().update({'key':'description'}, {'value':self.form.d.description}) site_model().update({'key':'site_url'}, {'value':self.form.d.site_url}) site_model().update({'key':'cookie_expires'}, {'value':self.form.d.cookie_expires}) # 不知道这里为什么还要clear一次才能保证crumb的干净 self.crumb.clear() raise web.SeeOther('/admin/site') else: self.crumb.append('站点设置') return admin_render.site('站点设置', self.crumb.output(), self.form)
def POST(self): cookie = web.cookies() webinput = web.input() acc = cookie[u'access_token'] exp = cookie[u'expires_in'] client = getClient(acc, exp) uid = cookie[u'uid'] infor = client.users.show.get(uid=uid) name = infor[u'screen_name'] weibo_id = webinput[u'weibo_id'] ac = activities.find_one({u'weibo_id': weibo_id}) if ac[u"ifbegin"] == True: web.SeeOther("/currentActivity") ifrefuse = True for people in ac[u'peopleInvited']: if people in ac[u'peopleIn']: ifrefuse = False print people else: ifrefuse = True break print ifrefuse if ifrefuse == False: web.SeeOther("/currentActivity") else: user = users.find_one({u"uid": ac[u'uid']}) string = name + u"\u62d2\u7edd\u53c2\u52a0\u6d3b\u52a8\uff1a" + ac[ u'name'] + u"\uff0c\u6d3b\u52a8\u5df2\u7ecf\u5173\u95ed" + "." informations = user[u'informations'] informations = refreshInformations(informations, string) users.update({u"uid": ac[u"uid"]}, {"$set": { u"informations": informations }}) activities.update({u'weibo_id': weibo_id}, {"$set": { u'ifclose': True }}) web.seeother("/currentActivity")
def GET(self): token=web.input(token='').token key=web.input(key='').key partnerid=web.input(partnerid='').partnerid if token=='' or key!='$www.ops.cc' or partnerid=='' or org.user.getpartnerbyid(partnerid)==None: return 'login fail!' else: web.setcookie('token', token,httponly=True,path='/') web.setcookie('partnerid',partnerid,expires=3600*24*365,path='/') return web.SeeOther('/user/')
def POST(self): self.crumb.append('设置') user = user_model().get_one({'id':session.user_id}) self.setting_form.name.set_value(user.name) if not self.setting_form.validates(): self.setting_form.name.set_value(user.name) self.setting_form.email.set_value(user.email) self.setting_form.email.set_value(user.signature) self.setting_form.email.set_value(user.outsite_link) return render.settings('设置', user, self.setting_form, self.pass_form, self.crumb.output()) else: user_model().update({'id':user.id}, {'email':self.setting_form.d.email, 'signature':self.setting_form.d.signature, 'outsite_link':self.setting_form.d.outsite_link.replace('http://', '').replace('https://', '')}) raise web.SeeOther('/settings')
def POST(self, post_id): if session.user_id is None: raise web.SeeOther('/login?next=/edit/post/' + post_id) conditions = {'id': int(post_id)} post = post_model().get_one(conditions) if post is None: return render.not_found('节点未找到', '节点未找到') if not self.form.validates(): return render.create_post(self.form, '创建失败, 请重创:D', self.crumb.output()) user_model().update_session(session.user_id) length, cost = money_model().cal_post(self.form.d.content) if session.money < cost: self.crumb.append('财富不够') return render.no_money('财富不够', '你的财富值不够,不能创建改主题 :(', self.crumb.output()) title = strip_tags(self.form.d.title) content = html2db(self.form.d.content) content, receiver_list = notify_model().convert_content(content) create_time = time.time() post_model().update({'id': int(post_id)}, { 'title': title, 'content': content, 'node_id': post.node_id, 'time': create_time, 'last_update': create_time, 'user_id': session.user_id }) # money money_type_id = money_type_model().get_one({'name': 'post'})['id'] money_model().insert({ 'user_id': session.user_id, 'money_type_id': money_type_id, 'amount': -cost, 'length': length, 'balance': user_model().update_money(session.user_id, -cost), 'foreign_id': post_id }) # notify receiver_list = list_diff(receiver_list, [session.name]) notify_model().insert_notify(session.user_id, receiver_list, 'post_at', post_id) user_model().update_session(session.user_id) raise web.seeother('/post/' + str(post_id))
def POST(self): if not self.form.validates(): return render.login(self.form, '登录失败,请重登', self.crumb.output()) condition = {'name': self.form.d.name} # MD5加密 密码 #condition['password'] = hashlib.md5(condition['password']).hexdigest() user = user_model().get_one(condition) if user is None: return render.login(self.form, '用户名不存在', self.crumb.output()) auth_from_form = hashlib.md5( hashlib.md5(self.form.d.password).hexdigest() + user.auth).hexdigest() if auth_from_form != user.password: return render.login(self.form, '密码错误', self.crumb.output()) user_model().update_session(user.id) user_model().set_cookie(user.id) data = web.input() try: if data['next'] is not None: raise web.SeeOther(data['next']) else: raise web.SeeOther('/') except KeyError: raise web.SeeOther('/')