index bd2811edbaf6b2b097606feade5bb19478867301..8e42cef1418840d171bb0753449acaed89c17d7b 100644 (file)
--- a/roundup/configuration.py
+++ b/roundup/configuration.py
(NullableOption, 'read_default_group', 'roundup',
"Name of the group to use in the MySQL defaults file (.my.cnf).\n"
"Only used in MySQL connections."),
+ (IntegerNumberOption, 'sqlite_timeout', '30',
+ "Number of seconds to wait when the SQLite database is locked\n"
+ "Default: use a 30 second timeout (extraordinarily generous)\n"
+ "Only used in SQLite connections."),
(IntegerNumberOption, 'cache_size', '100',
"Size of the node cache (in elements)"),
), "Settings in this section are used"
"will match an issue for the interval after the issue's\n"
"creation or last activity. The interval is a standard\n"
"Roundup interval."),
+ (BooleanOption, "subject_updates_title", "yes",
+ "Update issue title if incoming subject of email is different.\n"
+ "Setting this to \"no\" will ignore the title part of"
+ " the subject\nof incoming email messages.\n"),
(RegExpOption, "refwd_re", "(\s*\W?\s*(fw|fwd|re|aw|sv|ang)\W)+",
"Regular expression matching a single reply or forward\n"
"prefix prepended by the mailer. This is explicitly\n"
"Regular expression matching end of line."),
(RegExpOption, "blankline_re", r"[\r\n]+\s*[\r\n]+",
"Regular expression matching a blank line."),
+ (BooleanOption, "unpack_rfc822", "no",
+ "Unpack attached messages (encoded as message/rfc822 in MIME)\n"
+ "as multiple parts attached as files to the issue, if not\n"
+ "set we handle message/rfc822 attachments as a single file."),
(BooleanOption, "ignore_alternatives", "no",
"When parsing incoming mails, roundup uses the first\n"
"text/plain part it finds. If this part is inside a\n"
if home_dir is None:
self.init_logging()
+ def copy(self):
+ new = CoreConfig()
+ new.sections = list(self.sections)
+ new.section_descriptions = dict(self.section_descriptions)
+ new.section_options = dict(self.section_options)
+ new.options = dict(self.options)
+ return new
+
def _get_unset_options(self):
need_set = Config._get_unset_options(self)
# remove MAIL_PASSWORD if MAIL_USER is empty
return
_file = self["LOGGING_FILENAME"]
- # set file & level on the root logger
- logger = logging.getLogger()
+ # set file & level on the roundup logger
+ logger = logging.getLogger('roundup')
if _file:
hdlr = logging.FileHandler(_file)
else:
'%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
# no logging API to remove all existing handlers!?!
+ for h in logger.handlers:
+ h.close()
+ logger.removeHandler(hdlr)
logger.handlers = [hdlr]
logger.setLevel(logging._levelNames[self["LOGGING_LEVEL"] or "ERROR"])