Esempio n. 1
0
    def __init__(self, key=None, name=None, parent=None, dict=None):
        """
        Конструктор.

        @param parent: предок текущего домена
        @type parent: L{IDomain}
        @param dict: начальное значение домена
        @type dict: C{dict}
        """
        assert key is not None or (name is not None and parent is not None)

        self._parent = parent

        if key is not None:
            self._key = key
        else:
            self._key = hashlib.md5(self._parent.key() + name).hexdigest()
        self._name = name
        self._children = {}

        self._dict = {}
        if dict is not None:
            self._dict = dict.copy()
            for property, value in self._dict.iteritems():
                if IDomainBindable.providedBy(value):
                    value.bind(self, property)
Esempio n. 2
0
    def set(self, property, value):
        """
        Установить значение свойства в домене.

        Данный метод может также создать свойство, если оно ранее не существовало 
        и переопределить свойство домена-предка.

        @param property: имя свойства
        @type property: C{str}
        @param value: значение свойства
        @return: Deferred о результате операции
        @rtype: C{twisted.internet.defer.Deferred}
        """
        try:
            if IDomainBindable.providedBy(value):
                value.bind(self, property)
            self._dict[property] = value
        except:
            return defer.fail()

        return defer.succeed(None)