コード例 #1
0
    def __init__(self, user, game, resource_key, consume_amount,
                 gamesession_id, token):

        self.user = user
        self.game = game
        self.id = create_id()
        self.key = resource_key
        self.gamesession_id = gamesession_id
        self.token = token
        self.consumed = False

        # validation step
        try:
            consume_amount = int(consume_amount)
        except ValueError:
            raise StoreError(
                'Item "%s" consume amount parameters must be an integer' %
                resource_key)

        self.consume_amount = consume_amount

        if consume_amount <= 0:
            raise StoreError(
                'Item "%s" consume amount parameter must be non-negative' %
                resource_key)

        game_store_items = StoreList.get(game)
        try:
            resource_meta = game_store_items.get_resource(resource_key)
            if resource_meta.type != 'consume':
                raise StoreError('Item "%s" is not a consumable' %
                                 resource_key)
        except KeyError:
            raise StoreError('No item with key "%s"' % resource_key)
コード例 #2
0
ファイル: store.py プロジェクト: turbulenz/turbulenz_local
    def __init__(self, user, game, resource_key,
                 consume_amount, gamesession_id, token):

        self.user = user
        self.game = game
        self.id = create_id()
        self.key = resource_key
        self.gamesession_id = gamesession_id
        self.token = token
        self.consumed = False

        # validation step
        try:
            consume_amount = int(consume_amount)
        except ValueError:
            raise StoreError('Item "%s" consume amount parameters must be an integer' % resource_key)

        self.consume_amount = consume_amount

        if consume_amount <= 0:
            raise StoreError('Item "%s" consume amount parameter must be non-negative' % resource_key)

        game_store_items = StoreList.get(game)
        try:
            resource_meta = game_store_items.get_resource(resource_key)
            if resource_meta.type != 'consume':
                raise StoreError('Item "%s" is not a consumable' % resource_key)
        except KeyError:
            raise StoreError('No item with key "%s"' % resource_key)
コード例 #3
0
ファイル: user.py プロジェクト: oskrkr/turbulenz_local
    def get_default_avatar(cls):
        default_avatar_generator = config.get('default_avatar', 'gravitar')

        if default_avatar_generator == 'gravitar':
            gravitar_address = config.get('gravitar_address', 'http://www.gravatar.com/avatar/')
            gravatar_type = config.get('gravatar_type', 'identicon')
            return gravitar_address + create_id() + '?d=' + gravatar_type
        else:
            return None
コード例 #4
0
 def create(cls, game, owner):
     datashare = DataShare(game)
     with datashare.lock:
         datashare.datashare_id = create_id()
         datashare.owner = owner.username
         datashare.users = [owner.username]
         datashare.created = time()
         datashare.joinable = True
         datashare.write()
         return datashare
コード例 #5
0
ファイル: user.py プロジェクト: ezhangle/turbulenz_local
    def get_default_avatar(cls):
        default_avatar_generator = config.get('default_avatar', 'gravitar')

        if default_avatar_generator == 'gravitar':
            gravitar_address = config.get('gravitar_address',
                                          'http://www.gravatar.com/avatar/')
            gravatar_type = config.get('gravatar_type', 'identicon')
            return gravitar_address + create_id() + '?d=' + gravatar_type
        else:
            return None
コード例 #6
0
    def __init__(self, game, user, gamesession_id=None, created=None):
        self.game = game
        self.user = user

        if gamesession_id is None:
            gamesession_id = create_id()
        self.gamesession_id = gamesession_id

        if created is None:
            created = int(time())
        self.created = created
コード例 #7
0
    def __init__(self, game, user, gamesession_id=None, created=None):
        self.game = game
        self.user = user

        if gamesession_id is None:
            gamesession_id = create_id()
        self.gamesession_id = gamesession_id

        if created is None:
            created = int(time())
        self.created = created
コード例 #8
0
 def _set(self, key, value, owner, access):
     if value == '':
         try:
             del self.store[key]
         except KeyError:
             pass
         token = ''
     else:
         token = create_id()
         self.store[key] = {
             'ownedBy': owner,
             'value': value,
             'access': access,
             'token': token
         }
     self.write()
     return token
コード例 #9
0
    def __init__(self, user, game, transaction_items):
        self.user = user
        self.game = game
        self.id = create_id()
        self.items = transaction_items

        total = 0

        game_store_items = StoreList.get(game)

        for item_key, item in transaction_items.items():
            try:
                # convert string amounts to integers
                basket_amount = int(item['amount'])
                basket_price = int(item['price'])
            except (ValueError, KeyError, TypeError):
                raise StoreError(
                    'Item "%s" amount and price must be integers' % item_key)

            if basket_amount == 0:
                continue
            elif basket_amount < 0:
                raise StoreError('Item "%s" amount must be non-negative' %
                                 item_key)

            game_offering = game_store_items.get_offering(item_key)

            minor_price = game_offering.get_price().get_minor_amount()

            if basket_price != minor_price:
                raise StoreError('Item "%s" price does not match' % item_key)

            self.items[item_key] = {
                'price': basket_price,
                'amount': basket_amount
            }

            total += minor_price * basket_amount

        self.total = total

        self.completed = False
        self.completed_time = None

        UserTransactionsList.get(user).add_transaction(self.id, self)
コード例 #10
0
    def _get_task_data(cls, slug):

        game = _get_game(slug)

        user = _get_user_name()

        try:
            data = _json_decoder.decode(request.POST['data'])
        except KeyError:
            raise BadRequest('Missing parameter "data"')
        except JSONDecodeError as e:
            raise BadRequest('Data-parameter JSON error: %s' % str(e))

        if not isinstance(data, dict):
            raise BadRequest('Data-parameter is not a dict')

        # pylint: disable=E1103
        get_data = data.get
        # pylint: enable=E1103

        key = get_data('key')
        if not key:
            raise BadRequest('No notification-key given')
        ## check that the key actually exists on the game
        if key not in GameNotificationKeysList.get(game).to_dict():
            raise BadRequest('Unknown key "' + key + '" given.')

        msg = get_data('msg')
        if not msg:
            raise BadRequest('No message given')

        if not msg.get('text'):
            raise BadRequest('No text-attribute in msg')

        try:
            delay = int(get_data('time') or 0)
        except ValueError:
            raise BadRequest('Incorrect format for time')

        ## filter out empty strings and if there's just nothing there, use the current user as default recipient
        recipient = get_data('recipient', '').strip() or user

        return create_id(), key, user, recipient, msg, game, delay
コード例 #11
0
ファイル: store.py プロジェクト: calimonk/turbulenz_local
    def __init__(self, user, game, transaction_items):
        self.user = user
        self.game = game
        self.id = create_id()
        self.items = transaction_items

        total = 0

        game_store_items = StoreList.get(game)

        for item_key, item in transaction_items.items():
            try:
                # convert string amounts to integers
                basket_amount = int(item['amount'])
                basket_price = int(item['price'])
            except (ValueError, KeyError, TypeError):
                raise StoreError('Item "%s" amount and price must be integers' % item_key)

            if basket_amount == 0:
                continue
            elif basket_amount < 0:
                raise StoreError('Item "%s" amount must be non-negative' % item_key)

            game_offering = game_store_items.get_offering(item_key)

            minor_price = game_offering.get_price().get_minor_amount()

            if basket_price != minor_price:
                raise StoreError('Item "%s" price does not match' % item_key)

            self.items[item_key] = {
                'price': basket_price,
                'amount': basket_amount
            }

            total += minor_price * basket_amount

        self.total = total

        self.completed = False
        self.completed_time = None

        UserTransactionsList.get(user).add_transaction(self.id, self)
コード例 #12
0
    def __init__(self, user, game, transaction_items):
        self.user = user
        self.game = game
        self.id = create_id()
        self.items = transaction_items

        total = 0

        game_store_items = StoreList.get(game)

        resource_keys = set()

        if len(transaction_items) == 0:
            raise StoreError('Basket is empty')

        for item_key, item in transaction_items.items():
            try:
                # convert string amounts to integers
                basket_amount = int(item['amount'])
                basket_price = int(item['price'])
            except (ValueError, KeyError, TypeError):
                raise StoreError(
                    'Item "%s" amount and price must be integers' % item_key)

            if basket_amount == 0:
                continue
            elif basket_amount < 0:
                raise StoreError('Item "%s" amount must be non-negative' %
                                 item_key)

            game_offering = game_store_items.get_offering(item_key)

            minor_price = game_offering.get_price().get_minor_amount()

            if basket_price != minor_price:
                raise StoreError('Item "%s" price does not match' % item_key)

            offering_output = game_offering.output
            try:
                basket_item_output = item['output']
                if not isinstance(basket_item_output, dict):
                    raise ValueError()
                if len(offering_output) != len(basket_item_output):
                    raise ValueError()

                for resource_key, amount in offering_output.items():
                    if amount != basket_item_output[resource_key]:
                        raise ValueError()
                    resource_keys.add(resource_key)
            except (KeyError, ValueError):
                raise StoreError(
                    'Offering "%s" output resources do not match' % item_key)

            self.items[item_key] = {
                'price': basket_price,
                'amount': basket_amount
            }

            total += minor_price * basket_amount

        for key in resource_keys:
            resource = game_store_items.get_resource(key)
            if resource is not None and resource.type == 'own':
                user_store_items = game_store_items.get_store_user(user)
                if user_store_items is not None:
                    try:
                        user_item = user_store_items.get_item(key)
                        if user_item['amount'] > 0:
                            raise StoreError(
                                'Basket contains an ownable item you already own'
                            )
                    except KeyError:
                        pass

        self.total = total

        self.completed = False
        self.completed_time = None

        UserTransactionsList.get(user).add_transaction(self.id, self)
コード例 #13
0
ファイル: store.py プロジェクト: turbulenz/turbulenz_local
    def __init__(self, user, game, transaction_items):
        self.user = user
        self.game = game
        self.id = create_id()
        self.items = transaction_items

        total = 0

        game_store_items = StoreList.get(game)

        resource_keys = set()

        if len(transaction_items) == 0:
            raise StoreError('Basket is empty')

        for item_key, item in transaction_items.items():
            try:
                # convert string amounts to integers
                basket_amount = int(item['amount'])
                basket_price = int(item['price'])
            except (ValueError, KeyError, TypeError):
                raise StoreError('Item "%s" amount and price must be integers' % item_key)

            if basket_amount == 0:
                continue
            elif basket_amount < 0:
                raise StoreError('Item "%s" amount must be non-negative' % item_key)

            game_offering = game_store_items.get_offering(item_key)

            minor_price = game_offering.get_price().get_minor_amount()

            if basket_price != minor_price:
                raise StoreError('Item "%s" price does not match' % item_key)

            offering_output = game_offering.output
            try:
                basket_item_output = item['output']
                if not isinstance(basket_item_output, dict):
                    raise ValueError()
                if len(offering_output) != len(basket_item_output):
                    raise ValueError()

                for resource_key, amount in offering_output.items():
                    if amount != basket_item_output[resource_key]:
                        raise ValueError()
                    resource_keys.add(resource_key)
            except (KeyError, ValueError):
                raise StoreError('Offering "%s" output resources do not match' % item_key)

            self.items[item_key] = {
                'price': basket_price,
                'amount': basket_amount
            }

            total += minor_price * basket_amount

        for key in resource_keys:
            resource = game_store_items.get_resource(key)
            if resource is not None and resource.type == 'own':
                user_store_items = game_store_items.get_store_user(user)
                if user_store_items is not None:
                    try:
                        user_item = user_store_items.get_item(key)
                        if user_item['amount'] > 0:
                            raise StoreError('Basket contains an ownable item you already own')
                    except KeyError:
                        pass

        self.total = total

        self.completed = False
        self.completed_time = None

        UserTransactionsList.get(user).add_transaction(self.id, self)