annotate roundup/configuration.py @ 5976:71c68961d9f4

- issue2550920 - Optionally detect duplicate username at registration. Added config option to allow detection of duplicate username when the user tries to register. Previously user was rejected when dupliate name found at confirmation step. Optional as it can make username guessing easier. Testing is in place for this. Also attempted to make the unfriendly error message: 'node with key "username" exists' into a translatable friendly error: "Username 'username' already exists." This is missing any test. It is also fragile as I capture the ValueError exception and see that the exception matches: 'node with key "username" exists' If it does reassert the friendly message. Otherwise just re-raise existing exception. If the "node with key..." message is translated the friendly override will not trigger.
author John Rouillard <rouilj@ieee.org>
date Sat, 09 Nov 2019 16:33:42 -0500
parents 98a8509ce45c
children 55f5060e0508
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1 # Roundup Issue Tracker configuration support
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2 #
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
3 __docformat__ = "restructuredtext"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
4
5517
0cdf19b82354 Fix issue2550994: breakage caused by configparser backports.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5494
diff changeset
5 # Some systems have a backport of the Python 3 configparser module to
0cdf19b82354 Fix issue2550994: breakage caused by configparser backports.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5494
diff changeset
6 # Python 2: <https://pypi.org/project/configparser/>. That breaks
0cdf19b82354 Fix issue2550994: breakage caused by configparser backports.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5494
diff changeset
7 # Roundup if used with Python 2 because it generates unicode objects
0cdf19b82354 Fix issue2550994: breakage caused by configparser backports.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5494
diff changeset
8 # where not expected by the Python code. Thus, a version check is
0cdf19b82354 Fix issue2550994: breakage caused by configparser backports.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5494
diff changeset
9 # used here instead of try/except.
0cdf19b82354 Fix issue2550994: breakage caused by configparser backports.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5494
diff changeset
10 import sys
0cdf19b82354 Fix issue2550994: breakage caused by configparser backports.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5494
diff changeset
11 if sys.version_info[0] > 2:
5246
c5dd7b151ec2 Make an import work with either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5231
diff changeset
12 import configparser # Python 3
5517
0cdf19b82354 Fix issue2550994: breakage caused by configparser backports.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5494
diff changeset
13 else:
5246
c5dd7b151ec2 Make an import work with either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5231
diff changeset
14 import ConfigParser as configparser # Python 2
c5dd7b151ec2 Make an import work with either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5231
diff changeset
15
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
16 import getopt
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
17 import imp
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
18 import logging, logging.config
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
19 import os
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
20 import re
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
21 import time
3878
6d14a3b4e295 allow admin to specify port and local hostname for SMTP connections
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3877
diff changeset
22 import smtplib
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
23
3620
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
24 import roundup.date
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
25
5726
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
26 from roundup.anypy.strings import b2s
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
27 import roundup.anypy.random_ as random_
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
28 import binascii
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
29
5748
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
30 from roundup.backends import list_backends
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
31
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
32 # XXX i don't think this module needs string translation, does it?
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
33
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
34 ### Exceptions
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
35
5264
32f95ec6bd8e Python 2 and 3 support. Convert Exception into BaseException in core code.
John Rouillard <rouilj@ieee.org>
parents: 5246
diff changeset
36 class ConfigurationError(BaseException):
3777
74aebbbea305 Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents: 3725
diff changeset
37 pass
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
38
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
39 class NoConfigError(ConfigurationError):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
40
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
41 """Raised when configuration loading fails
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
42
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
43 Constructor parameters: path to the directory that was used as HOME
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
44
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
45 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
46
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
47 def __str__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
48 return "No valid configuration files found in directory %s" \
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
49 % self.args[0]
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
50
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
51 class InvalidOptionError(ConfigurationError, KeyError, AttributeError):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
52
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
53 """Attempted access to non-existing configuration option
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
54
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
55 Configuration options may be accessed as configuration object
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
56 attributes or items. So this exception instances also are
3820
771248aa8302 typos in docstrings
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3788
diff changeset
57 instances of KeyError (invalid item access) and AttributeError
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
58 (invalid attribute access).
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
59
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
60 Constructor parameter: option name
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
61
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
62 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
63
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
64 def __str__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
65 return "Unsupported configuration option: %s" % self.args[0]
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
66
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
67 class OptionValueError(ConfigurationError, ValueError):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
68
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
69 """Raised upon attempt to assign an invalid value to config option
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
70
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
71 Constructor parameters: Option instance, offending value
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
72 and optional info string.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
73
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
74 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
75
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
76 def __str__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
77 _args = self.args
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
78 _rv = "Invalid value for %(option)s: %(value)r" % {
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
79 "option": _args[0].name, "value": _args[1]}
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
80 if len(_args) > 2:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
81 _rv += "\n".join(("",) + _args[2:])
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
82 return _rv
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
83
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
84 class OptionUnsetError(ConfigurationError):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
85
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
86 """Raised when no Option value is available - neither set, nor default
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
87
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
88 Constructor parameters: Option instance.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
89
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
90 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
91
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
92 def __str__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
93 return "%s is not set and has no default" % self.args[0].name
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
94
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
95 class UnsetDefaultValue:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
96
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
97 """Special object meaning that default value for Option is not specified"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
98
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
99 def __str__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
100 return "NO DEFAULT"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
101
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
102 NODEFAULT = UnsetDefaultValue()
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
103
5878
1b57d8f3eb97 Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents: 5809
diff changeset
104 def create_token(size=32):
1b57d8f3eb97 Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents: 5809
diff changeset
105 return b2s(binascii.b2a_base64(random_.token_bytes(size)).strip())
5726
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
106
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
107 ### Option classes
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
108
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
109 class Option:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
110
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
111 """Single configuration option.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
112
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
113 Options have following attributes:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
114
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
115 config
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
116 reference to the containing Config object
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
117 section
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
118 name of the section in the tracker .ini file
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
119 setting
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
120 option name in the tracker .ini file
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
121 default
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
122 default option value
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
123 description
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
124 option description. Makes a comment in the tracker .ini file
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
125 name
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
126 "canonical name" of the configuration option.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
127 For items in the 'main' section this is uppercased
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
128 'setting' name. For other sections, the name is
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
129 composed of the section name and the setting name,
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
130 joined with underscore.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
131 aliases
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
132 list of "also known as" names. Used to access the settings
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
133 by old names used in previous Roundup versions.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
134 "Canonical name" is also included.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
135
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
136 The name and aliases are forced to be uppercase.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
137 The setting name is forced to lowercase.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
138
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
139 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
140
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
141 class_description = None
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
142
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
143 def __init__(self, config, section, setting,
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
144 default=NODEFAULT, description=None, aliases=None
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
145 ):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
146 self.config = config
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
147 self.section = section
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
148 self.setting = setting.lower()
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
149 self.default = default
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
150 self.description = description
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
151 self.name = setting.upper()
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
152 if section != "main":
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
153 self.name = "_".join((section.upper(), self.name))
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
154 if aliases:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
155 self.aliases = [alias.upper() for alias in list(aliases)]
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
156 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
157 self.aliases = []
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
158 self.aliases.insert(0, self.name)
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
159 # convert default to internal representation
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
160 if default is NODEFAULT:
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
161 _value = default
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
162 else:
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
163 _value = self.str2value(default)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
164 # value is private. use get() and set() to access
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
165 self._value = self._default_value = _value
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
166
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
167 def str2value(self, value):
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
168 """Return 'value' argument converted to internal representation"""
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
169 return value
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
170
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
171 def _value2str(self, value):
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
172 """Return 'value' argument converted to external representation
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
173
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
174 This is actual conversion method called only when value
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
175 is not NODEFAULT. Heirs with different conversion rules
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
176 override this method, not the public .value2str().
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
177
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
178 """
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
179 return str(value)
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
180
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
181 def value2str(self, value=NODEFAULT, current=0):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
182 """Return 'value' argument converted to external representation
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
183
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
184 If 'current' is True, use current option value.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
185
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
186 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
187 if current:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
188 value = self._value
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
189 if value is NODEFAULT:
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
190 return str(value)
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
191 else:
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
192 return self._value2str(value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
193
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
194 def get(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
195 """Return current option value"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
196 if self._value is NODEFAULT:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
197 raise OptionUnsetError(self)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
198 return self._value
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
199
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
200 def set(self, value):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
201 """Update the value"""
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
202 self._value = self.str2value(value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
203
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
204 def reset(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
205 """Reset the value to default"""
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
206 self._value = self._default_value
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
207
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
208 def isdefault(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
209 """Return True if current value is the default one"""
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
210 return self._value == self._default_value
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
211
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
212 def isset(self):
3820
771248aa8302 typos in docstrings
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3788
diff changeset
213 """Return True if the value is available (either set or default)"""
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
214 return self._value != NODEFAULT
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
215
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
216 def __str__(self):
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
217 return self.value2str(self._value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
218
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
219 def __repr__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
220 if self.isdefault():
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
221 _format = "<%(class)s %(name)s (default): %(value)s>"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
222 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
223 _format = "<%(class)s %(name)s (default: %(default)s): %(value)s>"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
224 return _format % {
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
225 "class": self.__class__.__name__,
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
226 "name": self.name,
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
227 "default": self.value2str(self._default_value),
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
228 "value": self.value2str(self._value),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
229 }
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
230
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
231 def format(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
232 """Return .ini file fragment for this option"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
233 _desc_lines = []
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
234 for _description in (self.description, self.class_description):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
235 if _description:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
236 _desc_lines.extend(_description.split("\n"))
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
237 # comment out the setting line if there is no value
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
238 if self.isset():
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
239 _is_set = ""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
240 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
241 _is_set = "#"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
242 _rv = "# %(description)s\n# Default: %(default)s\n" \
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
243 "%(is_set)s%(name)s = %(value)s\n" % {
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
244 "description": "\n# ".join(_desc_lines),
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
245 "default": self.value2str(self._default_value),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
246 "name": self.setting,
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
247 "value": self.value2str(self._value),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
248 "is_set": _is_set
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
249 }
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
250 return _rv
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
251
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
252 def load_ini(self, config):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
253 """Load value from ConfigParser object"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
254 if config.has_option(self.section, self.setting):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
255 self.set(config.get(self.section, self.setting))
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
256
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
257 def load_pyconfig(self, config):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
258 """Load value from old-style config (python module)"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
259 for _name in self.aliases:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
260 if hasattr(config, _name):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
261 self.set(getattr(config, _name))
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
262 break
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
263
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
264 class BooleanOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
265
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
266 """Boolean option: yes or no"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
267
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
268 class_description = "Allowed values: yes, no"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
269
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
270 def _value2str(self, value):
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
271 if value:
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
272 return "yes"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
273 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
274 return "no"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
275
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
276 def str2value(self, value):
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
277 if type(value) == type(""):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
278 _val = value.lower()
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
279 if _val in ("yes", "true", "on", "1"):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
280 _val = 1
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
281 elif _val in ("no", "false", "off", "0"):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
282 _val = 0
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
283 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
284 raise OptionValueError(self, value, self.class_description)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
285 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
286 _val = value and 1 or 0
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
287 return _val
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
288
3544
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
289 class WordListOption(Option):
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
290
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
291 """List of strings"""
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
292
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
293 class_description = "Allowed values: comma-separated list of words"
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
294
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
295 def _value2str(self, value):
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
296 return ','.join(value)
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
297
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
298 def str2value(self, value):
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
299 return value.split(',')
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
300
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
301 class RunDetectorOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
302
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
303 """When a detector is run: always, never or for new items only"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
304
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
305 class_description = "Allowed values: yes, no, new"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
306
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
307 def str2value(self, value):
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
308 _val = value.lower()
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
309 if _val in ("yes", "no", "new"):
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
310 return _val
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
311 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
312 raise OptionValueError(self, value, self.class_description)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
313
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
314 class CsrfSettingOption(Option):
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
315
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
316 """How should a csrf measure be enforced: required, yes, logfailure, no"""
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
317
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
318 class_description = "Allowed values: required, yes, logfailure, no"
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
319
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
320 def str2value(self, value):
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
321 _val = value.lower()
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
322 if _val in ("required", "yes", "logfailure", "no"):
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
323 return _val
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
324 else:
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
325 raise OptionValueError(self, value, self.class_description)
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
326
5212
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
327 class SameSiteSettingOption(Option):
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
328
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
329 """How should the SameSite cookie setting be set: strict, lax
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
330 or should it not be added (none)"""
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
331
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
332 class_description = "Allowed values: Strict, Lax, None"
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
333
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
334 def str2value(self, value):
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
335 _val = value.lower()
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
336 if _val in ("strict", "lax", "none"):
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
337 return _val.capitalize()
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
338 else:
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
339 raise OptionValueError(self, value, self.class_description)
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
340
5748
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
341 class DatabaseBackend(Option):
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
342 """handle exact text of backend and make sure it's available"""
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
343 class_description = "Available backends: %s"%", ".join(list_backends())
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
344
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
345 def str2value(self, value):
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
346 _val = value.lower()
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
347 if _val in list_backends():
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
348 return _val
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
349 else:
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
350 raise OptionValueError(self, value, self.class_description)
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
351
5305
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
352 class HtmlToTextOption(Option):
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
353
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
354 """What module should be used to convert emails with only text/html parts into text for display in roundup. Choose from beautifulsoup 4, dehtml - the internal code or none to disable html to text conversion. If beautifulsoup chosen but not available, dehtml will be used."""
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
355
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
356 class_description = "Allowed values: beautifulsoup, dehtml, none"
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
357
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
358 def str2value(self, value):
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
359 _val = value.lower()
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
360 if _val in ("beautifulsoup", "dehtml", "none"):
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
361 return _val
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
362 else:
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
363 raise OptionValueError(self, value, self.class_description)
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
364
5117
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
365 class EmailBodyOption(Option):
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
366
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
367 """When to replace message body or strip quoting: always, never or for new items only"""
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
368
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
369 class_description = "Allowed values: yes, no, new"
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
370
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
371 def str2value(self, value):
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
372 _val = value.lower()
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
373 if _val in ("yes", "no", "new"):
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
374 return _val
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
375 else:
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
376 raise OptionValueError(self, value, self.class_description)
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
377
4887
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
378 class IsolationOption(Option):
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
379 """Database isolation levels"""
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
380
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
381 allowed = ['read uncommitted', 'read committed', 'repeatable read',
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
382 'serializable']
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
383 class_description = "Allowed values: %s" % ', '.join ("'%s'" % a
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
384 for a in allowed)
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
385
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
386 def str2value(self, value):
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
387 _val = value.lower()
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
388 if _val in self.allowed:
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
389 return _val
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
390 raise OptionValueError(self, value, self.class_description)
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
391
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
392 class MailAddressOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
393
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
394 """Email address
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
395
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
396 Email addresses may be either fully qualified or local.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
397 In the latter case MAIL_DOMAIN is automatically added.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
398
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
399 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
400
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
401 def get(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
402 _val = Option.get(self)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
403 if "@" not in _val:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
404 _val = "@".join((_val, self.config["MAIL_DOMAIN"]))
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
405 return _val
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
406
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
407 class FilePathOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
408
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
409 """File or directory path name
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
410
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
411 Paths may be either absolute or relative to the HOME.
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
412
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
413 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
414
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
415 class_description = "The path may be either absolute or relative\n" \
5102
96dc9f07340a issue2161722: oudated docs
John Rouillard <rouilj@ieee.org>
parents: 5098
diff changeset
416 "to the directory containing this config file."
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
417
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
418 def get(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
419 _val = Option.get(self)
2619
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
420 if _val and not os.path.isabs(_val):
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
421 _val = os.path.join(self.config["HOME"], _val)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
422 return _val
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
423
5231
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
424 class MultiFilePathOption(Option):
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
425
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
426 """List of space seperated File or directory path name
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
427
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
428 Paths may be either absolute or relative to the HOME. None
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
429 is returned if there are no elements.
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
430
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
431 """
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
432
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
433 class_description = "The space separated paths may be either absolute or\n" \
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
434 "relative to the directory containing this config file."
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
435
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
436 def get(self):
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
437 pathlist = []
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
438 _val = Option.get(self)
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
439 for elem in _val.split():
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
440 if elem and not os.path.isabs(elem):
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
441 pathlist.append(os.path.join(self.config["HOME"], elem))
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
442 else:
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
443 pathlist.append(elem)
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
444 if pathlist:
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
445 return pathlist
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
446 else:
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
447 return None
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
448
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
449 class FloatNumberOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
450
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
451 """Floating point numbers"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
452
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
453 def str2value(self, value):
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
454 try:
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
455 return float(value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
456 except ValueError:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
457 raise OptionValueError(self, value,
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
458 "Floating point number required")
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
459
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
460 def _value2str(self, value):
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
461 _val = str(value)
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
462 # strip fraction part from integer numbers
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
463 if _val.endswith(".0"):
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
464 _val = _val[:-2]
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
465 return _val
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
466
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
467 class IntegerNumberOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
468
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
469 """Integer numbers"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
470
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
471 def str2value(self, value):
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
472 try:
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
473 return int(value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
474 except ValueError:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
475 raise OptionValueError(self, value, "Integer number required")
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
476
5772
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
477 class IntegerNumberGeqZeroOption(Option):
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
478
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
479 """Integer numbers greater than or equal to zero."""
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
480
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
481 def str2value(self, value):
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
482 try:
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
483 v = int(value)
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
484 if v < 0:
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
485 raise OptionValueError(self, value,
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
486 "Integer number greater than or equal to zero required")
5773
1151a2b31f1d Yeah, let's actually return the option value.....
John Rouillard <rouilj@ieee.org>
parents: 5772
diff changeset
487 return v
5772
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
488 except OptionValueError:
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
489 raise # pass through subclass
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
490 except ValueError:
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
491 raise OptionValueError(self, value, "Integer number required")
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
492
3609
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
493 class OctalNumberOption(Option):
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
494
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
495 """Octal Integer numbers"""
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
496
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
497 def str2value(self, value):
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
498 try:
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
499 return int(value, 8)
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
500 except ValueError:
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
501 raise OptionValueError(self, value, "Octal Integer number required")
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
502
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
503 def _value2str(self, value):
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
504 return oct(value)
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
505
5726
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
506 class MandatoryOption(Option):
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
507 """Option must not be empty"""
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
508 def str2value(self, value):
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
509 if not value:
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
510 raise OptionValueError(self,value,"Value must not be empty.")
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
511 else:
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
512 return value
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
513
5770
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
514 class WebUrlOption(Option):
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
515 """URL MUST start with http/https scheme and end with '/'"""
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
516
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
517 def str2value(self, value):
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
518 if not value:
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
519 raise OptionValueError(self,value,"Value must not be empty.")
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
520
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
521 error_msg = ''
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
522 if not value.startswith(('http://', 'https://')):
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
523 error_msg = "Value must start with http:// or https://.\n"
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
524
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
525 if not value.endswith('/'):
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
526 error_msg += "Value must end with /."
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
527
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
528 if error_msg:
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
529 raise OptionValueError(self,value,error_msg)
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
530 else:
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
531 return value
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
532
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
533 class NullableOption(Option):
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
534
4074
e039f3cbbb96 Make RDBMS cache-size configurable.
Stefan Seefeld <stefan@seefeld.name>
parents: 4013
diff changeset
535 """Option that is set to None if its string value is one of NULL strings
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
536
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
537 Default nullable strings list contains empty string only.
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
538 There is constructor parameter allowing to specify different nullables.
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
539
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
540 Conversion to external representation returns the first of the NULL
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
541 strings list when the value is None.
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
542
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
543 """
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
544
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
545 NULL_STRINGS = ("",)
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
546
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
547 def __init__(self, config, section, setting,
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
548 default=NODEFAULT, description=None, aliases=None,
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
549 null_strings=NULL_STRINGS
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
550 ):
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
551 self.null_strings = list(null_strings)
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
552 Option.__init__(self, config, section, setting, default,
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
553 description, aliases)
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
554
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
555 def str2value(self, value):
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
556 if value in self.null_strings:
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
557 return None
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
558 else:
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
559 return value
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
560
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
561 def _value2str(self, value):
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
562 if value is None:
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
563 return self.null_strings[0]
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
564 else:
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
565 return value
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
566
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
567 class NullableFilePathOption(NullableOption, FilePathOption):
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
568
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
569 # .get() and class_description are from FilePathOption,
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
570 get = FilePathOption.get
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
571 class_description = FilePathOption.class_description
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
572 # everything else taken from NullableOption (inheritance order)
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
573
3620
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
574 class TimezoneOption(Option):
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
575
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
576 class_description = \
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
577 "If pytz module is installed, value may be any valid\n" \
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
578 "timezone specification (e.g. EET or Europe/Warsaw).\n" \
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
579 "If pytz is not installed, value must be integer number\n" \
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
580 "giving local timezone offset from UTC in hours."
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
581
5754
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
582 # fix issue2551030, default value for timezone
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
583 # Must be 0 if no pytz can be UTC if pytz.
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
584 try:
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
585 import pytz
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
586 defaulttz = "UTC"
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
587 except ImportError:
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
588 defaulttz = "0"
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
589
3620
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
590 def str2value(self, value):
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
591 try:
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
592 roundup.date.get_timezone(value)
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
593 except KeyError:
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
594 raise OptionValueError(self, value,
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
595 "Timezone name or numeric hour offset required")
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
596 return value
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
597
5754
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
598
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
599 class RegExpOption(Option):
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
600
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
601 """Regular Expression option (value is Regular Expression Object)"""
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
602
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
603 class_description = "Value is Python Regular Expression (UTF8-encoded)."
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
604
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
605 RE_TYPE = type(re.compile(""))
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
606
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
607 def __init__(self, config, section, setting,
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
608 default=NODEFAULT, description=None, aliases=None,
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
609 flags=0,
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
610 ):
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
611 self.flags = flags
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
612 Option.__init__(self, config, section, setting, default,
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
613 description, aliases)
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
614
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
615 def _value2str(self, value):
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
616 assert isinstance(value, self.RE_TYPE)
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
617 return value.pattern
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
618
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
619 def str2value(self, value):
5416
56c9bcdea47f Python 3 preparation: unicode.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5395
diff changeset
620 if not isinstance(value, type(u'')):
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
621 value = str(value)
5416
56c9bcdea47f Python 3 preparation: unicode.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5395
diff changeset
622 if not isinstance(value, type(u'')):
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
623 # if it is 7-bit ascii, use it as string,
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
624 # otherwise convert to unicode.
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
625 try:
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
626 value.decode("ascii")
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
627 except UnicodeError:
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
628 value = value.decode("utf-8")
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
629 return re.compile(value, self.flags)
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
630
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
631 ### Main configuration layout.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
632 # Config is described as a sequence of sections,
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
633 # where each section name is followed by a sequence
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
634 # of Option definitions. Each Option definition
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
635 # is a sequence containing class name and constructor
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
636 # parameters, starting from the setting name:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
637 # setting, default, [description, [aliases]]
2627
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
638 # Note: aliases should only exist in historical options for backwards
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
639 # compatibility - new options should *not* have aliases!
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
640 SETTINGS = (
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
641 ("main", (
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
642 (FilePathOption, "database", "db", "Database directory path."),
4587
a2eb4fb3e6d8 New Chameleon templating engine, engine is now configurable.
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4570
diff changeset
643 (Option, "template_engine", "zopetal",
a2eb4fb3e6d8 New Chameleon templating engine, engine is now configurable.
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4570
diff changeset
644 "Templating engine to use.\n"
a2eb4fb3e6d8 New Chameleon templating engine, engine is now configurable.
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4570
diff changeset
645 "Possible values are 'zopetal' for the old TAL engine\n"
4714
ef7ae277a3b1 Typo fixed: Chamaleon -> Chameleon
Bernhard Reiter <bernhard@intevation.de>
parents: 4587
diff changeset
646 "ported from Zope, or 'chameleon' for Chameleon."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
647 (FilePathOption, "templates", "html",
2863
ae2907da636d added STATIC_FILES option
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2850
diff changeset
648 "Path to the HTML templates directory."),
5231
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
649 (MultiFilePathOption, "static_files", "",
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
650 "A list of space separated directory paths (or a single\n"
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
651 "directory). These directories hold additional static\n"
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
652 "files available via Web UI. These directories may\n"
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
653 "contain sitewide images, CSS stylesheets etc. If a '-'\n"
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
654 "is included, the list processing ends and the TEMPLATES\n"
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
655 "directory is not searched after the specified\n"
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
656 "directories. If this option is not set, all static\n"
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
657 "files are taken from the TEMPLATES directory."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
658 (MailAddressOption, "admin_email", "roundup-admin",
4013
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
659 "Email address that roundup will complain to if it runs\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
660 "into trouble.\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
661 "If no domain is specified then the config item\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
662 "mail -> domain is added."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
663 (MailAddressOption, "dispatcher_email", "roundup-admin",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
664 "The 'dispatcher' is a role that can get notified\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
665 "of new items to the database.\n"
4013
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
666 "It is used by the ERROR_MESSAGES_TO config setting.\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
667 "If no domain is specified then the config item\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
668 "mail -> domain is added."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
669 (Option, "email_from_tag", "",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
670 "Additional text to include in the \"name\" part\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
671 "of the From: address used in nosy messages.\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
672 "If the sending user is \"Foo Bar\", the From: line\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
673 "is usually: \"Foo Bar\" <issue_tracker@tracker.example>\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
674 "the EMAIL_FROM_TAG goes inside the \"Foo Bar\" quotes like so:\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
675 "\"Foo Bar EMAIL_FROM_TAG\" <issue_tracker@tracker.example>"),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
676 (Option, "new_web_user_roles", "User",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
677 "Roles that a user gets when they register"
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
678 " with Web User Interface.\n"
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
679 "This is a comma-separated string of role names"
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
680 " (e.g. 'Admin,User')."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
681 (Option, "new_email_user_roles", "User",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
682 "Roles that a user gets when they register"
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
683 " with Email Gateway.\n"
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
684 "This is a comma-separated string of role names"
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
685 " (e.g. 'Admin,User')."),
5315
5a014410f254 Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5305
diff changeset
686 (Option, "obsolete_history_roles", "Admin",
5a014410f254 Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5305
diff changeset
687 "On schema changes, properties or classes in the history may\n"
5a014410f254 Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5305
diff changeset
688 "become obsolete. Since normal access permissions do not apply\n"
5a014410f254 Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5305
diff changeset
689 "(we don't know if a user should see such a property or class)\n"
5a014410f254 Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5305
diff changeset
690 "a list of roles is specified here that are allowed to see\n"
5a014410f254 Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5305
diff changeset
691 "these obsolete properties in the history. By default only the\n"
5a014410f254 Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5305
diff changeset
692 "admin role may see these history entries, you can make them\n"
5a014410f254 Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5305
diff changeset
693 "visible to all users by adding, e.g., the 'User' role here."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
694 (Option, "error_messages_to", "user",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
695 # XXX This description needs better wording,
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
696 # with explicit allowed values list.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
697 "Send error message emails to the dispatcher, user, or both?\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
698 "The dispatcher is configured using the DISPATCHER_EMAIL"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
699 " setting."),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
700 (Option, "html_version", "html4",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
701 "HTML version to generate. The templates are html4 by default.\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
702 "If you wish to make them xhtml, then you'll need to change this\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
703 "var to 'xhtml' too so all auto-generated HTML is compliant.\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
704 "Allowed values: html4, xhtml"),
5754
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
705 (TimezoneOption, "timezone", TimezoneOption.defaulttz,
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
706 "Default timezone offset,"
3620
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
707 " applied when user's timezone is not set.",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
708 ["DEFAULT_TIMEZONE"]),
2649
1df7d4a41da4 Buncha stuff (sorry about the large checkin):
Richard Jones <richard@users.sourceforge.net>
parents: 2646
diff changeset
709 (BooleanOption, "instant_registration", "no",
1df7d4a41da4 Buncha stuff (sorry about the large checkin):
Richard Jones <richard@users.sourceforge.net>
parents: 2646
diff changeset
710 "Register new users instantly, or require confirmation via\n"
1df7d4a41da4 Buncha stuff (sorry about the large checkin):
Richard Jones <richard@users.sourceforge.net>
parents: 2646
diff changeset
711 "email?"),
3469
d3b02352484f enable registration confirmation by web only [SF#1381675]
Richard Jones <richard@users.sourceforge.net>
parents: 3452
diff changeset
712 (BooleanOption, "email_registration_confirmation", "yes",
d3b02352484f enable registration confirmation by web only [SF#1381675]
Richard Jones <richard@users.sourceforge.net>
parents: 3452
diff changeset
713 "Offer registration confirmation by email or only through the web?"),
5096
e74c3611b138 - issue2550636, issue2550909: Added support for Whoosh indexer.
John Rouillard <rouilj@ieee.org>
parents: 5045
diff changeset
714 (Option, "indexer", "",
e74c3611b138 - issue2550636, issue2550909: Added support for Whoosh indexer.
John Rouillard <rouilj@ieee.org>
parents: 5045
diff changeset
715 "Force Roundup to use a particular text indexer.\n"
e74c3611b138 - issue2550636, issue2550909: Added support for Whoosh indexer.
John Rouillard <rouilj@ieee.org>
parents: 5045
diff changeset
716 "If no indexer is supplied, the first available indexer\n"
e74c3611b138 - issue2550636, issue2550909: Added support for Whoosh indexer.
John Rouillard <rouilj@ieee.org>
parents: 5045
diff changeset
717 "will be used in the following order:\n"
e74c3611b138 - issue2550636, issue2550909: Added support for Whoosh indexer.
John Rouillard <rouilj@ieee.org>
parents: 5045
diff changeset
718 "Possible values: xapian, whoosh, native (internal)."),
3544
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
719 (WordListOption, "indexer_stopwords", "",
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
720 "Additional stop-words for the full-text indexer specific to\n"
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
721 "your tracker. See the indexer source for the default list of\n"
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
722 "stop-words (eg. A,AND,ARE,AS,AT,BE,BUT,BY, ...)"),
5736
1b5bcc5d745f Change umask default to python 3 (put python2 compatible) format with
John Rouillard <rouilj@ieee.org>
parents: 5732
diff changeset
723 (OctalNumberOption, "umask", "0o002",
3609
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
724 "Defines the file creation mode mask."),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
725 (IntegerNumberGeqZeroOption, 'csv_field_size', '131072',
4255
88af08f8666f New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4088
diff changeset
726 "Maximum size of a csv-field during import. Roundups export\n"
88af08f8666f New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4088
diff changeset
727 "format is a csv (comma separated values) variant. The csv\n"
88af08f8666f New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4088
diff changeset
728 "reader has a limit on the size of individual fields\n"
88af08f8666f New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4088
diff changeset
729 "starting with python 2.5. Set this to a higher value if you\n"
88af08f8666f New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4088
diff changeset
730 "get the error 'Error: field larger than field limit' during\n"
88af08f8666f New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4088
diff changeset
731 "import."),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
732 (IntegerNumberGeqZeroOption, 'password_pbkdf2_default_rounds', '10000',
4486
693c75d56ebe Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4484
diff changeset
733 "Sets the default number of rounds used when encoding passwords\n"
693c75d56ebe Add new config-option 'password_pbkdf2_default_rounds'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4484
diff changeset
734 "using the PBKDF2 scheme. Set this to a higher value on faster\n"
4488
d483a40e2f82 more verbose description of password hashing, thanks to Eli Collins
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4486
diff changeset
735 "systems which want more security.\n"
d483a40e2f82 more verbose description of password hashing, thanks to Eli Collins
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4486
diff changeset
736 "PBKDF2 (Password-Based Key Derivation Function) is a\n"
d483a40e2f82 more verbose description of password hashing, thanks to Eli Collins
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4486
diff changeset
737 "password hashing mechanism that derives hash from the\n"
d483a40e2f82 more verbose description of password hashing, thanks to Eli Collins
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4486
diff changeset
738 "password and a random salt. For authentication this process\n"
d483a40e2f82 more verbose description of password hashing, thanks to Eli Collins
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4486
diff changeset
739 "is repeated with the same salt as in the stored hash.\n"
d483a40e2f82 more verbose description of password hashing, thanks to Eli Collins
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4486
diff changeset
740 "If both hashes match, the authentication succeeds.\n"
d483a40e2f82 more verbose description of password hashing, thanks to Eli Collins
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4486
diff changeset
741 "PBKDF2 supports a variable 'rounds' parameter which varies\n"
d483a40e2f82 more verbose description of password hashing, thanks to Eli Collins
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4486
diff changeset
742 "the time-cost of calculating the hash - doubling the number\n"
d483a40e2f82 more verbose description of password hashing, thanks to Eli Collins
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4486
diff changeset
743 "of rounds doubles the cpu time required to calculate it. The\n"
d483a40e2f82 more verbose description of password hashing, thanks to Eli Collins
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4486
diff changeset
744 "purpose of this is to periodically adjust the rounds as CPUs\n"
d483a40e2f82 more verbose description of password hashing, thanks to Eli Collins
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4486
diff changeset
745 "become faster. The currently enforced minimum number of\n"
d483a40e2f82 more verbose description of password hashing, thanks to Eli Collins
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4486
diff changeset
746 "rounds is 1000.\n"
d483a40e2f82 more verbose description of password hashing, thanks to Eli Collins
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4486
diff changeset
747 "See: http://en.wikipedia.org/wiki/PBKDF2 and RFC2898"),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
748 )),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
749 ("tracker", (
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
750 (Option, "name", "Roundup issue tracker",
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
751 "A descriptive name for your roundup instance."),
5770
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
752 (WebUrlOption, "web", NODEFAULT,
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
753 "The web address that the tracker is viewable at.\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
754 "This will be included in information"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
755 " sent to users of the tracker.\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
756 "The URL MUST include the cgi-bin part or anything else\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
757 "that is required to get to the home page of the tracker.\n"
5770
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
758 "URL MUST start with http/https scheme and end with '/'"),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
759 (MailAddressOption, "email", "issue_tracker",
4013
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
760 "Email address that mail to roundup should go to.\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
761 "If no domain is specified then mail_domain is added."),
5098
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
762 (Option, "replyto_address", "",
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
763 "Controls the reply-to header address used when sending\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
764 "nosy messages.\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
765 "If the value is unset (default) the roundup tracker's\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
766 "email address (above) is used.\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
767 "If set to \"AUTHOR\" then the primary email address of the\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
768 "author of the change will be used as the reply-to\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
769 "address. This allows email exchanges to occur outside of\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
770 "the view of roundup and exposes the address of the person\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
771 "who updated the issue, but it could be useful in some\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
772 "unusual circumstances.\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
773 "If set to some other value, the value is used as the reply-to\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
774 "address. It must be a valid RFC2822 address or people will not be\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
775 "able to reply."),
2922
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
776 (NullableOption, "language", "",
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
777 "Default locale name for this tracker.\n"
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
778 "If this option is not set, the language is determined\n"
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
779 "by OS environment variable LANGUAGE, LC_ALL, LC_MESSAGES,\n"
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
780 "or LANG, in that order of preference."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
781 )),
3356
2913b42c0810 enabled disabling of REMOTE_USER for when it's not a valid username
Richard Jones <richard@users.sourceforge.net>
parents: 3155
diff changeset
782 ("web", (
4088
34434785f308 Plug a number of security holes:
Richard Jones <richard@users.sourceforge.net>
parents: 4074
diff changeset
783 (BooleanOption, "allow_html_file", "no",
34434785f308 Plug a number of security holes:
Richard Jones <richard@users.sourceforge.net>
parents: 4074
diff changeset
784 "Setting this option enables Roundup to serve uploaded HTML\n"
34434785f308 Plug a number of security holes:
Richard Jones <richard@users.sourceforge.net>
parents: 4074
diff changeset
785 "file content *as HTML*. This is a potential security risk\n"
34434785f308 Plug a number of security holes:
Richard Jones <richard@users.sourceforge.net>
parents: 4074
diff changeset
786 "and is therefore disabled by default. Set to 'yes' if you\n"
34434785f308 Plug a number of security holes:
Richard Jones <richard@users.sourceforge.net>
parents: 4074
diff changeset
787 "trust *all* users uploading content to your tracker."),
3452
be505af06586 web_http_auth is boolean value
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3431
diff changeset
788 (BooleanOption, 'http_auth', "yes",
3356
2913b42c0810 enabled disabling of REMOTE_USER for when it's not a valid username
Richard Jones <richard@users.sourceforge.net>
parents: 3155
diff changeset
789 "Whether to use HTTP Basic Authentication, if present.\n"
2913b42c0810 enabled disabling of REMOTE_USER for when it's not a valid username
Richard Jones <richard@users.sourceforge.net>
parents: 3155
diff changeset
790 "Roundup will use either the REMOTE_USER or HTTP_AUTHORIZATION\n"
2913b42c0810 enabled disabling of REMOTE_USER for when it's not a valid username
Richard Jones <richard@users.sourceforge.net>
parents: 3155
diff changeset
791 "variables supplied by your web server (in that order).\n"
2913b42c0810 enabled disabling of REMOTE_USER for when it's not a valid username
Richard Jones <richard@users.sourceforge.net>
parents: 3155
diff changeset
792 "Set this option to 'no' if you do not wish to use HTTP Basic\n"
2913b42c0810 enabled disabling of REMOTE_USER for when it's not a valid username
Richard Jones <richard@users.sourceforge.net>
parents: 3155
diff changeset
793 "Authentication in your web interface."),
5772
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
794 (IntegerNumberGeqZeroOption, 'login_attempts_min', "3",
5717
cad18de2b988 issue2550949: Rate limit password guesses/login attempts.
John Rouillard <rouilj@ieee.org>
parents: 5698
diff changeset
795 "Limit login attempts per user per minute to this number.\n"
cad18de2b988 issue2550949: Rate limit password guesses/login attempts.
John Rouillard <rouilj@ieee.org>
parents: 5698
diff changeset
796 "By default the 4th login attempt in a minute will notify\n"
cad18de2b988 issue2550949: Rate limit password guesses/login attempts.
John Rouillard <rouilj@ieee.org>
parents: 5698
diff changeset
797 "the user that they need to wait 20 seconds before trying to\n"
cad18de2b988 issue2550949: Rate limit password guesses/login attempts.
John Rouillard <rouilj@ieee.org>
parents: 5698
diff changeset
798 "log in again. This limits password guessing attacks and\n"
5772
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
799 "shouldn't need to be changed. Rate limiting on login can\n"
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
800 "be disabled by setting the value to 0."),
5974
98a8509ce45c issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents: 5956
diff changeset
801 (IntegerNumberGeqZeroOption, 'registration_delay', "4",
98a8509ce45c issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents: 5956
diff changeset
802 "The number of seconds needed to complete the new user\n"
98a8509ce45c issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents: 5956
diff changeset
803 "registration form. This limits the rate at which bots\n"
98a8509ce45c issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents: 5956
diff changeset
804 "can attempt to sign up. Limit can be disabled by setting\n"
98a8509ce45c issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents: 5956
diff changeset
805 "the value to 0."),
5976
71c68961d9f4 - issue2550920 - Optionally detect duplicate username at registration.
John Rouillard <rouilj@ieee.org>
parents: 5974
diff changeset
806 (BooleanOption, 'registration_prevalidate_username', "no",
71c68961d9f4 - issue2550920 - Optionally detect duplicate username at registration.
John Rouillard <rouilj@ieee.org>
parents: 5974
diff changeset
807 "When registering a user, check that the username\n"
71c68961d9f4 - issue2550920 - Optionally detect duplicate username at registration.
John Rouillard <rouilj@ieee.org>
parents: 5974
diff changeset
808 "is available before sending confirmation email.\n"
71c68961d9f4 - issue2550920 - Optionally detect duplicate username at registration.
John Rouillard <rouilj@ieee.org>
parents: 5974
diff changeset
809 "Usually a username conflict is detected when\n"
71c68961d9f4 - issue2550920 - Optionally detect duplicate username at registration.
John Rouillard <rouilj@ieee.org>
parents: 5974
diff changeset
810 "confirming the registration. Disabled by default as\n"
71c68961d9f4 - issue2550920 - Optionally detect duplicate username at registration.
John Rouillard <rouilj@ieee.org>
parents: 5974
diff changeset
811 "it can be used for guessing existing usernames.\n" ),
5212
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
812 (SameSiteSettingOption, 'samesite_cookie_setting', "Lax",
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
813 """Set the mode of the SameSite cookie option for
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
814 the session cookie. Choices are 'Lax' or
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
815 'Strict'. 'None' can be used to suppress the
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
816 option. Strict mode provides additional security
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
817 against CSRF attacks, but may confuse users who
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
818 are logged into roundup and open a roundup link
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
819 from a source other than roundup (e.g. link in
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
820 email)."""),
5603
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
821 (BooleanOption, 'enable_xmlrpc', "yes",
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
822 """Whether to enable the XMLRPC API in the roundup web
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
823 interface. By default the XMLRPC endpoint is the string 'xmlrpc'
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
824 after the roundup web url configured in the 'tracker' section.
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
825 If this variable is set to 'no', the xmlrpc path has no special meaning
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
826 and will yield an error message."""),
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
827 (BooleanOption, 'enable_rest', "yes",
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
828 """Whether to enable the REST API in the roundup web
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
829 interface. By default the REST endpoint is the string 'rest' plus any
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
830 additional REST-API parameters after the roundup web url configured in
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
831 the tracker section. If this variable is set to 'no', the rest path has
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
832 no special meaning and will yield an error message."""),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
833 (IntegerNumberGeqZeroOption, 'api_calls_per_interval', "0",
5732
0e6ed3d72f92 Rest rate limiting code first commit. It is a bit rough and turned off
John Rouillard <rouilj@ieee.org>
parents: 5726
diff changeset
834 "Limit API calls per api_interval_in_sec seconds to\n"
0e6ed3d72f92 Rest rate limiting code first commit. It is a bit rough and turned off
John Rouillard <rouilj@ieee.org>
parents: 5726
diff changeset
835 "this number.\n"
0e6ed3d72f92 Rest rate limiting code first commit. It is a bit rough and turned off
John Rouillard <rouilj@ieee.org>
parents: 5726
diff changeset
836 "Determines the burst rate and the rate that new api\n"
0e6ed3d72f92 Rest rate limiting code first commit. It is a bit rough and turned off
John Rouillard <rouilj@ieee.org>
parents: 5726
diff changeset
837 "calls will be made available. If set to 360 and\n"
0e6ed3d72f92 Rest rate limiting code first commit. It is a bit rough and turned off
John Rouillard <rouilj@ieee.org>
parents: 5726
diff changeset
838 "api_intervals_in_sec is set to 3600, the 361st call in\n"
0e6ed3d72f92 Rest rate limiting code first commit. It is a bit rough and turned off
John Rouillard <rouilj@ieee.org>
parents: 5726
diff changeset
839 "10 seconds results in a 429 error to the caller. It\n"
0e6ed3d72f92 Rest rate limiting code first commit. It is a bit rough and turned off
John Rouillard <rouilj@ieee.org>
parents: 5726
diff changeset
840 "tells them to wait 10 seconds (360/3600) before making\n"
0e6ed3d72f92 Rest rate limiting code first commit. It is a bit rough and turned off
John Rouillard <rouilj@ieee.org>
parents: 5726
diff changeset
841 "another api request. A value of 0 turns off rate\n"
0e6ed3d72f92 Rest rate limiting code first commit. It is a bit rough and turned off
John Rouillard <rouilj@ieee.org>
parents: 5726
diff changeset
842 "limiting in the API. Tune this as needed. See rest\n"
0e6ed3d72f92 Rest rate limiting code first commit. It is a bit rough and turned off
John Rouillard <rouilj@ieee.org>
parents: 5726
diff changeset
843 "documentation for more info.\n"),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
844 (IntegerNumberGeqZeroOption, 'api_interval_in_sec', "3600",
5732
0e6ed3d72f92 Rest rate limiting code first commit. It is a bit rough and turned off
John Rouillard <rouilj@ieee.org>
parents: 5726
diff changeset
845 "Defines the interval in seconds over which an api client can\n"
0e6ed3d72f92 Rest rate limiting code first commit. It is a bit rough and turned off
John Rouillard <rouilj@ieee.org>
parents: 5726
diff changeset
846 "make api_calls_per_interval api calls. Tune this as needed.\n"),
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
847 (CsrfSettingOption, 'csrf_enforce_token', "yes",
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
848 """How do we deal with @csrf fields in posted forms.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
849 Set this to 'required' to block the post and notify
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
850 the user if the field is missing or invalid.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
851 Set this to 'yes' to block the post and notify the user
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
852 if the token is invalid, but accept the form if
5214
4c48180555fb Fix text formatting, typos and, English grammar of the descriptive text.
John Rouillard <rouilj@ieee.org>
parents: 5212
diff changeset
853 the field is missing.
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
854 Set this to 'logfailure' to log a notice to the roundup
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
855 log if the field is invalid or missing, but accept
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
856 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
857 Set this to 'no' to ignore the field and accept the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
858 """),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
859 (IntegerNumberGeqZeroOption, 'csrf_token_lifetime', "20160",
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
860 """csrf_tokens have a limited lifetime. If they are not
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
861 used they are purged from the database after this
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
862 number of minutes. Default (20160) is 2 weeks."""),
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
863 (CsrfSettingOption, 'csrf_enforce_token', "yes",
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
864 """How do we deal with @csrf fields in posted forms.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
865 Set this to 'required' to block the post and notify
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
866 the user if the field is missing or invalid.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
867 Set this to 'yes' to block the post and notify the user
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
868 if the token is invalid, but accept the form if
5214
4c48180555fb Fix text formatting, typos and, English grammar of the descriptive text.
John Rouillard <rouilj@ieee.org>
parents: 5212
diff changeset
869 the field is missing.
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
870 Set this to 'logfailure' to log a notice to the roundup
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
871 log if the field is invalid or missing, but accept
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
872 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
873 Set this to 'no' to ignore the field and accept the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
874 """),
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
875 (CsrfSettingOption, 'csrf_enforce_header_X-REQUESTED-WITH', "yes",
5698
c7dd1cae3416 Update rest.txt example to include headers required for CSRF
John Rouillard <rouilj@ieee.org>
parents: 5603
diff changeset
876 """This is only used for xmlrpc and rest requests. This test is
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
877 done after Origin and Referer headers are checked. It only
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
878 verifies that the X-Requested-With header exists. The value
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
879 is ignored.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
880 Set this to 'required' to block the post and notify
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
881 the user if the header is missing or invalid.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
882 Set this to 'yes' is the same as required.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
883 Set this to 'logfailure' is the same as 'no'.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
884 Set this to 'no' to ignore the header and accept the post."""),
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
885 (CsrfSettingOption, 'csrf_enforce_header_referer', "yes",
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
886 """Verify that the Referer http header matches the
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
887 tracker.web setting in config.ini.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
888 Set this to 'required' to block the post and notify
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
889 the user if the header is missing or invalid.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
890 Set this to 'yes' to block the post and notify the user
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
891 if the header is invalid, but accept the form if
5214
4c48180555fb Fix text formatting, typos and, English grammar of the descriptive text.
John Rouillard <rouilj@ieee.org>
parents: 5212
diff changeset
892 the field is missing.
4c48180555fb Fix text formatting, typos and, English grammar of the descriptive text.
John Rouillard <rouilj@ieee.org>
parents: 5212
diff changeset
893 Set this to 'logfailure' to log a notice to the roundup
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
894 log if the header is invalid or missing, but accept
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
895 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
896 Set this to 'no' to ignore the header and accept the post."""),
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
897 (CsrfSettingOption, 'csrf_enforce_header_origin', "yes",
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
898 """Verify that the Origin http header matches the
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
899 tracker.web setting in config.ini.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
900 Set this to 'required' to block the post and notify
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
901 the user if the header is missing or invalid.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
902 Set this to 'yes' to block the post and notify the user
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
903 if the header is invalid, but accept the form if
5214
4c48180555fb Fix text formatting, typos and, English grammar of the descriptive text.
John Rouillard <rouilj@ieee.org>
parents: 5212
diff changeset
904 the field is missing.
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
905 Set this to 'logfailure' to log a notice to the roundup
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
906 log if the header is invalid or missing, but accept
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
907 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
908 Set this to 'no' to ignore the header and accept the post."""),
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
909 (CsrfSettingOption, 'csrf_enforce_header_x-forwarded-host', "yes",
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
910 """Verify that the X-Forwarded-Host http header matches
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
911 the host part of the tracker.web setting in config.ini.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
912 Set this to 'required' to block the post and notify
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
913 the user if the header is missing or invalid.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
914 Set this to 'yes' to block the post and notify the user
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
915 if the header is invalid, but accept the form if
5214
4c48180555fb Fix text formatting, typos and, English grammar of the descriptive text.
John Rouillard <rouilj@ieee.org>
parents: 5212
diff changeset
916 the field is missing.
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
917 Set this to 'logfailure' to log a notice to the roundup
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
918 log if the header is invalid or missing, but accept
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
919 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
920 Set this to 'no' to ignore the header and accept the post."""),
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
921 (CsrfSettingOption, 'csrf_enforce_header_host', "yes",
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
922 """"If there is no X-Forward-Host header, verify that
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
923 the Host http header matches the host part of the
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
924 tracker.web setting in config.ini.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
925 Set this to 'required' to block the post and notify
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
926 the user if the header is missing or invalid.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
927 Set this to 'yes' to block the post and notify the user
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
928 if the header is invalid, but accept the form if
5214
4c48180555fb Fix text formatting, typos and, English grammar of the descriptive text.
John Rouillard <rouilj@ieee.org>
parents: 5212
diff changeset
929 the field is missing.
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
930 Set this to 'logfailure' to log a notice to the roundup
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
931 log if the header is invalid or missing, but accept
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
932 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
933 Set this to 'no' to ignore the header and accept the post."""),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
934 (IntegerNumberGeqZeroOption, 'csrf_header_min_count', "1",
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
935 """Minimum number of header checks that must pass
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
936 to accept the request. Set to 0 to accept post
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
937 even if no header checks pass. Usually the Host header check
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
938 always passes, so setting it less than 1 is not recommended."""),
3425
2b27c92d64dc add web/use_browser_language option
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3417
diff changeset
939 (BooleanOption, 'use_browser_language', "yes",
2b27c92d64dc add web/use_browser_language option
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3417
diff changeset
940 "Whether to use HTTP Accept-Language, if present.\n"
2b27c92d64dc add web/use_browser_language option
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3417
diff changeset
941 "Browsers send a language-region preference list.\n"
3548
61d48244e7a8 login may now be for a single session
Richard Jones <richard@users.sourceforge.net>
parents: 3544
diff changeset
942 "It's usually set in the client's browser or in their\n"
3425
2b27c92d64dc add web/use_browser_language option
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3417
diff changeset
943 "Operating System.\n"
2b27c92d64dc add web/use_browser_language option
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3417
diff changeset
944 "Set this option to 'no' if you want to ignore it."),
3548
61d48244e7a8 login may now be for a single session
Richard Jones <richard@users.sourceforge.net>
parents: 3544
diff changeset
945 (BooleanOption, "debug", "no",
61d48244e7a8 login may now be for a single session
Richard Jones <richard@users.sourceforge.net>
parents: 3544
diff changeset
946 "Setting this option makes Roundup display error tracebacks\n"
61d48244e7a8 login may now be for a single session
Richard Jones <richard@users.sourceforge.net>
parents: 3544
diff changeset
947 "in the user's browser rather than emailing them to the\n"
61d48244e7a8 login may now be for a single session
Richard Jones <richard@users.sourceforge.net>
parents: 3544
diff changeset
948 "tracker admin."),
4484
52e13bf0bb40 Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4474
diff changeset
949 (BooleanOption, "migrate_passwords", "yes",
52e13bf0bb40 Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4474
diff changeset
950 "Setting this option makes Roundup migrate passwords with\n"
52e13bf0bb40 Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4474
diff changeset
951 "an insecure password-scheme to a more secure scheme\n"
52e13bf0bb40 Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4474
diff changeset
952 "when the user logs in via the web-interface."),
5726
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
953 (MandatoryOption, "secret_key", create_token(),
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
954 "A per tracker secret used in etag calculations for\n"
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
955 "an object. It must not be empty.\n"
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
956 "It prevents reverse engineering hidden data in an object\n"
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
957 "by calculating the etag for a sample object. Then modifying\n"
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
958 "hidden properties until the sample object's etag matches\n"
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
959 "the one returned by roundup.\n"
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
960 "Changing this changes the etag and invalidates updates by\n"
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
961 "clients. It must be persistent across application restarts.\n"
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
962 "(Note the default value changes every time\n"
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
963 " roundup-admin updateconfig\n"
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
964 "is run, so it must be explicitly set to a non-empty string.\n"),
5878
1b57d8f3eb97 Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents: 5809
diff changeset
965 (MandatoryOption, "jwt_secret", "disabled",
1b57d8f3eb97 Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents: 5809
diff changeset
966 "This is used to generate/validate json web tokens (jwt).\n"
1b57d8f3eb97 Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents: 5809
diff changeset
967 "Even if you don't use jwts it must not be empty.\n"
1b57d8f3eb97 Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents: 5809
diff changeset
968 "If less than 256 bits (32 characters) in length it will\n"
1b57d8f3eb97 Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents: 5809
diff changeset
969 "disable use of jwt. Changing this invalidates all jwts\n"
1b57d8f3eb97 Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents: 5809
diff changeset
970 "issued by the roundup instance requiring *all* users to\n"
1b57d8f3eb97 Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents: 5809
diff changeset
971 "generate new jwts. This is experimental and disabled by default.\n"
1b57d8f3eb97 Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents: 5809
diff changeset
972 "It must be persistent across application restarts.\n"),
3356
2913b42c0810 enabled disabling of REMOTE_USER for when it's not a valid username
Richard Jones <richard@users.sourceforge.net>
parents: 3155
diff changeset
973 )),
2634
f47ca4541770 Both RDBMS backends now use the same config.ini section, [rdbms].
Richard Jones <richard@users.sourceforge.net>
parents: 2630
diff changeset
974 ("rdbms", (
5748
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
975 (DatabaseBackend, 'backend', NODEFAULT,
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
976 "Database backend."),
2634
f47ca4541770 Both RDBMS backends now use the same config.ini section, [rdbms].
Richard Jones <richard@users.sourceforge.net>
parents: 2630
diff changeset
977 (Option, 'name', 'roundup',
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
978 "Name of the database to use.",
2636
943f9d4592b8 Backwards-compatibility aliases for mysql config.
Richard Jones <richard@users.sourceforge.net>
parents: 2634
diff changeset
979 ['MYSQL_DBNAME']),
2637
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2636
diff changeset
980 (NullableOption, 'host', 'localhost',
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
981 "Database server host.",
2636
943f9d4592b8 Backwards-compatibility aliases for mysql config.
Richard Jones <richard@users.sourceforge.net>
parents: 2634
diff changeset
982 ['MYSQL_DBHOST']),
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
983 (NullableOption, 'port', '',
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
984 "TCP port number of the database server.\n"
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
985 "Postgresql usually resides on port 5432 (if any),\n"
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
986 "for MySQL default port number is 3306.\n"
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
987 "Leave this option empty to use backend default"),
2637
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2636
diff changeset
988 (NullableOption, 'user', 'roundup',
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
989 "Database user name that Roundup should use.",
2636
943f9d4592b8 Backwards-compatibility aliases for mysql config.
Richard Jones <richard@users.sourceforge.net>
parents: 2634
diff changeset
990 ['MYSQL_DBUSER']),
2634
f47ca4541770 Both RDBMS backends now use the same config.ini section, [rdbms].
Richard Jones <richard@users.sourceforge.net>
parents: 2630
diff changeset
991 (NullableOption, 'password', 'roundup',
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
992 "Database user password.",
2636
943f9d4592b8 Backwards-compatibility aliases for mysql config.
Richard Jones <richard@users.sourceforge.net>
parents: 2634
diff changeset
993 ['MYSQL_DBPASSWORD']),
3099
519b92df37dc handle ~/.my.cnf files for MySQL defaults [SF#1096031]
Richard Jones <richard@users.sourceforge.net>
parents: 2922
diff changeset
994 (NullableOption, 'read_default_file', '~/.my.cnf',
519b92df37dc handle ~/.my.cnf files for MySQL defaults [SF#1096031]
Richard Jones <richard@users.sourceforge.net>
parents: 2922
diff changeset
995 "Name of the MySQL defaults file.\n"
519b92df37dc handle ~/.my.cnf files for MySQL defaults [SF#1096031]
Richard Jones <richard@users.sourceforge.net>
parents: 2922
diff changeset
996 "Only used in MySQL connections."),
519b92df37dc handle ~/.my.cnf files for MySQL defaults [SF#1096031]
Richard Jones <richard@users.sourceforge.net>
parents: 2922
diff changeset
997 (NullableOption, 'read_default_group', 'roundup',
519b92df37dc handle ~/.my.cnf files for MySQL defaults [SF#1096031]
Richard Jones <richard@users.sourceforge.net>
parents: 2922
diff changeset
998 "Name of the group to use in the MySQL defaults file (.my.cnf).\n"
519b92df37dc handle ~/.my.cnf files for MySQL defaults [SF#1096031]
Richard Jones <richard@users.sourceforge.net>
parents: 2922
diff changeset
999 "Only used in MySQL connections."),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
1000 (IntegerNumberGeqZeroOption, 'sqlite_timeout', '30',
4415
3e35233ea93c new rdbms config item sqlite_timeout...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4411
diff changeset
1001 "Number of seconds to wait when the SQLite database is locked\n"
3e35233ea93c new rdbms config item sqlite_timeout...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4411
diff changeset
1002 "Default: use a 30 second timeout (extraordinarily generous)\n"
3e35233ea93c new rdbms config item sqlite_timeout...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4411
diff changeset
1003 "Only used in SQLite connections."),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
1004 (IntegerNumberGeqZeroOption, 'cache_size', '100',
4074
e039f3cbbb96 Make RDBMS cache-size configurable.
Stefan Seefeld <stefan@seefeld.name>
parents: 4013
diff changeset
1005 "Size of the node cache (in elements)"),
4474
9b4cf6c96ee2 Add flags to allow to restrict DB modifications.
Stefan Seefeld <stefan@seefeld.name>
parents: 4471
diff changeset
1006 (BooleanOption, "allow_create", "yes",
9b4cf6c96ee2 Add flags to allow to restrict DB modifications.
Stefan Seefeld <stefan@seefeld.name>
parents: 4471
diff changeset
1007 "Setting this option to 'no' protects the database against table creations."),
9b4cf6c96ee2 Add flags to allow to restrict DB modifications.
Stefan Seefeld <stefan@seefeld.name>
parents: 4471
diff changeset
1008 (BooleanOption, "allow_alter", "yes",
9b4cf6c96ee2 Add flags to allow to restrict DB modifications.
Stefan Seefeld <stefan@seefeld.name>
parents: 4471
diff changeset
1009 "Setting this option to 'no' protects the database against table alterations."),
9b4cf6c96ee2 Add flags to allow to restrict DB modifications.
Stefan Seefeld <stefan@seefeld.name>
parents: 4471
diff changeset
1010 (BooleanOption, "allow_drop", "yes",
9b4cf6c96ee2 Add flags to allow to restrict DB modifications.
Stefan Seefeld <stefan@seefeld.name>
parents: 4471
diff changeset
1011 "Setting this option to 'no' protects the database against table drops."),
4471
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1012 (NullableOption, 'template', '',
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1013 "Name of the PostgreSQL template for database creation.\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1014 "For database creation the template used has to match\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1015 "the character encoding used (UTF8), there are different\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1016 "PostgreSQL installations using different templates with\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1017 "different encodings. If you get an error:\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1018 " new encoding (UTF8) is incompatible with the encoding of\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1019 " the template database (SQL_ASCII)\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1020 " HINT: Use the same encoding as in the template database,\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1021 " or use template0 as template.\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1022 "then set this option to the template name given in the\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1023 "error message."),
4887
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
1024 (IsolationOption, 'isolation_level', 'read committed',
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
1025 "Database isolation level, currently supported for\n"
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
1026 "PostgreSQL and mysql. See, e.g.,\n"
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
1027 "http://www.postgresql.org/docs/9.1/static/transaction-iso.html"),
5748
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
1028 ), "Settings in this section (except for backend) are used"
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
1029 " by RDBMS backends only."
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1030 ),
2619
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1031 ("logging", (
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1032 (FilePathOption, "config", "",
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1033 "Path to configuration file for standard Python logging module.\n"
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1034 "If this option is set, logging configuration is loaded\n"
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1035 "from specified file; options 'filename' and 'level'\n"
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1036 "in this section are ignored."),
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1037 (FilePathOption, "filename", "",
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1038 "Log file name for minimal logging facility built into Roundup.\n"
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1039 "If no file name specified, log messages are written on stderr.\n"
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1040 "If above 'config' option is set, this option has no effect."),
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1041 (Option, "level", "ERROR",
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1042 "Minimal severity level of messages written to log file.\n"
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1043 "If above 'config' option is set, this option has no effect.\n"
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1044 "Allowed values: DEBUG, INFO, WARNING, ERROR"),
5939
94c415c7cd36 Make gunicorn --access-logfile work with custom logging config
John Rouillard <rouilj@ieee.org>
parents: 5878
diff changeset
1045 (BooleanOption, "disable_loggers", "no",
94c415c7cd36 Make gunicorn --access-logfile work with custom logging config
John Rouillard <rouilj@ieee.org>
parents: 5878
diff changeset
1046 "If set to yes, only the loggers configured in this section will\n"
5956
1cfd52dee91b Fix doc typo.
John Rouillard <rouilj@ieee.org>
parents: 5939
diff changeset
1047 "be used. Yes will disable gunicorn's --access-logfile.\n"),
2619
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1048 )),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1049 ("mail", (
4013
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1050 (Option, "domain", NODEFAULT,
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1051 "The email domain that admin_email, issue_tracker and\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1052 "dispatcher_email belong to.\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1053 "This domain is added to those config items if they don't\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1054 "explicitly include a domain.\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1055 "Do not include the '@' symbol."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1056 (Option, "host", NODEFAULT,
2844
5dddfc64816d mailgw backward-compatibility: "MAILHOST" alias for "MAIL_HOST"
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2839
diff changeset
1057 "SMTP mail host that roundup will use to send mail",
5dddfc64816d mailgw backward-compatibility: "MAILHOST" alias for "MAIL_HOST"
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2839
diff changeset
1058 ["MAILHOST"],),
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
1059 (Option, "username", "", "SMTP login name.\n"
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
1060 "Set this if your mail host requires authenticated access.\n"
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
1061 "If username is not empty, password (below) MUST be set!"),
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
1062 (Option, "password", NODEFAULT, "SMTP login password.\n"
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
1063 "Set this if your mail host requires authenticated access."),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
1064 (IntegerNumberGeqZeroOption, "port", smtplib.SMTP_PORT,
3878
6d14a3b4e295 allow admin to specify port and local hostname for SMTP connections
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3877
diff changeset
1065 "Default port to send SMTP on.\n"
6d14a3b4e295 allow admin to specify port and local hostname for SMTP connections
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3877
diff changeset
1066 "Set this if your mail server runs on a different port."),
6d14a3b4e295 allow admin to specify port and local hostname for SMTP connections
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3877
diff changeset
1067 (NullableOption, "local_hostname", '',
6d14a3b4e295 allow admin to specify port and local hostname for SMTP connections
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3877
diff changeset
1068 "The local hostname to use during SMTP transmission.\n"
6d14a3b4e295 allow admin to specify port and local hostname for SMTP connections
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3877
diff changeset
1069 "Set this if your mail server requires something specific."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1070 (BooleanOption, "tls", "no",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1071 "If your SMTP mail host provides or requires TLS\n"
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
1072 "(Transport Layer Security) then set this option to 'yes'."),
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
1073 (NullableFilePathOption, "tls_keyfile", "",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1074 "If TLS is used, you may set this option to the name\n"
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
1075 "of a PEM formatted file that contains your private key."),
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
1076 (NullableFilePathOption, "tls_certfile", "",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1077 "If TLS is used, you may set this option to the name\n"
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
1078 "of a PEM formatted certificate chain file."),
2627
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1079 (Option, "charset", "utf-8",
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1080 "Character set to encode email headers with.\n"
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1081 "We use utf-8 by default, as it's the most flexible.\n"
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1082 "Some mail readers (eg. Eudora) can't cope with that,\n"
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1083 "so you might need to specify a more limited character set\n"
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
1084 "(eg. iso-8859-1).",
2627
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1085 ["EMAIL_CHARSET"]),
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1086 (FilePathOption, "debug", "",
5214
4c48180555fb Fix text formatting, typos and, English grammar of the descriptive text.
John Rouillard <rouilj@ieee.org>
parents: 5212
diff changeset
1087 "Setting this option makes Roundup write all outgoing email\n"
2627
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1088 "messages to this file *instead* of sending them.\n"
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1089 "This option has the same effect as environment variable"
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1090 " SENDMAILDEBUG.\nEnvironment variable takes precedence."),
3877
83748b2de465 Make addition of line about new submission/comment at top of each message...
Erik Forsberg <forsberg@users.sourceforge.net>
parents: 3854
diff changeset
1091 (BooleanOption, "add_authorinfo", "yes",
83748b2de465 Make addition of line about new submission/comment at top of each message...
Erik Forsberg <forsberg@users.sourceforge.net>
parents: 3854
diff changeset
1092 "Add a line with author information at top of all messages\n"
83748b2de465 Make addition of line about new submission/comment at top of each message...
Erik Forsberg <forsberg@users.sourceforge.net>
parents: 3854
diff changeset
1093 "sent by roundup"),
83748b2de465 Make addition of line about new submission/comment at top of each message...
Erik Forsberg <forsberg@users.sourceforge.net>
parents: 3854
diff changeset
1094 (BooleanOption, "add_authoremail", "yes",
83748b2de465 Make addition of line about new submission/comment at top of each message...
Erik Forsberg <forsberg@users.sourceforge.net>
parents: 3854
diff changeset
1095 "Add the mail address of the author to the author information at\n"
3879
454ee9411e85 Fix truncated comment for add_authoremail option.
Erik Forsberg <forsberg@users.sourceforge.net>
parents: 3878
diff changeset
1096 "the top of all messages.\n"
454ee9411e85 Fix truncated comment for add_authoremail option.
Erik Forsberg <forsberg@users.sourceforge.net>
parents: 3878
diff changeset
1097 "If this is false but add_authorinfo is true, only the name\n"
454ee9411e85 Fix truncated comment for add_authoremail option.
Erik Forsberg <forsberg@users.sourceforge.net>
parents: 3878
diff changeset
1098 "of the actor is added which protects the mail address of the\n"
454ee9411e85 Fix truncated comment for add_authoremail option.
Erik Forsberg <forsberg@users.sourceforge.net>
parents: 3878
diff changeset
1099 "actor from being exposed at mail archives, etc."),
5189
7aebd892b600 Fix spelling error. Make it match the name of the field.
John Rouillard <rouilj@ieee.org>
parents: 5128
diff changeset
1100 ), "Outgoing email options.\nUsed for nosy messages and approval requests"),
2627
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1101 ("mailgw", (
5117
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
1102 (EmailBodyOption, "keep_quoted_text", "yes",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1103 "Keep email citations when accepting messages.\n"
5117
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
1104 "Setting this to \"no\" strips out \"quoted\" text\n"
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
1105 "from the message. Setting this to \"new\" keeps quoted\n"
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
1106 "text only if a new issue is being created.\n"
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1107 "Signatures are also stripped.",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1108 ["EMAIL_KEEP_QUOTED_TEXT"]),
5117
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
1109 (EmailBodyOption, "leave_body_unchanged", "no",
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
1110 "Setting this to \"yes\" preserves the email body\n"
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
1111 "as is - that is, keep the citations _and_ signatures.\n"
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
1112 "Setting this to \"new\" keeps the body only if we are\n"
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
1113 "creating a new issue.",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1114 ["EMAIL_LEAVE_BODY_UNCHANGED"]),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1115 (Option, "default_class", "issue",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1116 "Default class to use in the mailgw\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1117 "if one isn't supplied in email subjects.\n"
2627
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1118 "To disable, leave the value blank.",
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1119 ["MAIL_DEFAULT_CLASS"]),
2922
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
1120 (NullableOption, "language", "",
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
1121 "Default locale name for the tracker mail gateway.\n"
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
1122 "If this option is not set, mail gateway will use\n"
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
1123 "the language of the tracker instance."),
3417
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1124 (Option, "subject_prefix_parsing", "strict",
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1125 "Controls the parsing of the [prefix] on subject\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1126 "lines in incoming emails. \"strict\" will return an\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1127 "error to the sender if the [prefix] is not recognised.\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1128 "\"loose\" will attempt to parse the [prefix] but just\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1129 "pass it through as part of the issue title if not\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1130 "recognised. \"none\" will always pass any [prefix]\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1131 "through as part of the issue title."),
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1132 (Option, "subject_suffix_parsing", "strict",
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1133 "Controls the parsing of the [suffix] on subject\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1134 "lines in incoming emails. \"strict\" will return an\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1135 "error to the sender if the [suffix] is not recognised.\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1136 "\"loose\" will attempt to parse the [suffix] but just\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1137 "pass it through as part of the issue title if not\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1138 "recognised. \"none\" will always pass any [suffix]\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1139 "through as part of the issue title."),
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1140 (Option, "subject_suffix_delimiters", "[]",
3725
65badf6ab7ad fix config documentation
Richard Jones <richard@users.sourceforge.net>
parents: 3620
diff changeset
1141 "Defines the brackets used for delimiting the prefix and \n"
65badf6ab7ad fix config documentation
Richard Jones <richard@users.sourceforge.net>
parents: 3620
diff changeset
1142 'suffix in a subject line. The presence of "suffix" in\n'
65badf6ab7ad fix config documentation
Richard Jones <richard@users.sourceforge.net>
parents: 3620
diff changeset
1143 "the config option name is a historical artifact and may\n"
65badf6ab7ad fix config documentation
Richard Jones <richard@users.sourceforge.net>
parents: 3620
diff changeset
1144 "be ignored."),
3417
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1145 (Option, "subject_content_match", "always",
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1146 "Controls matching of the incoming email subject line\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1147 "against issue titles in the case where there is no\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1148 "designator [prefix]. \"never\" turns off matching.\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1149 "\"creation + interval\" or \"activity + interval\"\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1150 "will match an issue for the interval after the issue's\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1151 "creation or last activity. The interval is a standard\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1152 "Roundup interval."),
4405
863ec554525c new mailgw config option subject_updates_title...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4342
diff changeset
1153 (BooleanOption, "subject_updates_title", "yes",
863ec554525c new mailgw config option subject_updates_title...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4342
diff changeset
1154 "Update issue title if incoming subject of email is different.\n"
863ec554525c new mailgw config option subject_updates_title...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4342
diff changeset
1155 "Setting this to \"no\" will ignore the title part of"
863ec554525c new mailgw config option subject_updates_title...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4342
diff changeset
1156 " the subject\nof incoming email messages.\n"),
5809
936275dfe1fa Try to fix:
John Rouillard <rouilj@ieee.org>
parents: 5774
diff changeset
1157 (RegExpOption, "refwd_re", r"(\s*\W?\s*(fw|fwd|re|aw|sv|ang)\W)+",
3831
14ec78618bd5 Allow customisation of regular expressions used in email parsing...
Richard Jones <richard@users.sourceforge.net>
parents: 3820
diff changeset
1158 "Regular expression matching a single reply or forward\n"
14ec78618bd5 Allow customisation of regular expressions used in email parsing...
Richard Jones <richard@users.sourceforge.net>
parents: 3820
diff changeset
1159 "prefix prepended by the mailer. This is explicitly\n"
14ec78618bd5 Allow customisation of regular expressions used in email parsing...
Richard Jones <richard@users.sourceforge.net>
parents: 3820
diff changeset
1160 "stripped from the subject during parsing."),
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
1161 (RegExpOption, "origmsg_re",
5809
936275dfe1fa Try to fix:
John Rouillard <rouilj@ieee.org>
parents: 5774
diff changeset
1162 r"^[>|\s]*-----\s?Original Message\s?-----$",
3831
14ec78618bd5 Allow customisation of regular expressions used in email parsing...
Richard Jones <richard@users.sourceforge.net>
parents: 3820
diff changeset
1163 "Regular expression matching start of an original message\n"
14ec78618bd5 Allow customisation of regular expressions used in email parsing...
Richard Jones <richard@users.sourceforge.net>
parents: 3820
diff changeset
1164 "if quoted the in body."),
5809
936275dfe1fa Try to fix:
John Rouillard <rouilj@ieee.org>
parents: 5774
diff changeset
1165 (RegExpOption, "sign_re", r"^[>|\s]*-- ?$",
3831
14ec78618bd5 Allow customisation of regular expressions used in email parsing...
Richard Jones <richard@users.sourceforge.net>
parents: 3820
diff changeset
1166 "Regular expression matching the start of a signature\n"
14ec78618bd5 Allow customisation of regular expressions used in email parsing...
Richard Jones <richard@users.sourceforge.net>
parents: 3820
diff changeset
1167 "in the message body."),
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
1168 (RegExpOption, "eol_re", r"[\r\n]+",
3831
14ec78618bd5 Allow customisation of regular expressions used in email parsing...
Richard Jones <richard@users.sourceforge.net>
parents: 3820
diff changeset
1169 "Regular expression matching end of line."),
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
1170 (RegExpOption, "blankline_re", r"[\r\n]+\s*[\r\n]+",
3831
14ec78618bd5 Allow customisation of regular expressions used in email parsing...
Richard Jones <richard@users.sourceforge.net>
parents: 3820
diff changeset
1171 "Regular expression matching a blank line."),
4424
f1affb6b7a08 Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4415
diff changeset
1172 (BooleanOption, "unpack_rfc822", "no",
f1affb6b7a08 Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4415
diff changeset
1173 "Unpack attached messages (encoded as message/rfc822 in MIME)\n"
f1affb6b7a08 Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4415
diff changeset
1174 "as multiple parts attached as files to the issue, if not\n"
f1affb6b7a08 Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4415
diff changeset
1175 "set we handle message/rfc822 attachments as a single file."),
3945
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1176 (BooleanOption, "ignore_alternatives", "no",
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1177 "When parsing incoming mails, roundup uses the first\n"
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1178 "text/plain part it finds. If this part is inside a\n"
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1179 "multipart/alternative, and this option is set, all other\n"
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1180 "parts of the multipart/alternative are ignored. The default\n"
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1181 "is to keep all parts and attach them to the issue."),
5305
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
1182 (HtmlToTextOption, "convert_htmltotext", "none",
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
1183 "If an email has only text/html parts, use this module\n"
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
1184 "to convert the html to text. Choose from beautifulsoup 4,\n"
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
1185 "dehtml - (internal code), or none to disable conversion.\n"
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
1186 "If 'none' is selected, email without a text/plain part\n"
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
1187 "will be returned to the user with a message. If\n"
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
1188 "beautifulsoup is selected but not installed dehtml will\n"
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
1189 "be used instead."),
5045
a46d5d0fd5f8 Fix issue1615201: Added a new configuration option EMAIL_KEEP_REAL_FROM
Peter Funk <pf@artcom-gmbh.de>
parents: 5041
diff changeset
1190 (BooleanOption, "keep_real_from", "no",
a46d5d0fd5f8 Fix issue1615201: Added a new configuration option EMAIL_KEEP_REAL_FROM
Peter Funk <pf@artcom-gmbh.de>
parents: 5041
diff changeset
1191 "When handling emails ignore the Resent-From:-header\n"
a46d5d0fd5f8 Fix issue1615201: Added a new configuration option EMAIL_KEEP_REAL_FROM
Peter Funk <pf@artcom-gmbh.de>
parents: 5041
diff changeset
1192 "and use the original senders From:-header instead.\n"
a46d5d0fd5f8 Fix issue1615201: Added a new configuration option EMAIL_KEEP_REAL_FROM
Peter Funk <pf@artcom-gmbh.de>
parents: 5041
diff changeset
1193 "(This might be desirable in some situations where a moderator\n"
a46d5d0fd5f8 Fix issue1615201: Added a new configuration option EMAIL_KEEP_REAL_FROM
Peter Funk <pf@artcom-gmbh.de>
parents: 5041
diff changeset
1194 "reads incoming messages first before bouncing them to Roundup)",
a46d5d0fd5f8 Fix issue1615201: Added a new configuration option EMAIL_KEEP_REAL_FROM
Peter Funk <pf@artcom-gmbh.de>
parents: 5041
diff changeset
1195 ["EMAIL_KEEP_REAL_FROM"]),
a46d5d0fd5f8 Fix issue1615201: Added a new configuration option EMAIL_KEEP_REAL_FROM
Peter Funk <pf@artcom-gmbh.de>
parents: 5041
diff changeset
1196 ), "Roundup Mail Gateway options"),
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3882
diff changeset
1197 ("pgp", (
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3882
diff changeset
1198 (BooleanOption, "enable", "no",
5494
b7fa56ced601 use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents: 5424
diff changeset
1199 "Enable PGP processing. Requires gpg. If you're planning\n"
4541
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1200 "to send encrypted PGP mail to the tracker, you should also\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1201 "enable the encrypt-option below, otherwise mail received\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1202 "encrypted might be sent unencrypted to another user."),
3922
586679a314f7 role checking for PGP mail and docs
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3915
diff changeset
1203 (NullableOption, "roles", "",
586679a314f7 role checking for PGP mail and docs
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3915
diff changeset
1204 "If specified, a comma-separated list of roles to perform\n"
586679a314f7 role checking for PGP mail and docs
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3915
diff changeset
1205 "PGP processing on. If not specified, it happens for all\n"
4541
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1206 "users. Note that received PGP messages (signed and/or\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1207 "encrypted) will be processed with PGP even if the user\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1208 "doesn't have one of the PGP roles, you can use this to make\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1209 "PGP processing completely optional by defining a role here\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1210 "and not assigning any users to that role."),
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3882
diff changeset
1211 (NullableOption, "homedir", "",
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3882
diff changeset
1212 "Location of PGP directory. Defaults to $HOME/.gnupg if\n"
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3882
diff changeset
1213 "not specified."),
4541
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1214 (BooleanOption, "encrypt", "no",
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1215 "Enable PGP encryption. All outgoing mails are encrypted.\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1216 "This requires that keys for all users (with one of the gpg\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1217 "roles above or all users if empty) are available. Note that\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1218 "it makes sense to educate users to also send mails encrypted\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1219 "to the tracker, to enforce this, set 'require_incoming'\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1220 "option below (but see the note)."),
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1221 (Option, "require_incoming", "signed",
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1222 "Require that pgp messages received by roundup are either\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1223 "'signed', 'encrypted' or 'both'. If encryption is required\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1224 "we do not return the message (in clear) to the user but just\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1225 "send an informational message that the message was rejected.\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1226 "Note that this still presents known-plaintext to an attacker\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1227 "when the users sends the mail a second time with encryption\n"
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1228 "turned on."),
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3882
diff changeset
1229 ), "OpenPGP mail processing options"),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1230 ("nosy", (
4547
d9d7319afffa Add config-option "nosy" to messages_to_author setting in [nosy] section...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4541
diff changeset
1231 (Option, "messages_to_author", "no",
d9d7319afffa Add config-option "nosy" to messages_to_author setting in [nosy] section...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4541
diff changeset
1232 "Send nosy messages to the author of the message.\n"
d9d7319afffa Add config-option "nosy" to messages_to_author setting in [nosy] section...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4541
diff changeset
1233 "Allowed values: yes, no, new, nosy -- if yes, messages\n"
d9d7319afffa Add config-option "nosy" to messages_to_author setting in [nosy] section...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4541
diff changeset
1234 "are sent to the author even if not on the nosy list, same\n"
d9d7319afffa Add config-option "nosy" to messages_to_author setting in [nosy] section...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4541
diff changeset
1235 "for new (but only for new messages). When set to nosy,\n"
d9d7319afffa Add config-option "nosy" to messages_to_author setting in [nosy] section...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4541
diff changeset
1236 "the nosy list controls sending messages to the author.",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1237 ["MESSAGES_TO_AUTHOR"]),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1238 (Option, "signature_position", "bottom",
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
1239 "Where to place the email signature.\n"
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1240 "Allowed values: top, bottom, none",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1241 ["EMAIL_SIGNATURE_POSITION"]),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1242 (RunDetectorOption, "add_author", "new",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1243 "Does the author of a message get placed on the nosy list\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1244 "automatically? If 'new' is used, then the author will\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1245 "only be added when a message creates a new issue.\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1246 "If 'yes', then the author will be added on followups too.\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1247 "If 'no', they're never added to the nosy.\n",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1248 ["ADD_AUTHOR_TO_NOSY"]),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1249 (RunDetectorOption, "add_recipients", "new",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1250 "Do the recipients (To:, Cc:) of a message get placed on the\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1251 "nosy list? If 'new' is used, then the recipients will\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1252 "only be added when a message creates a new issue.\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1253 "If 'yes', then the recipients will be added on followups too.\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1254 "If 'no', they're never added to the nosy.\n",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1255 ["ADD_RECIPIENTS_TO_NOSY"]),
3417
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1256 (Option, "email_sending", "single",
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1257 "Controls the email sending from the nosy reactor. If\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1258 "\"multiple\" then a separate email is sent to each\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1259 "recipient. If \"single\" then a single email is sent with\n"
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1260 "each recipient as a CC address."),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
1261 (IntegerNumberGeqZeroOption, "max_attachment_size", sys.maxsize,
3882
46ef2a6fd79d config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3879
diff changeset
1262 "Attachments larger than the given number of bytes\n"
46ef2a6fd79d config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3879
diff changeset
1263 "won't be attached to nosy mails. They will be replaced by\n"
46ef2a6fd79d config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3879
diff changeset
1264 "a link to the tracker's download page for the file.")
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1265 ), "Nosy messages sending"),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1266 )
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1267
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1268 ### Configuration classes
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1269
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1270 class Config:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1271
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1272 """Base class for configuration objects.
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1273
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1274 Configuration options may be accessed as attributes or items
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1275 of instances of this class. All option names are uppercased.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1276
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1277 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1278
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1279 # Config file name
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1280 INI_FILE = "config.ini"
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1281
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1282 # Object attributes that should not be taken as common configuration
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1283 # options in __setattr__ (most of them are initialized in constructor):
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1284 # builtin pseudo-option - package home directory
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1285 HOME = "."
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1286 # names of .ini file sections, in order
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1287 sections = None
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1288 # section comments
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1289 section_descriptions = None
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1290 # lists of option names for each section, in order
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1291 section_options = None
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1292 # mapping from option names and aliases to Option instances
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1293 options = None
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1294 # actual name of the config file. set on load.
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1295 filepath = os.path.join(HOME, INI_FILE)
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1296
3431
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1297 def __init__(self, config_path=None, layout=None, settings={}):
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1298 """Initialize confing instance
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1299
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1300 Parameters:
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1301 config_path:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1302 optional directory or file name of the config file.
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1303 If passed, load the config after processing layout (if any).
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1304 If config_path is a directory name, use default base name
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1305 of the config file.
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1306 layout:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1307 optional configuration layout, a sequence of
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1308 section definitions suitable for .add_section()
3431
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1309 settings:
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1310 optional setting overrides (dictionary).
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1311 The overrides are applied after loading config file.
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1312
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1313 """
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1314 # initialize option containers:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1315 self.sections = []
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1316 self.section_descriptions = {}
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1317 self.section_options = {}
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1318 self.options = {}
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1319 # add options from the layout structure
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1320 if layout:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1321 for section in layout:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1322 self.add_section(*section)
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1323 if config_path is not None:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1324 self.load(config_path)
3431
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1325 for (name, value) in settings.items():
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1326 self[name.upper()] = value
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1327
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1328 def add_section(self, section, options, description=None):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1329 """Define new config section
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1330
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1331 Parameters:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1332 section - name of the config.ini section
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1333 options - a sequence of Option definitions.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1334 Each Option definition is a sequence
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1335 containing class object and constructor
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1336 parameters, starting from the setting name:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1337 setting, default, [description, [aliases]]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1338 description - optional section comment
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1339
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1340 Note: aliases should only exist in historical options
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1341 for backwards compatibility - new options should
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1342 *not* have aliases!
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1343
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1344 """
5128
4058fc1ec746 replacing depricated has_key references by in to support python 3. Errors reported by python -3 roundup_server. Unit tests test_config test_security pass although test_config is a bit weak in coverage.
John Rouillard <rouilj@ieee.org>
parents: 5117
diff changeset
1345 if description or not (section in self.section_descriptions):
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1346 self.section_descriptions[section] = description
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1347 for option_def in options:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1348 klass = option_def[0]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1349 args = option_def[1:]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1350 option = klass(self, section, *args)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1351 self.add_option(option)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1352
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1353 def add_option(self, option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1354 """Adopt a new Option object"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1355 _section = option.section
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1356 _name = option.setting
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1357 if _section not in self.sections:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1358 self.sections.append(_section)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1359 _options = self._get_section_options(_section)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1360 if _name not in _options:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1361 _options.append(_name)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1362 # (section, name) key is used for writing .ini file
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1363 self.options[(_section, _name)] = option
4074
e039f3cbbb96 Make RDBMS cache-size configurable.
Stefan Seefeld <stefan@seefeld.name>
parents: 4013
diff changeset
1364 # make the option known under all of its A.K.A.s
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1365 for _name in option.aliases:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1366 self.options[_name] = option
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1367
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1368 def update_option(self, name, klass,
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1369 default=NODEFAULT, description=None
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1370 ):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1371 """Override behaviour of early created option.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1372
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1373 Parameters:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1374 name:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1375 option name
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1376 klass:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1377 one of the Option classes
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1378 default:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1379 optional default value for the option
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1380 description:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1381 optional new description for the option
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1382
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1383 Conversion from current option value to new class value
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1384 is done via string representation.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1385
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1386 This method may be used to attach some brains
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1387 to options autocreated by UserConfig.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1388
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1389 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1390 # fetch current option
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1391 option = self._get_option(name)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1392 # compute constructor parameters
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1393 if default is NODEFAULT:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1394 default = option.default
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1395 if description is None:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1396 description = option.description
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1397 value = option.value2str(current=1)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1398 # resurrect the option
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1399 option = klass(self, option.section, option.setting,
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1400 default=default, description=description)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1401 # apply the value
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1402 option.set(value)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1403 # incorporate new option
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1404 del self[name]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1405 self.add_option(option)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1406
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1407 def reset(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1408 """Set all options to their default values"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1409 for _option in self.items():
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1410 _option.reset()
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1411
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1412 # Meant for commandline tools.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1413 # Allows automatic creation of configuration files like this:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1414 # roundup-server -p 8017 -u roundup --save-config
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1415 def getopt(self, args, short_options="", long_options=(),
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1416 config_load_options=("C", "config"), **options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1417 ):
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1418 """Apply options specified in command line arguments.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1419
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1420 Parameters:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1421 args:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1422 command line to parse (sys.argv[1:])
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1423 short_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1424 optional string of letters for command line options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1425 that are not config options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1426 long_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1427 optional list of names for long options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1428 that are not config options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1429 config_load_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1430 two-element sequence (letter, long_option) defining
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1431 the options for config file. If unset, don't load
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1432 config file; otherwise config file is read prior
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1433 to applying other options. Short option letter
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1434 must not have a colon and long_option name must
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1435 not have an equal sign or '--' prefix.
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1436 options:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1437 mapping from option names to command line option specs.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1438 e.g. server_port="p:", server_user="u:"
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1439 Names are forced to lower case for commandline parsing
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1440 (long options) and to upper case to find config options.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1441 Command line options accepting no value are assumed
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1442 to be binary and receive value 'yes'.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1443
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1444 Return value: same as for python standard getopt(), except that
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1445 processed options are removed from returned option list.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1446
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1447 """
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1448 # take a copy of long_options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1449 long_options = list(long_options)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1450 # build option lists
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1451 cfg_names = {}
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1452 booleans = []
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1453 for (name, letter) in options.items():
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1454 cfg_name = name.upper()
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1455 short_opt = "-" + letter[0]
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1456 name = name.lower().replace("_", "-")
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1457 cfg_names.update({short_opt: cfg_name, "--" + name: cfg_name})
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1458
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1459 short_options += letter
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1460 if letter[-1] == ":":
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1461 long_options.append(name + "=")
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1462 else:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1463 booleans.append(short_opt)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1464 long_options.append(name)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1465
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1466 if config_load_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1467 short_options += config_load_options[0] + ":"
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1468 long_options.append(config_load_options[1] + "=")
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1469 # compute names that will be searched in getopt return value
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1470 config_load_options = (
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1471 "-" + config_load_options[0],
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1472 "--" + config_load_options[1],
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1473 )
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1474 # parse command line arguments
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1475 optlist, args = getopt.getopt(args, short_options, long_options)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1476 # load config file if requested
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1477 if config_load_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1478 for option in optlist:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1479 if option[0] in config_load_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1480 self.load_ini(option[1])
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1481 optlist.remove(option)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1482 break
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1483 # apply options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1484 extra_options = []
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1485 for (opt, arg) in optlist:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1486 if (opt in booleans): # and not arg
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1487 arg = "yes"
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1488 try:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1489 name = cfg_names[opt]
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1490 except KeyError:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1491 extra_options.append((opt, arg))
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1492 else:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1493 self[name] = arg
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1494 return (extra_options, args)
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1495
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1496 # option and section locators (used in option access methods)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1497
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1498 def _get_option(self, name):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1499 try:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1500 return self.options[name]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1501 except KeyError:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1502 raise InvalidOptionError(name)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1503
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1504 def _get_section_options(self, name):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1505 return self.section_options.setdefault(name, [])
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1506
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1507 def _get_unset_options(self):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1508 """Return options that need manual adjustments
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1509
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1510 Return value is a dictionary where keys are section
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1511 names and values are lists of option names as they
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1512 appear in the config file.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1513
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1514 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1515 need_set = {}
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1516 for option in self.items():
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1517 if not option.isset():
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1518 need_set.setdefault(option.section, []).append(option.setting)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1519 return need_set
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1520
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1521 def _adjust_options(self, config):
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1522 """Load ad-hoc option definitions from ConfigParser instance."""
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1523 pass
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1524
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1525 def _get_name(self):
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1526 """Return the service name for config file heading"""
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1527 return ""
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1528
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1529 # file operations
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1530
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1531 def load_ini(self, config_path, defaults=None):
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1532 """Set options from config.ini file in given home_dir
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1533
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1534 Parameters:
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1535 config_path:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1536 directory or file name of the config file.
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1537 If config_path is a directory name, use default
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1538 base name of the config file
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1539 defaults:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1540 optional dictionary of defaults for ConfigParser
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1541
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1542 Note: if home_dir does not contain config.ini file,
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1543 no error is raised. Config will be reset to defaults.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1544
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1545 """
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1546 if os.path.isdir(config_path):
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1547 home_dir = config_path
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1548 config_path = os.path.join(config_path, self.INI_FILE)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1549 else:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1550 home_dir = os.path.dirname(config_path)
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1551 # parse the file
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1552 config_defaults = {"HOME": home_dir}
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1553 if defaults:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1554 config_defaults.update(defaults)
5246
c5dd7b151ec2 Make an import work with either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5231
diff changeset
1555 config = configparser.ConfigParser(config_defaults)
2839
f965de0c1e75 fix load_ini: configuration file name was ignored after all
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2770
diff changeset
1556 config.read([config_path])
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1557 # .ini file loaded ok.
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1558 self.HOME = home_dir
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1559 self.filepath = config_path
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1560 self._adjust_options(config)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1561 # set the options, starting from HOME
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1562 self.reset()
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1563 for option in self.items():
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1564 option.load_ini(config)
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1565
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1566 def load(self, home_dir):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1567 """Load configuration settings from home_dir"""
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1568 self.load_ini(home_dir)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1569
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1570 def save(self, ini_file=None):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1571 """Write current configuration to .ini file
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1572
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1573 'ini_file' argument, if passed, must be valid full path
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1574 to the file to write. If omitted, default file in current
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1575 HOME is created.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1576
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1577 If the file to write already exists, it is saved with '.bak'
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1578 extension.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1579
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1580 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1581 if ini_file is None:
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1582 ini_file = self.filepath
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1583 _tmp_file = os.path.splitext(ini_file)[0]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1584 _bak_file = _tmp_file + ".bak"
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1585 _tmp_file = _tmp_file + ".tmp"
5383
6fbb7d52e38f Python 3 preparation: use open() instead of file().
Joseph Myers <jsm@polyomino.org.uk>
parents: 5315
diff changeset
1586 _fp = open(_tmp_file, "wt")
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1587 _fp.write("# %s configuration file\n" % self._get_name())
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1588 _fp.write("# Autogenerated at %s\n" % time.asctime())
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1589 need_set = self._get_unset_options()
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1590 if need_set:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1591 _fp.write("\n# WARNING! Following options need adjustments:\n")
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1592 for section, options in need_set.items():
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1593 _fp.write("# [%s]: %s\n" % (section, ", ".join(options)))
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1594 for section in self.sections:
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1595 comment = self.section_descriptions.get(section, None)
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1596 if comment:
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1597 _fp.write("\n# ".join([""] + comment.split("\n")) +"\n")
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1598 else:
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1599 # no section comment - just leave a blank line between sections
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1600 _fp.write("\n")
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1601 _fp.write("[%s]\n" % section)
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1602 for option in self._get_section_options(section):
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1603 _fp.write("\n" + self.options[(section, option)].format())
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1604 _fp.close()
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1605 if os.access(ini_file, os.F_OK):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1606 if os.access(_bak_file, os.F_OK):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1607 os.remove(_bak_file)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1608 os.rename(ini_file, _bak_file)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1609 os.rename(_tmp_file, ini_file)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1610
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1611 # container emulation
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1612
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1613 def __len__(self):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1614 return len(self.items())
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1615
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1616 def __getitem__(self, name):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1617 if name == "HOME":
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1618 return self.HOME
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1619 else:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1620 return self._get_option(name).get()
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1621
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1622 def __setitem__(self, name, value):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1623 if name == "HOME":
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1624 self.HOME = value
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1625 else:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1626 self._get_option(name).set(value)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1627
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1628 def __delitem__(self, name):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1629 _option = self._get_option(name)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1630 _section = _option.section
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1631 _name = _option.setting
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1632 self._get_section_options(_section).remove(_name)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1633 del self.options[(_section, _name)]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1634 for _alias in _option.aliases:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1635 del self.options[_alias]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1636
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1637 def items(self):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1638 """Return the list of Option objects, in .ini file order
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1639
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1640 Note that HOME is not included in this list
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1641 because it is builtin pseudo-option, not a real Option
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1642 object loaded from or saved to .ini file.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1643
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1644 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1645 return [self.options[(_section, _name)]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1646 for _section in self.sections
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1647 for _name in self._get_section_options(_section)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1648 ]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1649
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1650 def keys(self):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1651 """Return the list of "canonical" names of the options
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1652
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1653 Unlike .items(), this list also includes HOME
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1654
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1655 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1656 return ["HOME"] + [_option.name for _option in self.items()]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1657
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1658 # .values() is not implemented because i am not sure what should be
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1659 # the values returned from this method: Option instances or config values?
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1660
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1661 # attribute emulation
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1662
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1663 def __setattr__(self, name, value):
5128
4058fc1ec746 replacing depricated has_key references by in to support python 3. Errors reported by python -3 roundup_server. Unit tests test_config test_security pass although test_config is a bit weak in coverage.
John Rouillard <rouilj@ieee.org>
parents: 5117
diff changeset
1664 if (name in self.__dict__) or hasattr(self.__class__, name):
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1665 self.__dict__[name] = value
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1666 else:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1667 self._get_option(name).set(value)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1668
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1669 # Note: __getattr__ is not symmetric to __setattr__:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1670 # self.__dict__ lookup is done before calling this method
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1671 def __getattr__(self, name):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1672 return self[name]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1673
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1674 class UserConfig(Config):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1675
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1676 """Configuration for user extensions.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1677
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1678 Instances of this class have no predefined configuration layout.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1679 Options are created on the fly for each setting present in the
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1680 config file.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1681
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1682 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1683
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1684 def _adjust_options(self, config):
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1685 # config defaults appear in all sections.
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1686 # we'll need to filter them out.
5395
23b8e6067f7c Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5386
diff changeset
1687 defaults = list(config.defaults().keys())
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1688 # see what options are already defined and add missing ones
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1689 preset = [(option.section, option.setting) for option in self.items()]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1690 for section in config.sections():
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1691 for name in config.options(section):
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1692 if ((section, name) not in preset) \
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1693 and (name not in defaults):
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1694 self.add_option(Option(self, section, name))
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1695
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1696 class CoreConfig(Config):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1697
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1698 """Roundup instance configuration.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1699
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1700 Core config has a predefined layout (see the SETTINGS structure),
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1701 supports loading of old-style pythonic configurations and holds
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1702 three additional attributes:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1703 detectors:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1704 user-defined configuration for detectors
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1705 ext:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1706 user-defined configuration for extensions
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1707
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1708 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1709
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1710 # module name for old style configuration
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1711 PYCONFIG = "config"
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1712 # user configs
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1713 ext = None
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1714 detectors = None
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1715
3431
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1716 def __init__(self, home_dir=None, settings={}):
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1717 Config.__init__(self, home_dir, layout=SETTINGS, settings=settings)
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1718 # load the config if home_dir given
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1719 if home_dir is None:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1720 self.init_logging()
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1721
4342
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
1722 def copy(self):
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
1723 new = CoreConfig()
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
1724 new.sections = list(self.sections)
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
1725 new.section_descriptions = dict(self.section_descriptions)
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
1726 new.section_options = dict(self.section_options)
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
1727 new.options = dict(self.options)
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
1728 return new
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
1729
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1730 def _get_unset_options(self):
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1731 need_set = Config._get_unset_options(self)
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1732 # remove MAIL_PASSWORD if MAIL_USER is empty
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1733 if "password" in need_set.get("mail", []):
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1734 if not self["MAIL_USERNAME"]:
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1735 settings = need_set["mail"]
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1736 settings.remove("password")
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1737 if not settings:
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1738 del need_set["mail"]
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1739 return need_set
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1740
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1741 def _get_name(self):
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1742 return self["TRACKER_NAME"]
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1743
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1744 def reset(self):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1745 Config.reset(self)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1746 if self.ext:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1747 self.ext.reset()
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1748 if self.detectors:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1749 self.detectors.reset()
2619
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1750 self.init_logging()
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1751
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1752 def init_logging(self):
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1753 _file = self["LOGGING_CONFIG"]
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1754 if _file and os.path.isfile(_file):
5939
94c415c7cd36 Make gunicorn --access-logfile work with custom logging config
John Rouillard <rouilj@ieee.org>
parents: 5878
diff changeset
1755 logging.config.fileConfig(_file,
94c415c7cd36 Make gunicorn --access-logfile work with custom logging config
John Rouillard <rouilj@ieee.org>
parents: 5878
diff changeset
1756 disable_existing_loggers=self["LOGGING_DISABLE_LOGGERS"])
3155
57b60bda9473 Python 2.3 minimum version - bye bye roundup.rlog, you had a short life.
Richard Jones <richard@users.sourceforge.net>
parents: 3099
diff changeset
1757 return
57b60bda9473 Python 2.3 minimum version - bye bye roundup.rlog, you had a short life.
Richard Jones <richard@users.sourceforge.net>
parents: 3099
diff changeset
1758
57b60bda9473 Python 2.3 minimum version - bye bye roundup.rlog, you had a short life.
Richard Jones <richard@users.sourceforge.net>
parents: 3099
diff changeset
1759 _file = self["LOGGING_FILENAME"]
4411
39660ba47b7c - No longer use the root logger, use a logger with prefix "roundup"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4405
diff changeset
1760 # set file & level on the roundup logger
39660ba47b7c - No longer use the root logger, use a logger with prefix "roundup"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4405
diff changeset
1761 logger = logging.getLogger('roundup')
3155
57b60bda9473 Python 2.3 minimum version - bye bye roundup.rlog, you had a short life.
Richard Jones <richard@users.sourceforge.net>
parents: 3099
diff changeset
1762 if _file:
57b60bda9473 Python 2.3 minimum version - bye bye roundup.rlog, you had a short life.
Richard Jones <richard@users.sourceforge.net>
parents: 3099
diff changeset
1763 hdlr = logging.FileHandler(_file)
2619
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1764 else:
3155
57b60bda9473 Python 2.3 minimum version - bye bye roundup.rlog, you had a short life.
Richard Jones <richard@users.sourceforge.net>
parents: 3099
diff changeset
1765 hdlr = logging.StreamHandler(sys.stdout)
57b60bda9473 Python 2.3 minimum version - bye bye roundup.rlog, you had a short life.
Richard Jones <richard@users.sourceforge.net>
parents: 3099
diff changeset
1766 formatter = logging.Formatter(
57b60bda9473 Python 2.3 minimum version - bye bye roundup.rlog, you had a short life.
Richard Jones <richard@users.sourceforge.net>
parents: 3099
diff changeset
1767 '%(asctime)s %(levelname)s %(message)s')
57b60bda9473 Python 2.3 minimum version - bye bye roundup.rlog, you had a short life.
Richard Jones <richard@users.sourceforge.net>
parents: 3099
diff changeset
1768 hdlr.setFormatter(formatter)
57b60bda9473 Python 2.3 minimum version - bye bye roundup.rlog, you had a short life.
Richard Jones <richard@users.sourceforge.net>
parents: 3099
diff changeset
1769 # no logging API to remove all existing handlers!?!
4337
9225a37fbeae Fix file handle leak in some web interfaces with logging turned on
Richard Jones <richard@users.sourceforge.net>
parents: 4255
diff changeset
1770 for h in logger.handlers:
9225a37fbeae Fix file handle leak in some web interfaces with logging turned on
Richard Jones <richard@users.sourceforge.net>
parents: 4255
diff changeset
1771 h.close()
9225a37fbeae Fix file handle leak in some web interfaces with logging turned on
Richard Jones <richard@users.sourceforge.net>
parents: 4255
diff changeset
1772 logger.removeHandler(hdlr)
3155
57b60bda9473 Python 2.3 minimum version - bye bye roundup.rlog, you had a short life.
Richard Jones <richard@users.sourceforge.net>
parents: 3099
diff changeset
1773 logger.handlers = [hdlr]
5424
fd0481aa17b8 Python 3 preparation: avoid logging._levelNames.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5416
diff changeset
1774 logger.setLevel(self["LOGGING_LEVEL"] or "ERROR")
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1775
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1776 def load(self, home_dir):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1777 """Load configuration from path designated by home_dir argument"""
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1778 if os.path.isfile(os.path.join(home_dir, self.INI_FILE)):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1779 self.load_ini(home_dir)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1780 else:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1781 self.load_pyconfig(home_dir)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1782 self.init_logging()
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1783 self.ext = UserConfig(os.path.join(home_dir, "extensions"))
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1784 self.detectors = UserConfig(os.path.join(home_dir, "detectors"))
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1785
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1786 def load_ini(self, home_dir, defaults=None):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1787 """Set options from config.ini file in given home_dir directory"""
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1788 config_defaults = {"TRACKER_HOME": home_dir}
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1789 if defaults:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1790 config_defaults.update(defaults)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1791 Config.load_ini(self, home_dir, config_defaults)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1792
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1793 def load_pyconfig(self, home_dir):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1794 """Set options from config.py file in given home_dir directory"""
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1795 # try to locate and import the module
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1796 _mod_fp = None
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1797 try:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1798 try:
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1799 _module = imp.find_module(self.PYCONFIG, [home_dir])
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1800 _mod_fp = _module[0]
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1801 _config = imp.load_module(self.PYCONFIG, *_module)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1802 except ImportError:
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1803 raise NoConfigError(home_dir)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1804 finally:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1805 if _mod_fp is not None:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1806 _mod_fp.close()
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1807 # module loaded ok. set the options, starting from HOME
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1808 self.reset()
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1809 self.HOME = home_dir
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1810 for _option in self.items():
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1811 _option.load_pyconfig(_config)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1812 # backward compatibility:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1813 # SMTP login parameters were specified as a tuple in old style configs
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1814 # convert them to new plain string options
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1815 _mailuser = getattr(_config, "MAILUSER", ())
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1816 if len(_mailuser) > 0:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1817 self.MAIL_USERNAME = _mailuser[0]
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1818 if len(_mailuser) > 1:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1819 self.MAIL_PASSWORD = _mailuser[1]
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1820
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1821 # in this config, HOME is also known as TRACKER_HOME
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1822 def __getitem__(self, name):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1823 if name == "TRACKER_HOME":
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1824 return self.HOME
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1825 else:
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1826 return Config.__getitem__(self, name)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1827
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1828 def __setitem__(self, name, value):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1829 if name == "TRACKER_HOME":
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1830 self.HOME = value
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1831 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1832 self._get_option(name).set(value)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1833
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1834 def __setattr__(self, name, value):
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1835 if name == "TRACKER_HOME":
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1836 self.__dict__["HOME"] = value
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1837 else:
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1838 Config.__setattr__(self, name, value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1839
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1840 # vim: set et sts=4 sw=4 :

Roundup Issue Tracker: http://roundup-tracker.org/