def creep(self): try: if self.tokenE.get() == "": facebook.getToken() # in case the first time didn't work return self.graph = facebook.GraphAPI(self.tokenE.get()) try: self.profile = self.graph.get_object("me") friends = self.graph.get_object("me/friends")["data"] except Exception, e: m = "".join(["There was a problem connecting to facebook,", " please try again:\n\n %s"]) showinfo("Error", m % e) return self.people = sorted(friends, key=lambda k: k["name"].lower()) for person in self.people: name = person["name"] self.lbPeople.insert(END, name) me = dict(id=self.profile["id"], name="Myself") self.lbPeople.insert(0, "Myself") self.people.insert(0, me) # show the list of people self.pFrame.pack(fill=X)
def creep(self): try: if self.tokenE.get() == "": facebook.getToken() # in case the first time didn't work return logging.debug('creating graph') self.graph = facebook.GraphAPI(self.tokenE.get()) logging.debug('graph created') try: logging.debug('loading info') self.profile = self.graph.get_object('me') friends = self.graph.get_object('me/friends')['data'] subscribedto = self.graph.get_object('me/subscribedto')['data'] pages = self.graph.get_object('me/likes')['data'] logging.debug('friends/subscriptions/pages loaded') except Exception, e: m = ''.join([ 'There was a problem connecting to facebook,', ' please try again:\n\n %s' ]) showinfo("Error", m % e) return friends.extend(subscribedto) friends.extend(pages) self.people = sorted(friends, key=lambda k: k['name'].lower()) logging.debug('friends sorted') for person in self.people: name = person['name'] self.lbPeople.insert(END, name) logging.debug('names added') me = dict(id=self.profile['id'], name="Myself") self.lbPeople.insert(0, "Myself") self.people.insert(0, me) # show the list of people self.pFrame.pack(fill=X) logging.debug('frame packed')
def creep(self): try: if self.tokenE.get() == "": facebook.getToken() # in case the first time didn't work return logging.debug('creating graph') self.graph = facebook.GraphAPI(self.tokenE.get()) logging.debug('graph created') try: logging.debug('loading info') self.profile = self.graph.get_object('me') friends = self.graph.get_object('me/friends')['data'] subscribedto = self.graph.get_object('me/subscribedto')['data'] pages = self.graph.get_object('me/likes')['data'] logging.debug('friends/subscriptions/pages loaded') except Exception, e: m = ''.join(['There was a problem connecting to facebook,', ' please try again:\n\n %s']) showinfo("Error", m % e) return friends.extend(subscribedto) friends.extend(pages) self.people = sorted(friends, key=lambda k:k['name'].lower()) logging.debug('friends sorted') for person in self.people : name = person['name'] self.lbPeople.insert(END, name) logging.debug('names added') me = dict(id=self.profile['id'],name="Myself") self.lbPeople.insert(0, "Myself") self.people.insert(0,me) # show the list of people self.pFrame.pack(fill=X) logging.debug('frame packed')
def fblogin(self): try: logging.info("Redirecting user to browser to login.") facebook.getToken() except Exception, e: self.error(e)
def upload(): ## POST if request.method == 'POST': file = request.files['image'] if not request.form.get('song'): return "您沒有選擇歌曲!!" elif not request.form.get('Rate'): return "您沒有輸入達成率!!" elif not request.cookies.get('fbToken'): return "您尚未登入,無法上傳成績!!" elif not file: return "你沒有選擇檔案!!" elif not allowed_file(file.filename): return "檔案格式錯誤!!" else: try: ## 整理資訊 song = request.form.get('song') rate = request.form.get('Rate') fbToken = request.cookies.get('fbToken') fbUID = facebook.getUID(fbToken) PlayerID= lookupPlayer(fbUID)['PlayerID'] fileExt = '.'+getExt(file.filename) ## 未來再實做的功能 #remeber = request.form.get('remeber',False) except: return "您的Session已經過期,請重新登入" try: ## 產生暫存的檔名 temp_filename = "temp-"+str(random.randint(1,10000))+fileExt temp_fullpath = os.path.join(UPLOAD_FOLDER, temp_filename) file.save(temp_fullpath) ## 歸位--動態網頁用 ## 產生sha1 BLOCKSIZE = 65536 hasher = hashlib.sha1() with open(temp_fullpath,'rb') as afile: buf = afile.read(BLOCKSIZE) while len(buf) > 0: hasher.update(buf) buf = afile.read(BLOCKSIZE) sha1=hasher.hexdigest() fullpath = os.path.join(UPLOAD_FOLDER,sha1+fileExt) shutil.copy2(temp_fullpath,fullpath) ## 歸位--靜態網頁用 folder = os.path.join(UPLOAD_FOLDER, 'player-'+str(PlayerID)) if not os.path.exists(folder) : os.makedirs(folder) fullpath = os.path.join(folder,'song-'+song+fileExt) shutil.copy2(temp_fullpath,fullpath) ## 刪除暫存檔案 os.remove(temp_fullpath) except: return "存檔有問題,可能硬碟滿了,請通知管理員。" # return "upload Sucesfull file tempory as " + temp_filename +\ # " md5 is " + hasher.hexdigest() + " and Player is " + player try: insScore(PlayerID,song,sha1,fileExt,rate) except: return "資料庫有點毛病" return "存檔成功" ## GET METHOD else: code = request.args.get('code',False) if code: Res=facebook.getToken(request.base_url,code) if Res[0]: PlayerUID=facebook.getUID(Res[1]) PlayerInfo=lookupPlayer(PlayerUID) if PlayerInfo: resp = make_response(redirect(request.base_url)) #resp = make_response("寫入Cookie中......"+PlayerUID+PlayerInfo['CardName']) resp.set_cookie(key='fbToken',value=Res[1],max_age=int(Res[2]),\ secure=SERVER_WITH_HTTPS) resp.set_cookie(key='CardName',value=PlayerInfo['CardName'],max_age=int(Res[2]),\ secure=SERVER_WITH_HTTPS) return resp else: return "您似乎不是參賽者,如果有什麼誤會請回報你的FacenookID:"+PlayerUID else: return "登入失敗,請重試,錯誤訊息:"+Res[1] else: if request.cookies.get('fbToken'): fbToken=request.cookies.get('fbToken') CardName=request.cookies.get('CardName') songinfo = getSong() return render_template('upload.html',TEAMS=TEAMS,CardName=CardName,songs=songinfo) else: LoginURL=facebook.genGetCodeURL(request.base_url) CardName='您尚未登入,<a href=\"'+LoginURL+'\">使用facebook登入</a>' return CardName
def upload(): ## POST if request.method == 'POST': file = request.files['image'] if not facebook.getUID(request.cookies.get('fbToken')): return "session已過期" elif not lookupAdmin(facebook.getUID(request.cookies.get('fbToken'))): return "您不是管理員,滾!!" elif not request.form.get('song'): return "您沒有選擇歌曲!!" elif not request.form.get('Rate'): return "您沒有輸入達成率!!" elif not request.form.get('PlayerID'): return "您沒有選擇玩家!!" elif not file: return "你沒有選擇檔案!!" elif not allowed_file(file.filename): return "檔案格式錯誤!!" else: try: ## 整理資訊 song = request.form.get('song') rate = request.form.get('Rate') PlayerID= request.form.get('PlayerID') fileExt = '.'+getExt(file.filename) ## 未來再實做的功能 #remeber = request.form.get('remeber',False) except: return render_template('upload_msg.html',TEAMS=config.TEAMS,message="欄位輸入不完整") try: ## 產生暫存的檔名 temp_filename = "temp-"+str(random.randint(1,10000))+fileExt temp_fullpath = os.path.join(UPLOAD_FOLDER, temp_filename) file.save(temp_fullpath) ## 歸位--動態網頁用 ## 產生sha1 BLOCKSIZE = 65536 hasher = hashlib.sha1() with open(temp_fullpath,'rb') as afile: buf = afile.read(BLOCKSIZE) while len(buf) > 0: hasher.update(buf) buf = afile.read(BLOCKSIZE) sha1=hasher.hexdigest() fullpath = os.path.join(UPLOAD_FOLDER,sha1+fileExt) shutil.copy2(temp_fullpath,fullpath) ## 歸位--靜態網頁用 folder = os.path.join(UPLOAD_FOLDER, 'player-'+str(PlayerID)) if not os.path.exists(folder) : os.makedirs(folder) fullpath = os.path.join(folder,'song-'+song+fileExt) shutil.copy2(temp_fullpath,fullpath) ## 刪除暫存檔案 os.remove(temp_fullpath) except: return render_template('upload_msg.html',message="存檔有問題,可能硬碟滿了,請通知管理員。") # return "upload Sucesfull file tempory as " + temp_filename +\ # " md5 is " + hasher.hexdigest() + " and Player is " + player try: insScoreAdmin(PlayerID,song,sha1,fileExt,rate,facebook.getUID(request.cookies.get('fbToken'))) except: return render_template('upload_msg.html',message="資料庫有點毛病,請晚點再來試試看(圖片已經上傳成功)") return render_template('upload_msg.html',message='存檔成功,<a href="/upload">返回上傳介面</a>') ## GET METHOD else: code = request.args.get('code',False) if code: Res=facebook.getToken(request.base_url,code) if Res[0]: AdminUID=facebook.getUID(Res[1]) AdminInfo=lookupAdmin(AdminUID) if AdminInfo: resp = make_response(redirect(request.base_url)) #resp = make_response("寫入Cookie中......"+PlayerUID+PlayerInfo['CardName']) resp.set_cookie(key='fbToken',value=Res[1],max_age=int(Res[2]),\ secure=SERVER_WITH_HTTPS) resp.set_cookie(key='AdminName',value=AdminInfo['AdminName'],max_age=int(Res[2]),\ secure=SERVER_WITH_HTTPS) return resp else: return render_template('upload_msg.html',TEAMS=TEAMS,message="您似乎不是管理員,如果有什麼誤會請回報你的FacenookID:"+AdminUID) else: return render_template('upload_msg.html',TEAMS=TEAMS,message="登入失敗,請重試,錯誤訊息:"+Res[1]) else: if request.cookies.get('fbToken'): fbToken=request.cookies.get('fbToken') AdminName=request.cookies.get('AdminName') if lookupAdmin(facebook.getUID(fbToken)): songinfo = getSong() playerinfo = getPlayer() return render_template('upload_by_admin.html',TEAMS=TEAMS,AdminName=AdminName,songs=songinfo,players=playerinfo) else: if not facebook.getUID(fbToken): return render_template('upload_msg.html',TEAMS=TEAMS, \ message='Token過期,請重新登入:'+"<a href=\""+facebook.genGetCodeURL(request.base_url)+"\">使用facebook登入</a>") else: return render_template('upload_msg.html',TEAMS=TEAMS,message='Token有效,但是您不是管理員!!\ 您的FBID:'+facebook.getUID(fbToken)) else: LoginURL=facebook.genGetCodeURL(request.base_url) msg='上傳界面僅供管理員使用,如果您是管理員請<a href=\"'+LoginURL+'\">使用facebook登入</a>。<br />如果您不是管理員,請離開本頁面。' return render_template('upload_msg.html',TEAMS=TEAMS,message=msg)