示例#1
0
 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)
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
 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)
示例#5
0
 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())
示例#6
0
 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)
示例#7
0
 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)
示例#8
0
文件: user.py 项目: zhjchina/post_bar
 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)
示例#9
0
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')
示例#10
0
 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"])
示例#11
0
 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())
示例#12
0
 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)
示例#13
0
    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
示例#14
0
 def __init__(self):
     if session.user_id:
         raise web.SeeOther('/')
     self.title = '登录'
     self.crumb = Crumb()
     self.crumb.append('登录')
     self.form = user_model().login_form
示例#15
0
    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()
示例#16
0
 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)
示例#17
0
    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)
示例#18
0
 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")))
示例#19
0
    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')
示例#20
0
 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)
示例#21
0
    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")
示例#22
0
 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)
示例#23
0
 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())
示例#24
0
 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)
示例#25
0
 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)
示例#26
0
 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")
示例#27
0
 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/')
示例#28
0
 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')
示例#29
0
 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))
示例#30
0
文件: user.py 项目: zhjchina/post_bar
 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('/')