def _createMailNotif(wrapper, succeed, recipients): if succeed: trigger = NotificationTriggerEnum.done else: trigger = NotificationTriggerEnum.failed fields = utils.deepCopy(EMAIL_NOT_TMPL) fields['triggers'] = set([trigger]) t = MailAddressTypeEnum.to fields['recipients'][t] = utils.deepCopy(recipients) ident = (wrapper.identifier, trigger, "email") return ImmutableWrapper(ident, fields)
def __init__(self, source, template, path=None, identifier=None, data=None, fields=None, **overrides): self._source = source self._path = path self._template = template self._identifier = identifier self._data = data if fields: self._fields = utils.deepCopy(fields) elif data: self._reset() else: self._fields = utils.deepCopy(template["defaults"]) for k, v in overrides.items(): self._fields[k] = v
def __set__(self, obj, value): assert not obj._deleted setattr(obj._data, self._fieldName, utils.deepCopy(value)) try: obj._touche() except AttributeError: pass
def __set__(self, obj, value): assert not obj._deleted obj._data.data[self._fieldName] = utils.deepCopy(value) try: obj._touche() except AttributeError: pass
def _reset(self): if not self._data: return data = self._data fields = dict() for key, default in self._template["defaults"].iteritems(): val = getattr(data, key, default) fields[key] = utils.deepCopy(val) self._fields = fields
def _createReqNotif(wrapper, succeed, reqTmpl): if succeed: trigger = NotificationTriggerEnum.done else: trigger = NotificationTriggerEnum.failed fields = utils.deepCopy(REQ_NOT_TMPL) fields['triggers'] = set([trigger]) fields['urlTemplate'] = reqTmpl ident = (wrapper.identifier, trigger, "req") return ImmutableWrapper(ident, fields)
def _createSQLNotif(wrapper, succeed, params, sqlTmpl): if succeed: trigger = NotificationTriggerEnum.done else: trigger = NotificationTriggerEnum.failed fields = utils.deepCopy(SQL_NOT_TMPL) fields['triggers'] = set([trigger]) fields['databaseURI'] = params.get('database-uri', None) fields['sqlTemplate'] = sqlTmpl ident = (wrapper.identifier, trigger, "sql") return ImmutableWrapper(ident, fields)
def _store(self): # WARNING: This function is not generic, it's specific for activities # PyChecker doesn't like dynamic attributes __pychecker__ = "no-classattr" identifier = self._identifier or self.__newIdentifier() data = self._data or self._template['class']() newPath = self.__getPath(identifier, self.state) newTmpPath = newPath + ".tmp" for attr, value in self._fields.items(): if isinstance(value, list): l = getattr(data, attr) del l[:] for v in value: l.append(utils.deepCopy(v)) elif isinstance(value, dict): d = getattr(data, attr) d.clear() for k, v in value.items(): d[k] = utils.deepCopy(v) else: setattr(data, attr, utils.deepCopy(value)) try: fileutils.ensureDirExists(os.path.dirname(newTmpPath), "activities") saver = inifile.IniFile() # The activities can contains sensitive information (passwords) # so we don't want it to be readable by others oldmask = os.umask(0137) try: saver.saveToFile(data, newTmpPath) finally: os.umask(oldmask) except Exception, e: log.notifyException(self._source, e, "File to save activity data file '%s'", newPath) raise e
def __get__(self, obj, type=None): result = obj._data.data.get(self._fieldName, self._default) return utils.deepCopy(result)
def __get__(self, obj, type=None): value = getattr(obj._data, self._fieldName, None) if value == None: value = self._default return utils.deepCopy(value)