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
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