예제 #1
0
def intercept():
    '''
    This function will be invoked when a dynamic request comes.
    It firstly gets request path from evironment variables,
    then invokes corresponding functions according to request path.
    '''
    env = os.environ
    # Get request uri from environment variables
    uri = env['REQUEST_URI']
    # Get request path, leaving out query string
    path = uri.split('?', 1)[0]
    # Construct HTTPResquest object
    req = request.HTTPRequest()

    # Invoke corresponding functions according to request path
    if path == '/register':
        user.register(req)
    elif path == '/login':
        user.login(req)
    elif path == '/logout':
        user.logout(req)
    elif path == '/info':
        user.showinfo(req)
    elif path == '/upload':
        avatar.upload_avatar(req)
    elif re.compile(r'/avatar/(?P<md5>[\w]+)').match(path):
        # Get 32-char long md5, leaving out file ext or other chars.
        # If the length of md5 part is less than 32, get all the part.
        md5 = path[8:40]
        avatar.back_avatar(md5)
    else:
        util.msg_redirect('/static/homepage.html', 'unsupported url')
예제 #2
0
def intercept():
    '''
    This function will be invoked when a dynamic request comes.
    It firstly gets request path from evironment variables,
    then invokes corresponding functions according to request path.
    '''
    env = os.environ
    # Get request uri from environment variables 
    uri = env['REQUEST_URI']
    # Get request path, leaving out query string
    path = uri.split('?', 1)[0]
    # Construct HTTPResquest object
    req = request.HTTPRequest()
    
    # Invoke corresponding functions according to request path
    if path == '/register':
        user.register(req)
    elif path == '/login':
        user.login(req)
    elif path == '/logout':
        user.logout(req)
    elif path == '/info':
        user.showinfo(req)
    elif path == '/upload':
        avatar.upload_avatar(req)
    elif re.compile(r'/avatar/(?P<md5>[\w]+)').match(path):
        # Get 32-char long md5, leaving out file ext or other chars.
        # If the length of md5 part is less than 32, get all the part. 
        md5 = path[8:40]
        avatar.back_avatar(md5)
    else:
        util.msg_redirect('/static/homepage.html','unsupported url')
예제 #3
0
 def test_schema_change_with_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', SCHEMA_VIEW)
     add_permission(self, 'alice', SCHEMA_CHANGE)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.find_by_xpath(
         "//nav[@class='menu']/ul/li[3]/a").first.click()
     self.browser.find_by_xpath("//fieldset[@class='module aligned wide model']/h2/a").first.click()
     self.browser.find_by_xpath(
         "//input[@id='id_name']").first.fill("Alice's type")
     self.browser.find_by_xpath("//span[@class='buttonLinkOption buttonLinkLeft']/input[@type='submit']").first.click()
     text = self.browser.find_by_xpath(
         "//fieldset[@class='module aligned wide model']/h2/a").first.value
     self.assertEqual(text, "Alice's type")
     Graph.objects.get(name="Bob's graph").destroy()
예제 #4
0
 def test_data_delete_with_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', DATA_VIEW)
     add_permission(self, 'alice', DATA_CHANGE)
     add_permission(self, 'alice', DATA_DELETE)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.find_by_xpath("//a[@id='dataMenu']").first.click()
     self.browser.find_by_xpath("//div[@id='dataBrowse']/table/tbody/tr/td/a[@class='dataOption list']").first.click()
     self.browser.find_by_xpath("//td/a[@title='Edit node']").first.click()
     self.browser.find_by_xpath("//span[@class='buttonLinkOption buttonLinkRight']/a[text()='Remove']").first.click()
     self.browser.choose('confirm', '1')
     self.browser.find_by_xpath("//input[@type='submit']").first.click()
     text = self.browser.find_by_xpath(
         "//div[@id='content2']/div[@class='indent']").first.value
     self.assertNotEqual(text.find('Nodes: 0'), -1)
     Graph.objects.get(name="Bob's graph").destroy()
예제 #5
0
 def test_data_change_with_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', DATA_VIEW)
     add_permission(self, 'alice', DATA_CHANGE)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.find_by_xpath("//a[@id='dataMenu']").first.click()
     self.browser.find_by_xpath("//div[@id='dataBrowse']/table/tbody/tr/td/a[@class='dataOption list']").first.click()
     self.browser.find_by_xpath("//td/a[@title='Edit node']").first.click()
     self.browser.find_by_xpath(
         "//input[@id='id_Name']").first.fill("Alice's node")
     self.browser.find_by_xpath("//input[@type='submit']").first.click()
     text = self.browser.find_by_xpath("//table[@id='content_table']/tbody/tr/td")[1].value
     self.assertEqual(text, "Alice's node")
     Graph.objects.get(name="Bob's graph").destroy()
예제 #6
0
def logout():
	authtoken = json.loads(request.headers.get("auth-token"))
	if user.authenticated(authtoken):
		user.logout(authtoken)
		return "",201
	else:
		return error_response("Invalid auth_token",401)
예제 #7
0
 def test_data_delete_without_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', DATA_VIEW)
     add_permission(self, 'alice', DATA_CHANGE)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     spin_click(
         self.browser.find_by_xpath("//a[@id='dataMenu']").first,
         self.browser.find_by_xpath(
             "//div[@id='dataBrowse']/table/tbody/tr/td/a[@class='dataOption list']"
         ).first)
     self.browser.find_by_xpath("//td/a[@title='Edit node']").first.click()
     self.browser.find_by_xpath(
         "//span[@class='buttonLinkOption buttonLinkRight']/a[text()='Remove']"
     ).first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='heading']/h1").first.value
     spin_assert(lambda: self.assertNotEqual(text.find("403"), -1))
     Graph.objects.get(name="Bob's graph").destroy()
예제 #8
0
 def test_graph_change_with_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     self.browser.find_by_xpath(
         "//div[@class='dashboard-graphs']/div/div/span[@class='graph-title']/a"
     ).first.click()
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', GRAPH_CHANGE)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.find_by_xpath(
         "//div[@class='graph-item']/span[@class='graph-title']/a"
     ).first.click()
     self.browser.find_by_xpath("//input[@id='id_name']").first.fill(
         "Alice's graph")
     self.browser.find_by_xpath(
         "//form/input[@type='submit']").first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='graph-item']/span[@class='graph-title']/a"
     ).first.value
     spin_assert(lambda: self.assertEqual(text, "Alice's graph"))
     Graph.objects.get(name="Alice's graph").destroy()
예제 #9
0
 def test_graph_view_without_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     self.browser.find_by_xpath("//div[@class='dashboard-graphs']/div/div/span[@class='graph-title']/a").first.click()
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.visit(self.live_server_url + '/graphs/bobs-graph/')
     text = self.browser.find_by_xpath(
         "//div[@class='heading']/h1").first.value
     self.assertNotEqual(text.find("403"), -1)
     Graph.objects.get(name="Bob's graph").destroy()
예제 #10
0
 def test_graph_view_with_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     self.browser.find_by_xpath("//div[@class='dashboard-graphs']/div/div/span[@class='graph-title']/a").first.click()
     add_permission(self, 'alice', CREATE_COLLAB)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     text = self.browser.find_by_xpath("//div[@class='graph-item']/span[@class='graph-title']/a").first.value
     self.assertEqual(text, "Bob's graph")
     Graph.objects.get(name="Bob's graph").destroy()
예제 #11
0
 def test_schema_view_without_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.find_by_xpath(
         "//nav[@class='menu']/ul/li[3]/a").first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='heading']/h1").first.value
     self.assertNotEqual(text.find("403"), -1)
     Graph.objects.get(name="Bob's graph").destroy()
예제 #12
0
 def test_data_view_with_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', DATA_VIEW)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     spin_click(self.browser.find_by_xpath("//a[@id='dataMenu']").first,
                                           self.browser.find_by_xpath("//div[@id='dataBrowse']/table/tbody/tr/td/a[@class='dataOption list']").first)
     text = self.browser.find_by_xpath("//table[@id='content_table']/tbody/tr/td")[1].value
     spin_assert(lambda: self.assertEqual(text, "Bob's node"))
     Graph.objects.get(name="Bob's graph").destroy()
예제 #13
0
 def test_schema_view_with_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', SCHEMA_VIEW)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.find_by_xpath(
         "//nav[@class='menu']/ul/li[3]/a").first.click()
     text = self.browser.find_by_xpath(
         "//fieldset[@class='module aligned wide model']/h2/a").first.value
     self.assertEqual(text, "Bob's type")
     Graph.objects.get(name="Bob's graph").destroy()
예제 #14
0
 def test_data_add_without_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', DATA_VIEW)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.find_by_xpath("//a[@id='dataMenu']").first.click()
     self.browser.find_by_xpath("//div[@id='dataBrowse']/table/tbody/tr/td/a[@class='dataOption new']").first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='heading']/h1").first.value
     self.assertNotEqual(text.find("403"), -1)
     Graph.objects.get(name="Bob's graph").destroy()
예제 #15
0
def next_verify(request):
    if 'next_verify' in request.session and request.session['next_verify'] ==2:
        del(request.session['next_verify'])
        print 'success1'
        #验证成功,进入下一题
        return next(request)
    else:
        u=User.objects.get(id=request.session['uid'])
        u.forbidden=1
        u.save()
        import user as userview
        return userview.logout(request)
예제 #16
0
 def test_graph_change_with_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     self.browser.find_by_xpath("//div[@class='dashboard-graphs']/div/div/span[@class='graph-title']/a").first.click()
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', GRAPH_CHANGE)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.find_by_xpath("//div[@class='graph-item']/span[@class='graph-title']/a").first.click()
     self.browser.find_by_xpath(
         "//input[@id='id_name']").first.fill("Alice's graph")
     self.browser.find_by_xpath(
         "//form/input[@type='submit']").first.click()
     text = self.browser.find_by_xpath("//div[@class='graph-item']/span[@class='graph-title']/a").first.value
     self.assertEqual(text, "Alice's graph")
     Graph.objects.get(name="Alice's graph").destroy()
예제 #17
0
def next(request):

    #游客只能浏览前50题
    if request.session['uid'] ==0 and request.session['qid'] >=50:
        return HR(u'亲,请先登录,游客只能浏览前50题!')

    #邮箱未认证用户只能浏览前500题
    if request.session['degree'] <=1 and request.session['qid'] >=500:
        return HR(u'亲,请先完成邮箱认证,邮箱未认证用户只能浏览前500题!')

    # 2级用户只能浏览前2000题
    if request.session['degree'] <=2 and request.session['qid'] >=2000:
        return HR(u'亲,目前2级用户只能浏览前2000题!')

    #验证是否有爬虫
    if 'next_verify' in request.session and request.session['next_verify']==2:
        del(request.session['next_verify'])
        u=User.objects.get(id=request.session['uid'])
        u.forbidden=1
        u.save()
        import user as userview
        userview.logout(request)
        return HR(u'亲,不要爬我的小站了!')

    #如果存在用户登录 degree > 0 ,即非游客
    if request.session['degree']:
        user= User.objects.filter(id=request.session['uid'])[0]

        #自增下一题
        user.qid += 1
        #同步session
        request.session['qid'] = user.qid
        user.save()
    else:
        #如果为游客状态 session['qid'] 自增1
        request.session['qid'] += 1
    return HttpResponseRedirect('/showQuestion')
예제 #18
0
 def test_data_delete_without_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', DATA_VIEW)
     add_permission(self, 'alice', DATA_CHANGE)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     spin_click(self.browser.find_by_xpath("//a[@id='dataMenu']").first,
                                           self.browser.find_by_xpath("//div[@id='dataBrowse']/table/tbody/tr/td/a[@class='dataOption list']").first)
     self.browser.find_by_xpath("//td/a[@title='Edit node']").first.click()
     self.browser.find_by_xpath("//span[@class='buttonLinkOption buttonLinkRight']/a[text()='Remove']").first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='heading']/h1").first.value
     spin_assert(lambda: self.assertNotEqual(text.find("403"), -1))
     Graph.objects.get(name="Bob's graph").destroy()
예제 #19
0
 def tearDown(self):
     logout(self)
     self.browser.quit()
예제 #20
0
파일: routes.py 프로젝트: Jagedih/golfbook
def logout():
    user.logout()
    return redirect("/")
예제 #21
0
파일: views.py 프로젝트: lqf96/cwng-bknd
 def logout(self):
     logout()
예제 #22
0
 def tearDown(self):
     logout(self)
     self.browser.quit()
예제 #23
0
파일: bug.py 프로젝트: anukat2015/Sylva
 def tearDown(self):
     logout(self)
     self.browser.quit()
     Graph.objects.get(name="Bob's graph").destroy()
예제 #24
0
def logout_page():
	return user.logout()
예제 #25
0
def logout():
    return user.logout()
예제 #26
0
파일: bug.py 프로젝트: CulturePlex/Sylva
 def tearDown(self):
     logout(self)
     self.browser.quit()
     Graph.objects.get(name="Bob's graph").destroy()