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)
Beispiel #10
0
 def __get__(self, obj, type=None):
     value = getattr(obj._data, self._fieldName, None)
     if value == None: value = self._default
     return utils.deepCopy(value)