upgrade ability
- if more keys are expected in the config.ini file and when updating from a previous version, defaults can be inserted if the particular keys do not already exist
This commit is contained in:
parent
99bd660f63
commit
5402130fbf
2 changed files with 44 additions and 19 deletions
|
@ -6,8 +6,8 @@ pinned = true
|
||||||
# minimum number of points in your account before entering into giveaways
|
# minimum number of points in your account before entering into giveaways
|
||||||
minimum_points = 50
|
minimum_points = 50
|
||||||
# max number of entries in a giveaway for it to be considered
|
# max number of entries in a giveaway for it to be considered
|
||||||
max_entries = 900
|
max_entries = 2000
|
||||||
# time left in minutes of a giveaway for it to be considered
|
# time left in minutes of a giveaway for it to be considered
|
||||||
max_time_left = 180
|
max_time_left = 300
|
||||||
# the minimum point value for a giveaway to be considered
|
# the minimum point value for a giveaway to be considered
|
||||||
minimum_game_points = 5
|
minimum_game_points = 5
|
57
src/run.py
57
src/run.py
|
@ -1,10 +1,10 @@
|
||||||
import configparser
|
import configparser
|
||||||
from configparser import ConfigParser
|
from configparser import ConfigParser
|
||||||
|
from random import randint
|
||||||
|
|
||||||
import log
|
import log
|
||||||
|
|
||||||
logger = log.get_logger(__name__)
|
logger = log.get_logger(__name__)
|
||||||
config = configparser.ConfigParser()
|
|
||||||
|
|
||||||
|
|
||||||
class MyException(Exception):
|
class MyException(Exception):
|
||||||
|
@ -16,25 +16,51 @@ def value_range(min, max):
|
||||||
|
|
||||||
|
|
||||||
class MyConfig(ConfigParser):
|
class MyConfig(ConfigParser):
|
||||||
def __init__(self, config_file):
|
|
||||||
super(MyConfig, self).__init__()
|
|
||||||
|
|
||||||
self.read(config_file)
|
|
||||||
self.validate_config()
|
|
||||||
|
|
||||||
def validate_config(self):
|
|
||||||
required_values = {
|
required_values = {
|
||||||
'DEFAULT': {
|
'DEFAULT': {
|
||||||
'gift_types': ('All', 'Wishlist', 'Recommended', 'Copies', 'DLC', 'New'),
|
'gift_types': ('All', 'Wishlist', 'Recommended', 'Copies', 'DLC', 'New'),
|
||||||
'pinned': ('true', 'false'),
|
'pinned': ('true', 'false'),
|
||||||
'minimum_points': '%s' % (value_range(0,400)),
|
'minimum_points': '%s' % (value_range(0, 400)),
|
||||||
'max_entries': '%s' % (value_range(0,100000)),
|
'max_entries': '%s' % (value_range(0, 100000)),
|
||||||
'max_time_left': '%s' % (value_range(0,21600)),
|
'max_time_left': '%s' % (value_range(0, 21600)),
|
||||||
'minimum_game_points': '%s' % (value_range(0,50))
|
'minimum_game_points': '%s' % (value_range(0, 50))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default_values = {
|
||||||
|
'DEFAULT': {
|
||||||
|
'cookie': '',
|
||||||
|
'gift_types': 'All',
|
||||||
|
'pinned': 'true',
|
||||||
|
'minimum_points': f"{randint(20, 100)}",
|
||||||
|
'max_entries': f"{randint(1000, 2500)}",
|
||||||
|
'max_time_left': f"{randint(180,500)}",
|
||||||
|
'minimum_game_points': '1'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for section, keys in required_values.items():
|
def __init__(self, config_file):
|
||||||
|
super(MyConfig, self).__init__()
|
||||||
|
self.read(config_file)
|
||||||
|
modified = self.create_defaults()
|
||||||
|
if modified:
|
||||||
|
with open(config_file, 'w+') as file:
|
||||||
|
self.write(file)
|
||||||
|
self.validate_config()
|
||||||
|
|
||||||
|
def create_defaults(self):
|
||||||
|
modified = False
|
||||||
|
for section, keys in self.default_values.items():
|
||||||
|
if section not in self:
|
||||||
|
self.add_section(section)
|
||||||
|
modified = True
|
||||||
|
for key, value in keys.items():
|
||||||
|
if key not in self[section]:
|
||||||
|
self.set(section, key, value)
|
||||||
|
modified = True
|
||||||
|
return modified
|
||||||
|
|
||||||
|
def validate_config(self):
|
||||||
|
for section, keys in self.required_values.items():
|
||||||
if section not in self:
|
if section not in self:
|
||||||
raise MyException(
|
raise MyException(
|
||||||
'Missing section %s in the config file' % section)
|
'Missing section %s in the config file' % section)
|
||||||
|
@ -56,10 +82,9 @@ def run():
|
||||||
from main import SteamGifts as SG
|
from main import SteamGifts as SG
|
||||||
|
|
||||||
file_name = '../config/config.ini'
|
file_name = '../config/config.ini'
|
||||||
|
config = None
|
||||||
try:
|
try:
|
||||||
with open(file_name) as f:
|
config = MyConfig(file_name)
|
||||||
config.read_file(f)
|
|
||||||
MyConfig(file_name)
|
|
||||||
except IOError:
|
except IOError:
|
||||||
txt = f"{file_name} doesn't exist. Rename {file_name}.example to {file_name} and fill out."
|
txt = f"{file_name} doesn't exist. Rename {file_name}.example to {file_name} and fill out."
|
||||||
logger.warning(txt)
|
logger.warning(txt)
|
||||||
|
|
Loading…
Reference in a new issue