settingsentry.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import os
  2. from .settings import Settings
  3. class SettingEntry:
  4. def __init__(self, name, env_name=None, default=None, 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 = None
  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. Settings.__config__[self.namespace][self.name] = self.str_value
  27. def set(self, value):
  28. self.value = self.type(value)
  29. self.str_value = str(self.value)
  30. def get(self):
  31. return self.type(self.value)