annotate roundup/configuration.py @ 6363:08e209a7f22b

Use OptionValueError for indexer_language error, add configuration tests Added more tests for configuration.py. This is the last of the easy to do tests for the module. While doing that figured out how to get the proper arguments to generate OptionValueError if indexer_language is invalid. Changed implementation to generate same and updated test.
author John Rouillard <rouilj@ieee.org>
date Tue, 30 Mar 2021 18:03:37 -0400
parents 42db48c30d31
children 1f2f7c0b8968
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
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
11 import getopt
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
12 import logging, logging.config
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
13 import os
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
14 import re
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
15 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
16 import smtplib
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
17
3620
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
18 import roundup.date
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
19
5726
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
20 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
21 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
22 import binascii
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
23 from roundup.i18n import _
5726
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
24
5748
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
25 from roundup.backends import list_backends
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
26
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
27 if sys.version_info[0] > 2:
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
28 import configparser # Python 3
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
29 else:
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
30 import ConfigParser as configparser # Python 2
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
31
6126
15c68580578f fix broken import
John Rouillard <rouilj@ieee.org>
parents: 6123
diff changeset
32 from roundup.exceptions import RoundupException
6123
c177e7128dc9 issue2551083 Replace BaseException and Exception with RoundupException
John Rouillard <rouilj@ieee.org>
parents: 6053
diff changeset
33
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
34 # 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
35
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
36 ### Exceptions
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
37
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
38
6123
c177e7128dc9 issue2551083 Replace BaseException and Exception with RoundupException
John Rouillard <rouilj@ieee.org>
parents: 6053
diff changeset
39 class ConfigurationError(RoundupException):
3777
74aebbbea305 Sorry for the mega-patch - was all done on the train:
Richard Jones <richard@users.sourceforge.net>
parents: 3725
diff changeset
40 pass
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
41
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
42
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
43 class NoConfigError(ConfigurationError):
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 """Raised when configuration loading fails
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
46
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
47 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
48
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
49 """
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 def __str__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
52 return "No valid configuration files found in directory %s" \
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
53 % self.args[0]
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
54
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
55
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
56 class InvalidOptionError(ConfigurationError, KeyError, AttributeError):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
57
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
58 """Attempted access to non-existing configuration option
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 Configuration options may be accessed as configuration object
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
61 attributes or items. So this exception instances also are
3820
771248aa8302 typos in docstrings
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3788
diff changeset
62 instances of KeyError (invalid item access) and AttributeError
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
63 (invalid attribute access).
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
64
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
65 Constructor parameter: option name
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 """
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 def __str__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
70 return "Unsupported configuration option: %s" % self.args[0]
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
71
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
72
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
73 class OptionValueError(ConfigurationError, ValueError):
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 """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
76
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
77 Constructor parameters: Option instance, offending value
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
78 and optional info string.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
79
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
80 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
81
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
82 def __str__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
83 _args = self.args
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
84 _rv = "Invalid value for %(option)s: %(value)r" % {
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
85 "option": _args[0].name, "value": _args[1]}
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
86 if len(_args) > 2:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
87 _rv += "\n".join(("",) + _args[2:])
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
88 return _rv
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
89
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
90
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
91 class OptionUnsetError(ConfigurationError):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
92
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
93 """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
94
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
95 Constructor parameters: Option instance.
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 """
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 "%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
101
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
102
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
103 class UnsetDefaultValue:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
104
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
105 """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
106
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
107 def __str__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
108 return "NO DEFAULT"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
109
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
110
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
111 NODEFAULT = UnsetDefaultValue()
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
112
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
113
5878
1b57d8f3eb97 Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents: 5809
diff changeset
114 def create_token(size=32):
1b57d8f3eb97 Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents: 5809
diff changeset
115 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
116
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
117 ### Option classes
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
118
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
119
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
120 class Option:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
121
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
122 """Single configuration option.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
123
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
124 Options have following attributes:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
125
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
126 config
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
127 reference to the containing Config object
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
128 section
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
129 name of the section in the tracker .ini file
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
130 setting
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
131 option name in the tracker .ini file
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
132 default
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
133 default option value
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
134 description
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
135 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
136 name
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
137 "canonical name" of the configuration option.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
138 For items in the 'main' section this is uppercased
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
139 'setting' name. For other sections, the name is
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
140 composed of the section name and the setting name,
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
141 joined with underscore.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
142 aliases
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
143 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
144 by old names used in previous Roundup versions.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
145 "Canonical name" is also included.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
146
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
147 The name and aliases are forced to be uppercase.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
148 The setting name is forced to lowercase.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
149
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
150 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
151
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
152 class_description = None
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
153
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
154 def __init__(self, config, section, setting,
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
155 default=NODEFAULT, description=None, aliases=None):
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
156 self.config = config
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
157 self.section = section
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
158 self.setting = setting.lower()
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
159 self.default = default
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
160 self.description = description
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
161 self.name = setting.upper()
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
162 if section != "main":
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
163 self.name = "_".join((section.upper(), self.name))
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
164 if aliases:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
165 self.aliases = [alias.upper() for alias in list(aliases)]
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
166 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
167 self.aliases = []
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
168 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
169 # convert default to internal representation
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
170 if default is NODEFAULT:
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
171 _value = default
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
172 else:
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
173 _value = self.str2value(default)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
174 # 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
175 self._value = self._default_value = _value
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
176
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
177 def str2value(self, value):
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
178 """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
179 return value
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
180
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
181 def _value2str(self, value):
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
182 """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
183
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
184 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
185 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
186 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
187
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
188 """
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
189 return str(value)
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
190
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
191 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
192 """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
193
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
194 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
195
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
196 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
197 if current:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
198 value = self._value
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
199 if value is NODEFAULT:
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
200 return str(value)
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
201 else:
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
202 return self._value2str(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 get(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
205 """Return current option value"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
206 if self._value is NODEFAULT:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
207 raise OptionUnsetError(self)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
208 return self._value
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
209
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
210 def set(self, value):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
211 """Update the value"""
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
212 self._value = self.str2value(value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
213
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
214 def reset(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
215 """Reset the value to default"""
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
216 self._value = self._default_value
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
217
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
218 def isdefault(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
219 """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
220 return self._value == self._default_value
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
221
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
222 def isset(self):
3820
771248aa8302 typos in docstrings
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3788
diff changeset
223 """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
224 return self._value != NODEFAULT
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
225
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
226 def __str__(self):
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
227 return self.value2str(self._value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
228
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
229 def __repr__(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
230 if self.isdefault():
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
231 _format = "<%(class)s %(name)s (default): %(value)s>"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
232 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
233 _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
234 return _format % {
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
235 "class": self.__class__.__name__,
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
236 "name": self.name,
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
237 "default": self.value2str(self._default_value),
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
238 "value": self.value2str(self._value),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
239 }
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
240
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
241 def format(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
242 """Return .ini file fragment for this option"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
243 _desc_lines = []
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
244 for _description in (self.description, self.class_description):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
245 if _description:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
246 _desc_lines.extend(_description.split("\n"))
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
247 # 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
248 if self.isset():
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
249 _is_set = ""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
250 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
251 _is_set = "#"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
252 _rv = "# %(description)s\n# Default: %(default)s\n" \
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
253 "%(is_set)s%(name)s = %(value)s\n" % {
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
254 "description": "\n# ".join(_desc_lines),
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
255 "default": self.value2str(self._default_value),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
256 "name": self.setting,
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
257 "value": self.value2str(self._value),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
258 "is_set": _is_set
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
259 }
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
260 return _rv
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
261
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
262 def load_ini(self, config):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
263 """Load value from ConfigParser object"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
264 if config.has_option(self.section, self.setting):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
265 self.set(config.get(self.section, self.setting))
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
266
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
267
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
268 class BooleanOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
269
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
270 """Boolean option: yes or no"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
271
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
272 class_description = "Allowed values: yes, no"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
273
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
274 def _value2str(self, value):
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
275 if value:
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
276 return "yes"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
277 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
278 return "no"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
279
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
280 def str2value(self, value):
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
281 if isinstance(value, type("")):
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
282 _val = value.lower()
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
283 if _val in ("yes", "true", "on", "1"):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
284 _val = 1
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
285 elif _val in ("no", "false", "off", "0"):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
286 _val = 0
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
287 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
288 raise OptionValueError(self, value, self.class_description)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
289 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
290 _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
291 return _val
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
292
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
293
3544
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
294 class WordListOption(Option):
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
295
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
296 """List of strings"""
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 class_description = "Allowed values: comma-separated list of words"
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
299
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
300 def _value2str(self, value):
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
301 return ','.join(value)
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
302
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
303 def str2value(self, value):
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
304 return value.split(',')
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
305
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
306
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
307 class RunDetectorOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
308
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
309 """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
310
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
311 class_description = "Allowed values: yes, no, new"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
312
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
313 def str2value(self, value):
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
314 _val = value.lower()
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
315 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
316 return _val
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
317 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
318 raise OptionValueError(self, value, self.class_description)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
319
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
320
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
321 class CsrfSettingOption(Option):
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
322
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
323 """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
324
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
325 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
326
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
327 def str2value(self, value):
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
328 _val = value.lower()
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
329 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
330 return _val
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
331 else:
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
332 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
333
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
334
5212
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
335 class SameSiteSettingOption(Option):
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
336
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
337 """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
338 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
339
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
340 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
341
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
342 def str2value(self, value):
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
343 _val = value.lower()
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
344 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
345 return _val.capitalize()
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
346 else:
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
347 raise OptionValueError(self, value, self.class_description)
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
348
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
349
5748
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
350 class DatabaseBackend(Option):
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
351 """handle exact text of backend and make sure it's available"""
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
352 class_description = "Available backends: %s" % ", ".join(list_backends())
5748
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
353
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
354 def str2value(self, value):
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
355 _val = value.lower()
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
356 if _val in list_backends():
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
357 return _val
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
358 else:
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
359 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
360
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
361
5305
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
362 class HtmlToTextOption(Option):
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
363
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
364 """What module should be used to convert emails with only text/html
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
365 parts into text for display in roundup. Choose from beautifulsoup
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
366 4, dehtml - the internal code or none to disable html to text
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
367 conversion. If beautifulsoup chosen but not available, dehtml will
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
368 be used.
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
369
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
370 """
5305
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
371
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
372 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
373
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
374 def str2value(self, value):
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
375 _val = value.lower()
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
376 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
377 return _val
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
378 else:
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
379 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
380
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
381
5117
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
382 class EmailBodyOption(Option):
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
383
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
384 """When to replace message body or strip quoting: always, never
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
385 or for new items only"""
5117
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
386
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
387 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
388
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
389 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
390 _val = value.lower()
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
391 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
392 return _val
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
393 else:
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
394 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
395
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
396
4887
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
397 class IsolationOption(Option):
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
398 """Database isolation levels"""
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
399
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
400 allowed = ['read uncommitted', 'read committed', 'repeatable read',
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
401 'serializable']
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
402 class_description = "Allowed values: %s" % ', '.join("'%s'" % a
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
403 for a in allowed)
4887
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
404
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
405 def str2value(self, value):
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
406 _val = value.lower()
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
407 if _val in self.allowed:
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
408 return _val
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
409 raise OptionValueError(self, value, self.class_description)
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
410
6358
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
411 class IndexerOption(Option):
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
412 """Valid options for indexer"""
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
413
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
414 allowed = ['', 'xapian', 'whoosh', 'native']
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
415 class_description = "Allowed values: %s" % ', '.join("'%s'" % a
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
416 for a in allowed)
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
417
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
418 def str2value(self, value):
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
419 _val = value.lower()
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
420 if _val in self.allowed:
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
421 return _val
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
422 raise OptionValueError(self, value, self.class_description)
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
423
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
424 class MailAddressOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
425
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
426 """Email address
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
427
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
428 Email addresses may be either fully qualified or local.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
429 In the latter case MAIL_DOMAIN is automatically added.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
430
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
431 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
432
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
433 def get(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
434 _val = Option.get(self)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
435 if "@" not in _val:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
436 _val = "@".join((_val, self.config["MAIL_DOMAIN"]))
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
437 return _val
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
438
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
439
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
440 class FilePathOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
441
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
442 """File or directory path name
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
443
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
444 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
445
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
446 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
447
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
448 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
449 "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
450
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
451 def get(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
452 _val = Option.get(self)
2619
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
453 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
454 _val = os.path.join(self.config["HOME"], _val)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
455 return _val
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
456
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
457
5231
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
458 class MultiFilePathOption(Option):
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
459
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
460 """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
461
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
462 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
463 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
464
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
465 """
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
466
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
467 class_description = "The space separated paths may be either absolute\n" \
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
468 "or relative to the directory containing this config file."
5231
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
469
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
470 def get(self):
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
471 pathlist = []
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
472 _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
473 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
474 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
475 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
476 else:
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
477 pathlist.append(elem)
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
478 if pathlist:
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
479 return pathlist
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
480 else:
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
481 return None
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
482
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
483
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
484 class FloatNumberOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
485
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
486 """Floating point numbers"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
487
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
488 def str2value(self, value):
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
489 try:
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
490 return float(value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
491 except ValueError:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
492 raise OptionValueError(self, value,
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
493 "Floating point number required")
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
494
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
495 def _value2str(self, value):
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
496 _val = str(value)
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
497 # strip fraction part from integer numbers
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
498 if _val.endswith(".0"):
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
499 _val = _val[:-2]
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
500 return _val
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
501
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
502
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
503 class IntegerNumberOption(Option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
504
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
505 """Integer numbers"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
506
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
507 def str2value(self, value):
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
508 try:
2623
4e1030d49cea fix: Option defaults were applied as strings...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2622
diff changeset
509 return int(value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
510 except ValueError:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
511 raise OptionValueError(self, value, "Integer number required")
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
512
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
513
5772
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
514 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
515
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
516 """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
517
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
518 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
519 try:
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
520 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
521 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
522 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
523 "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
524 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
525 except OptionValueError:
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
526 raise # pass through subclass
5772
8dbe307bdb57 Finish up login rate limit code. Set config item to 0 disables, make
John Rouillard <rouilj@ieee.org>
parents: 5770
diff changeset
527 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
528 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
529
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
530
3609
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
531 class OctalNumberOption(Option):
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
532
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
533 """Octal Integer numbers"""
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
534
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
535 def str2value(self, value):
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
536 try:
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
537 return int(value, 8)
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
538 except ValueError:
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
539 raise OptionValueError(self, value,
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
540 "Octal Integer number required")
3609
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
541
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
542 def _value2str(self, value):
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
543 return oct(value)
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
544
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
545
5726
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
546 class MandatoryOption(Option):
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
547 """Option must not be empty"""
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
548 def str2value(self, value):
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
549 if not value:
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
550 raise OptionValueError(self, value, "Value must not be empty.")
5726
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
551 else:
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
552 return value
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
553
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
554
5770
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
555 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
556 """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
557
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
558 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
559 if not value:
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
560 raise OptionValueError(self, value, "Value must not be empty.")
5770
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
561
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
562 error_msg = ''
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
563 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
564 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
565
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
566 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
567 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
568
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
569 if error_msg:
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
570 raise OptionValueError(self, value, error_msg)
5770
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
571 else:
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
572 return value
f91da208f26b Validate that TRACKER_WEB url starts with https:// or http:// and ends
John Rouillard <rouilj@ieee.org>
parents: 5754
diff changeset
573
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
574
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
575 class NullableOption(Option):
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
576
4074
e039f3cbbb96 Make RDBMS cache-size configurable.
Stefan Seefeld <stefan@seefeld.name>
parents: 4013
diff changeset
577 """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
578
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
579 Default nullable strings list contains empty string only.
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
580 There is constructor parameter allowing to specify different nullables.
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
581
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
582 Conversion to external representation returns the first of the NULL
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
583 strings list when the value is None.
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
584
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
585 """
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
586
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
587 NULL_STRINGS = ("",)
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
588
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
589 def __init__(self, config, section, setting,
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
590 default=NODEFAULT, description=None, aliases=None,
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
591 null_strings=NULL_STRINGS):
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
592 self.null_strings = list(null_strings)
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
593 Option.__init__(self, config, section, setting, default,
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
594 description, aliases)
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
595
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
596 def str2value(self, value):
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
597 if value in self.null_strings:
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
598 return None
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
599 else:
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
600 return value
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
601
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
602 def _value2str(self, value):
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
603 if value is None:
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
604 return self.null_strings[0]
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
605 else:
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
606 return value
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
607
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
608
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
609 class NullableFilePathOption(NullableOption, FilePathOption):
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
610
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
611 # .get() and class_description are from FilePathOption,
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
612 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
613 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
614 # everything else taken from NullableOption (inheritance order)
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
615
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
616
3620
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
617 class TimezoneOption(Option):
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
618
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
619 class_description = \
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
620 "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
621 "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
622 "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
623 "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
624
5754
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
625 # 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
626 # 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
627 try:
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
628 import pytz
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
629 defaulttz = "UTC"
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
630 except ImportError:
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
631 defaulttz = "0"
178ca608ddb9 Fix Issue2551030: Roundup fails to start if pytz to access Olson
John Rouillard <rouilj@ieee.org>
parents: 5748
diff changeset
632
3620
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
633 def str2value(self, value):
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
634 try:
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
635 roundup.date.get_timezone(value)
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
636 except KeyError:
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
637 raise OptionValueError(self, value,
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
638 "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
639 return value
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
640
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
641
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
642 class RegExpOption(Option):
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
643
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
644 """Regular Expression option (value is Regular Expression Object)"""
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
645
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
646 class_description = "Value is Python Regular Expression (UTF8-encoded)."
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
647
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
648 RE_TYPE = type(re.compile(""))
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
649
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
650 def __init__(self, config, section, setting,
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
651 default=NODEFAULT, description=None, aliases=None,
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
652 flags=0):
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
653 self.flags = flags
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
654 Option.__init__(self, config, section, setting, default,
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
655 description, aliases)
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
656
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
657 def _value2str(self, value):
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
658 assert isinstance(value, self.RE_TYPE)
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
659 return value.pattern
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
660
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
661 def str2value(self, value):
5416
56c9bcdea47f Python 3 preparation: unicode.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5395
diff changeset
662 if not isinstance(value, type(u'')):
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
663 value = str(value)
5416
56c9bcdea47f Python 3 preparation: unicode.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5395
diff changeset
664 if not isinstance(value, type(u'')):
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
665 # if it is 7-bit ascii, use it as string,
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
666 # otherwise convert to unicode.
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
667 try:
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
668 value.decode("ascii")
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
669 except UnicodeError:
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
670 value = value.decode("utf-8")
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
671 return re.compile(value, self.flags)
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
672
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
673 ### Main configuration layout.
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
674 # Config is described as a sequence of sections,
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
675 # where each section name is followed by a sequence
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
676 # of Option definitions. Each Option definition
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
677 # is a sequence containing class name and constructor
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
678 # parameters, starting from the setting name:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
679 # 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
680 # 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
681 # compatibility - new options should *not* have aliases!
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
682
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
683
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
684 SETTINGS = (
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
685 ("main", (
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
686 (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
687 (Option, "template_engine", "zopetal",
a2eb4fb3e6d8 New Chameleon templating engine, engine is now configurable.
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4570
diff changeset
688 "Templating engine to use.\n"
a2eb4fb3e6d8 New Chameleon templating engine, engine is now configurable.
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4570
diff changeset
689 "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
690 "ported from Zope, or 'chameleon' for Chameleon."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
691 (FilePathOption, "templates", "html",
2863
ae2907da636d added STATIC_FILES option
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2850
diff changeset
692 "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
693 (MultiFilePathOption, "static_files", "",
8743b7226dc7 Fix issue with retreiving raw template files using the @@file mechanism.
John Rouillard <rouilj@ieee.org>
parents: 5214
diff changeset
694 "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
695 "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
696 "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
697 "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
698 "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
699 "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
700 "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
701 "files are taken from the TEMPLATES directory."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
702 (MailAddressOption, "admin_email", "roundup-admin",
4013
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
703 "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
704 "into trouble.\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
705 "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
706 "mail -> domain is added."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
707 (MailAddressOption, "dispatcher_email", "roundup-admin",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
708 "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
709 "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
710 "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
711 "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
712 "mail -> domain is added."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
713 (Option, "email_from_tag", "",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
714 "Additional text to include in the \"name\" part\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
715 "of the From: address used in nosy messages.\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
716 "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
717 "is usually: \"Foo Bar\" <issue_tracker@tracker.example>\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
718 "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
719 "\"Foo Bar EMAIL_FROM_TAG\" <issue_tracker@tracker.example>"),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
720 (Option, "new_web_user_roles", "User",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
721 "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
722 " with Web User Interface.\n"
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
723 "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
724 " (e.g. 'Admin,User')."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
725 (Option, "new_email_user_roles", "User",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
726 "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
727 " with Email Gateway.\n"
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
728 "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
729 " (e.g. 'Admin,User')."),
5315
5a014410f254 Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5305
diff changeset
730 (Option, "obsolete_history_roles", "Admin",
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
731 "On schema changes, properties or classes in the history may\n"
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
732 "become obsolete. Since normal access permissions do not apply\n"
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
733 "(we don't know if a user should see such a property or class)\n"
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
734 "a list of roles is specified here that are allowed to see\n"
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
735 "these obsolete properties in the history. By default only the\n"
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
736 "admin role may see these history entries, you can make them\n"
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
737 "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
738 (Option, "error_messages_to", "user",
6211
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
739 'Send error message emails to the "dispatcher", "user", '
6355
ac5a6ffa377b Description update. Description was a question not a statement.
John Rouillard <rouilj@ieee.org>
parents: 6354
diff changeset
740 'or "both" (these are the three allowed values).\n'
6211
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
741 'The dispatcher is configured using the DISPATCHER_EMAIL'
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
742 ' setting.'),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
743 (Option, "html_version", "html4",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
744 "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
745 "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
746 "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
747 "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
748 (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
749 "Default timezone offset,"
3620
17124caa2491 added timezone option (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3609
diff changeset
750 " applied when user's timezone is not set.",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
751 ["DEFAULT_TIMEZONE"]),
2649
1df7d4a41da4 Buncha stuff (sorry about the large checkin):
Richard Jones <richard@users.sourceforge.net>
parents: 2646
diff changeset
752 (BooleanOption, "instant_registration", "no",
1df7d4a41da4 Buncha stuff (sorry about the large checkin):
Richard Jones <richard@users.sourceforge.net>
parents: 2646
diff changeset
753 "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
754 "email?"),
3469
d3b02352484f enable registration confirmation by web only [SF#1381675]
Richard Jones <richard@users.sourceforge.net>
parents: 3452
diff changeset
755 (BooleanOption, "email_registration_confirmation", "yes",
d3b02352484f enable registration confirmation by web only [SF#1381675]
Richard Jones <richard@users.sourceforge.net>
parents: 3452
diff changeset
756 "Offer registration confirmation by email or only through the web?"),
6358
42db48c30d31 Validate indexer values
John Rouillard <rouilj@ieee.org>
parents: 6356
diff changeset
757 (IndexerOption, "indexer", "",
5096
e74c3611b138 - issue2550636, issue2550909: Added support for Whoosh indexer.
John Rouillard <rouilj@ieee.org>
parents: 5045
diff changeset
758 "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
759 "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
760 "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
761 "Possible values: xapian, whoosh, native (internal)."),
6353
9d209d2b34ae Add indexer_language to change stemmer for xapian FTS indexer
John Rouillard <rouilj@ieee.org>
parents: 6333
diff changeset
762 (Option, "indexer_language", "english",
9d209d2b34ae Add indexer_language to change stemmer for xapian FTS indexer
John Rouillard <rouilj@ieee.org>
parents: 6333
diff changeset
763 "Used to determine what language should be used by the\n"
9d209d2b34ae Add indexer_language to change stemmer for xapian FTS indexer
John Rouillard <rouilj@ieee.org>
parents: 6333
diff changeset
764 "indexer above. Currently only affects Xapian indexer. It\n"
9d209d2b34ae Add indexer_language to change stemmer for xapian FTS indexer
John Rouillard <rouilj@ieee.org>
parents: 6333
diff changeset
765 "sets the language for the stemmer.\n"
9d209d2b34ae Add indexer_language to change stemmer for xapian FTS indexer
John Rouillard <rouilj@ieee.org>
parents: 6333
diff changeset
766 "Possible values: must be a valid language for the indexer,\n"
9d209d2b34ae Add indexer_language to change stemmer for xapian FTS indexer
John Rouillard <rouilj@ieee.org>
parents: 6333
diff changeset
767 "see indexer documentation for details."),
3544
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
768 (WordListOption, "indexer_stopwords", "",
5cd1c83dea50 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 3469
diff changeset
769 "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
770 "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
771 "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
772 (OctalNumberOption, "umask", "0o002",
3609
f2fda3e6fc8b umask is now configurable (with the same 0002 default)
Richard Jones <richard@users.sourceforge.net>
parents: 3548
diff changeset
773 "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
774 (IntegerNumberGeqZeroOption, 'csv_field_size', '131072',
4255
88af08f8666f New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4088
diff changeset
775 "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
776 "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
777 "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
778 "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
779 "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
780 "import."),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
781 (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
782 "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
783 "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
784 "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
785 "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
786 "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
787 "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
788 "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
789 "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
790 "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
791 "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
792 "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
793 "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
794 "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
795 "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
796 "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
797 )),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
798 ("tracker", (
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
799 (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
800 "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
801 (WebUrlOption, "web", NODEFAULT,
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
802 "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
803 "This will be included in information"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
804 " sent to users of the tracker.\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
805 "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
806 "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
807 "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
808 (MailAddressOption, "email", "issue_tracker",
4013
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
809 "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
810 "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
811 (Option, "replyto_address", "",
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
812 "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
813 "nosy messages.\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
814 "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
815 "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
816 "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
817 "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
818 "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
819 "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
820 "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
821 "unusual circumstances.\n"
99e289359798 issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents: 5096
diff changeset
822 "If set to some other value, the value is used as the reply-to\n"
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
823 "address. It must be a valid RFC2822 address or people will not\n"
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
824 "be able to reply."),
2922
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
825 (NullableOption, "language", "",
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
826 "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
827 "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
828 "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
829 "or LANG, in that order of preference."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
830 )),
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
831 ("web", (
4088
34434785f308 Plug a number of security holes:
Richard Jones <richard@users.sourceforge.net>
parents: 4074
diff changeset
832 (BooleanOption, "allow_html_file", "no",
34434785f308 Plug a number of security holes:
Richard Jones <richard@users.sourceforge.net>
parents: 4074
diff changeset
833 "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
834 "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
835 "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
836 "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
837 (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
838 "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
839 "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
840 "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
841 "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
842 "Authentication in your web interface."),
6053
380dec305c28 Add config option 'http_auth_convert_realm_to_lowercase'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6004
diff changeset
843 (BooleanOption, 'http_auth_convert_realm_to_lowercase', "no",
380dec305c28 Add config option 'http_auth_convert_realm_to_lowercase'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6004
diff changeset
844 "If usernames consist of a name and a domain/realm part of\n"
380dec305c28 Add config option 'http_auth_convert_realm_to_lowercase'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6004
diff changeset
845 "the form user@realm and we're using REMOTE_USER for\n"
380dec305c28 Add config option 'http_auth_convert_realm_to_lowercase'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6004
diff changeset
846 "authentication (e.g. via Kerberos), convert the realm part\n"
380dec305c28 Add config option 'http_auth_convert_realm_to_lowercase'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6004
diff changeset
847 "of the incoming REMOTE_USER to lowercase before matching\n"
380dec305c28 Add config option 'http_auth_convert_realm_to_lowercase'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6004
diff changeset
848 "against the roundup username. This allows roundup usernames\n"
380dec305c28 Add config option 'http_auth_convert_realm_to_lowercase'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6004
diff changeset
849 "to be lowercase (including the realm) and still follow the\n"
380dec305c28 Add config option 'http_auth_convert_realm_to_lowercase'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6004
diff changeset
850 "Kerberos convention of using an uppercase realm. In\n"
380dec305c28 Add config option 'http_auth_convert_realm_to_lowercase'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6004
diff changeset
851 "addition this is compatible with Active Directory which\n"
380dec305c28 Add config option 'http_auth_convert_realm_to_lowercase'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6004
diff changeset
852 "stores the username with realm as UserPrincipalName in\n"
380dec305c28 Add config option 'http_auth_convert_realm_to_lowercase'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6004
diff changeset
853 "lowercase."),
6211
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
854 (BooleanOption, 'cookie_takes_precedence', "no",
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
855 "If the http_auth option is in effect (see above)\n"
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
856 "we're accepting a REMOTE_USER variable resulting from\n"
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
857 "an authentication mechanism implemented in the web-server,\n"
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
858 "e.g., Kerberos login or similar. To override the mechanism\n"
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
859 "provided by the web-server (e.g. for enabling sub-login as\n"
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
860 "another user) we tell roundup that the cookie takes\n"
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
861 "precedence over a REMOTE_USER or HTTP_AUTHORIZATION\n"
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
862 "variable. So if both, a cookie and a REMOTE_USER is\n"
50960479f627 New config-option 'cookie_takes_precedence'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6152
diff changeset
863 "present, the cookie wins.\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
864 (IntegerNumberGeqZeroOption, 'login_attempts_min', "3",
5717
cad18de2b988 issue2550949: Rate limit password guesses/login attempts.
John Rouillard <rouilj@ieee.org>
parents: 5698
diff changeset
865 "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
866 "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
867 "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
868 "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
869 "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
870 "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
871 (IntegerNumberGeqZeroOption, 'registration_delay', "4",
98a8509ce45c issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents: 5956
diff changeset
872 "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
873 "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
874 "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
875 "the value to 0."),
5976
71c68961d9f4 - issue2550920 - Optionally detect duplicate username at registration.
John Rouillard <rouilj@ieee.org>
parents: 5974
diff changeset
876 (BooleanOption, 'registration_prevalidate_username', "no",
71c68961d9f4 - issue2550920 - Optionally detect duplicate username at registration.
John Rouillard <rouilj@ieee.org>
parents: 5974
diff changeset
877 "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
878 "is available before sending confirmation email.\n"
71c68961d9f4 - issue2550920 - Optionally detect duplicate username at registration.
John Rouillard <rouilj@ieee.org>
parents: 5974
diff changeset
879 "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
880 "confirming the registration. Disabled by default as\n"
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
881 "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
882 (SameSiteSettingOption, 'samesite_cookie_setting', "Lax",
d4cc71beb102 Added support for SameSite cookie option for CSRF prevention
John Rouillard <rouilj@ieee.org>
parents: 5201
diff changeset
883 """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
884 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
885 '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
886 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
887 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
888 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
889 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
890 email)."""),
5603
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
891 (BooleanOption, 'enable_xmlrpc', "yes",
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
892 """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
893 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
894 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
895 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
896 and will yield an error message."""),
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
897 (BooleanOption, 'enable_rest', "yes",
79da1ca2f94b Make xmlrpc and rest APIs configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents: 5517
diff changeset
898 """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
899 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
900 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
901 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
902 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
903 (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
904 "Limit API calls per api_interval_in_sec seconds to\n"
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
905 "this number.\n"
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
906 "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
907 "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
908 "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
909 "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
910 "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
911 "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
912 "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
913 "documentation for more info.\n"),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
914 (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
915 "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
916 "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
917 (CsrfSettingOption, 'csrf_enforce_token', "yes",
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
918 """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
919 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
920 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
921 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
922 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
923 the field is missing.
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
924 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
925 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
926 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
927 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
928 """),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
929 (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
930 """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
931 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
932 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
933 (CsrfSettingOption, 'csrf_enforce_token', "yes",
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
934 """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
935 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
936 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
937 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
938 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
939 the field is missing.
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
940 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
941 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
942 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
943 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
944 """),
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
945 (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
946 """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
947 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
948 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
949 is ignored.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
950 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
951 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
952 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
953 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
954 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
955 (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
956 """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
957 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
958 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
959 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
960 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
961 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
962 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
963 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
964 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
965 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
966 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
967 (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
968 """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
969 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
970 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
971 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
972 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
973 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
974 the field is missing.
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
975 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
976 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
977 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
978 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
979 (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
980 """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
981 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
982 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
983 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
984 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
985 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
986 the field is missing.
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
987 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
988 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
989 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
990 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
991 (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
992 """"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
993 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
994 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
995 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
996 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
997 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
998 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
999 the field is missing.
5201
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1000 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
1001 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
1002 the post.
a9ace22e0a2f issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents: 5189
diff changeset
1003 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
1004 (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
1005 """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
1006 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
1007 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
1008 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
1009 (BooleanOption, 'use_browser_language', "yes",
2b27c92d64dc add web/use_browser_language option
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3417
diff changeset
1010 "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
1011 "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
1012 "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
1013 "Operating System.\n"
2b27c92d64dc add web/use_browser_language option
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3417
diff changeset
1014 "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
1015 (BooleanOption, "debug", "no",
61d48244e7a8 login may now be for a single session
Richard Jones <richard@users.sourceforge.net>
parents: 3544
diff changeset
1016 "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
1017 "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
1018 "tracker admin."),
4484
52e13bf0bb40 Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4474
diff changeset
1019 (BooleanOption, "migrate_passwords", "yes",
52e13bf0bb40 Add new config-option 'migrate_passwords' in section 'web'...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4474
diff changeset
1020 "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
1021 "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
1022 "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
1023 (MandatoryOption, "secret_key", create_token(),
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
1024 "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
1025 "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
1026 "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
1027 "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
1028 "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
1029 "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
1030 "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
1031 "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
1032 "(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
1033 " roundup-admin updateconfig\n"
e199d0ae4a25 issue2551033: prevent reverse engineering hidden data by using etags
John Rouillard <rouilj@ieee.org>
parents: 5717
diff changeset
1034 "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
1035 (MandatoryOption, "jwt_secret", "disabled",
1b57d8f3eb97 Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents: 5809
diff changeset
1036 "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
1037 "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
1038 "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
1039 "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
1040 "issued by the roundup instance requiring *all* users to\n"
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1041 "generate new jwts. This is experimental and disabled by\n"
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1042 "default. 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
1043 )),
2634
f47ca4541770 Both RDBMS backends now use the same config.ini section, [rdbms].
Richard Jones <richard@users.sourceforge.net>
parents: 2630
diff changeset
1044 ("rdbms", (
5748
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
1045 (DatabaseBackend, 'backend', NODEFAULT,
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
1046 "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
1047 (Option, 'name', 'roundup',
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1048 "Name of the database to use.",
2636
943f9d4592b8 Backwards-compatibility aliases for mysql config.
Richard Jones <richard@users.sourceforge.net>
parents: 2634
diff changeset
1049 ['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
1050 (NullableOption, 'host', 'localhost',
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1051 "Database server host.",
2636
943f9d4592b8 Backwards-compatibility aliases for mysql config.
Richard Jones <richard@users.sourceforge.net>
parents: 2634
diff changeset
1052 ['MYSQL_DBHOST']),
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1053 (NullableOption, 'port', '',
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1054 "TCP port number of the database server.\n"
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1055 "Postgresql usually resides on port 5432 (if any),\n"
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1056 "for MySQL default port number is 3306.\n"
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1057 "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
1058 (NullableOption, 'user', 'roundup',
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1059 "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
1060 ['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
1061 (NullableOption, 'password', 'roundup',
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1062 "Database user password.",
2636
943f9d4592b8 Backwards-compatibility aliases for mysql config.
Richard Jones <richard@users.sourceforge.net>
parents: 2634
diff changeset
1063 ['MYSQL_DBPASSWORD']),
3099
519b92df37dc handle ~/.my.cnf files for MySQL defaults [SF#1096031]
Richard Jones <richard@users.sourceforge.net>
parents: 2922
diff changeset
1064 (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
1065 "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
1066 "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
1067 (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
1068 "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
1069 "Only used in MySQL connections."),
6333
bd84f43e1d13 Fixes to mysql 2.0 conversion doc issue2551115 Werner Hunger
John Rouillard <rouilj@ieee.org>
parents: 6332
diff changeset
1070 (Option, 'mysql_charset', 'utf8mb4',
6152
546763f4ce44 Make the charset configurable for mysql
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6126
diff changeset
1071 "Charset to use for mysql connection,\n"
546763f4ce44 Make the charset configurable for mysql
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6126
diff changeset
1072 "use 'default' for the mysql default, no charset option\n"
546763f4ce44 Make the charset configurable for mysql
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6126
diff changeset
1073 "is used when creating the connection in that case.\n"
546763f4ce44 Make the charset configurable for mysql
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6126
diff changeset
1074 "Otherwise any permissible mysql charset is allowed here.\n"
546763f4ce44 Make the charset configurable for mysql
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6126
diff changeset
1075 "Only used in MySQL connections."),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
1076 (IntegerNumberGeqZeroOption, 'sqlite_timeout', '30',
4415
3e35233ea93c new rdbms config item sqlite_timeout...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4411
diff changeset
1077 "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
1078 "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
1079 "Only used in SQLite connections."),
5774
765f8c0e99ef Sanity checking improvements. All IntegerNumberOption really have to
John Rouillard <rouilj@ieee.org>
parents: 5773
diff changeset
1080 (IntegerNumberGeqZeroOption, 'cache_size', '100',
4074
e039f3cbbb96 Make RDBMS cache-size configurable.
Stefan Seefeld <stefan@seefeld.name>
parents: 4013
diff changeset
1081 "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
1082 (BooleanOption, "allow_create", "yes",
9b4cf6c96ee2 Add flags to allow to restrict DB modifications.
Stefan Seefeld <stefan@seefeld.name>
parents: 4471
diff changeset
1083 "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
1084 (BooleanOption, "allow_alter", "yes",
9b4cf6c96ee2 Add flags to allow to restrict DB modifications.
Stefan Seefeld <stefan@seefeld.name>
parents: 4471
diff changeset
1085 "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
1086 (BooleanOption, "allow_drop", "yes",
9b4cf6c96ee2 Add flags to allow to restrict DB modifications.
Stefan Seefeld <stefan@seefeld.name>
parents: 4471
diff changeset
1087 "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
1088 (NullableOption, 'template', '',
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1089 "Name of the PostgreSQL template for database creation.\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1090 "For database creation the template used has to match\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1091 "the character encoding used (UTF8), there are different\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1092 "PostgreSQL installations using different templates with\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1093 "different encodings. If you get an error:\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1094 " new encoding (UTF8) is incompatible with the encoding of\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1095 " the template database (SQL_ASCII)\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1096 " HINT: Use the same encoding as in the template database,\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1097 " or use template0 as template.\n"
4f353d71d716 Configuration issue:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4424
diff changeset
1098 "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
1099 "error message."),
4887
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
1100 (IsolationOption, 'isolation_level', 'read committed',
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
1101 "Database isolation level, currently supported for\n"
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
1102 "PostgreSQL and mysql. See, e.g.,\n"
05c857e5dbed New rdbms configuration option 'isolation_level'
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4786
diff changeset
1103 "http://www.postgresql.org/docs/9.1/static/transaction-iso.html"),
6332
6a6b4651be1f Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6300
diff changeset
1104 (BooleanOption, "serverside_cursor", "yes",
6a6b4651be1f Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6300
diff changeset
1105 "Set the database cursor for filter queries to serverside\n"
6a6b4651be1f Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6300
diff changeset
1106 "cursor, this avoids caching large amounts of data in the\n"
6a6b4651be1f Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents: 6300
diff changeset
1107 "client. This option only applies for the postgresql backend."),
5748
943e61bc26d5 Fix issue2551029 (Jinja2 template install error) by deleting
John Rouillard <rouilj@ieee.org>
parents: 5736
diff changeset
1108 ), "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
1109 " by RDBMS backends only."
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1110 ),
2619
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1111 ("logging", (
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1112 (FilePathOption, "config", "",
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1113 "Path to configuration file for standard Python logging module.\n"
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1114 "If this option is set, logging configuration is loaded\n"
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1115 "from specified file; options 'filename' and 'level'\n"
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1116 "in this section are ignored."),
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1117 (FilePathOption, "filename", "",
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1118 "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
1119 "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
1120 "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
1121 (Option, "level", "ERROR",
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1122 "Minimal severity level of messages written to log file.\n"
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1123 "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
1124 "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
1125 (BooleanOption, "disable_loggers", "no",
94c415c7cd36 Make gunicorn --access-logfile work with custom logging config
John Rouillard <rouilj@ieee.org>
parents: 5878
diff changeset
1126 "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
1127 "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
1128 )),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1129 ("mail", (
4013
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1130 (Option, "domain", NODEFAULT,
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1131 "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
1132 "dispatcher_email belong to.\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1133 "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
1134 "explicitly include a domain.\n"
a5b68d46bce8 Try to clarify mail_domain config setting
Richard Jones <richard@users.sourceforge.net>
parents: 3945
diff changeset
1135 "Do not include the '@' symbol."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1136 (Option, "host", NODEFAULT,
2844
5dddfc64816d mailgw backward-compatibility: "MAILHOST" alias for "MAIL_HOST"
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2839
diff changeset
1137 "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
1138 ["MAILHOST"],),
2630
a65bae7af6d1 NOSY_MESSAGES_TO_AUTHOR is RunDetectorOption (values: yes, no, new)...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2629
diff changeset
1139 (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
1140 "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
1141 "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
1142 (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
1143 "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
1144 (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
1145 "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
1146 "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
1147 (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
1148 "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
1149 "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
1150 (BooleanOption, "tls", "no",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1151 "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
1152 "(Transport Layer Security) then set this option to 'yes'."),
2624
f40d5f0f1086 added NullableOption, NullableFilePathOption;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2623
diff changeset
1153 (NullableFilePathOption, "tls_keyfile", "",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1154 "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
1155 "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
1156 (NullableFilePathOption, "tls_certfile", "",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1157 "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
1158 "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
1159 (Option, "charset", "utf-8",
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1160 "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
1161 "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
1162 "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
1163 "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
1164 "(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
1165 ["EMAIL_CHARSET"]),
ce6a965a86f4 Move around some option groupings as I see them.
Richard Jones <richard@users.sourceforge.net>
parents: 2625
diff changeset
1166 (FilePathOption, "debug", "",
5214
4c48180555fb Fix text formatting, typos and, English grammar of the descriptive text.
John Rouillard <rouilj@ieee.org>
parents: 5212
diff changeset
1167 "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
1168 "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
1169 "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
1170 " 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
1171 (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
1172 "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
1173 "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
1174 (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
1175 "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
1176 "the top of all messages.\n"
454ee9411e85 Fix truncated comment for add_authoremail option.
Erik Forsberg <forsberg@users.sourceforge.net>
parents: 3878
diff changeset
1177 "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
1178 "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
1179 "actor from being exposed at mail archives, etc."),
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1180 ), "Outgoing email options.\n"
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1181 "Used 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
1182 ("mailgw", (
5117
14abd0a67207 Fix issue934009: Have New Issues Submitted By Email *Not* Change Body!
John Rouillard <rouilj@ieee.org>
parents: 5102
diff changeset
1183 (EmailBodyOption, "keep_quoted_text", "yes",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1184 "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
1185 "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
1186 "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
1187 "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
1188 "Signatures are also stripped.",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1189 ["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
1190 (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
1191 "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
1192 "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
1193 "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
1194 "creating a new issue.",
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1195 ["EMAIL_LEAVE_BODY_UNCHANGED"]),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1196 (Option, "default_class", "issue",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1197 "Default class to use in the mailgw\n"
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1198 "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
1199 "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
1200 ["MAIL_DEFAULT_CLASS"]),
2922
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
1201 (NullableOption, "language", "",
9d2c5d7c6f85 added CoreConfig options TRACKER_LANGUAGE and MAILGW_LANGUAGE
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2906
diff changeset
1202 "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
1203 "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
1204 "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
1205 (Option, "subject_prefix_parsing", "strict",
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1206 "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
1207 "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
1208 "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
1209 "\"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
1210 "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
1211 "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
1212 "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
1213 (Option, "subject_suffix_parsing", "strict",
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1214 "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
1215 "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
1216 "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
1217 "\"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
1218 "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
1219 "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
1220 "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
1221 (Option, "subject_suffix_delimiters", "[]",
3725
65badf6ab7ad fix config documentation
Richard Jones <richard@users.sourceforge.net>
parents: 3620
diff changeset
1222 "Defines the brackets used for delimiting the prefix and \n"
65badf6ab7ad fix config documentation
Richard Jones <richard@users.sourceforge.net>
parents: 3620
diff changeset
1223 '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
1224 "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
1225 "be ignored."),
3417
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1226 (Option, "subject_content_match", "always",
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1227 "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
1228 "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
1229 "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
1230 "\"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
1231 "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
1232 "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
1233 "Roundup interval."),
4405
863ec554525c new mailgw config option subject_updates_title...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4342
diff changeset
1234 (BooleanOption, "subject_updates_title", "yes",
863ec554525c new mailgw config option subject_updates_title...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4342
diff changeset
1235 "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
1236 "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
1237 " the subject\nof incoming email messages.\n"),
5809
936275dfe1fa Try to fix:
John Rouillard <rouilj@ieee.org>
parents: 5774
diff changeset
1238 (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
1239 "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
1240 "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
1241 "stripped from the subject during parsing."),
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
1242 (RegExpOption, "origmsg_re",
5809
936275dfe1fa Try to fix:
John Rouillard <rouilj@ieee.org>
parents: 5774
diff changeset
1243 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
1244 "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
1245 "if quoted the in body."),
5809
936275dfe1fa Try to fix:
John Rouillard <rouilj@ieee.org>
parents: 5774
diff changeset
1246 (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
1247 "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
1248 "in the message body."),
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
1249 (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
1250 "Regular expression matching end of line."),
3835
b66615f3007b added RegExpOption
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3831
diff changeset
1251 (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
1252 "Regular expression matching a blank line."),
4424
f1affb6b7a08 Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4415
diff changeset
1253 (BooleanOption, "unpack_rfc822", "no",
f1affb6b7a08 Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4415
diff changeset
1254 "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
1255 "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
1256 "set we handle message/rfc822 attachments as a single file."),
3945
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1257 (BooleanOption, "ignore_alternatives", "no",
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1258 "When parsing incoming mails, roundup uses the first\n"
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1259 "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
1260 "multipart/alternative, and this option is set, all other\n"
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1261 "parts of the multipart/alternative are ignored. The default\n"
1dd64778bc45 Mail improvements:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3922
diff changeset
1262 "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
1263 (HtmlToTextOption, "convert_htmltotext", "none",
e20f472fde7d issue2550799: provide basic support for handling html only emails
John Rouillard <rouilj@ieee.org>
parents: 5264
diff changeset
1264 "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
1265 "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
1266 "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
1267 "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
1268 "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
1269 "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
1270 "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
1271 (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
1272 "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
1273 "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
1274 "(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
1275 "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
1276 ["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
1277 ), "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
1278 ("pgp", (
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3882
diff changeset
1279 (BooleanOption, "enable", "no",
5494
b7fa56ced601 use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents: 5424
diff changeset
1280 "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
1281 "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
1282 "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
1283 "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
1284 (NullableOption, "roles", "",
586679a314f7 role checking for PGP mail and docs
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3915
diff changeset
1285 "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
1286 "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
1287 "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
1288 "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
1289 "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
1290 "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
1291 "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
1292 (NullableOption, "homedir", "",
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3882
diff changeset
1293 "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
1294 "not specified."),
4541
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1295 (BooleanOption, "encrypt", "no",
62239a524beb PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 4488
diff changeset
1296 "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
1297 "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
1298 "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
1299 "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
1300 "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
1301 "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
1302 (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
1303 "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
1304 "'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
1305 "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
1306 "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
1307 "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
1308 "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
1309 "turned on."),
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3882
diff changeset
1310 ), "OpenPGP mail processing options"),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1311 ("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
1312 (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
1313 "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
1314 "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
1315 "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
1316 "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
1317 "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
1318 ["MESSAGES_TO_AUTHOR"]),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1319 (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
1320 "Where to place the email signature.\n"
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1321 "Allowed values: top, bottom, none",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1322 ["EMAIL_SIGNATURE_POSITION"]),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1323 (RunDetectorOption, "add_author", "new",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1324 "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
1325 "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
1326 "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
1327 "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
1328 "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
1329 ["ADD_AUTHOR_TO_NOSY"]),
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1330 (RunDetectorOption, "add_recipients", "new",
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1331 "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
1332 "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
1333 "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
1334 "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
1335 "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
1336 ["ADD_RECIPIENTS_TO_NOSY"]),
3417
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1337 (Option, "email_sending", "single",
07c696890f55 mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents: 3356
diff changeset
1338 "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
1339 "\"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
1340 "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
1341 "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
1342 (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
1343 "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
1344 "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
1345 "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
1346 ), "Nosy messages sending"),
6277
957a0fc20021 issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents: 6211
diff changeset
1347 ("markdown", (
957a0fc20021 issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents: 6211
diff changeset
1348 (BooleanOption, "break_on_newline", "no",
957a0fc20021 issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents: 6211
diff changeset
1349 "If yes/true, render single new line characters in markdown\n"
957a0fc20021 issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents: 6211
diff changeset
1350 "text with <br>. Set true if you want GitHub Flavored Markdown\n"
957a0fc20021 issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents: 6211
diff changeset
1351 "(GFM) handling of embedded newlines."),
957a0fc20021 issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents: 6211
diff changeset
1352 ), "Markdown rendering options."),
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1353 )
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1354
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1355 ### Configuration classes
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1356
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1357
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1358 class Config:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1359
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1360 """Base class for configuration objects.
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1361
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1362 Configuration options may be accessed as attributes or items
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1363 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
1364
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1365 """
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1366
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1367 # Config file name
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1368 INI_FILE = "config.ini"
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1369
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1370 # 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
1371 # 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
1372 # 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
1373 HOME = "."
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1374 # names of .ini file sections, in order
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1375 sections = None
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1376 # section comments
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1377 section_descriptions = None
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1378 # lists of option names for each section, in order
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1379 section_options = None
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1380 # mapping from option names and aliases to Option instances
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1381 options = None
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1382 # actual name of the config file. set on load.
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1383 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
1384
3431
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1385 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
1386 """Initialize confing instance
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1387
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1388 Parameters:
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1389 config_path:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1390 optional directory or file name of the config file.
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1391 If passed, load the config after processing layout (if any).
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1392 If config_path is a directory name, use default base name
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1393 of the config file.
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1394 layout:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1395 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
1396 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
1397 settings:
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1398 optional setting overrides (dictionary).
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1399 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
1400
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1401 """
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1402 # initialize option containers:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1403 self.sections = []
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1404 self.section_descriptions = {}
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1405 self.section_options = {}
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1406 self.options = {}
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1407 # 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
1408 if layout:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1409 for section in layout:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1410 self.add_section(*section)
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1411 if config_path is not None:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1412 self.load(config_path)
3431
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1413 for (name, value) in settings.items():
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1414 self[name.upper()] = value
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1415
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1416 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
1417 """Define new config section
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1418
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1419 Parameters:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1420 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
1421 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
1422 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
1423 containing class object and constructor
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1424 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
1425 setting, default, [description, [aliases]]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1426 description - optional section comment
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1427
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1428 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
1429 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
1430 *not* have aliases!
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1431
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1432 """
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
1433 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
1434 self.section_descriptions[section] = description
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1435 for option_def in options:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1436 klass = option_def[0]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1437 args = option_def[1:]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1438 option = klass(self, section, *args)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1439 self.add_option(option)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1440
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1441 def add_option(self, option):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1442 """Adopt a new Option object"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1443 _section = option.section
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1444 _name = option.setting
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1445 if _section not in self.sections:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1446 self.sections.append(_section)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1447 _options = self._get_section_options(_section)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1448 if _name not in _options:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1449 _options.append(_name)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1450 # (section, name) key is used for writing .ini file
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1451 self.options[(_section, _name)] = option
4074
e039f3cbbb96 Make RDBMS cache-size configurable.
Stefan Seefeld <stefan@seefeld.name>
parents: 4013
diff changeset
1452 # 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
1453 for _name in option.aliases:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1454 self.options[_name] = option
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1455
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1456 def update_option(self, name, klass,
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1457 default=NODEFAULT, description=None):
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1458 """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
1459
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1460 Parameters:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1461 name:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1462 option name
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1463 klass:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1464 one of the Option classes
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1465 default:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1466 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
1467 description:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1468 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
1469
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1470 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
1471 is done via string representation.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1472
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1473 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
1474 to options autocreated by UserConfig.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1475
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1476 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1477 # fetch current option
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1478 option = self._get_option(name)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1479 # compute constructor parameters
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1480 if default is NODEFAULT:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1481 default = option.default
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1482 if description is None:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1483 description = option.description
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1484 value = option.value2str(current=1)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1485 # resurrect the option
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1486 option = klass(self, option.section, option.setting,
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1487 default=default, description=description)
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1488 # apply the value
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1489 option.set(value)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1490 # incorporate new option
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1491 del self[name]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1492 self.add_option(option)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1493
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1494 def reset(self):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1495 """Set all options to their default values"""
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1496 for _option in self.items():
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1497 _option.reset()
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1498
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1499 # Meant for commandline tools.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1500 # 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
1501 # roundup-server -p 8017 -u roundup --save-config
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1502 def getopt(self, args, short_options="", long_options=(),
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1503 config_load_options=("C", "config"), **options):
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1504 """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
1505
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1506 Parameters:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1507 args:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1508 command line to parse (sys.argv[1:])
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1509 short_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1510 optional string of letters for command line options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1511 that are not config options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1512 long_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1513 optional list of names for long options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1514 that are not config options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1515 config_load_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1516 two-element sequence (letter, long_option) defining
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1517 the options for config file. If unset, don't load
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1518 config file; otherwise config file is read prior
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1519 to applying other options. Short option letter
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1520 must not have a colon and long_option name must
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1521 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
1522 options:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1523 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
1524 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
1525 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
1526 (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
1527 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
1528 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
1529
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1530 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
1531 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
1532
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1533 """
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1534 # take a copy of long_options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1535 long_options = list(long_options)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1536 # build option lists
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1537 cfg_names = {}
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1538 booleans = []
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1539 for (name, letter) in options.items():
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1540 cfg_name = name.upper()
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1541 short_opt = "-" + letter[0]
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1542 name = name.lower().replace("_", "-")
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1543 cfg_names.update({short_opt: cfg_name, "--" + name: cfg_name})
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1544
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1545 short_options += letter
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1546 if letter[-1] == ":":
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1547 long_options.append(name + "=")
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1548 else:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1549 booleans.append(short_opt)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1550 long_options.append(name)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1551
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1552 if config_load_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1553 short_options += config_load_options[0] + ":"
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1554 long_options.append(config_load_options[1] + "=")
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1555 # compute names that will be searched in getopt return value
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1556 config_load_options = (
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1557 "-" + config_load_options[0],
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1558 "--" + config_load_options[1],
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1559 )
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1560 # parse command line arguments
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1561 optlist, args = getopt.getopt(args, short_options, long_options)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1562 # load config file if requested
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1563 if config_load_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1564 for option in optlist:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1565 if option[0] in config_load_options:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1566 self.load_ini(option[1])
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1567 optlist.remove(option)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1568 break
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1569 # apply options
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1570 extra_options = []
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1571 for (opt, arg) in optlist:
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1572 if (opt in booleans): # and not arg
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1573 arg = "yes"
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1574 try:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1575 name = cfg_names[opt]
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1576 except KeyError:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1577 extra_options.append((opt, arg))
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1578 else:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1579 self[name] = arg
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1580 return (extra_options, args)
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1581
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1582 # 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
1583
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1584 def _get_option(self, name):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1585 try:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1586 return self.options[name]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1587 except KeyError:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1588 raise InvalidOptionError(name)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1589
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1590 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
1591 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
1592
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1593 def _get_unset_options(self):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1594 """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
1595
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1596 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
1597 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
1598 appear in the config file.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1599
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1600 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1601 need_set = {}
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1602 for option in self.items():
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1603 if not option.isset():
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1604 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
1605 return need_set
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1606
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1607 def _adjust_options(self, config):
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1608 """Load ad-hoc option definitions from ConfigParser instance."""
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1609 pass
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1610
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1611 def _get_name(self):
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1612 """Return the service name for config file heading"""
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1613 return ""
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1614
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1615 # file operations
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1616
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1617 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
1618 """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
1619
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1620 Parameters:
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1621 config_path:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1622 directory or file name of the config file.
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1623 If config_path is a directory name, use default
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1624 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
1625 defaults:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1626 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
1627
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1628 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
1629 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
1630
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1631 """
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1632 if os.path.isdir(config_path):
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1633 home_dir = config_path
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1634 config_path = os.path.join(config_path, self.INI_FILE)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1635 else:
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1636 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
1637 # parse the file
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1638 config_defaults = {"HOME": home_dir}
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1639 if defaults:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1640 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
1641 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
1642 config.read([config_path])
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1643 # .ini file loaded ok.
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1644 self.HOME = home_dir
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1645 self.filepath = config_path
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1646 self._adjust_options(config)
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1647 # 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
1648 self.reset()
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1649 for option in self.items():
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1650 option.load_ini(config)
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1651
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1652 def load(self, home_dir):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1653 """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
1654 self.load_ini(home_dir)
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 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
1657 """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
1658
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1659 '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
1660 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
1661 HOME is created.
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 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
1664 extension.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1665
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1666 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1667 if ini_file is None:
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1668 ini_file = self.filepath
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1669 _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
1670 _bak_file = _tmp_file + ".bak"
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1671 _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
1672 _fp = open(_tmp_file, "wt")
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1673 _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
1674 _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
1675 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
1676 if need_set:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1677 _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
1678 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
1679 _fp.write("# [%s]: %s\n" % (section, ", ".join(options)))
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1680 for section in self.sections:
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1681 comment = self.section_descriptions.get(section, None)
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1682 if comment:
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1683 _fp.write("\n# ".join([""] + comment.split("\n")) + "\n")
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1684 else:
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1685 # no section comment - just leave a blank line between sections
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1686 _fp.write("\n")
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1687 _fp.write("[%s]\n" % section)
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1688 for option in self._get_section_options(section):
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1689 _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
1690 _fp.close()
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1691 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
1692 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
1693 os.remove(_bak_file)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1694 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
1695 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
1696
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1697 # container emulation
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1698
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1699 def __len__(self):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1700 return len(self.items())
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1701
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1702 def __getitem__(self, name):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1703 if name == "HOME":
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1704 return self.HOME
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1705 else:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1706 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
1707
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1708 def __setitem__(self, name, value):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1709 if name == "HOME":
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1710 self.HOME = value
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1711 else:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1712 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
1713
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1714 def __delitem__(self, name):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1715 _option = self._get_option(name)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1716 _section = _option.section
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1717 _name = _option.setting
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1718 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
1719 del self.options[(_section, _name)]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1720 for _alias in _option.aliases:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1721 del self.options[_alias]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1722
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1723 def items(self):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1724 """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
1725
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1726 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
1727 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
1728 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
1729
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1730 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1731 return [self.options[(_section, _name)]
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1732 for _section in self.sections
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1733 for _name in self._get_section_options(_section)]
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1734
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1735 def keys(self):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1736 """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
1737
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1738 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
1739
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1740 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1741 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
1742
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1743 # .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
1744 # 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
1745
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1746 # attribute emulation
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1747
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1748 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
1749 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
1750 self.__dict__[name] = value
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1751 else:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1752 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
1753
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1754 # 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
1755 # 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
1756 def __getattr__(self, name):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1757 return self[name]
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1758
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1759
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1760 class UserConfig(Config):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1761
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1762 """Configuration for user extensions.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1763
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1764 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
1765 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
1766 config file.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1767
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1768 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1769
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1770 def _adjust_options(self, config):
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1771 # config defaults appear in all sections.
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1772 # 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
1773 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
1774 # 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
1775 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
1776 for section in config.sections():
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1777 for name in config.options(section):
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1778 if ((section, name) not in preset) \
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1779 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
1780 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
1781
6004
55f5060e0508 flake8 formatting fixes; use isinstance rather than type equality.
John Rouillard <rouilj@ieee.org>
parents: 5976
diff changeset
1782
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1783 class CoreConfig(Config):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1784
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1785 """Roundup instance configuration.
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1786
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1787 Core config has a predefined layout (see the SETTINGS structure),
6354
b61de764c8cc Remove left over python style config remnant, doc update.
John Rouillard <rouilj@ieee.org>
parents: 6353
diff changeset
1788 two additional attributes:
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1789 detectors:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1790 user-defined configuration for detectors
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1791 ext:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1792 user-defined configuration for extensions
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1793
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1794 """
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1795
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1796 # user configs
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1797 ext = None
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1798 detectors = None
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1799
3431
26dc6b92ac26 Config, CoreConfig: accept setting overrides in constructor
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3425
diff changeset
1800 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
1801 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
1802 # 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
1803 if home_dir is None:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1804 self.init_logging()
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1805
4342
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
1806 def copy(self):
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
1807 new = CoreConfig()
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
1808 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
1809 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
1810 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
1811 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
1812 return new
94c992852f12 add in-memory hyperdb implementation to speed up testing
Richard Jones <richard@users.sourceforge.net>
parents: 4337
diff changeset
1813
2654
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1814 def _get_unset_options(self):
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1815 need_set = Config._get_unset_options(self)
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1816 # remove MAIL_PASSWORD if MAIL_USER is empty
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1817 if "password" in need_set.get("mail", []):
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1818 if not self["MAIL_USERNAME"]:
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1819 settings = need_set["mail"]
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1820 settings.remove("password")
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1821 if not settings:
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1822 del need_set["mail"]
eccb8e15a83f implemented section comments;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2649
diff changeset
1823 return need_set
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1824
2770
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1825 def _get_name(self):
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1826 return self["TRACKER_NAME"]
cdf6787ffeda implement getopt().
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2654
diff changeset
1827
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1828 def reset(self):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1829 Config.reset(self)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1830 if self.ext:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1831 self.ext.reset()
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1832 if self.detectors:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1833 self.detectors.reset()
2619
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1834 self.init_logging()
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1835
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1836 def init_logging(self):
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1837 _file = self["LOGGING_CONFIG"]
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1838 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
1839 logging.config.fileConfig(_file,
94c415c7cd36 Make gunicorn --access-logfile work with custom logging config
John Rouillard <rouilj@ieee.org>
parents: 5878
diff changeset
1840 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
1841 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
1842
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
1843 _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
1844 # 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
1845 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
1846 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
1847 hdlr = logging.FileHandler(_file)
2619
4b4ca3bd086b added logging support;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2618
diff changeset
1848 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
1849 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
1850 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
1851 '%(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
1852 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
1853 # 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
1854 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
1855 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
1856 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
1857 logger.handlers = [hdlr]
5424
fd0481aa17b8 Python 3 preparation: avoid logging._levelNames.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5416
diff changeset
1858 logger.setLevel(self["LOGGING_LEVEL"] or "ERROR")
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1859
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1860 def validator(self, options):
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1861 """ Validate options once all options are loaded.
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1862
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1863 Used to validate settings when options are dependent
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1864 on each other. E.G. indexer_language can only be
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1865 validated if xapian indexer is used.
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1866 """
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1867 if options['INDEXER']._value in ("", "xapian"):
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1868 try:
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1869 import xapian
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1870 except ImportError:
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1871 # indexer is probably '' and xapian isn't present
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1872 # so just return at end of method
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1873 pass
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1874 else:
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1875 try:
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1876 lang = options["INDEXER_LANGUAGE"]._value
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1877 xapian.Stem(lang)
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1878 except xapian.InvalidArgumentError:
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1879 import textwrap
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1880 lang_avail = b2s(xapian.Stem.get_available_languages())
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1881 languages = textwrap.fill(_("Valid languages: ") +
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1882 lang_avail, 75,
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1883 subsequent_indent=" ")
6363
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1884 raise OptionValueError( options["INDEXER_LANGUAGE"],
08e209a7f22b Use OptionValueError for indexer_language error, add configuration tests
John Rouillard <rouilj@ieee.org>
parents: 6358
diff changeset
1885 lang, languages)
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1886
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1887 def load(self, home_dir):
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1888 """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
1889 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
1890 self.load_ini(home_dir)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1891 else:
6300
778a9f455067 Remove old code import imp, old style trackers db/backend_name
John Rouillard <rouilj@ieee.org>
parents: 6277
diff changeset
1892 raise NoConfigError(home_dir)
6356
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1893
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1894 # validator does inter-setting validation checks.
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1895 # when there are dependencies between options.
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1896 self.validator(self.options)
c26b9ce33ae3 issue2551123 - validate indexer_language in configuration.py
John Rouillard <rouilj@ieee.org>
parents: 6355
diff changeset
1897
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1898 self.init_logging()
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1899 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
1900 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
1901
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1902 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
1903 """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
1904 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
1905 if defaults:
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1906 config_defaults.update(defaults)
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1907 Config.load_ini(self, home_dir, config_defaults)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1908
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1909 # 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
1910 def __getitem__(self, name):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1911 if name == "TRACKER_HOME":
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1912 return self.HOME
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1913 else:
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1914 return Config.__getitem__(self, name)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1915
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1916 def __setitem__(self, name, value):
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1917 if name == "TRACKER_HOME":
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1918 self.HOME = value
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1919 else:
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1920 self._get_option(name).set(value)
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1921
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1922 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
1923 if name == "TRACKER_HOME":
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1924 self.__dict__["HOME"] = value
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1925 else:
2646
fd7b2fc1eb28 Config is now base class for all configurations...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2637
diff changeset
1926 Config.__setattr__(self, name, value)
2618
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1927
8b08558e30a0 Roundup Issue Tracker configuration support
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1928 # vim: set et sts=4 sw=4 :

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