예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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()
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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
예제 #7
0
    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)