utils.py 856 B

123456789101112131415161718192021222324
  1. from collections import defaultdict
  2. from apps.configuration.models import Environment
  3. class MapConfigValues(object):
  4. def __init__(self, values, env_id):
  5. environments = Environment.query.all()
  6. sort_environments = sorted([x for x in environments if x.id != env_id], key=lambda x: x.priority)
  7. self.env_ids = [env_id] + [x.id for x in sort_environments]
  8. self.env_id = env_id
  9. self.map_values = defaultdict(dict)
  10. [self.map_values[x.key_id].__setitem__(x.env_id, x.value) for x in values]
  11. def _iter_value(self, map_value):
  12. for env_id in self.env_ids:
  13. value = map_value.get(env_id)
  14. if value:
  15. return value
  16. def get(self, key_id):
  17. map_value = self.map_values.pop(key_id, None)
  18. if map_value:
  19. return self._iter_value(map_value)