Ejemplo n.º 1
0
 def __getattr__(self, name):
     # private and protected attributes at accessed directly
     if name.startswith('_') or name in self._attributesOrig:
         if name.startswith('__'):
             return MutableMapping.__getattribute__(self, name)
         if name not in self._propertiesAllowed:
             return MutableMapping.__getattribute__(self, name)
             return self.__dict__[name]
     op = lambda x: neg(x) if name in self._aliasesNegated else x
     name = self._aliasesNegated.get(name, name)
     name = self._aliases.get(name, name)
     raw = self._propertiesTranslation.get(name, name)
     desc = self._propertiesDescriptor.get(
         raw) or self._relationshipsDescriptor.get(raw)
     if desc:
         return op(desc.__get__(self))
     if self._propertiesAdditional and name in self._data:
         self._itemsInputs[raw] = self._items_inputs_evaluate(name)
         self._dataAdditional[raw] = v = op(self[name])
         return v
     if self._attributeByName:
         try:
             return op(self.resolve_cname([name]))
         except Exception as er:
             self._logger.error(er, exc_info=True)
             raise
     if not self._propertiesAdditional:
         # additional properties not allowed, raise exception
         raise AttributeError("'{0}' is not a valid property of {1}".format(
             name, self.__class__.__name__))
     if name not in self._required:
         return
     raise AttributeError("'{0}' has not been set to {1}".format(
         name, self.__class__.__name__))