Змея / Говнокод #16528 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
class DataModel(dict):
    _SCHEME_VERSION = 0
    _transform = dict()
    _additional = dict()
    _migration = None

    def __init__(self, data=None, network=None, conf=None):
        if network and conf:
            _scheme = map(lambda x: x.strip(), conf.get(network).keys())
            _map =  map(lambda x: x.strip(), conf.get(network).values())

            self._scheme = int(conf._scheme)

            map(lambda x: setattr(self, x[0], data.get(x[1], None)),
                [(_scheme[i], _map[i]) for i in xrange(0,len(_map))])

            if self._transform.get(network, False):
                map(lambda x: setattr(self, x, getattr(self._transform[network], x)(getattr(self, x))),
                    [k for k in self._transform[network].__dict__.keys() if not k.startswith('__')])
        else:
            dict.__init__(self, data)

        if self.get('_scheme', 0)<self._SCHEME_VERSION and self._migration is not None:
            k = [int(k.split('_')[1]) for k in self._migration.__dict__.keys() if not k.startswith('__')]
            k.sort()
            [k.remove(x) for x in k if x<=self.get('_scheme', 0)]
            map(lambda x: getattr(self._migration, 'scheme_%s' % x)(self), k)
            self._scheme = self._SCHEME_VERSION

        map(lambda x: setattr(self, x, getattr(self._additional, x)(self)),
            [k for k in self._additional.__dict__.keys() if not k.startswith('__')])

    def __setattr__(self, name, val):
        if name in self.__dict__:
            self.__dict__[name]= val
        else:
            self[name] = val

    def __getattr__(self, name):
        if name in self.__dict__:
            return self.__dict__[name]
        else:
            return self[name]

Mongo migration, written in Python, for human beings.

Запостил: vaxxxa vaxxxa, (Updated )

Комментарии (1) RSS

  • [k.remove(x) for x in k if x<=self.get('_scheme', 0)]

    Вот этого было бы достаточно. Все остальное - можно было бы красивше написать, но терпимо и так, как есть.
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8