<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _UserUpdateConfigValue(self, configKey, strDescriptor, isDir = True, dbConfigValue = None):
 """ Allow user to set or update config values in the database table. This is always called if no valid entry exists in the table already. Parameters configKey : string Name of config field. strDescriptor : string Description of config field. isDir : boolean [optional : default = True] Set to True if config value is expected to be a directory path. dbConfigValue : string [optional : default = None] The value of an existing entry for the given config field. Returns string New value for given config field in database. """

    newConfigValue = None

    if dbConfigValue is None:
      prompt = "Enter new {0} or 'x' to exit: ".format(strDescriptor)
    else:
      prompt = "Enter 'y' to use existing {0}, enter a new {0} or 'x' to exit: ".format(strDescriptor)

    while newConfigValue is None:
      response = goodlogging.Log.Input("CLEAR", prompt)

      if response.lower() == 'x':
        sys.exit(0)
      elif dbConfigValue is not None and response.lower() == 'y':
        newConfigValue = dbConfigValue
      elif not isDir:
        newConfigValue = response
        self._db.SetConfigValue(configKey, newConfigValue)
      else:
        if os.path.isdir(response):
          newConfigValue = os.path.abspath(response)
          self._db.SetConfigValue(configKey, newConfigValue)
        else:
          goodlogging.Log.Info("CLEAR", "{0} is not recognised as a directory".format(response))

    return newConfigValue