示例#1
0
	def parseFromStrig(string):
		v = string.split(",")
		evento = Evento(v[0],v[1],v[2],Data.parseFromString(v[3]),Data.parseFromString(v[4]))
		evento.setDataCriacao(v[5])
		evento.setEstado(v[6])
		evento.setInteresses(v[7])
		return evento
	
		
		
		
    def get(self):
        Utils.reset(self)  # reset/clean standard variables

        # validate and assign parameters
        passwd = Utils.required(self, 'passwd')
        version = config.data_version['building']
        if self.request.get('version'):
            version = self.request.get('version')
        lang = config.server["defaultLanguage"]
        if self.request.get('lang'):
            lang = self.request.get('lang')

        # check password
        if self.error == '' and passwd != config.testing['passwd']:
            self.error = 'passwd is incorrect.'

        start_time = time.time()  # start count

        # logical variables
        buildings = None

        # if error, skip this
        if self.error == '':
            buildings = Data.getbuildings(self, lang, float(version))

        if self.error == '' and buildings is not None:
            self.respn = buildings.data

        # calculate time taken and return the result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
示例#3
0
 def __init__(self, nome, descricao, preco, codigo_evento):
     self.__nome = nome
     self.__descricao = descricao
     self.__preco = preco
     self.__data = Data.getSystemData()
     self.__codigo_evento = codigo_evento
     self.__codigo_atividade = Hash.generateHash()
示例#4
0
    def parseFromString(string):  ## ordem: nome,descricao,preco,data,codigo

        v = string.split(",")
        atividade = Atividade(v[0], v[1], v[2], Data.parseFromDateString(v[3]))
        atividade.setCodigoAtividade(v[4])
        atividade.setCodigoEvento(v[5])
        return atividade
示例#5
0
def parse_csv(path: str, encoding="windows-1252"):
    _transactions = []
    _offset = 8
    with open(path, encoding=encoding, newline="") as csv_file:
        _reader = reader(csv_file, delimiter=";", quotechar='"')
        for _row in _reader:
            _line = _reader.line_num
            if _line == 1:
                _account_number = _row[1]
            elif _line == 2:
                _account_type = _row[1]
            elif _line == 3:
                _account_currency = _row[1]
            elif _line == 4:
                _account_balance_date = parse_date(_row[1])
            elif _line == 5:
                _account_balance_euros = parse_amount(_row[1])
            elif _line == 6:
                _account_balance_francs = parse_amount(_row[1])
            elif _line > _offset:
                _transactions.append(
                    Transaction(date=parse_date(_row[0]),
                                memo=_row[1],
                                amount=parse_amount(_row[2]),
                                amount_francs=parse_amount(_row[3])))
    _account = Account(number=_account_number,
                       type=_account_type,
                       currency=_account_currency,
                       balance_date=_account_balance_date,
                       balance=_account_balance_euros,
                       balance_francs=_account_balance_francs)
    _data = Data(account=_account, transactions=_transactions)
    return _data
示例#6
0
    def get(self):
        Utils.reset(self)                                                        # reset/clean standard variables

        # validate and assign parameters
        passwd = Utils.required(self, 'passwd')
        lang = Utils.required(self, 'lang')
        version = self.request.get('version')

        if version is None or version == '':
            version = config.dictionary['version']

        # check password
        if self.error == '' and passwd != config.testing['passwd']:
            self.error = 'passwd is incorrect.'

        start_time = time.time()                                                # start count

        # if error, skip this
        if self.error == '':
            data = Data.gettransui(self, float(version))
            if data is not None:
                try:
                    self.respn = json.dumps(data.as_obj[lang])
                except KeyError:
                    self.error = 'UI Text for give language was not found!'

        # calculate time taken and return the result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
    def get(self):
        Utils.reset(self)  # reset/clean standard variables

        # validate and assign parameters
        passwd = Utils.required(self, 'passwd')
        version = self.request.get('version')
        if version is None or version == '':
            version = config.dictionary['version']

        # check password
        if self.error == '' and passwd != config.testing['passwd']:
            self.error = 'passwd is incorrect.'

        start_time = time.time()  # start count

        # if error, skip this
        if self.error == '':
            data = Data.gettransui(self, float(version))
            if data is not None:
                self.respn = '['
                for lang in data.as_obj:
                    self.respn += '{"code":"' + lang + '", "lang":"' + data.as_obj[
                        lang]['language.name'] + '"},'
                self.respn = self.respn.rstrip(',') + ']'

        # calculate time taken and return the result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
    def get(self):
        Utils.reset(self)  # reset/clean standard variables
        self.game = 'pro7'
        namespace_manager.set_namespace(self.game)

        # validate and assign parameters
        passwd = Utils.required(self, 'passwd')
        type = Utils.required(self, 'type')
        version = Utils.required(self, 'version')
        data = Utils.required(self, 'data')

        # required password to process this action
        if self.error == '' and passwd != config.testing['passwd']:
            self.error = 'passwd is incorrect.'

        start_time = time.time()  # start count

        # set default parameter
        idata = None

        # if any error, skip this
        if self.error == '':
            idata = Data.getData(
                self, type,
                float(version))  # get data from memcache or datastore

        if idata is None:  # if no data was found
            idata = Data.newData(self)  # create a new one
            idata.type = type  # assign type
            idata.version = float(version)  # assign version
            self.error = ''  # clean error

        # if any error or idata is none, then skip to the end
        if self.error == '' and idata is not None:
            idata.data = data  # assign lastest deployed data
            if Data.setData(self,
                            idata):  # put or update in database and memcache
                self.respn = '"Deploy successfully!"'  # tell user that his request is success
            else:  # or
                self.error = 'Deploy failed - couldn\'t update database!'  # tell him that his required is failed

        # calculate time taken and return the result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
示例#9
0
	def __init__(self,nome,descricao,usuario,data_inicio,data_fim):
		self.__nome = nome
		self.__descricao = descricao
		self.__usuario = usuario
		self.__codigo = Hash.generateHash()
		self.__data_inicio = data_inicio
		self.__data_fim = data_fim
		self.__data_criacao = Data.getSystemData()
		self.__estado_atual = 1
		self.__interesses ["None"]
    def get(self):
        Utils.reset(self)

        lang = "en"
        item = Utils.required(self, 'item')
        data = Data.getDataAsObj(self, item,
                                 config.data_version['racewinnings'])

        if data is not None:
            self.respn += '"' + item + '":' + data.data + ','
        else:
            data = Data.getData(self, item, vers1ion)
        if data is not None:
            self.respn += '"' + item + '":' + data.data + ','

        self.respn = self.respn.rstrip(',') + '}'
        # calculate time taken and return the result
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, 1))
示例#11
0
    def get(self):
        Utils.reset(self)														# reset/clean standard variables
        # validate and assign parameters
        passwd = Utils.required(self, 'passwd')
        uuid = Utils.required(self, 'uuid')
        guid = self.request.get('guid')

        if self.error == '' and passwd != config.testing['passwd']:                	# if password is incorrect
            self.error = 'passwd is incorrect.'                                    	# inform user via error message

        start_time = time.time()                                                # start count

        player = None
        recentplayerlist = None

        # if error, skip this
        if self.error == '':
            player = Player.getplayer(self, uuid)								# get player state from Player helper class, specified by uuid

        if self.error == '' and player is not None and guid != '':
            if guid != player.state_obj['guid']:
                player = None
                self.error = config.error_message['dup_login']

        if self.error == '' and player is not None:												# if have some data returned
            recentplayerlist = Data.GetRecentPlayerList(self)

        if self.error == '' and recentplayerlist is not None:
            _range = config.recentplayer['maxlist']
            if _range > len(recentplayerlist.obj):
                _range = len(recentplayerlist.obj)

            self.respn = '['
            if _range > 0:
                _size = config.recentplayer['numlist'];
                if _range < _size:
                    _size = _range
                random = Utils.GetRandomOfNumberInArray(self, _size, _range)
                for i in random:
                    recentplayer = recentplayerlist.obj[i]
                    if recentplayer['uuid'] != player.uuid:
                        self.respn += '{"fbid":"'+recentplayer['fbid']+'",'
                        self.respn += '"uuid":"'+recentplayer['uuid']+'",'
                        self.respn += '"name":"'+recentplayer['name']+'",'
                        self.respn += '"image":"'+recentplayer['image']+'",'
                        self.respn += '"total_wins":'+str(recentplayer['total_wins'])+','
                        self.respn += '"updated":'+str(recentplayer['updated'])+'},'
            self.respn = self.respn.rstrip(',') + ']'

        # calculate time taken and return result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
示例#12
0
    def calculate(self, events, events2, laptime, laptime2, win_prize,
                  lose_prize):
        # calculate score by linking replay times Race Winnings Data

        racewinnings = Data.getDataAsObj(
            self, 'racewinnings_en', config.data_version['racewinnings']).obj
        if racewinnings is None:
            logging.warning(
                'cannot get real racewinnings from backend - using default data'
            )
            racewinnings = Score.GetDefaultRaceWinnings()

        if racewinnings is not None:
            logging.debug("racewinnings: " + json.dumps(racewinnings))

        prize_winner = win_prize if win_prize else 1500
        prize_looser = lose_prize if lose_prize else 375

        logging.debug('calculating win prize with ' + str(prize_winner) +
                      ' and lose prize with ' + str(prize_looser))
        scorings = [{
            'player_events': json.loads(events),
            'prizes': {},
            'total': 0.0
        }, {
            'player_events': json.loads(events2),
            'prizes': {},
            'total': 0.0
        }]

        scorings[0]['prize'] = scorings[0]['total'] = prize_winner if (
            laptime < laptime2) else prize_looser
        scorings[1]['prize'] = scorings[1]['total'] = prize_winner if (
            laptime2 < laptime) else prize_looser

        # initialize all scores to zero
        for _player in scorings:
            for _event_type in _player['player_events']:
                _player['prizes'][_event_type] = 0.0

        logging.debug('Calculating score with ' + json.dumps(scorings))

        for _player in scorings:
            for _event_type in _player['player_events']:
                for _event in _player['player_events'][_event_type]:  #floats
                    for _threshold in racewinnings:
                        if abs(_event) < _threshold['timing']:
                            _player['prizes'][_event_type] += int(
                                _player['prize'] * _threshold[_event_type])
                            _player['total'] += int(_player['prize'] *
                                                    _threshold[_event_type])

        return scorings
    def get(self):
        Utils.reset(self)
        uuid = Utils.required(self, 'uuid')
        version = config.data_version['building']
        if self.request.get('version'):
            version = self.request.get('version')
        lang = config.server["defaultLanguage"]
        if self.request.get('lang'):
            lang = self.request.get('lang')
        track = 'track.1'
        if self.request.get('track'):
            lang = self.request.get('track')
        score = 0
        if self.request.get('score'):
            lang = self.request.get('score')

        uuid = self.request.get('uuid')

        start_time = time.time()
        # find the right track in buildings and add the score total to it for collection

        player = Player.getplayer(self, uuid)

        # get all buildings types
        buildings = Data.getbuildings(self, lang, version)

        # get player buildings
        mybuildings = Building.getmybuildings(self, uuid)

        #find the building with the track id and give it cash
        if buildings is not None and mybuildings is not None:
            self.respn += '"building":['
            for mybuilding in mybuildings:
                _upd = False
                # for example:  "itid": "track.1",
                if mybuilding.itid == track:
                    mybuilding.amount += score
                    Building.setmybuilding(self, mybuilding)
                self.respn = Building.compose_mybuilding(
                    self.respn, mybuilding)
            self.respn = self.respn.rstrip(',') + '],'

        if self.error == '':
            self.respn = '{"state":' + player.state + ', "building":['
            self.respn = Building.compose_mybuilding(self.respn, mybuilding)
            self.respn = self.respn.rstrip(',') + ']'
            self.respn += '}'

        # calculate time taken and return the result
        time_taken = time.time() - start_time

        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
def load_models(cursor):

    print("Loading data..")
    for row in cursor.execute('SELECT * FROM papers'):
        paper = Paper(row[0], row[1], row[2], row[3], row[4], row[5], row[6])
        Data.add_paper(paper)

    for row in cursor.execute('SELECT * FROM authors'):
        # create new author with id and name
        if row[1] != 'None':
            author = Author(row[0], row[1])
            Data.add_author(author)

    for row in cursor.execute('SELECT * FROM paper_authors'):
        if row[1] in Data.papers and row[2] in Data.authors:
            Data.papers[row[1]].add_author(row[2])
            Data.authors[row[2]].add_paper(row[1])

    for key, paper in Data.papers.items():
        for author in paper.authors:
            if author in Data.authors:
                Data.authors[author].add_co_author(paper.authors)
    print("Loaded data")
示例#15
0
文件: Task.py 项目: tthdvd/edaqPiWeb
    def insertMeasurements(self, measurements):
        tz = pytz.timezone('Europe/Budapest')
        with self.conn:
            sql = """INSERT INTO data(
            task_id,
            first_measurement,
            second_measurement,
            third_measurement,
            created_at) VALUES(?,?,?,?,?) """
            values = (self.id, measurements[0], measurements[1],
                      measurements[2], datetime.datetime.now())
            cur = self.conn.cursor()
            cur.execute(sql, values)

        return Data(cur.lastrowid)
示例#16
0
def doPipe(analysisParameters, isIndividual=False):
    print("doPipe()")
    global USER_ANALYSIS
    global USER_INPUT

    #Store the data
    user = Data(analysisParameters = analysisParameters, file = USER_INPUT)
    user.analyseData()
    user.cleanPrediction()

    # USER
    if not isIndividual:
        user.deleteData()

    # user.deleteData()
    USER_ANALYSIS.append(user)

    print("END doPipe()")
    return user
    def get(self):
        Utils.reset(self)  # reset/clean standard variables

        # validate and assign parameters
        passwd = Utils.required(self, 'passwd')
        version = config.data_version['research']
        if self.request.get('version'):
            version = self.request.get('version')
        lang = config.server["defaultLanguage"]
        if self.request.get('lang'):
            lang = self.request.get('lang')

        # check password
        if self.error == '' and passwd != config.testing['passwd']:
            self.error = 'passwd is incorrect.'

        start_time = time.time()  # start count

        # logical variables
        researches = None

        # if error, skip this
        if self.error == '':
            researches = Data.getresearches(self, lang, float(version))

        if self.error == '' and researches is not None:
            self.respn = '['
            for research in researches.as_obj:
                logging.info(research)
                self.respn += json.dumps(researches.as_obj[research][0]) + ','
            self.respn = self.respn.rstrip(',') + ']'

        # calculate time taken and return the result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
示例#18
0
    def get(self):
        Utils.reset(self)  # reset/clean standard variables

        # validate and assign parameters
        passwd = Utils.required(self, 'passwd')
        version = config.data_version['building']
        if self.request.get('version'):
            version = self.request.get('version')
        lang = config.server["defaultLanguage"]
        if self.request.get('lang'):
            lang = self.request.get('lang')
        uuid = Utils.required(self, 'uuid')
        guid = self.request.get('guid')

        # check password
        if self.error == '' and passwd != config.testing['passwd']:
            self.error = 'passwd is incorrect.'

        start_time = time.time()  # start count

        # logical variables
        player = None
        buildings = None
        mybuildings = None

        # if error, skip this
        if self.error == '':
            player = Player.getplayer(self, uuid)

        if self.error == '' and player is not None and guid != '':
            if guid != player.state_obj['guid']:
                player = None
                self.error = config.error_message['dup_login']

        if self.error == '' and player is not None:
            buildings = Data.getbuildings(self, lang, version)

        if self.error == '' and buildings is not None:
            mybuildings = Building.getmybuildings(self, uuid)

        if self.error == '' and mybuildings is not None:
            self.respn = '['
            for mybuilding in mybuildings:
                # update building status, determine production
                _upd = False
                if mybuilding.status == Building.BuildingStatus.PENDING:
                    if mybuilding.timestamp + (
                            buildings.as_obj[mybuilding.itid][
                                mybuilding.level - 1]['build_time'] *
                            60) <= start_time:
                        mybuilding.timestamp = int(start_time)
                        mybuilding.status = Building.BuildingStatus.DELIVERED
                        _upd = True
                elif mybuilding.status == Building.BuildingStatus.DELIVERED:
                    mybuilding.status = Building.BuildingStatus.OWNED
                    _upd = True
                if _upd is True:
                    Building.setmybuilding(self, mybuilding)
                self.respn = Building.compose_mybuilding(
                    self.respn, mybuilding)
            self.respn = self.respn.rstrip(',') + ']'

            # update timestamp for player
            player.state_obj['updated'] = start_time
            Player.setplayer(self, player)

        # calculate time taken and return the result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
示例#19
0
    def get(self):
        Utils.reset(self)														# reset/clean standard variables

        # validate and assign parameters
        passwd = Utils.required(self, 'passwd')
        version = config.data_version['building']
        if self.request.get('version'):
            version = self.request.get('version')
        lang = config.server["defaultLanguage"]
        if self.request.get('lang'):
            lang = self.request.get('lang')
        uuid = Utils.required(self, 'uuid')
        guid = self.request.get('guid')
        inid = Utils.required(self, 'inid')

        # check password
        if self.error == '' and passwd != config.testing['passwd']:
            self.error = 'passwd is incorrect.'

        start_time = time.time()												# start count

        # logical variables
        player = None
        buildings = None
        building = None
        mybuilding = None

        # if error, skip this
        if self.error == '':
            player = Player.getplayer(self, uuid)

        if self.error == '' and player is not None and guid != '':
            if guid != player.state_obj['guid']:
                player = None
                self.error = config.error_message['dup_login']

        if self.error == '' and player is not None:
            buildings = Data.getbuildings(self, lang, float(version))

        if self.error == '' and buildings is not None:
            mybuilding = Building.getmybuilding(self, uuid, inid)

        if self.error == '' and mybuilding is not None:
            if mybuilding.status != Building.BuildingStatus.PENDING:
                try:
                    if len(buildings.as_obj[mybuilding.itid]) > mybuilding.level:
                        building = buildings.as_obj[mybuilding.itid][mybuilding.level]
                    else:
                        self.error = 'Level '+str(mybuilding.level+1)+' of building='+mybuilding.itid+' does not exist!'
                except KeyError:
                    self.error = 'Building='+mybuilding.itid+' does not exist!'
            else:
                self.respn = '{"warning":"Building='+inid+' still under construction, cannot upgrade at the moment!"}'

        if self.error == '' and self.respn == '' and building is not None:
            self.respn = str(building['cost'])
            if player.state_obj['cash'] >= building['cost']:
                player.state_obj['cash'] -= building['cost']
                # update timestamp for player
                player.state_obj['updated'] = start_time
                if Player.setplayer(self, player):
                    mybuilding.itid = building['id']
                    mybuilding.status = Building.BuildingStatus.PENDING
                    mybuilding.level = building['level']
                    mybuilding.timestamp = int(start_time)
                    Building.setmybuilding(self, mybuilding)
                    self.respn = '{"state":'+player.state+','
                    self.respn += '"building":['
                    self.respn = Building.compose_mybuilding(self.respn, mybuilding)
                    self.respn = self.respn.rstrip(',') + ']'
                    self.respn += '}'
            else:
                self.respn = '{"warning":"not enough cash!"}'



        # calculate time taken and return the result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
示例#20
0
    def get(self):

        Utils.reset(self)  # reset/clean standard variables

        # validate and assign parameters
        passwd = Utils.required(self, 'passwd')

        uuid = self.request.get('uuid')
        guid = self.request.get('guid')
        fbid = self.request.get('fbid')
        self.game = self.request.get('game') or ''

        version = config.data_version['building']

        token = self.request.get('token') or ''
        lang = self.request.get('lang') or config.server["defaultLanguage"]

        name = self.request.get('name') or ''

        image = 'Textures/profile-pic.png'
        if fbid != '':
            image = 'https://graph.facebook.com/' + fbid + '/picture?width=200&height=200'

        # TODO : Get defaults from Data
        gold = 10
        cash = 50000
        total_wins = 0
        total_races = 0
        advice_checklist = ''

        player = None
        # defaultitems = None

        if self.error == '' and passwd != config.testing[
                'passwd']:  # if password is incorrect
            self.error = 'passwd is incorrect.'  # inform user via error message

        start_time = time.time()  # start count

        Utils.LogRequest(self)

        # if error, skip this
        if self.error == '':
            if fbid != '':
                player = Player.getplayerByFbid(self, fbid)

            if player is None and uuid != '':
                player = Player.getplayer(self,
                                          uuid)  # get player from Player model
                # class helper, specified by uuid

            # TODO : Only get defaultItems if needed, ie a new player
            defaultitems = Data.getDataAsObj(
                self, 'defaultitems', config.data_version['defaultitems'])
            if defaultitems is not None:

                if player is None:  # if no player data
                    # returned or doesn't exist
                    ################################################################################################
                    ## Create new player data
                    player = Player(parent=db.Key.from_path(
                        'Player', config.db['playerdb_name'])
                                    )  # create a new player state data
                    uuid = Utils.genanyid(self, 'u')
                    #if fbid == '':
                    #    fbid = uuid
                    player.uuid = uuid  # assign uuid
                    player.fbid = fbid
                    # and assign all player info and state
                    player.info_obj = {
                        'uuid': player.uuid,
                        'fbid': player.fbid,
                        'token': token,
                        'name': 'Guest ' + str(random.randint(1000, 9999)),
                        'image': image,
                        'lang': lang
                    }
                    player.state_obj = {
                        'guid': guid,
                        'cash': cash,
                        'gold': gold,
                        'current_car': 'xxx',
                        'total_wins': total_wins,
                        'total_races': total_races,
                        'advice_checklist': advice_checklist,
                        'updated': start_time
                    }

                    logging.debug("New Player Created")

                    #################################################################################################
                    ## Init default item for new player
                    buildings = Data.getbuildings(self, lang, float(version))
                    cars = Data.getcars(self, lang, float(version))
                    upgrades = Data.getupgrades(self, lang, float(version))

                    if buildings is not None and cars is not None and upgrades is not None:
                        logging.debug("building default stuff")
                        for item in defaultitems.obj:
                            if item['type'] == 'state':
                                player.state_obj[item['id']] = item['value']
                            elif item['type'] == 'building':
                                try:
                                    building = buildings.as_obj[item['id']][0]
                                    if building is not None:
                                        new_building = Building.newbuilding(
                                            self)
                                        new_building.uuid = player.uuid
                                        new_building.itid = item['id']
                                        new_building.inid = Utils.genanyid(
                                            self, 'b')
                                        new_building.level = building['level']
                                        new_building.status = Building.BuildingStatus.DELIVERED
                                        new_building.location = item['value']
                                        new_building.amount = 0
                                        new_building.timestamp = int(
                                            start_time)
                                        Building.setmybuilding(
                                            self, new_building)
                                except KeyError:
                                    logging.warning('KeyError, key not found!')

                            elif item['type'] == 'car' and cars is not None:
                                type = ''
                                car = None
                                for _car in cars.as_obj:
                                    if _car['id'] == item['id']:
                                        car = _car
                                        break
                                mycar = Car.create(self, player.uuid)
                                mycar.data_obj['info'] = {'crid': car['id']}
                                mycar.data_obj['upgrades'] = []
                                mycar.data_obj['equip'] = {}
                                player.state_obj['current_car'] = mycar.cuid
                                default_upgrades = car[
                                    'default_upgrades'].replace(' ',
                                                                '').split(',')
                                for default_upgrade in default_upgrades:
                                    mycar.data_obj['upgrades'].append(
                                        default_upgrade)

                                    for _type in upgrades.as_obj:
                                        try:
                                            mycar.data_obj['equip'][type]
                                        except KeyError:
                                            for upgrade in upgrades.as_obj[
                                                    _type]:
                                                if upgrade[
                                                        'id'] == default_upgrade:
                                                    mycar.data_obj['equip'][
                                                        _type] = default_upgrade
                                                    break
                                                    break
                                Car.update(self, mycar)

                        else:
                            logging.warning("cant build default stuff")

                else:  # but if player does exist
                    #####################################################################################################################
                    ## Found existing user
                    uuid = player.uuid
                    if token:  # if token is provided from
                        # apple
                        player.state_obj[
                            'token'] = token  # assign token to player state
                    if fbid != '':
                        player.fbid = fbid
                        player.info_obj['fbid'] = fbid
                        player.info_obj['image'] = image  # assign image url
                    if name != '':
                        player.info_obj['name'] = name  # assign name
                    try:
                        updated = player.state_obj['updated']
                    except KeyError:
                        player.state_obj['updated'] = start_time

                    if self.request.get('lang'):
                        player.info_obj['lang'] = lang

                    # Additional things that have been added and neeed checking for old players
                    # TODO : Remove try catch, or see performance impact in Python
                    try:
                        if guid:
                            player.state_obj['guid'] = guid
                    except KeyError:
                        player.state_obj['guid'] = ''

                    # try .. cash and assign new property
                    try:
                        cash = player.state_obj['cash']
                    except KeyError:
                        player.state_obj['cash'] = cash

                    try:
                        total_wins = player.state_obj['total_wins']
                    except KeyError:
                        player.state_obj['total_wins'] = total_wins
                    try:
                        advice_checklist = player.state_obj['advice_checklist']
                    except KeyError:
                        player.state_obj['advice_checklist'] = advice_checklist

                if Player.setplayer(self, player):
                    # then obviously, no error
                    # compose JSON for frontend response
                    type = ''
                    for item in config.playerdata:
                        type += item + ','
                    type = type.rstrip(',')
                    self.respn = '{"uuid":"' + uuid + '",'
                    types = type.split(',')
                    for item in types:
                        if item == 'info':
                            self.respn += '"info":' + player.info + ','
                        elif item == 'state':
                            self.respn += '"state":' + player.state + ','
                        elif item == 'building':
                            buildings = Data.getbuildings(self, lang, version)
                            mybuildings = Building.getmybuildings(self, uuid)
                            if buildings is not None and mybuildings is not None:
                                self.respn += '"building":['
                                # loop through my buildings to find out which need their pending status updating
                                for new_building in mybuildings:
                                    # update building status, determine production
                                    _upd = False
                                    if new_building.status == Building.BuildingStatus.PENDING:
                                        if new_building.timestamp + (
                                                buildings.as_obj[
                                                    new_building.itid][
                                                        new_building.level - 1]
                                            ['build_time'] * 60) <= start_time:
                                            new_building.timestamp = int(
                                                start_time)
                                            new_building.status = Building.BuildingStatus.DELIVERED
                                            _upd = True
                                    elif new_building.status == Building.BuildingStatus.DELIVERED:
                                        new_building.status = Building.BuildingStatus.OWNED
                                        _upd = True
                                    if _upd is True:
                                        Building.setmybuilding(
                                            self, new_building)
                                    self.respn = Building.compose_mybuilding(
                                        self.respn, new_building)
                                self.respn = self.respn.rstrip(',') + '],'
                        elif item == 'car':
                            mycars = Car.list(self, player.uuid)
                            self.respn += '"car":['
                            for _car in mycars:
                                self.respn += Car.compose_mycar('', _car) + ','
                            self.respn = self.respn.rstrip(',') + '],'
                        elif item == 'challenge':
                            Challenge.ComposeChallenges(self, player)

                    self.respn = self.respn.rstrip(',') + '}'

                    ###################################################################################################
                    ## Add to recent player list
                    recentplayerlist = Data.GetRecentPlayerList(self)
                    _add = True

                    # check if this user hasn't reached the maximum set challengers
                    # we don't add players to the recent list if they are stacked
                    num = 0
                    challengers = Challenge.GetChallengers(
                        self, player.info_obj['uuid'])
                    if challengers is None:
                        Challenge.GetChallengers(self, player.info_obj['fbid'])
                    if challengers is not None:
                        for challenger in challengers:
                            obj = json.loads(challenger.data)
                            if obj['friend'] is False:
                                num += 1
                                if num > config.recentplayer['maxchallengers']:
                                    logging.warn(
                                        'Recent player list exceeded for ' +
                                        uuid)
                                    _add = False
                                    break

                    # find if it already exists?
                    num = 0
                    _deletelist = []
                    for recentplayer in recentplayerlist.obj:

                        if recentplayer['uuid'] == player.info_obj['uuid']:
                            if _add is False:  # this player reach the maximum of challengers
                                _deletelist.append(
                                    num
                                )  # we should delete him from the list, so nobody can challenge him
                            else:
                                _add = False

                        # if the list is longer than maxlist, delete the rest
                        if num >= config.recentplayer['maxlist']:
                            _deletelist.append(num)

                        # remove if player does not exist any more
                        else:
                            someplayer = Player.getplayer(
                                self, recentplayer['uuid'])
                            if someplayer is None:
                                self.error = ''
                                _deletelist.append(num)
                        num += 1

                    num = len(_deletelist)
                    for i in range(0, num):
                        del recentplayerlist.obj[num - 1 - i]

                    if _add is True:
                        recentplayerlist.obj.append({
                            'fbid':
                            player.info_obj['fbid'],
                            'name':
                            player.info_obj['name'],
                            'uuid':
                            player.info_obj['uuid'],
                            'image':
                            player.info_obj['image'],
                            'total_wins':
                            player.state_obj['total_wins'],
                            'updated':
                            player.state_obj['updated']
                        })

                    Data.SetRecentPlayerList(self, recentplayerlist)

                else:  # but if write down to database was failed
                    self.error = 'unable to insert/update player data.'  # inform user bia error message
                    logging.warn('unable to insert/update player data.')

        # calculate time taken and return the result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
    def get(self):
        Utils.reset(self)  # reset/clean standard variables

        # validate and assign parameters
        passwd = Utils.required(self, GCVars.passwd)
        guid = self.request.get('guid')
        uuid = Utils.required(self, 'uuid')
        uuid2 = Utils.required(self, 'uid2')
        events = Utils.required(self, 'events')
        events2 = Utils.required(self, 'events2')
        laptime = Utils.required(self, 'laptime')
        laptime2 = Utils.required(self, 'laptime2')
        track = Utils.required(self, 'track')

        version = config.data_version['building']
        if self.request.get('version'):
            version = self.request.get('version')
        lang = config.server["defaultLanguage"]
        if self.request.get('lang'):
            lang = self.request.get('lang')

        Utils.LogRequest(self)
        # check password
        if self.error == '' and passwd != config.testing['passwd']:
            self.error = 'passwd is incorrect.'

        start_time = time.time()  # start count

        # if error, skip this
        #if self.error != '' or self.error is None:
        player = Player.getplayer(self, uuid)
        player2 = Player.getplayer(self, uuid2)
        ai = None
        my_building = None

        win_prize = None
        lose_prize = None

        data = Data.getDataAsObj(self, 'opponent_en', 1.0)
        if data is None:
            opponents = {'obj': json.loads(Score.GetDefaultOpponents())}
        else:
            opponents = data.obj

        for _track in opponents:
            for opponent in opponents[_track]:
                if not win_prize:
                    win_prize = opponent['win_prize']
                if not lose_prize:
                    lose_prize = opponent['lose_prize']
                if player2 is None:
                    if opponent['id'] == uuid2:
                        ai = opponent
                        self.error = ''

        if player is not None and guid != '':
            if guid != player.state_obj['guid']:
                player = None
                self.error = config.error_message['dup_login']

        if player is not None:
            scores = Score.calculate(self, events, events2, laptime, laptime2,
                                     win_prize, lose_prize)

            if scores is not None:
                score = scores[0]['total']
                #player.state_obj['cash'] += score
                player.state_obj['updated'] = start_time

                if player2 is not None:
                    player.state_obj[GCVars.total_races] += 1
                    if laptime < laptime2:
                        player.state_obj[GCVars.total_wins] += 1

                if ai is not None:
                    # save the resource to a building, ready for collection
                    my_building = Building.save_resource_to_building(
                        self, lang, version, player.uuid, track, score)
                    if player.state_obj.has_key(GCVars.total_ai_races):
                        player.state_obj[GCVars.total_ai_races] += 1
                    else:
                        player.state_obj.setdefault(GCVars.total_ai_races, 1)

                    if laptime < laptime2:
                        if player.state_obj.has_key(GCVars.total_ai_wins):
                            player.state_obj[GCVars.total_ai_wins] += 1
                        else:
                            player.state_obj.setdefault(
                                GCVars.total_ai_wins, 1)

                        #find star rating
                        difference = float(laptime2) - float(laptime)
                        data = {}
                        star_value = 0
                        new_star_value = 0
                        if player.state_obj.has_key('data'):
                            data = json.loads(player.state_obj['data'])
                        if data.has_key(uuid2):
                            star_value = int(data[uuid2])

                        #0,2,4 = 1 start time, 2 start time, 3 star time
                        if difference > float(ai['1_star_time']):
                            new_star_value = 1
                        if difference > float(ai['2_star_time']):
                            new_star_value = 2
                        if difference > float(ai['3_star_time']):
                            new_star_value = 3

                        if new_star_value > star_value:
                            data[uuid2] = new_star_value

                        logging.debug(
                            str(new_star_value) + ' > star_value:' +
                            str(star_value) + ', laptime 1:' + str(laptime) +
                            ', laptime2: ' + str(laptime2))
                        logging.debug('setting player data to ' +
                                      json.dumps(data))

                        player.state_obj['data'] = json.dumps(data)
                        player.state = json.dumps(player.state_obj)

                Player.setplayer(self, player)
                if 'xxx' in player.state:
                    self.error += '[KNOWN ISSUE] Player car lost. Please visit showroom and buy X1 again.'

                player_score = scores[0]
                scores_to_return = {
                    'score_prize': player_score['prize'],
                    'score_drift': player_score['prizes']['drift_bonus'],
                    'score_shift': player_score['prizes']['shift_bonus'],
                    'score_start': player_score['prizes']['start_bonus']
                }

                logging.debug('finishrace player state:' + player.state)
                self.respn = '{"state":' + player.state
                self.respn += ',"scores":' + json.dumps(scores_to_return)
                if my_building is not None:
                    self.respn += ',"building":['
                    self.respn = Building.compose_mybuilding(
                        self.respn, my_building)
                    self.respn = self.respn.rstrip(',') + ']'
                self.respn += '}'

                if player2 is not None:
                    score = scores[1]['total']
                    #player2.state_obj[GCVars.cash] += score
                    Building.save_resource_to_building(self, lang, version,
                                                       player2.uuid, track,
                                                       score)
                    player2.state_obj[GCVars.updated] = start_time
                    player2.state_obj[GCVars.total_races] += 1
                    if laptime2 < laptime:
                        player2.state_obj[GCVars.total_wins] += 1
                    Player.setplayer(self, player2)
        else:
            self.error = 'Cant find a player for ' + uuid
            #else:
        #    logging.warn('final error ' + self.error)

        # calculate time taken and return the result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
    def get(self):
        Utils.reset(self)  # reset/clean standard variables

        # validate and assign parameters
        uuid = Utils.required(self, 'uuid')
        guid = self.request.get('guid')
        start_time = time.time()  # start count

        # if error, skip this
        if self.error == '':
            player = Player.getplayer_as_obj(
                self, uuid)  # get player state from Player model class helper

        if self.error == '' and player is not None and guid != '':
            if guid != player.state_obj['guid']:
                player = None
                self.error = config.error_message['dup_login']

        # if error or player is none, skip this
        if self.error == '' and player is not None:
            storeitem = Data.getstoreitem_as_arr(
                self)  # get store item from Storeitem model class helper

        # if error or storeitem is none, skip this
        if self.error == '' and storeitem is not None:
            myitems = Item.getitems(self, uuid)  # get list of items owned

            # set result default
            self.respn = '['
            reason = ''

            for item in storeitem:  # run through each item in store items

                add = True  # A variable indicates that is it available for user
                if item['dependencies'] != '':  # if item has dependencies
                    add = False  # set item to unavailable first, we will change it available after we check all its dependencies
                    reason = 'You need the following items first: ' + item[
                        'dependencies']
                    # also inform user some good reason, not just die. this will eliminate after we check all its dependencies anyway
                    depc = 0  # A variable stand from dependencies counter
                    deps = item['dependencies'].replace(' ', '').split(
                        ','
                    )  # and eliminate space from dependencies and split by commas ','
                    for dep in deps:  # run through all dependences of the item
                        for myitem in myitems:  # run through all user's list of items
                            if myitem.itid == dep:  # check if user have dependency item
                                depc = depc + 1  # increment counter
                    if depc >= len(
                            deps
                    ):  # alter all counting, if counter is more than all dependecies, it probably means user has all dependencies
                        add = True  # and then yeah!, we turn item to available

                if add == True and item[
                        'maximum'] != '':  # check if the item has maximum limitation
                    depc = 0  # set counter to 0 again, we will use for next logic
                    for myitem in myitems:  # run through myitems
                        if myitem.itid == item[
                                'id']:  # check if user has same item in hand
                            depc = depc + 1  # increment counter
                    if int(depc) >= int(
                            item['maximum']
                    ):  # if counter is more than or equal the item's maximum
                        add = False  # that means user has reached the maximum, and should not available for him any more
                        reason = 'You\'ve reached the maximum of this item!'  # and yes! should inform him that

                # hard compose item list
                self.respn += '{'
                self.respn += ' "itid":"' + item['id'] + '",'
                self.respn += ' "type":"' + item['type'] + '",'
                self.respn += ' "title":"' + item['title'] + '",'
                self.respn += ' "desc":"' + item['description'] + '",'
                self.respn += ' "depend":"' + item['dependencies'] + '",'
                self.respn += ' "imgurl":"' + item['image_url_sd'] + '",'
                self.respn += ' "gold":' + str(item['gold']) + ','
                self.respn += ' "time":' + str(item['time']) + ','
                self.respn += ' "platinum":' + str(item['platinum']) + ','
                if add == True:
                    self.respn += ' "lock":""'
                else:
                    self.respn += ' "lock":"' + reason + '"'
                self.respn += '},'

            self.respn = self.respn.rstrip(',') + ']'

        # calculate time taken and return result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
示例#23
0
class Evento:
	
	__nome = None
	__descricao = None
	__usuario = None
	__codigo = None
	__data_criacao = Data()
	__data_inicio = Data()
	__data_fim = Data()
	__interesses = [None]
	__estado_atual = None
	
	estados = {1:"novo",2:"inscricoes abertas",3:"em andamento",4:"finalizado"}
	
	def __init__(self,nome,descricao,usuario,data_inicio,data_fim):
		self.__nome = nome
		self.__descricao = descricao
		self.__usuario = usuario
		self.__codigo = Hash.generateHash()
		self.__data_inicio = data_inicio
		self.__data_fim = data_fim
		self.__data_criacao = Data.getSystemData()
		self.__estado_atual = 1
		self.__interesses ["None"]
		
	def getNome():
		return self.__nome
	def getDescricao():
		return self.__descricao
	def getUsuario():
		return self.__usuario
	def getCodigo():
		return self.__codigo
	def getDataInicio():
		return self.__data_inicio
	def getDataCriacao():
		return self.__data_criacao
	def getDataFim():
		return self.__data_fim
	def getEstado():
		return self.__atual
	def getInteresses():
		return self.__interesses
	
	def __setDataCriacao(self,data):
		self.__dataCriacao = data
	def __setEstado(self,estado):
		self.__estado = estado
	def setInteresses(self,interesses):
		self.__interesses = interesses
	
	def toCSVString(self):
		return (self.__nome + "," + self.__descricao + "," + self.__usuario +","+ self.__codigo + ","\
		self.__data_inicio.toString() + "," + self.__data_fim.toString() + ","\
		self.__data_criacao.toString() + "," +self.__estado +"," + self.__interesses)
		
	def parseFromStrig(string):
		v = string.split(",")
		evento = Evento(v[0],v[1],v[2],Data.parseFromString(v[3]),Data.parseFromString(v[4]))
		evento.setDataCriacao(v[5])
		evento.setEstado(v[6])
		evento.setInteresses(v[7])
		return evento
	
		
		
		
示例#24
0
    def get(self):
        # reset/clean standard variables
        Utils.reset(self)

        # validate and assign parameters
        passwd = Utils.required(self, 'passwd')
        version = config.data_version['building']
        if self.request.get('version'):
            version = self.request.get('version')
        lang = config.server["defaultLanguage"]
        if self.request.get('lang'):
            lang = self.request.get('lang')
        uuid = Utils.required(self, 'uuid')
        guid = self.request.get('guid')
        inid = Utils.required(self, 'inid')

        # start count
        start_time = time.time()

        # set default parameters
        player = None
        buildings = None
        mybuilding = None
        economy = None

        # if error, skip this
        if self.error == '':
            player = Player.getplayer(self, uuid)

        if self.error == '' and player is not None and guid != '':
            if guid != player.state_obj['guid']:
                player = None
                self.error = config.error_message['dup_login']

        # if error or player is not, then skip to the end
        if self.error == '' and player is not None:
            buildings = Data.getbuildings(self, lang, version)

        if self.error == '' and buildings is not None:
            mybuilding = Building.getmybuilding(self, uuid, inid)

        # if any error or mybuilding is none, then skip to the end
        if self.error == '' and mybuilding is not None:
            if mybuilding.status != Building.BuildingStatus.PENDING:
                self.respn = '{"warning":"building=' + inid + ' has been finished."}'
            else:
                economy = Data.getDataAsObj(self, 'economy',
                                            config.data_version['economy'])

        if self.error == '' and self.respn == '' and economy is not None:
            _upd = False
            time_left = buildings.as_obj[mybuilding.itid][
                mybuilding.level - 1]['build_time'] - int(
                    (start_time - mybuilding.timestamp) / 60)
            if mybuilding.status == Building.BuildingStatus.PENDING:
                if time_left > 0:
                    sele = economy.obj[0]
                    for list in economy.obj:
                        if time_left >= list['time_in_minutes']:
                            sele = list
                        else:
                            break

                    if player.state_obj['gold'] >= sele['gold_value']:
                        player.state_obj['gold'] -= sele['gold_value']
                        mybuilding.status = Building.BuildingStatus.DELIVERED
                        _upd = True

                        player.state_obj['updated'] = start_time
                        Player.setplayer(self, player)
                    else:
                        self.respn = '{"warning":"not enough gold!"}'
                else:
                    mybuilding.status = Building.BuildingStatus.DELIVERED
                    _upd = True

            if _upd is True:
                Building.setmybuilding(self, mybuilding)

            if self.error == '' and self.respn == '':
                self.respn = '{"state":' + player.state + ', "buildings":['
                self.respn = Building.compose_mybuilding(
                    self.respn, mybuilding)
                self.respn = self.respn.rstrip(',') + ']'
                self.respn += '}'

        # calculate time taken and return the result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
    def get(self):
        Utils.reset(self)  # reset/clean standard variables

        # validate and assign parameters
        passwd = Utils.required(self, 'passwd')
        version = config.data_version['building']
        if self.request.get('version'):
            version = self.request.get('version')
        lang = config.server["defaultLanguage"]
        if self.request.get('lang'):
            lang = self.request.get('lang')
        uuid = Utils.required(self, 'uuid')
        guid = self.request.get('guid')
        itid = Utils.required(self, 'itid')
        level = Utils.required(self, 'level')
        location = Utils.required(self, 'location')

        # check password
        if self.error == '' and passwd != config.testing['passwd']:
            self.error = 'passwd is incorrect.'

        start_time = time.time()  # start count

        # logical variables
        player = None
        buildings = None
        building = None

        # if error, skip this
        if self.error == '':
            player = Player.getplayer(self, uuid)

        if self.error == '' and player is not None and guid != '':
            if guid != player.state_obj['guid']:
                player = None
                self.error = config.error_message['dup_login']

        if self.error == '' and player is not None:
            buildings = Data.getbuildings(self, lang, float(version))

        if self.error == '' and buildings is not None:
            try:
                building = buildings.as_obj[itid][int(level) - 1]
            except KeyError:
                self.error = itid + " was not found!"

        if self.error == '' and building is not None:
            if player.state_obj['cash'] >= building['cost']:
                player.state_obj['cash'] -= building['cost']
                player.state_obj[
                    'updated'] = start_time  # update timestamp for player
                if Player.setplayer(self, player):
                    mybuilding = Building.newbuilding(self)
                    mybuilding.uuid = uuid
                    mybuilding.itid = itid
                    mybuilding.inid = Utils.genanyid(self, 'b')
                    mybuilding.level = building['level']
                    mybuilding.status = Building.BuildingStatus.PENDING
                    mybuilding.location = location
                    mybuilding.amount = 0
                    mybuilding.timestamp = int(start_time)
                    Building.setmybuilding(self, mybuilding)
                    self.respn = '{"state":' + player.state + ','
                    self.respn += '"building":['
                    self.respn = Building.compose_mybuilding(
                        self.respn, mybuilding)
                    self.respn = self.respn.rstrip(',') + ']'
                    self.respn += '}'
            else:
                self.respn = '{"warning":"not enough cash!"}'

        # calculate time taken and return the result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
示例#26
0
    def get(self):
        Utils.reset(self)                                                        # reset/clean standard variables

        # validate and assign parameters
        passwd = Utils.required(self, 'passwd')
        version = config.data_version['building']
        if self.request.get('version'):
            version = self.request.get('version')
        lang = config.server["defaultLanguage"]
        if self.request.get('lang'):
            lang = self.request.get('lang')
        uuid = Utils.required(self, 'uuid')
        guid = self.request.get('guid')
        inid = Utils.required(self, 'inid')
        amount = Utils.required(self, 'amount')

        # check password
        if self.error == '' and passwd != config.testing['passwd']:
            self.error = 'passwd is incorrect.'

        Utils.LogRequest(self)

        start_time = time.time()                                                # start count

        # logic variables
        player = None
        buildings = None
        mybuilding = None
        res_produced = 0

        # if error, skip this
        if self.error == '':
            player = Player.getplayer(self, uuid)
        """
        if self.error == '' and player is not None and guid != '':
            if guid != player.state_obj['guid']:
                player = None
                self.error = config.error_message['dup_login']
        """
        if self.error == '' and player is not None:
            buildings = Data.getbuildings(self, lang, version)

        if self.error == '' and buildings is not None:
            mybuilding = Building.getmybuilding(self, uuid, inid)

        if self.error == '' and mybuilding is not None:
            _upd = False
            if mybuilding.status == Building.BuildingStatus.PENDING:
                if mybuilding.timestamp + (
                        buildings.as_obj[mybuilding.itid][mybuilding.level - 1]['build_time'] * 60) <= start_time:
                    mybuilding.timestamp = int(start_time)
                    mybuilding.status = Building.BuildingStatus.DELIVERED
                    _upd = True
            elif mybuilding.status == Building.BuildingStatus.DELIVERED:
                mybuilding.status = Building.BuildingStatus.OWNED
                _upd = True

            if mybuilding.status == Building.BuildingStatus.DELIVERED or mybuilding.status == Building.BuildingStatus.OWNED:
                time_delta = (start_time - mybuilding.timestamp) / 60
                if time_delta > buildings.as_obj[mybuilding.itid][mybuilding.level - 1]['resource_interval'] > 0:
                    #mybuilding.status = Building.BuildingStatus.PRODUCED_PARTIAL
                    #_upd = True
                    res_produced = int(
                        time_delta / buildings.as_obj[mybuilding.itid][mybuilding.level - 1]['resource_interval']) * buildings.as_obj[mybuilding.itid][mybuilding.level - 1]['resource_produced']
                    if res_produced >= buildings.as_obj[mybuilding.itid][mybuilding.level - 1]['resource_capacity']:
                        res_produced = buildings.as_obj[mybuilding.itid][mybuilding.level - 1]['resource_capacity']
                        ##mybuilding.status = Building.BuildingStatus.PRODUCED
                        #_upd = True
            elif mybuilding.status == Building.BuildingStatus.PRODUCED_PARTIAL or mybuilding.status == Building.BuildingStatus.PRODUCED:
                if mybuilding.amount is None:
                    mybuilding.amount = 0;
                res_produced = mybuilding.amount
                mybuilding.amount = 0
                mybuilding.status = Building.BuildingStatus.OWNED
                _upd = True

            if res_produced > 0:
                if res_produced > amount:
                    res_produced = amount
                try:
                    # eg player['cash'] += 1
                    resource_type = buildings.as_obj[mybuilding.itid][mybuilding.level - 1]['resource']
                    _upd = True
                    new_amount = int(res_produced) + int(mybuilding.amount)
                    logging.debug('resource to collect = ' + str(res_produced) + " " + str(resource_type) + " = " + str(new_amount))
                    logging.debug('building contains = ' + str(res_produced))

                    player.state_obj[
                        buildings.as_obj[mybuilding.itid][mybuilding.level - 1]['resource']] += new_amount
                    # update timestamp for player
                    player.state_obj['updated'] = start_time
                    if Player.setplayer(self, player):
                        #mybuilding.status = Building.BuildingStatus.OWNED
                        mybuilding.timestamp = int(start_time)
                        _upd = True
                except KeyError:
                    self.error = 'resource=' + buildings.as_obj[mybuilding.itid][mybuilding.level - 1][
                        'resource'] + ' doesn\'t exist in player properties!'

            if _upd is True:
                Building.setmybuilding(self, mybuilding)

            if self.error == '':
                self.respn = '{"state":' + player.state + ', "building":['
                self.respn = Building.compose_mybuilding(self.respn, mybuilding)
                self.respn = self.respn.rstrip(',') + ']'
                self.respn += '}'

        # calculate time taken and return the result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
示例#27
0
	def selectDataTomat(kondisi):
		conn = Db.getConnection()
		myCursor = conn.cursor()
		sql = 'SELECT * from data_crop_tomat WHERE id_kondisi=%s'
		myCursor.execute(sql,kondisi) 
		result = myCursor.fetchall()
		conn.commit()
		conn.close()
		allData = []
		for x in range(0, len(result)):
			data = Data()
			data.setId(result[x]['id'])
			data.setName(result[x]['name'])
			data.setStDeviasi(result[x]['st_deviasi'])
			data.setMean(result[x]['mean'])
			data.setMedian(result[x]['median'])
			data.setIdKondisi(result[x]['id_kondisi'])
			data.setR(result[x]['r'])
			allData.append(data)
		return allData;
示例#28
0
    def get(self):
        Utils.reset(self)  # reset/clean standard variables

        # validate and assign parameters
        passwd = Utils.required(self, 'passwd')
        version = config.data_version['building']
        if self.request.get('version'):
            version = self.request.get('version')
        lang = config.server["defaultLanguage"]
        if self.request.get('lang'):
            lang = self.request.get('lang')
        uuid = Utils.required(self, 'uuid')
        guid = self.request.get('guid')
        crid = Utils.required(self, 'crid')

        # check password
        if self.error == '' and passwd != config.testing['passwd']:
            self.error = 'passwd is incorrect.'

        start_time = time.time()  # start count

        # logical variables
        player = None
        cars = None
        upgrades = None
        car = None
        #mycars = None

        Utils.LogRequest(self)

        # if error, skip this
        if self.error == '':
            player = Player.getplayer(self, uuid)

        if self.error == '' and player is not None and guid != '':
            if guid != player.state_obj['guid']:
                player = None
                self.error = config.error_message['dup_login']

        if self.error == '' and player is not None:
            cars = Data.getcars(self, lang, float(version))

        if self.error == '' and cars is not None:
            found = False
            for _car in cars.as_obj:
                if _car['id'] == crid:
                    car = _car
                    found = True
                    break
            if found is False:
                self.error = crid + " was not found!"

        if self.error == '' and car is not None:

            mycars = Car.list(self, uuid)
            for _car in mycars:
                data_obj = json.loads(_car.data)
                try:
                    if data_obj['info']['crid'] == crid:
                        # already own this car type, and you can only 1 of each type
                        #self.respn = '{"warning":"You have already purchased this car."}'
                        player.state_obj['current_car'] = _car.cuid
                        player.state_obj['updated'] = start_time
                        if Player.setplayer(self, player):
                            self.respn = '{"state":' + player.state + ','
                            self.respn += '"car":['
                            self.respn = Car.compose_mycar(self.respn, _car)
                            self.respn = self.respn.rstrip(',') + ']'
                            self.respn += '}'
                            car = None
                        break
                except KeyError:
                    self.error = 'Cannot find crid (KeyError issue), please report admin!'

        if self.error == '' and car is not None:
            upgrades = Data.getupgrades(self, lang, float(version))

        if self.error == '' and upgrades is not None:
            # good to go as we have a car
            if player.state_obj['cash'] >= car['cost']:
                player.state_obj['cash'] -= car['cost']
                player.state_obj[
                    'updated'] = start_time  # update timestamp for player

                mycar = Car.create(self, player.uuid)
                mycar.data_obj['info'] = {'crid': car['id']}
                mycar.data_obj['upgrades'] = []
                mycar.data_obj['equip'] = {}
                player.state_obj['current_car'] = mycar.cuid
                default_upgrades = car['default_upgrades'].replace(
                    ' ', '').split(',')

                for default_upgrade in default_upgrades:
                    mycar.data_obj['upgrades'].append(default_upgrade)
                    for _type in upgrades.as_obj:
                        try:
                            mycar.data_obj['equip'][type]
                        except KeyError:
                            for upgrade in upgrades.as_obj[_type]:
                                if upgrade['id'] == default_upgrade:
                                    mycar.data_obj['equip'][
                                        _type] = default_upgrade
                                    break
                                    break

                player.state = json.dumps(player.state_obj)
                if Player.setplayer(self, player):
                    if Car.update(self, mycar):
                        self.respn = '{"state":' + player.state + ','
                        self.respn += '"car":['
                        self.respn = Car.compose_mycar(self.respn, mycar)
                        self.respn = self.respn.rstrip(',') + ']'
                        self.respn += '}'

            else:
                self.respn = '{"warning":"not enough cash!"}'
                logging.warn("not enough cash")
        else:
            logging.warn("Error with car upgrades")
        # calculate time taken and return the result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))
    def get(self):
        Utils.reset(self)                                                        # reset/clean standard variables

        # validate and assign parameters
        passwd = Utils.required(self, 'passwd')
        type = Utils.required(self, 'type')
        version = config.data_version['building']
        if self.request.get('version'):
            version = self.request.get('version')
        lang = config.server["defaultLanguage"]
        if self.request.get('lang'):
            lang = self.request.get('lang')

                # check password
        if self.error == '' and passwd != config.testing['passwd']:
            self.error = 'passwd is incorrect.'

        start_time = time.time()                                                # start count

        Utils.LogRequest(self)

        if self.request.get('game'):
            if self.request.get('game') == 'pro7':
                lang = 'de'

        # if error, skip this
        if self.error == '':
            if type == 'all':
                type = ''
                for item in config.gamedata:
                    type += item + ','
                type = type.rstrip(',')

            self.respn = '{'
            types = type.split(',')
            for item in types:
                if (item == 'transui'):
                    data = Data.getData(self, item, version)
                    if data is not None:
                        data_obj = json.loads(data.data)
                        self.respn += '"transui":' + json.dumps(data_obj[lang]) + ','
                else:
                    data = Data.getData(self, item + '_' + lang, version)
                    if data is None:
                            data = Data.getData(self, item, version)

                    if data is not None:
                        self.respn += '"' + item + '":' + data.data + ','
                    else:
                        data = Data.getData(self, item, version)
                        if data is not None:
                            self.respn += '"' + item + '":' + data.data + ','
                    if not item:
                        item = ''
                    if not data:
                        data = ''

                    logging.debug(item + ":" + data.data)

        self.respn = self.respn.rstrip(',') + '}'

        # calculate time taken and return the result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken, False))
    def get(self):
        Utils.reset(self)														# reset/clean standard variables

        # validate and assign parameters
        passwd = Utils.required(self, 'passwd')
        version = config.data_version['buildings']
        if self.request.get('version'):
            version = self.request.get('version')
        lang = config.server["defaultLanguage"]
        if self.request.get('lang'):
            lang = self.request.get('lang')
        uuid = Utils.required(self, 'uuid')
        guid = self.request.get('guid')

        # check password
        if self.error == '' and passwd != config.testing['passwd']:
            self.error = 'passwd is incorrect.'

        start_time = time.time()												# start count

        # logical variables
        player = None
        researches = None
        myresearches = None

        # if error, skip this
        if self.error == '':
            player = Player.getplayer_as_obj(self, uuid)

        if self.error == '' and player is not None and guid != '':
            if guid != player.state_obj['guid']:
                player = None
                self.error = config.error_message['dup_login']

        if self.error == '' and player is not None:
            researches = Data.getresearches(self, version)

        if self.error == '' and researches is not None:
            myresearches = Research.getmyresearches(self, uuid)

        if self.error == '' and myresearches is not None:
            self.respn = '['
            for myresearch in myresearches:
                # update building status, determine production
                _name = str(myresearch.itid)
                _pos = myresearch.itid.find('.', len(myresearch.itid)-4)
                _bui = myresearch.itid[0:_pos]
                _lev = myresearch.itid[_pos+1:len(myresearch.itid)]
                _upd = False
                if myresearch.status == Research.ResearchStatus.PENDING:
                    if myresearch.timestamp + (researches.as_obj[_bui][_lev]['wait']*60) <= start_time:
                        myresearch.timestamp = int(start_time)
                        myresearch.status = Research.ResearchStatus.REWARD
                        _upd = True
                elif myresearch.status == Research.ResearchStatus.REWARD:
                    myresearch.status = Research.ResearchStatus.OWNED
                    _upd = True
                if _upd is True:
                    Research.setmyresearch(self, myresearch)
                self.respn = Research.compose_myresearch(self.respn, myresearch)
            self.respn = self.respn.rstrip(',') + ']'

        # calculate time taken and return the result
        time_taken = time.time() - start_time
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write(Utils.RESTreturn(self, time_taken))