settingsentry.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import os
  2. from .settings import Settings
  3. class SettingEntry:
  4. def __init__(self, name, env_name='', default='', namespace='DEFAULT', type=str):
  5. self.name = name
  6. self.environment = env_name
  7. self.default = default
  8. self.value = default
  9. self.namespace = namespace
  10. self.read_from_env = False
  11. self.type = type
  12. self.str_value = ''
  13. self.read_config()
  14. if os.getenv(self.environment) is not None:
  15. self.read_from_env = True
  16. self.set(os.getenv(self.environment))
  17. Settings.__list__.append(self)
  18. def __str__(self):
  19. return '{0} => {1}'.format(self.name, self.value)
  20. def __eq__(self, other):
  21. return self.name == other
  22. def read_config(self):
  23. if self.namespace in Settings.__config__ and self.name in Settings.__config__[self.namespace] and not self.read_from_env:
  24. self.set(Settings.__config__[self.namespace][self.name])
  25. def push_config(self):
  26. if not Settings.__config__.has_section(self.namespace):
  27. Settings.__config__.add_section(self.namespace)
  28. Settings.__config__[self.namespace][self.name] = self.str_value
  29. def set(self, value):
  30. self.value = self.type(value)
  31. self.str_value = str(self.value)
  32. def get(self):
  33. return self.type(self.value)