def index(): """ rootページの表示. """ twitter_login = False twitter_id = '' user_icon = '' kiun_names = None kiun_values = None # Twitter認証済みチェック. if twitter_is_auth(): # 認証済. api = twitter_get_api() twitter_login = True twitter_user = api.me() twitter_id = twitter_user.screen_name user_icon = twitter_user.profile_image_url_https sql = Sql() sql.connect() param = sql.get_user_parameter(twitter_user.id) sql.close() kiun_names = param['kiun_names'] kiun_values = param['kiun_values'] # templates/index.html を使ってレンダリング. return render_template('index.html', twitter_login=twitter_login, twitter_id=twitter_id, user_icon=user_icon, kiun_names=kiun_names, kiun_values=kiun_values)
def settings_apply(): """ 機運設定適用. """ # POSTデータ取得. data = request.form.to_dict(flat=False) logger.debug(data['kiun_names']) # 設定更新. api = twitter_get_api() user = api.me() sql = Sql() sql.connect() param = sql.get_user_parameter(user.id) for i, name in enumerate(data['kiun_names']): # 機運名が変更された項目は機運ゲージを0にする. if name != param['kiun_names'][i]: param['kiun_values'][i] = 0 sql.update_user_parameter(user.id, data['kiun_names'], param['kiun_values']) sql.close() # rootページへ戻る. return redirect(configuration.ROOT_URL)
def initialize_user_parameter(twitter_user_id): """ ユーザーの設定情報を初期化. """ kiun_names = define.KIUN_DEFAULT_NAME kiun_values = [0, 0, 0, 0, 0] sql = Sql() sql.connect() sql.register_user_parameter(twitter_user_id, kiun_names, kiun_values) sql.close()
def kiun_update(): """ 機運更新. """ print 'kiun_update test!' + request.method if request.method == 'POST': data = request.form.to_dict(flat=False) values = [int(s) for s in data['values']] # 機運値の文字列リストを数値に変換. api = twitter_get_api() user = api.me() sql = Sql() sql.connect() param = sql.get_user_parameter(user.id) # 機運値をツイート. tweet_kiun_gauge(api, param['kiun_names'], values) # 機運がMAXになった項目をチェック. kiun_max_names = [] kiun_max_values_index = [] for i, val in enumerate(values): if val == 10: kiun_max_names.append(param['kiun_names'][i]) kiun_max_values_index.append(i) # 機運がMAXになった際のツイート. if len(kiun_max_names) >= 1: tweet_kiun_max(api, kiun_max_names) # 0に戻す. if len(kiun_max_values_index) >= 1: for max_i in kiun_max_values_index: values[max_i] = 0 # 機運値をデータベースに更新. sql.update_user_parameter(user.id, param['kiun_names'], values) sql.close() # templates/kiun_update.html を使ってレンダリング. return render_template('kiun_update.html', kiun_max_names=kiun_max_names)
def settings(): """ 機運設定. """ # 機運名一覧取得. api = twitter_get_api() user = api.me() sql = Sql() sql.connect() param = sql.get_user_parameter(user.id) sql.close() kiun_names = param['kiun_names'] # templates/settings.html を使ってレンダリング. return render_template('settings.html', kiun_names=kiun_names)
class pushMes(object): """docstring for pushMes""" def __init__(self, dbName, dbPassword, tableName, coinbasePassword, contractAddress, contractAbi): super(pushMes, self).__init__() self.sql = Sql("localhost", 3306, 'root', dbPassword, dbName) self.tableNeedRead = tableName self.databaseName = dbName self.geth = Ethereum(coinbasePassword, contractAddress, contractAbi) # self.dataLength= def getData(self): self.sql.connect() command = 'select * from %s' % self.tableNeedRead result = self.sql.extractSql(command) self.sql.close() datas = [] keys = [] keyJson = json.loads(self.getKeys()) # 获取字段 for item in keyJson: keys.append(keyJson.get(item)) #处理数据 for i, item in enumerate(result): data = {} for i, perValue in enumerate(item): data[keys[i]] = perValue # data[i]= datas.append(json.dumps(data, ensure_ascii=False)) return datas def getKeys(self): self.sql.connect() command = "select COLUMN_NAME from information_schema.COLUMNS where table_name = '%s' and table_schema = '%s'" % ( self.tableNeedRead, self.databaseName) result = self.sql.extractSql(command) self.sql.close() keys = {} for i, item in enumerate(result): keys[i] = item[0] # print(keys) return json.dumps(keys, ensure_ascii=False) def waitMined(self, index): print("第 " + str(index + 1) + " 条数据上传完成") self.uploadedLength = self.uploadedLength + 1 if self.uploadedLength == self.needUploadLength: print("全部上传完成\n从区块链获取数据库" + self.databaseName + "获取表" + self.tableNeedRead + "...") for data in self.getFromBlockChain(self.databaseName, self.tableNeedRead): print(data) def pushToBlockChain(self, needUploadDB, needUploadTable): print("获取本地数据库数据 ...") keys = self.getKeys() values = self.getData() self.needUploadLength = len(values) self.uploadedLength = 0 print("本地数据库获取完毕") if not self.geth.existSuchDatabase(needUploadDB): print("在区块链创建数据库 " + needUploadDB + " ...") #创建数据库 self.geth.createDatabase(needUploadDB) print("在区块链创建数据库 " + needUploadDB + " 完毕") else: print("数据库 " + needUploadDB + "在区块链已存在") if not self.geth.exsitSuchTable(needUploadDB, needUploadTable): print("在区块链中创建表 " + needUploadTable + " ...") self.geth.createTable(needUploadDB, needUploadTable, keys) print("在区块链创建表 " + needUploadTable + " 成功") else: print("区块链数据库 " + needUploadDB + " 中已存在表 " + needUploadTable + " 将删除旧表") self.geth.dropTable(needUploadDB, needUploadTable) print("准备上传数据 ...") self.geth.pushData(needUploadDB, needUploadTable, values, self.waitMined) def getFromBlockChain(self, needGetDB, needGetTable): if not geth.exsitSuchTable(needGetDB, needGetTable): print("区块中不存在这样的表") return else: length = geth.getTableLength(needGetDB, needGetTable) result = [] print(length) for index in range(length): result.append(geth.getTable(needGetDB, needGetTable, index)) return result
try: auth.get_access_token(verifier) except tweepy.TweepError, e: logger.error(str(e)) twitter_logout() return {} session['oauth_token'] = auth.access_token session['oauth_token_secret'] = auth.access_token_secret session['oauth_state'] = 'done' api = twitter_get_api() user = api.me() sql = Sql() sql.connect() # データベースのユーザー情報更新 sql.register_user(user.id, user.screen_name) # 新規の場合はユーザーパラメーター初期化. param = sql.get_user_parameter(user.id) if param is None: initialize_user_parameter(user.id) sql.close() # rootページへ戻る. return redirect(configuration.ROOT_URL)