def renderPage(self, mode='admin'): session = sessionmanager.getsession(self) if session: roles = session['roles'] if mode == 'admin' and not 'administrator' in roles: self.response.out.write("You are not an administrator for this site. Access denied.") return elif not 'technician' in roles: self.response.out.write("You are not a technician for this site. Access denied.") return code = self.request.get('code', None) uid = self.request.get('uid', None) users = None network = None if uid == None: upload_url = '/' + mode + '/viewnetwork?code=' + code users = [] q = db.GqlQuery("SELECT * FROM User") for user in q: users.append(user) else: if mode == 'tech': upload_url = '/tech/savenetwork?uid=' + uid + '&code=' + code else: upload_url = '/admin?code=' + code if uid == "_new_": network = None else: q = db.GqlQuery("SELECT * FROM Network WHERE uid = :1", uid) network = q.fetch(1) if len(network) == 0: network = None else: network = network[0] template_values = { 'appId': conf.FBAPI_APP_ID, 'token': session['access_token'], 'app': session['appid'], 'conf': conf, 'me': session['me'], 'roles': roles, 'upload_url': upload_url, 'mode': mode, 'uid': uid, 'users': users, 'network': network, 'isdesktop': session['isdesktop'], 'header': '', 'code': code } root = os.path.normpath(os.path.join(os.path.dirname(__file__), os.path.pardir)) self.response.out.write(template.render(os.path.join(root, 'templates/_header.html'), template_values)) self.response.out.write(template.render(os.path.join(root, 'admin/templates/vieweditnetwork.html'), template_values)) self.response.out.write(template.render(os.path.join(root, 'templates/_footer.html'), template_values)) else: self.redirect(fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self)))
def renderPage(self): session = sessionmanager.getsession(self) if session: roles = session["roles"] if not "technician" in roles: self.response.out.write("You are not a technician for this site. Access denied.") return template_values = { "appId": conf.FBAPI_APP_ID, "token": session["access_token"], "app": session["appid"], "conf": conf, "me": session["me"], "roles": roles, "isdesktop": session["isdesktop"], "header": "", "code": self.request.get("code", None), } root = os.path.normpath(os.path.join(os.path.dirname(__file__), os.path.pardir)) self.response.out.write(template.render(os.path.join(root, "templates/_header.html"), template_values)) self.response.out.write(template.render(os.path.join(root, "admin/templates/tech.html"), template_values)) self.response.out.write(template.render(os.path.join(root, "templates/_footer.html"), template_values)) else: self.redirect(fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self)))
def renderPage(self): session = sessionmanager.getsession(self, redirect_uri=fbutils.base_url(self) + "opensesame/access") if session: SERVER_ADDRESS = ("127.0.0.1", 33333) template_values = { "appId": conf.FBAPI_APP_ID, "token": session["access_token"], "app": session["appid"], "conf": conf, "me": session["me"], "roles": session["roles"], "isdesktop": session["isdesktop"], "header": "", } root = os.path.normpath(os.path.join(os.path.dirname(__file__), os.path.pardir)) self.response.out.write(template.render(os.path.join(root, "templates/_header.html"), template_values)) self.response.out.write('<header class="clearfix">') self.response.out.write( '<p id="picture" style="background-image: url(/static/images/macchie.jpg); background-size: 64px 64px"></p>' ) self.response.out.write("<h1>Rorschach Test Platform authentication</h1>") self.response.out.write("</header>") self.response.out.write('<section id="normalsection" class="clearfix">') self.response.out.write("<h3>Associate OpenSesame with Rorschach Test Platform</h3>") self.response.out.write( "<p>In order to use the OpenSesame plugin, you need to authenticate with Facebook and give grants to the Rorschach Test Platform application.</p>" ) self.response.out.write( "<p>By clicking the button below you will create a temporary access token to be used by the OpenSesame plugin.<br/>" ) self.response.out.write( "The access token created with this procedure will have a lifetime of two hours (as by Facebook standards) and so after two hours it will be automatically declared invalid.</p>" ) self.response.out.write( '<form action="http://%s:%s/" method="post" name="codeSubmit" id="codeSubmit">' % SERVER_ADDRESS ) self.response.out.write( '<input type="hidden" id="code" name="code" value="' + self.request.get("code", None) + '" />' ) self.response.out.write( '<input type="hidden" id="access_token" name="access_token" value="' + session["access_token"] + '" />' ) self.response.out.write( '<p class="button"><a href="#" class="facebook-button" onclick="$(\'#codeSubmit\').submit();">' ) self.response.out.write('<span class="plus">Save the access token</span></a></p>') self.response.out.write("</section>") self.response.out.write(template.render(os.path.join(root, "templates/_footer.html"), template_values)) else: self.redirect(fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self) + "opensesame/access"))
def renderPage(self): session = sessionmanager.getsession(self) if session: indexes = {} q = db.GqlQuery( "SELECT * FROM Index " + "WHERE uid = :1 " + "ORDER BY updated_time DESC", session['me']['id']) for index in q: if not index.networkhash == None and \ not index.value == None: indexes[index.name] = ( conf.INDEX_TYPES[index.name]) % index.value computed_groups = {} for group in conf.INDEX_GROUPS: comp = 0 for index in group['indexes']: if index in indexes: comp += 1 computed_groups[group['name']] = comp template_values = { 'appId': conf.FBAPI_APP_ID, 'token': session['access_token'], 'app': session['appid'], 'conf': conf, 'me': session['me'], 'roles': session['roles'], 'computedindexes': indexes, 'numindexes': len(conf.INDEXES), 'index_groups': conf.INDEX_GROUPS, 'computed_groups': computed_groups, 'index_names': conf.INDEXES, 'isdesktop': session['isdesktop'], 'header': '', 'code': self.request.get('code', None) } root = os.path.normpath( os.path.join(os.path.dirname(__file__), os.path.pardir)) self.response.out.write( template.render(os.path.join(root, 'templates/_header.html'), template_values)) self.response.out.write( template.render( os.path.join(root, 'pages/templates/profile.html'), template_values)) self.response.out.write( template.render(os.path.join(root, 'templates/_footer.html'), template_values)) else: self.redirect( fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self)))
def renderPage(self, mode='new'): session = sessionmanager.getsession(self) if session: roles = session['roles'] if not 'administrator' in roles: self.response.out.write( "You are not an administrator for this site. Access denied.") return code = self.request.get('code', None) upload_url = '/admin/savetest?code=' + code test = None if mode == 'edit': testid = self.request.get('testid', None) q = db.GqlQuery("SELECT * FROM Test WHERE testid = :1", testid) tests = q.fetch(1) if len(tests) > 0: test = tests[0] template_values = { 'appId': conf.FBAPI_APP_ID, 'token': session['access_token'], 'app': session['appid'], 'conf': conf, 'me': session['me'], 'roles': roles, 'test': test, 'upload_url': upload_url, 'isdesktop': session['isdesktop'], 'header': 'viewcreatetest', 'code': code } root = os.path.normpath( os.path.join(os.path.dirname(__file__), os.path.pardir)) self.response.out.write( template.render(os.path.join(root, 'templates/_header.html'), template_values)) self.response.out.write( template.render( os.path.join(root, 'admin/templates/viewcreatetest.html'), template_values)) self.response.out.write( template.render(os.path.join(root, 'templates/_footer.html'), template_values)) else: self.redirect( fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self)))
def renderPage(self): session = sessionmanager.getsession(self) if session: roles = session['roles'] if not 'administrator' in roles: self.response.out.write( "You are not an administrator for this site. Access denied." ) return withindates = {} tests = [] q = db.GqlQuery("SELECT * FROM Test") for test in q: if test != None and test.startdate != None and test.enddate != None: if test.startdate <= date.today( ) and test.enddate >= date.today(): withindates[test.name] = True tests.append(test) template_values = { 'appId': conf.FBAPI_APP_ID, 'token': session['access_token'], 'app': session['appid'], 'conf': conf, 'me': session['me'], 'roles': roles, 'tests': tests, 'withindates': withindates, 'isdesktop': session['isdesktop'], 'header': '', 'code': self.request.get('code', None) } root = os.path.normpath( os.path.join(os.path.dirname(__file__), os.path.pardir)) self.response.out.write( template.render(os.path.join(root, 'templates/_header.html'), template_values)) self.response.out.write( template.render( os.path.join(root, 'admin/templates/admin.html'), template_values)) self.response.out.write( template.render(os.path.join(root, 'templates/_footer.html'), template_values)) else: self.redirect( fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self)))
def renderPage(self, mode="new"): session = sessionmanager.getsession(self) if session: roles = session["roles"] if not "administrator" in roles: self.response.out.write("You are not an administrator for this site. Access denied.") return code = self.request.get("code", None) upload_url = "/admin/savetest?code=" + code test = None if mode == "edit": testid = self.request.get("testid", None) q = db.GqlQuery("SELECT * FROM Test WHERE testid = :1", testid) tests = q.fetch(1) if len(tests) > 0: test = tests[0] template_values = { "appId": conf.FBAPI_APP_ID, "token": session["access_token"], "app": session["appid"], "conf": conf, "me": session["me"], "roles": roles, "test": test, "upload_url": upload_url, "isdesktop": session["isdesktop"], "header": "viewcreatetest", "code": code, } root = os.path.normpath(os.path.join(os.path.dirname(__file__), os.path.pardir)) self.response.out.write(template.render(os.path.join(root, "templates/_header.html"), template_values)) self.response.out.write( template.render(os.path.join(root, "admin/templates/viewcreatetest.html"), template_values) ) self.response.out.write(template.render(os.path.join(root, "templates/_footer.html"), template_values)) else: self.redirect(fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self)))
def renderPage(self): session = sessionmanager.getsession(self) if session: indexes = {} q = db.GqlQuery("SELECT * FROM Index " + "WHERE uid = :1 " + "ORDER BY updated_time DESC", session['me']['id']) for index in q: if not index.networkhash == None and \ not index.value == None: indexes[index.name] = (conf.INDEX_TYPES[index.name]) % index.value computed_groups = {} for group in conf.INDEX_GROUPS: comp = 0 for index in group['indexes']: if index in indexes: comp += 1 computed_groups[group['name']] = comp template_values = { 'appId': conf.FBAPI_APP_ID, 'token': session['access_token'], 'app': session['appid'], 'conf': conf, 'me': session['me'], 'roles': session['roles'], 'computedindexes': indexes, 'numindexes': len(conf.INDEXES), 'index_groups': conf.INDEX_GROUPS, 'computed_groups': computed_groups, 'index_names': conf.INDEXES, 'isdesktop': session['isdesktop'], 'header': '', 'code': self.request.get('code', None) } root = os.path.normpath(os.path.join(os.path.dirname(__file__), os.path.pardir)) self.response.out.write(template.render(os.path.join(root, 'templates/_header.html'), template_values)) self.response.out.write(template.render(os.path.join(root, 'pages/templates/profile.html'), template_values)) self.response.out.write(template.render(os.path.join(root, 'templates/_footer.html'), template_values)) else: self.redirect(fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self)))
def renderPage(self): session = sessionmanager.getsession(self) if session: roles = session['roles'] if not 'administrator' in roles: self.response.out.write("You are not an administrator for this site. Access denied.") return code = self.request.get('code', None) upload_url = '/admin/savetest?code=' + code testid = self.request.get('testid', None) q = db.GqlQuery("SELECT * FROM Test WHERE testid = :1", testid) tests = q.fetch(1) test = (len(tests) > 0) and tests[0] or None testresults = [] q = db.GqlQuery("SELECT * FROM TestResults WHERE testid = :1", testid) for result in q: testresults.append(result) template_values = { 'appId': conf.FBAPI_APP_ID, 'token': session['access_token'], 'app': session['appid'], 'conf': conf, 'me': session['me'], 'roles': roles, 'test': test, 'testresults': testresults, 'upload_url': upload_url, 'isdesktop': session['isdesktop'], 'header': '', 'code': code } root = os.path.normpath(os.path.join(os.path.dirname(__file__), os.path.pardir)) self.response.out.write(template.render(os.path.join(root, 'templates/_header.html'), template_values)) self.response.out.write(template.render(os.path.join(root, 'admin/templates/viewtestresults.html'), template_values)) self.response.out.write(template.render(os.path.join(root, 'templates/_footer.html'), template_values)) else: self.redirect(fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self)))
def renderPage(self): session = sessionmanager.getsession(self) if session: roles = session['roles'] if not 'administrator' in roles: self.response.out.write("You are not an administrator for this site. Access denied.") return withindates = {} tests = [] q = db.GqlQuery("SELECT * FROM Test") for test in q: if test != None and test.startdate != None and test.enddate != None: if test.startdate <= date.today() and test.enddate >= date.today(): withindates[test.name] = True tests.append(test) template_values = { 'appId': conf.FBAPI_APP_ID, 'token': session['access_token'], 'app': session['appid'], 'conf': conf, 'me': session['me'], 'roles': roles, 'tests': tests, 'withindates': withindates, 'isdesktop': session['isdesktop'], 'header': '', 'code': self.request.get('code', None) } root = os.path.normpath(os.path.join(os.path.dirname(__file__), os.path.pardir)) self.response.out.write(template.render(os.path.join(root, 'templates/_header.html'), template_values)) self.response.out.write(template.render(os.path.join(root, 'admin/templates/admin.html'), template_values)) self.response.out.write(template.render(os.path.join(root, 'templates/_footer.html'), template_values)) else: self.redirect(fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self)))
def renderPage(self, extension, mode='admin'): backend = self.request.get('backend', False) session = {} if backend: session['access_token'] = self.request.get('access_token', '') else: session = sessionmanager.getsession(self) if session: roles = session['roles'] if mode == 'admin' and not 'administrator' in roles: self.response.out.write("You are not an administrator for this site. Access denied.") return elif not 'technician' in roles: self.response.out.write("You are not a technician for this site. Access denied.") return else: self.redirect(fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self))) if extension in supported_extensions: q = db.GqlQuery("SELECT * FROM Index") if extension == 'xml': self.response.headers['Content-Type'] = "text/xml" self.response.out.write('<indexes count="%s">\n' % q.count()) for index in q: self.response.out.write(' <index uid="%s" name="%s" updated_time="%s" networkhash="%s">\n' % (index.uid, index.name, index.updated_time, index.networkhash)) self.response.out.write(' <value value="%s" />' % index.value) self.response.out.write(' <nodevalues count="%s">\n' % len(index.get_nodevalues() or [])) for nodevalue in (index.get_nodevalues() or []): self.response.out.write(' <nodevalue bucket="%s" numnodes="%s" />\n' % (nodevalue[0], nodevalue[1])) self.response.out.write(' </nodevalues>\n') self.response.out.write(' <edgevalues count="%s">\n' % len(index.get_edgevalues() or [])) for edgevalue in (index.get_edgevalues() or []): self.response.out.write(' <edgevalue bucket="%s" numnodes="%s" />\n' % (edgevalue[0], edgevalue[1])) self.response.out.write(' </edgevalues>\n') self.response.out.write(' </index>\n\n') self.response.out.write('</indexes>') if extension == 'csv': self.response.headers['Content-Type'] = "text/csv" self.response.out.write('uid,name,updated_time,networkhash,value,nodebucket,nodevalue,edgebucket,edgevalue\n') for index in q: if len((index.get_nodevalues() or [])) == 0 and len((index.get_edgevalues() or [])) == 0: self.response.out.write('%s,%s,%s,%s,%s,%s,%s,%s,%s\n' % (index.uid, index.name, index.updated_time, index.networkhash, index.value, '', '', '', '')) for nodevalue in (index.get_nodevalues() or []): self.response.out.write('%s,%s,%s,%s,%s,%s,%s,%s,%s\n' % (index.uid, index.name, index.updated_time, index.networkhash, index.value, nodevalue[0], nodevalue[1], '', '')) for edgevalue in (index.get_edgevalues() or []): self.response.out.write('%s,%s,%s,%s,%s,%s,%s,%s,%s\n' % (index.uid, index.name, index.updated_time, index.networkhash, index.value, '', '', edgevalue[0], edgevalue[1])) if extension == 'xls': self.response.headers['Content-Type'] = "application/vnd.ms-excel" self.response.out.write('uid\tname\tupdated_time\tnetworkhash\tvalue\tnodebucket\tnodevalue\tedgebucket\tedgevalue\r\n') for index in q: if len((index.get_nodevalues() or [])) == 0 and len((index.get_edgevalues() or [])) == 0: self.response.out.write('%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n' % (index.uid, index.name, index.updated_time, index.networkhash, index.value, '', '', '', '')) for nodevalue in (index.get_nodevalues() or []): self.response.out.write('%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n' % (index.uid, index.name, index.updated_time, index.networkhash, index.value, nodevalue[0], nodevalue[0], '', '')) for edgevalue in (index.get_edgevalues() or []): self.response.out.write('%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n' % (index.uid, index.name, index.updated_time, index.networkhash, index.value, '', '', edgevalue[0], edgevalue[1])) else: self.response.out.write('Wrong format requested.')
def renderPageLogin(self, extension, mode='admin'): backend = self.request.get('backend', False) session = {} if backend: session['access_token'] = self.request.get('access_token', '') else: session = sessionmanager.getsession(self) if session: roles = session['roles'] if mode == 'admin' and not 'administrator' in roles: self.response.out.write("You are not an administrator for this site. Access denied.") return elif not 'technician' in roles: self.response.out.write("You are not a technician for this site. Access denied.") return else: self.redirect(fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self))) if extension in supported_extensions_login: if extension == 'docs': global serviceG global secret backend = self.request.get('backend', False) if backend: file_name = self.request.get('file_name', False) access_token = pickle.loads(base64.b64decode(self.request.get('google_access_token', ''))) serviceG = gdata.apps.service.AppsService(source=conf.GOOGLE_APP_NAME) serviceG.SetOAuthInputParameters(signature_method=gdata.auth.OAuthSignatureMethod.HMAC_SHA1, consumer_key=conf.GOOGLE_CONSUMER_KEY, consumer_secret=conf.GOOGLE_CONSUMER_SECRET) serviceG.current_token = access_token serviceG.SetOAuthToken(access_token) q = db.GqlQuery("SELECT * FROM Index") gspreadsheet = gdata.spreadsheet.service.SpreadsheetsService() gspreadsheet.SetOAuthToken(access_token) spreadsheet_id, worksheet_id = get_spreadsheet_by_name(gspreadsheet, file_name) index_worksheet_id = initialize_spreadsheet(gspreadsheet, spreadsheet_id, worksheet_id, q) populate_spreadsheet(gspreadsheet, spreadsheet_id, index_worksheet_id, q) else: scopes = ['https://docs.google.com/feeds/', 'https://spreadsheets.google.com/feeds/'] oauth_callback = fbutils.base_url(self) + mode + '/indexes.docs?code=' + self.request.get('code') autheticated = self.request.get('oauth_token', None) if not autheticated: serviceG = gdata.apps.service.AppsService(source=conf.GOOGLE_APP_NAME) serviceG.SetOAuthInputParameters(signature_method=gdata.auth.OAuthSignatureMethod.HMAC_SHA1, consumer_key=conf.GOOGLE_CONSUMER_KEY, consumer_secret=conf.GOOGLE_CONSUMER_SECRET) request_token = serviceG.FetchOAuthRequestToken(scopes=scopes, oauth_callback=oauth_callback) secret = request_token.secret serviceG.SetOAuthToken(request_token) google_auth_page_url = serviceG.GenerateOAuthAuthorizationURL() self.redirect(google_auth_page_url) else: oauth_token = gdata.auth.OAuthTokenFromUrl(self.request.uri) if oauth_token: oauth_token.secret = secret oauth_token.oauth_input_params = serviceG.GetOAuthInputParameters() serviceG.SetOAuthToken(oauth_token) oauth_verifier = self.request.get('oauth_verifier', default_value='') access_token = serviceG.UpgradeToOAuthAccessToken(oauth_verifier=oauth_verifier) if access_token: serviceG.current_token = access_token serviceG.SetOAuthToken(access_token) else: self.response.out.write("Error performing the OAuth authentication.") return else: self.response.out.write("Error performing the OAuth authentication.") return file_name = 'Computed indexes (%s)' % datetime.datetime.today() spreadsheet_url = create_spreadsheet(access_token, file_name) taskqueue.add(url='/' + mode + '/indexes.docs', params={'code': self.request.get('code', None), 'google_access_token': base64.b64encode(pickle.dumps(access_token)), 'file_name': file_name, 'backend': True, 'access_token': session['access_token']}, queue_name='gdocs-queue', method='POST', target='backend-indexes') self.redirect(spreadsheet_url)
def renderPage(self, mode="admin"): session = sessionmanager.getsession(self) if self.request.get("code", None) and session: roles = session["roles"] if mode == "admin" and not "administrator" in roles: self.response.out.write("You are not an administrator for this site. Access denied.") return elif not "technician" in roles: self.response.out.write("You are not a technician for this site. Access denied.") return code = self.request.get("code", None) uid = self.request.get("uid", None) users = None index = None if uid == None: upload_url = "/" + mode + "/viewindex?code=" + code users = [] q = db.GqlQuery("SELECT * FROM User") for user in q: users.append(user) else: if mode == "tech": upload_url = "/tech/saveindex?uid=" + uid + "&code=" + code else: upload_url = "/admin?code=" + code indexname = self.request.get("indexname", None) if indexname != "_new_": q = db.GqlQuery( "SELECT * FROM Index WHERE uid = :1 AND name = :2 ORDER BY updated_time DESC", uid, indexname ) index = q.fetch(1) if len(index) == 0: index = None else: index = index[0] else: index = None template_values = { "appId": conf.FBAPI_APP_ID, "token": session["access_token"], "app": session["appid"], "conf": conf, "me": session["me"], "roles": roles, "upload_url": upload_url, "mode": mode, "uid": uid, "users": users, "index": index, "isdesktop": session and session["isdesktop"] or False, "header": "", "code": code, } root = os.path.normpath(os.path.join(os.path.dirname(__file__), os.path.pardir)) self.response.out.write(template.render(os.path.join(root, "templates/_header.html"), template_values)) self.response.out.write( template.render(os.path.join(root, "admin/templates/vieweditindex.html"), template_values) ) self.response.out.write(template.render(os.path.join(root, "templates/_footer.html"), template_values)) else: self.redirect(fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self)))
def renderPage(self, extension, mode="admin"): backend = self.request.get("backend", False) session = {} if backend: session["access_token"] = self.request.get("access_token", "") else: session = sessionmanager.getsession(self) if session: roles = session["roles"] if mode == "admin" and not "administrator" in roles: self.response.out.write("You are not an administrator for this site. Access denied.") return elif not "technician" in roles: self.response.out.write("You are not a technician for this site. Access denied.") return else: self.redirect(fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self))) if extension in supported_extensions: q = db.GqlQuery("SELECT * FROM Network") if extension == "xml": self.response.headers["Content-Type"] = "text/xml" self.response.out.write('<networks count="%s">' % q.count()) for network in q: self.response.out.write( ' <network uid="%s" updated_time="%s" netowrkhash="%s">\n' % (network.uid, network.updated_time, network.networkhash) ) self.response.out.write(' <nodes count="%s">\n' % len(network.getnodes() or [])) for node in network.getnodes() or []: self.response.out.write(' <node id="%s" />\n' % node) self.response.out.write(" </nodes>\n") self.response.out.write(' <edges count="%s">\n' % len(network.getedges() or [])) for fromnode, tonode in network.getedges() or []: self.response.out.write(' <edge fromNodeId="%s" toNodeId="%s" />\n' % (fromnode, tonode)) self.response.out.write(" </edges>\n") self.response.out.write(' <league count="%s">\n' % len(network.getleague() or [])) for table in network.getleague() or []: self.response.out.write( ' <friend uid="%s" name="%s" degree="%s" closeness="%s" betweenness="%s"/>\n' % (table[0], table[1], table[2], table[3], table[4]) ) self.response.out.write(" </league>\n") self.response.out.write(" </network>\n\n") self.response.out.write("</networks>") if extension == "csv": self.response.headers["Content-Type"] = "text/csv" self.response.out.write( "uid,updated_time,networkhash,nodeid,fromnodeid,tonodeid,uid,name,degree,closeness,betweenness\n" ) for network in q: if ( len((network.getnodes() or [])) == 0 and len((network.getedges() or [])) == 0 and len((network.getleague() or [])) == 0 ): self.response.out.write( "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n" % (network.uid, network.updated_time, network.networkhash, "", "", "", "", "", "", "", "") ) for nodevalue in network.getnodes() or []: self.response.out.write( "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n" % ( network.uid, network.updated_time, network.networkhash, nodevalue, "", "", "", "", "", "", "", ) ) for edgevalue in network.getedges() or []: self.response.out.write( "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n" % ( network.uid, network.updated_time, network.networkhash, "", edgevalue[0], edgevalue[1], "", "", "", "", "", ) ) for table in network.getleague() or []: self.response.out.write( "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n" % ( network.uid, network.updated_time, network.networkhash, "", "", "", table[0], table[1], table[2], table[3], table[4], ) ) if extension == "xls": self.response.headers["Content-Type"] = "application/vnd.ms-excel" self.response.out.write( "uid\tupdated_time\tnetworkhash\tnodeid\tfromnodeid\ttonodeid\tuid,name\tdegree\tcloseness\tbetweenness\r\n" ) for network in q: if ( len((network.getnodes() or [])) == 0 and len((network.getedges() or [])) == 0 and len((network.getleague() or [])) == 0 ): self.response.out.write( "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n" % (network.uid, network.updated_time, network.networkhash, "", "", "", "", "", "", "", "") ) for nodevalue in network.getnodes() or []: self.response.out.write( "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n" % ( network.uid, network.updated_time, network.networkhash, nodevalue, "", "", "", "", "", "", "", ) ) for edgevalue in network.getedges() or []: self.response.out.write( "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n" % ( network.uid, network.updated_time, network.networkhash, "", edgevalue[0], edgevalue[1], "", "", "", "", "", ) ) for table in network.getleague() or []: self.response.out.write( "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n" % ( network.uid, network.updated_time, network.networkhash, "", "", "", table[0], table[1], table[2], table[3], table[4], ) ) else: self.response.out.write("Wrong format requested.")
def renderPageLogin(self, extension, mode="admin"): backend = self.request.get("backend", False) session = {} if backend: session["access_token"] = self.request.get("access_token", "") else: session = sessionmanager.getsession(self) if session: roles = session["roles"] if mode == "admin" and not "administrator" in roles: self.response.out.write("You are not an administrator for this site. Access denied.") return elif not "technician" in roles: self.response.out.write("You are not a technician for this site. Access denied.") return else: self.redirect(fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self))) if extension in supported_extensions_login: if extension == "docs": global serviceG global secret if backend: file_name = self.request.get("file_name", False) access_token = pickle.loads(base64.b64decode(self.request.get("google_access_token", ""))) serviceG = gdata.apps.service.AppsService(source=conf.GOOGLE_APP_NAME) serviceG.SetOAuthInputParameters( signature_method=gdata.auth.OAuthSignatureMethod.HMAC_SHA1, consumer_key=conf.GOOGLE_CONSUMER_KEY, consumer_secret=conf.GOOGLE_CONSUMER_SECRET, ) serviceG.current_token = access_token serviceG.SetOAuthToken(access_token) q = db.GqlQuery("SELECT * FROM Network") gspreadsheet = gdata.spreadsheet.service.SpreadsheetsService() gspreadsheet.SetOAuthToken(access_token) spreadsheet_id, worksheet_id = get_spreadsheet_by_name(gspreadsheet, file_name) nodes_worksheet_id, edges_worksheet_id, leagues_worksheet_id = initialize_spreadsheet( gspreadsheet, spreadsheet_id, worksheet_id, q ) populate_spreadsheet( gspreadsheet, spreadsheet_id, nodes_worksheet_id, edges_worksheet_id, leagues_worksheet_id, q ) else: scopes = ["https://docs.google.com/feeds/", "https://spreadsheets.google.com/feeds/"] oauth_callback = fbutils.base_url(self) + mode + "/networks.docs?code=" + self.request.get("code") autheticated = self.request.get("oauth_token", None) if not autheticated: serviceG = gdata.apps.service.AppsService(source=conf.GOOGLE_APP_NAME) serviceG.SetOAuthInputParameters( signature_method=gdata.auth.OAuthSignatureMethod.HMAC_SHA1, consumer_key=conf.GOOGLE_CONSUMER_KEY, consumer_secret=conf.GOOGLE_CONSUMER_SECRET, ) request_token = serviceG.FetchOAuthRequestToken(scopes=scopes, oauth_callback=oauth_callback) secret = request_token.secret serviceG.SetOAuthToken(request_token) google_auth_page_url = serviceG.GenerateOAuthAuthorizationURL() self.redirect(google_auth_page_url) else: oauth_token = gdata.auth.OAuthTokenFromUrl(self.request.uri) if oauth_token: oauth_token.secret = secret oauth_token.oauth_input_params = serviceG.GetOAuthInputParameters() serviceG.SetOAuthToken(oauth_token) oauth_verifier = self.request.get("oauth_verifier", default_value="") access_token = serviceG.UpgradeToOAuthAccessToken(oauth_verifier=oauth_verifier) if access_token: serviceG.current_token = access_token serviceG.SetOAuthToken(access_token) else: self.response.out.write("Error performing the OAuth authentication.") return else: self.response.out.write("Error performing the OAuth authentication.") return file_name = "Network informations (%s)" % datetime.datetime.today() spreadsheet_url = create_spreadsheet(access_token, file_name) taskqueue.add( url="/" + mode + "/networks.docs", params={ "code": self.request.get("code", None), "google_access_token": base64.b64encode(pickle.dumps(access_token)), "file_name": file_name, "backend": True, "access_token": session["access_token"], }, queue_name="gdocs-queue", method="POST", target="backend-indexes", ) self.redirect(spreadsheet_url)
def renderPage(self, extension, mode='admin'): backend = self.request.get('backend', False) session = {} if backend: session['access_token'] = self.request.get('access_token', '') else: session = sessionmanager.getsession(self) if session: roles = session['roles'] if mode == 'admin' and not 'administrator' in roles: self.response.out.write("You are not an administrator for this site. Access denied.") return elif not 'technician' in roles: self.response.out.write("You are not a technician for this site. Access denied.") return else: self.redirect(fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self))) if extension in supported_extensions: q = db.GqlQuery("SELECT * FROM Network") if extension == 'xml': self.response.headers['Content-Type'] = "text/xml" self.response.out.write('<networks count="%s">' % q.count()) for network in q: self.response.out.write(' <network uid="%s" updated_time="%s" netowrkhash="%s">\n' % (network.uid, network.updated_time, network.networkhash)) self.response.out.write(' <nodes count="%s">\n' % len(network.getnodes() or [])) for node in (network.getnodes() or []): self.response.out.write(' <node id="%s" />\n' % node) self.response.out.write(' </nodes>\n') self.response.out.write(' <edges count="%s">\n' % len(network.getedges() or [])) for fromnode, tonode in (network.getedges() or []): self.response.out.write(' <edge fromNodeId="%s" toNodeId="%s" />\n' % (fromnode, tonode)) self.response.out.write(' </edges>\n') self.response.out.write(' <league count="%s">\n' % len(network.getleague() or [])) for table in (network.getleague() or []): self.response.out.write(' <friend uid="%s" name="%s" degree="%s" closeness="%s" betweenness="%s"/>\n' % (table[0], table[1], table[2], table[3], table[4])) self.response.out.write(' </league>\n') self.response.out.write(' </network>\n\n') self.response.out.write('</networks>') if extension == 'csv': self.response.headers['Content-Type'] = "text/csv" self.response.out.write('uid,updated_time,networkhash,nodeid,fromnodeid,tonodeid,uid,name,degree,closeness,betweenness\n') for network in q: if len((network.getnodes() or [])) == 0 and len((network.getedges() or [])) == 0 and len((network.getleague() or [])) == 0: self.response.out.write('%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n' % (network.uid, network.updated_time, network.networkhash, '', '', '', '', '', '', '', '')) for nodevalue in (network.getnodes() or []): self.response.out.write('%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n' % (network.uid, network.updated_time, network.networkhash, nodevalue, '', '', '', '', '', '', '')) for edgevalue in (network.getedges() or []): self.response.out.write('%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n' % (network.uid, network.updated_time, network.networkhash, '', edgevalue[0], edgevalue[1], '', '', '', '', '')) for table in (network.getleague() or []): self.response.out.write('%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n' % (network.uid, network.updated_time, network.networkhash, '', '', '', table[0], table[1], table[2], table[3], table[4])) if extension == 'xls': self.response.headers['Content-Type'] = "application/vnd.ms-excel" self.response.out.write('uid\tupdated_time\tnetworkhash\tnodeid\tfromnodeid\ttonodeid\tuid,name\tdegree\tcloseness\tbetweenness\r\n') for network in q: if len((network.getnodes() or [])) == 0 and len((network.getedges() or [])) == 0 and len((network.getleague() or [])) == 0: self.response.out.write('%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n' % (network.uid, network.updated_time, network.networkhash, '', '', '', '', '', '', '', '')) for nodevalue in (network.getnodes() or []): self.response.out.write('%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n' % (network.uid, network.updated_time, network.networkhash, nodevalue, '', '', '', '', '', '', '')) for edgevalue in (network.getedges() or []): self.response.out.write('%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n' % (network.uid, network.updated_time, network.networkhash, '', edgevalue[0], edgevalue[1], '', '', '', '', '')) for table in (network.getleague() or []): self.response.out.write('%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n' % (network.uid, network.updated_time, network.networkhash, '', '', '', table[0], table[1], table[2], table[3], table[4])) else: self.response.out.write('Wrong format requested.')
def renderPage(self): session = sessionmanager.getsession( self, redirect_uri=fbutils.base_url(self) + 'opensesame/access') if session: SERVER_ADDRESS = ('127.0.0.1', 33333) template_values = { 'appId': conf.FBAPI_APP_ID, 'token': session['access_token'], 'app': session['appid'], 'conf': conf, 'me': session['me'], 'roles': session['roles'], 'isdesktop': session['isdesktop'], 'header': '' } root = os.path.normpath( os.path.join(os.path.dirname(__file__), os.path.pardir)) self.response.out.write( template.render(os.path.join(root, 'templates/_header.html'), template_values)) self.response.out.write('<header class="clearfix">') self.response.out.write( '<p id="picture" style="background-image: url(/static/images/macchie.jpg); background-size: 64px 64px"></p>' ) self.response.out.write( '<h1>Rorschach Test Platform authentication</h1>') self.response.out.write('</header>') self.response.out.write( '<section id="normalsection" class="clearfix">') self.response.out.write( '<h3>Associate OpenSesame with Rorschach Test Platform</h3>') self.response.out.write( '<p>In order to use the OpenSesame plugin, you need to authenticate with Facebook and give grants to the Rorschach Test Platform application.</p>' ) self.response.out.write( '<p>By clicking the button below you will create a temporary access token to be used by the OpenSesame plugin.<br/>' ) self.response.out.write( 'The access token created with this procedure will have a lifetime of two hours (as by Facebook standards) and so after two hours it will be automatically declared invalid.</p>' ) self.response.out.write( '<form action="http://%s:%s/" method="post" name="codeSubmit" id="codeSubmit">' % SERVER_ADDRESS) self.response.out.write( '<input type="hidden" id="code" name="code" value="' + self.request.get('code', None) + '" />') self.response.out.write( '<input type="hidden" id="access_token" name="access_token" value="' + session['access_token'] + '" />') self.response.out.write( '<p class="button"><a href="#" class="facebook-button" onclick="$(\'#codeSubmit\').submit();">' ) self.response.out.write( '<span class="plus">Save the access token</span></a></p>') self.response.out.write('</section>') self.response.out.write( template.render(os.path.join(root, 'templates/_footer.html'), template_values)) else: self.redirect( fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self) + 'opensesame/access'))
def renderPage(self, extension, mode='admin'): backend = self.request.get('backend', False) session = {} if backend: session['access_token'] = self.request.get('access_token', '') else: session = sessionmanager.getsession(self) if session: roles = session['roles'] if mode == 'admin' and not 'administrator' in roles: self.response.out.write( "You are not an administrator for this site. Access denied." ) return elif not 'technician' in roles: self.response.out.write( "You are not a technician for this site. Access denied.") return else: self.redirect( fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self))) if extension in supported_extensions: q = db.GqlQuery("SELECT * FROM Index") if extension == 'xml': self.response.headers['Content-Type'] = "text/xml" self.response.out.write('<indexes count="%s">\n' % q.count()) for index in q: self.response.out.write( ' <index uid="%s" name="%s" updated_time="%s" networkhash="%s">\n' % (index.uid, index.name, index.updated_time, index.networkhash)) self.response.out.write(' <value value="%s" />' % index.value) self.response.out.write(' <nodevalues count="%s">\n' % len(index.get_nodevalues() or [])) for nodevalue in (index.get_nodevalues() or []): self.response.out.write( ' <nodevalue bucket="%s" numnodes="%s" />\n' % (nodevalue[0], nodevalue[1])) self.response.out.write(' </nodevalues>\n') self.response.out.write(' <edgevalues count="%s">\n' % len(index.get_edgevalues() or [])) for edgevalue in (index.get_edgevalues() or []): self.response.out.write( ' <edgevalue bucket="%s" numnodes="%s" />\n' % (edgevalue[0], edgevalue[1])) self.response.out.write(' </edgevalues>\n') self.response.out.write(' </index>\n\n') self.response.out.write('</indexes>') if extension == 'csv': self.response.headers['Content-Type'] = "text/csv" self.response.out.write( 'uid,name,updated_time,networkhash,value,nodebucket,nodevalue,edgebucket,edgevalue\n' ) for index in q: if len((index.get_nodevalues() or [])) == 0 and len( (index.get_edgevalues() or [])) == 0: self.response.out.write( '%s,%s,%s,%s,%s,%s,%s,%s,%s\n' % (index.uid, index.name, index.updated_time, index.networkhash, index.value, '', '', '', '')) for nodevalue in (index.get_nodevalues() or []): self.response.out.write( '%s,%s,%s,%s,%s,%s,%s,%s,%s\n' % (index.uid, index.name, index.updated_time, index.networkhash, index.value, nodevalue[0], nodevalue[1], '', '')) for edgevalue in (index.get_edgevalues() or []): self.response.out.write( '%s,%s,%s,%s,%s,%s,%s,%s,%s\n' % (index.uid, index.name, index.updated_time, index.networkhash, index.value, '', '', edgevalue[0], edgevalue[1])) if extension == 'xls': self.response.headers['Content-Type'] = "application/vnd.ms-excel" self.response.out.write( 'uid\tname\tupdated_time\tnetworkhash\tvalue\tnodebucket\tnodevalue\tedgebucket\tedgevalue\r\n' ) for index in q: if len((index.get_nodevalues() or [])) == 0 and len( (index.get_edgevalues() or [])) == 0: self.response.out.write( '%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n' % (index.uid, index.name, index.updated_time, index.networkhash, index.value, '', '', '', '')) for nodevalue in (index.get_nodevalues() or []): self.response.out.write( '%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n' % (index.uid, index.name, index.updated_time, index.networkhash, index.value, nodevalue[0], nodevalue[0], '', '')) for edgevalue in (index.get_edgevalues() or []): self.response.out.write( '%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n' % (index.uid, index.name, index.updated_time, index.networkhash, index.value, '', '', edgevalue[0], edgevalue[1])) else: self.response.out.write('Wrong format requested.')
def renderPageLogin(self, extension, mode='admin'): backend = self.request.get('backend', False) session = {} if backend: session['access_token'] = self.request.get('access_token', '') else: session = sessionmanager.getsession(self) if session: roles = session['roles'] if mode == 'admin' and not 'administrator' in roles: self.response.out.write("You are not an administrator for this site. Access denied.") return elif not 'technician' in roles: self.response.out.write("You are not a technician for this site. Access denied.") return else: self.redirect(fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self))) if extension in supported_extensions_login: if extension == 'docs': global serviceG global secret if backend: file_name = self.request.get('file_name', False) access_token = pickle.loads(base64.b64decode(self.request.get('google_access_token', ''))) serviceG = gdata.apps.service.AppsService(source=conf.GOOGLE_APP_NAME) serviceG.SetOAuthInputParameters(signature_method=gdata.auth.OAuthSignatureMethod.HMAC_SHA1, consumer_key=conf.GOOGLE_CONSUMER_KEY, consumer_secret=conf.GOOGLE_CONSUMER_SECRET) serviceG.current_token = access_token serviceG.SetOAuthToken(access_token) q = db.GqlQuery("SELECT * FROM Network") gspreadsheet = gdata.spreadsheet.service.SpreadsheetsService() gspreadsheet.SetOAuthToken(access_token) spreadsheet_id, worksheet_id = get_spreadsheet_by_name(gspreadsheet, file_name) nodes_worksheet_id, edges_worksheet_id, leagues_worksheet_id = initialize_spreadsheet(gspreadsheet, spreadsheet_id, worksheet_id, q) populate_spreadsheet(gspreadsheet, spreadsheet_id, nodes_worksheet_id, edges_worksheet_id, leagues_worksheet_id, q) else: scopes = ['https://docs.google.com/feeds/', 'https://spreadsheets.google.com/feeds/'] oauth_callback = fbutils.base_url(self) + mode + '/networks.docs?code=' + self.request.get('code') autheticated = self.request.get('oauth_token', None) if not autheticated: serviceG = gdata.apps.service.AppsService(source=conf.GOOGLE_APP_NAME) serviceG.SetOAuthInputParameters(signature_method=gdata.auth.OAuthSignatureMethod.HMAC_SHA1, consumer_key=conf.GOOGLE_CONSUMER_KEY, consumer_secret=conf.GOOGLE_CONSUMER_SECRET) request_token = serviceG.FetchOAuthRequestToken(scopes=scopes, oauth_callback=oauth_callback) secret = request_token.secret serviceG.SetOAuthToken(request_token) google_auth_page_url = serviceG.GenerateOAuthAuthorizationURL() self.redirect(google_auth_page_url) else: oauth_token = gdata.auth.OAuthTokenFromUrl(self.request.uri) if oauth_token: oauth_token.secret = secret oauth_token.oauth_input_params = serviceG.GetOAuthInputParameters() serviceG.SetOAuthToken(oauth_token) oauth_verifier = self.request.get('oauth_verifier', default_value='') access_token = serviceG.UpgradeToOAuthAccessToken(oauth_verifier=oauth_verifier) if access_token: serviceG.current_token = access_token serviceG.SetOAuthToken(access_token) else: self.response.out.write("Error performing the OAuth authentication.") return else: self.response.out.write("Error performing the OAuth authentication.") return file_name = 'Network informations (%s)' % datetime.datetime.today() spreadsheet_url = create_spreadsheet(access_token, file_name) taskqueue.add(url='/' + mode + '/networks.docs', params={'code': self.request.get('code', None), 'google_access_token': base64.b64encode(pickle.dumps(access_token)), 'file_name': file_name, 'backend': True, 'access_token': session['access_token']}, queue_name='gdocs-queue', method='POST', target='backend-indexes') self.redirect(spreadsheet_url)
def renderPage(self): session = sessionmanager.getsession(self) if session: app_friends = fbutils.fql( "SELECT uid, name, is_app_user, pic_square " "FROM user " "WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND " " is_app_user = 1", session['access_token']) q = db.GqlQuery("SELECT * FROM User WHERE uid = :1", session['me']['id']) users = q.fetch(1) datefb = session['me']['updated_time'].replace("+0000", "").replace("T", " ") datefb = datetime.datetime.fromtimestamp( time.mktime(time.strptime(datefb, "%Y-%m-%d %H:%M:%S"))) if len(users) > 0: curuser = users[0] datedb = curuser.updated_time if datefb > datedb: curuser.first_name = session['me']['first_name'] curuser.last_name = session['me']['last_name'] curuser.link = session['me']['link'] if 'username' in session['me']: curuser.username = session['me']['username'] curuser.updated_time = datefb curuser.put() logging.info('User updated: ' + session['me']['id']) else: curuser = obj_user.User(uid = session['me']['id']) curuser.first_name = session['me']['first_name'] curuser.last_name = session['me']['last_name'] curuser.link = session['me']['link'] if 'username' in session['me']: curuser.username = session['me']['username'] curuser.updated_time = datefb curuser.put() logging.info('User added: ' + session['me']['id']) indexes = [] q = db.GqlQuery("SELECT * FROM Index " + "WHERE uid = :1 " + "ORDER BY updated_time DESC", session['me']['id']) for index in q: if not index.networkhash == None and \ not index.value == None and \ not index.name in indexes: indexes.append(index.name) tests = [] q = db.GqlQuery("SELECT * FROM Test") for test in q: if test.active and datetime.date.today() >= test.startdate and datetime.date.today() <= test.enddate: tests.append(test) template_values = { 'appId': conf.FBAPI_APP_ID, 'token': session['access_token'], 'app_friends': app_friends, 'app': session['appid'], 'conf': conf, 'me': session['me'], 'roles': session['roles'], 'computedindexes': indexes, 'numindexes': len(conf.INDEXES), 'tests': tests, 'isdesktop': session['isdesktop'], 'header': '', 'code': self.request.get('code') } root = os.path.normpath(os.path.join(os.path.dirname(__file__), os.path.pardir)) self.response.out.write(template.render(os.path.join(root, 'templates/_header.html'), template_values)) self.response.out.write(template.render(os.path.join(root, 'pages/templates/home.html'), template_values)) self.response.out.write(template.render(os.path.join(root, 'templates/_footer.html'), template_values)) else: self.response.out.write(''' <html><head> <script type="text/javascript"> <!-- var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-256445-3']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); // --> </script>''') self.response.out.write('<meta HTTP-EQUIV="REFRESH" content="0; url=' + fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self)) + '"></head><body></body></html>')
def renderPage(self, mode='admin'): session = sessionmanager.getsession(self) if session: roles = session['roles'] if mode == 'admin' and not 'administrator' in roles: self.response.out.write( "You are not an administrator for this site. Access denied.") return elif not 'technician' in roles: self.response.out.write( "You are not a technician for this site. Access denied.") return code = self.request.get('code', None) uid = self.request.get('uid', None) users = None network = None if uid == None: upload_url = '/' + mode + '/viewnetwork?code=' + code users = [] q = db.GqlQuery("SELECT * FROM User") for user in q: users.append(user) else: if mode == 'tech': upload_url = '/tech/savenetwork?uid=' + uid + '&code=' + code else: upload_url = '/admin?code=' + code if uid == "_new_": network = None else: q = db.GqlQuery("SELECT * FROM Network WHERE uid = :1", uid) network = q.fetch(1) if len(network) == 0: network = None else: network = network[0] template_values = { 'appId': conf.FBAPI_APP_ID, 'token': session['access_token'], 'app': session['appid'], 'conf': conf, 'me': session['me'], 'roles': roles, 'upload_url': upload_url, 'mode': mode, 'uid': uid, 'users': users, 'network': network, 'isdesktop': session['isdesktop'], 'header': '', 'code': code } root = os.path.normpath( os.path.join(os.path.dirname(__file__), os.path.pardir)) self.response.out.write( template.render(os.path.join(root, 'templates/_header.html'), template_values)) self.response.out.write( template.render( os.path.join(root, 'admin/templates/vieweditnetwork.html'), template_values)) self.response.out.write( template.render(os.path.join(root, 'templates/_footer.html'), template_values)) else: self.redirect( fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self)))
def renderPage(self): access_token = self.request.get('token', None) session = sessionmanager.getsession(self, access_token=access_token, redirect_uri=fbutils.base_url(self)+'opensesame/access') objreturn = {} objreturn['result'] = False objreturn['message'] = 'Wrong session' if session: indexes = {} for index in conf.INDEXES.keys(): indexes[index] = "<null>" q = db.GqlQuery("SELECT * FROM Index " + "WHERE uid = :1 " + "ORDER BY updated_time DESC", session['me']['id']) for index in q: if not index.networkhash == None and not index.value == None: indexes[index.name] = (conf.INDEX_TYPES[index.name]) % index.value SERVER_ADDRESS = ('127.0.0.1', 33333) reqired_indexes = [] try: reqired_indexes = eval(self.request.get('reqired_indexes')) except: pass template_values = { 'appId': conf.FBAPI_APP_ID, 'token': session['access_token'], 'app': session['appid'], 'conf': conf, 'me': session['me'], 'roles': session['roles'], 'isdesktop': session['isdesktop'], 'header': ''} root = os.path.normpath(os.path.join(os.path.dirname(__file__), os.path.pardir)) self.response.out.write(template.render(os.path.join(root, 'templates/_header.html'), template_values)) self.response.out.write('<header class="clearfix">') self.response.out.write('<p id="picture" style="background-image: url(/static/images/macchie.jpg); background-size: 64px 64px"></p>') self.response.out.write('<h1>Rorschach Test Platform index value retrieval for OpenSesame</h1>') self.response.out.write('</header>') self.response.out.write('<section id="normalsection" class="clearfix">') self.response.out.write('<h3>Index values to be submitted to the OpenSesame test</h3>') self.response.out.write('<p>The test you are about to take wants to download the values of some index computed on Rorschach Test Platform.</p>') self.response.out.write('<p>To proceed you have to verify that all needed indexes are computed for your profile, and then click on the "Save index values" button below.<br/> </p>') self.response.out.write('<form action="http://%s:%s/" method="post" name="valueSubmit" id="valueSubmit">' % SERVER_ADDRESS) self.response.out.write('<table width="800px" style="border: 1px solid black">') self.response.out.write('<thead><td style="padding: 5px"><strong>Index Name</strong></td><td style="padding: 5px"><strong>Computed value</strong></td><td style="padding: 5px"><strong>Action</strong></td></thead>') for cur_index in reqired_indexes: self.response.out.write('<tr><td id="' + cur_index + '_name" style="padding: 5px"><a href="/index/' + session['me']['id'] + '/' + cur_index + '" target="_blank">' + cur_index + '</a></td>') self.response.out.write('<td id="' + cur_index + '_value" style="padding: 5px">' + (indexes[cur_index] == "<null>" and "<null>" or str(indexes[cur_index])) + '</td>') self.response.out.write('<td><p class="button"><a href="#" class="facebook-button" id="' + cur_index + '_button">') self.response.out.write('<span class="plus">Compute</span></a></p></td></tr>') self.response.out.write('<input type="hidden" id="' + cur_index + '" name="' + cur_index + '" value="' + str(indexes[cur_index]) + '" />') self.response.out.write('<script type="text/javascript">\n') self.response.out.write('<!--\n') self.response.out.write('$(document).ready(function(){\n') self.response.out.write('$("#' + cur_index + '_button").click(function() { $.ajax({ type : "POST", url : "/computeprofileindex", dataType : "json", ') self.response.out.write('data: { id : "' + session['me']['id'] + '", access_token : "' + access_token + '", index : "' + cur_index + '" },') self.response.out.write('success: function(data) { if (data.error === true) { alert("Error computing index: ' + cur_index + '"); } else { ') self.response.out.write('if (data.value != "") { $("#' + cur_index + '_value").text(data.value); $("#' + cur_index + '").val(data.value); } ') self.response.out.write('else { alert("The computation has been sent background. Hit che compute button in a few minutes to get the computed value."); } } },') self.response.out.write('error: function(XMLHttpRequest, textStatus, errorThrown) { alert("Error computing index: ' + cur_index + '"); } }); ') self.response.out.write(' return false; }); });\n') self.response.out.write('// -->\n') self.response.out.write('</script>') self.response.out.write('</table>') self.response.out.write('</form><p><br/>') self.response.out.write('<p class="button"><a href="#" class="facebook-button" onclick="$(\'#valueSubmit\').submit();">') self.response.out.write('<span class="plus">Save index values</span></a></p>') self.response.out.write('</section>') self.response.out.write(template.render(os.path.join(root, 'templates/_footer.html'), template_values)) else: self.redirect(fbutils.oauth_login_url(self=self, next_url=fbutils.base_url(self)+'opensesame/access'))