parameters: (self, pl_type, pl_id, pl_hostname, pl_key)
return_statement: return None
docstring: Delete a key of a plugin config
  
          @param pl_type : plugin type
          @param pl_id : plugin id
          @param pl_hostname : hostname the plugin is installed on
          @param pl_key : key of the plugin config
          @return the deleted PluginConfigData object
docstring_summary: Delete a key of a plugin config
docstring_tokens: Delete a key of a plugin config
function: def del_plugin_config_key(self, pl_type, pl_id, pl_hostname, pl_key):
          """Delete a key of a plugin config
  
          @param pl_type : plugin type
          @param pl_id : plugin id
          @param pl_hostname : hostname the plugin is installed on
          @param pl_key : key of the plugin config
          @return the deleted PluginConfigData object
  
          """
          # Make sure previously modified objects outer of this method won't be commited
          self.__session.expire_all()
          plugin = self.__session.query(Plugin).filter_by(type=ucode(pl_type)
                                                              ).filter_by(name=ucode(pl_id)
                                                              ).filter_by(hostname=ucode(pl_hostname)
                                                              ).first()
          if not plugin:
              return None
          plugin_configs = self.__session.query(
              PluginConfig
                 ).filter_by(plugin_id=plugin.id).all()
          for plugin_config in  plugin_configs :
              if plugin_config.key == ucode(pl_key):
                  self.__session.delete(plugin_config)
                  # delete Plugin ref if plugin have no parameters
                  if len(plugin_configs) == 1 and pl_type != 'core' :
                      self.__session.delete(plugin)
                      history = self.__session.query(PluginHistory).filter_by(plugin_id=plugin.id).all()
                      for plh in history:
                          self.__session.delete(plh)
                  self._do_commit()
                  if self._cacheDB : self._cacheDB.markAsUpdatingConfig(pl_id, pl_hostname)
                  return PluginConfigData(pl_type, pl_id, pl_hostname, plugin_config.key, plugin_config.value)
          return None
function_tokens: def del_plugin_config_key ( self , pl_type , pl_id , pl_hostname , pl_key ) : # Make sure previously modified objects outer of this method won't be commited self . __session . expire_all ( ) plugin = self . __session . query ( Plugin ) . filter_by ( type = ucode ( pl_type ) ) . filter_by ( name = ucode ( pl_id ) ) . filter_by ( hostname = ucode ( pl_hostname ) ) . first ( ) if not plugin : return None plugin_configs = self . __session . query ( PluginConfig ) . filter_by ( plugin_id = plugin . id ) . all ( ) for plugin_config in plugin_configs : if plugin_config . key == ucode ( pl_key ) : self . __session . delete ( plugin_config ) # delete Plugin ref if plugin have no parameters if len ( plugin_configs ) == 1 and pl_type != 'core' : self . __session . delete ( plugin ) history = self . __session . query ( PluginHistory ) . filter_by ( plugin_id = plugin . id ) . all ( ) for plh in history : self . __session . delete ( plh ) self . _do_commit ( ) if self . _cacheDB : self . _cacheDB . markAsUpdatingConfig ( pl_id , pl_hostname ) return PluginConfigData ( pl_type , pl_id , pl_hostname , plugin_config . key , plugin_config . value ) return None