Beispiel #1
0
def _readGoodies(reader, subsectionName):
    section = reader.getSubsection(subsectionName)
    if section is None:
        return {}
    else:
        goodies = {'goodies': {}, 'prices': {}, 'notInShop': set()}
        for packet_name, packet in section.items():
            v, uid = (None, -1)
            if '_' in packet_name:
                v, uid = packet_name.split('_')
            variety = GOODIE_VARIETY.NAME_TO_ID.get(v, None)
            if variety is None:
                raise SoftException('No <%s> parameter' % 'variety')
            uid = int(uid)
            if uid < 0:
                raise SoftException('No <uid> parameter')
            enabled = bool(packet.readInt('enabled', 1))
            autostart = bool(packet.readInt('autostart', 0))
            notInShop = bool(packet.readInt('notInShop', 1))
            counter = packet.readInt('counter', 1)
            lifetime = XmlConfigReader.parseDuration(
                packet.readString('lifetime', '0'))
            if lifetime == 0:
                lifetime = None
            useby = packet.readString('useby', '')
            if useby == '':
                useby = None
            else:
                useby = calendar.timegm(
                    datetime.datetime.strptime(
                        useby, '%d.%m.%Y %H:%M:%S').timetuple())
            condition = _readGoodieCondition(
                reader.getSubsection('/'.join(
                    (subsectionName, packet_name, 'condition'))))
            target, resource = _readGoodieTarget(
                reader, '/'.join((subsectionName, packet_name)))
            price = _readPrice(reader, '/'.join((subsectionName, packet_name)))
            _validator(uid, variety, resource, price)
            goodies['goodies'][uid] = (variety, target, enabled, lifetime,
                                       useby, counter, autostart, condition,
                                       resource)
            if price:
                goodies['prices'][uid] = price
            if notInShop or price is None:
                goodies['notInShop'].add(uid)
            if useby is not None and useby < time.time():
                LOG_WARNING('Expired goodie is removed from the shop %d' % uid)
                goodies['notInShop'].add(uid)

        return goodies
def _readGoodies(reader, subsectionName):
    section = reader.getSubsection(subsectionName)
    if section is None:
        return {}
    else:
        goodies = {'goodies': {},
         'prices': {},
         'notInShop': set()}
        for packet_name, packet in section.items():
            if '_' in packet_name:
                v, uid = packet_name.split('_')
            if v == 'discount':
                variety = goodie_constants.GOODIE_VARIETY.DISCOUNT
            elif v == 'booster':
                variety = goodie_constants.GOODIE_VARIETY.BOOSTER
            else:
                raise Exception('No <uid> parameter')
            uid = int(uid)
            if uid < 0:
                raise Exception('No <uid> parameter')
            isEnabled = packet.readInt('enabled', 1)
            if isEnabled == 0:
                enabled = False
            else:
                enabled = True
            isAutostart = packet.readInt('autostart', 0)
            if isAutostart == 0:
                autostart = False
            else:
                autostart = True
            notInShop = packet.readInt('notInShop', 1)
            if notInShop == 0:
                notInShop = False
            else:
                notInShop = True
            counter = packet.readInt('counter', 1)
            lifetime = XmlConfigReader.parseDuration(packet.readString('lifetime', '0'))
            if lifetime == 0:
                lifetime = None
            useby = packet.readString('useby', '')
            if useby == '':
                useby = None
            else:
                useby = calendar.timegm(datetime.datetime.strptime(useby, '%d.%m.%Y %H:%M:%S').timetuple())
            condition = _readGoodieCondition(reader.getSubsection('/'.join((subsectionName, packet_name, 'condition'))))
            target, resource = _readGoodieTarget(reader, '/'.join((subsectionName, packet_name)))
            price = _readPrice(reader, '/'.join((subsectionName, packet_name)))
            _validator(uid, variety, resource, price)
            goodies['goodies'][uid] = (variety,
             target,
             enabled,
             lifetime,
             useby,
             counter,
             autostart,
             condition,
             resource)
            if price:
                goodies['prices'][uid] = price
            if notInShop or price is None:
                goodies['notInShop'].add(uid)
            elif useby is not None and useby < time.time():
                LOG_WARNING('Expired goodie is removed from the shop %d' % uid)
                goodies['notInShop'].add(uid)

        return goodies
Beispiel #3
0
def _readGoodies(reader, subsectionName):
    section = reader.getSubsection(subsectionName)
    if section is None:
        return {}
    else:
        goodies = {'goodies': {}, 'prices': {}, 'notInShop': set()}
        for packet_name, packet in section.items():
            if '_' in packet_name:
                v, uid = packet_name.split('_')
            if v == 'discount':
                variety = goodie_constants.GOODIE_VARIETY.DISCOUNT
            elif v == 'booster':
                variety = goodie_constants.GOODIE_VARIETY.BOOSTER
            else:
                raise Exception('No <uid> parameter')
            uid = int(uid)
            if uid < 0:
                raise Exception('No <uid> parameter')
            isEnabled = packet.readInt('enabled', 1)
            if isEnabled == 0:
                enabled = False
            else:
                enabled = True
            isAutostart = packet.readInt('autostart', 0)
            if isAutostart == 0:
                autostart = False
            else:
                autostart = True
            notInShop = packet.readInt('notInShop', 1)
            if notInShop == 0:
                notInShop = False
            else:
                notInShop = True
            counter = packet.readInt('counter', 1)
            lifetime = XmlConfigReader.parseDuration(
                packet.readString('lifetime', '0'))
            if lifetime == 0:
                lifetime = None
            useby = packet.readString('useby', '')
            if useby == '':
                useby = None
            else:
                useby = calendar.timegm(
                    datetime.datetime.strptime(
                        useby, '%d.%m.%Y %H:%M:%S').timetuple())
            condition = _readGoodieCondition(
                reader.getSubsection('/'.join(
                    (subsectionName, packet_name, 'condition'))))
            target, resource = _readGoodieTarget(
                reader, '/'.join((subsectionName, packet_name)))
            price = _readPrice(reader, '/'.join((subsectionName, packet_name)))
            _validator(uid, variety, resource, price)
            goodies['goodies'][uid] = (variety, target, enabled, lifetime,
                                       useby, counter, autostart, condition,
                                       resource)
            if price:
                goodies['prices'][uid] = price
            if notInShop or price is None:
                goodies['notInShop'].add(uid)
            elif useby is not None and useby < time.time():
                LOG_WARNING('Expired goodie is removed from the shop %d' % uid)
                goodies['notInShop'].add(uid)

        return goodies